Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added new and updated existing documentation #58

Merged
merged 21 commits into from
May 6, 2024
Merged
Show file tree
Hide file tree
Changes from 16 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,12 @@

1. [Предопределенные значения](docs/ПредопределенныеЗначения.md)
2. [Соответствия объектов ИБ](docs/СоответствиеОбъектовИнформационнойБазы.md)
3. [Программная модификация форм](docs/РаботаСФормами.md)
4. Подписки на события
3. [Программная модификация форм](docs/МодификацияФорм.md)
4. [Подписки на события](docs/ПодпискиНаСобытия.md)
5. Управление интеграциями
6. Пользовательские функции
6. [Пользовательские функции](docs/ПользовательскиеФункции.md)
7. [Загрузка файла через табличный документ](docs/ЗагрузкаФайлаЧерезТабличныйДокумент.md)
8. [Переопределения методов БСП](docs/ПереопределениеМетодовБСП.md)

## Заимствованные разработки

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,14 @@
# Общий модуль __РаботаСФормами - Модуль динамического формирования интерфейса
# Подсистема "модификация форм"

Предназначена для динамического формирования интерфейса. Также использовать в случае изменения типовых форма.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct grammatical agreement in the sentence.

- Также использовать в случае изменения типовых форма.
+ Также использовать в случае изменения типовых форм.

Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.

Suggested change
Предназначена для динамического формирования интерфейса. Также использовать в случае изменения типовых форма.
Предназначена для динамического формирования интерфейса. Также использовать в случае изменения типовых форм.

- Общий модуль **__МодификацияКонфигурацииПереопределяемый** используется для маршрутизации из серверных процедур (напр. **ПриСозданииНаСервере**) по дополнительным модулям разбитым по объектам (напр. **__МодификацияКонфигурацииПереопределяемыйДокумент**). В сам модуль **__МодификацияКонфигурацииПереопределяемый** доработки не вносятся.
- Для вызова общего модуля **__МодификацияКонфигурацииПереопределяемый**:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В модуль __МодификацияКонфигурацииПереопределяемый могут добавляться обработчики событий которых нет изначально

- В случае если в типовой форме которую нужно программно изменить есть в обработчике события вызов типового общего модуля **МодификацияКонфигурацииПереопределяемый** или **СобытияФорм**, то необходимо добавить в общий модуль **__ОбщегоНазначенияПовтИсп** соответствие в нужную функцию (напр. **ФормыПриСозданииНаСервере**)
- В случае если в типовой форме отсутствуют данные вызовы типовых модулей, то необходимо вызывать сразу общий модуль **__МодификацияКонфигурацииПереопределяемый** через добавление в расширение обработчика события **После**.
- В переопределяемом общем модуле для объекта (напр. **__МодификацияКонфигурацииПереопределяемыйДокумент**) необходимо добавить процедуру-обработчик изменения (напр. **ДокументАвансовыйОтчетФормаФормаДокументаПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка, ДополнительныеПараметры = Неопределено) Экспорт**)
- Использовать функции и процедуры общего модуля **__РаботаСФормами** для уменьшения объема текста при добавлении элементов (напр. **__РаботаСФормами.СоздатьПоле(Форма, "_ДемоДата", ГруппаНомерДата, "от", 1, "_ДемоДата")**)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ДокументАвансовыйОтчетФормаДокументаПриСозданииНаСервере - без лишнего Форма

- В случае если для нужного типа объекта ещё не был создан общий модуль, создать его и добавить в подсистему **__МодификацияФорм**

Демо-пример использования методов общего модуля

Expand Down
54 changes: 54 additions & 0 deletions docs/ПодпискиНаСобытия.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Подсистема "подписки на события"

Подписки на события применяются для реализации дополнительной постобработки или проверок, которые активируются после определённых событий в типовых объектах или модулях менеджера.
В случае отстутствия типовой подписки, используется подсистема **"Подписки на события"**. Если нужно внести изменения в типовую логику работы подписки, используется заимствование методов в расширении с аннотацией &ИзменениеИКонтроль.

Порядок действий при работе с подсистемой:
- Необходимо проверить, существует ли общая подписка на нужный тип объекта и событие. Например: **ДокументОбработкаПроведения**, **СправочникПриЗаписи** и так далее.
Недопускается смешение типов объектов и событий в одной подписке. Если подписки не существует, нужно её добавить, а так же общий модуль с аналогичным названием (напр. **__ДокументыОбработкаЗаполнения** - и подписка, и общий модуль).
Добавить их в подсистему **__ПодпискиНаСобытия**.
- Если создана новая подписка и модуль, то в модуле создается обработчик для подписки и выбрать его в подписке. У каждого события свой набор параметров.

```1C (BSL)
Процедура ДокументыОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
// Опустить обработку, если есть отказ или идёт загрузка обмена данными
Если Отказ Или Источник.ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

// Получение имени метода для исполнения
ИмяМетода = юр_ОбщегоНазначенияПовтИсп.ДокументыОбработкаПроведения().Получить(ТипЗнч(Источник));

// Выполнение метода, если он определён
Если ЗначениеЗаполнено(ИмяМетода) Тогда
// Попытка выполнения метода с необходимыми параметрами
Попытка
ПараметрыМетода = Новый Массив;
ПараметрыМетода.Добавить(Источник);
ПараметрыМетода.Добавить(Отказ);
ПараметрыМетода.Добавить(РежимПроведения);
ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода);
Исключение
// В случае ошибки вывод информации о ней
ВызватьИсключение СтрШаблон("%1%2Имя метода: %3", ОписаниеОшибки(), Символы.ПС, ИмяМетода);
КонецПопытки;
КонецЕсли;
КонецПроцедуры
```

- В общем модуле **__ОбщегоНазначенияПовтИсп** найти функцию с названием объекта и события и добавить в соответствие тип объекта и вызываемую процедуру. Если функции для данного набора нет, создать её.

```1C (BSL)
Функция ДокументыОбработкаПроведения() Экспорт
Соответствие = Новый Соответствие;
// Добавление соответствий между типами объектов и методами
Соответствие.Вставить(Тип("ДокументОбъект.СписаниеБезналичныхДенежныхСредств"),
"юр_ДокументыОбработкаПроведения.СписаниеБезналичныхДенежныхСредств");
Соответствие.Вставить(Тип("ДокументОбъект.ПоступлениеБезналичныхДенежныхСредств"),
"юр_ДокументыОбработкаПроведения.ПоступлениеБезналичныхДенежныхСредств");

Возврат Соответствие;
КонецФункции
```

- В модуле объекта и события добавить экспортную процедуру с такими же параметрами как у основной и добавить необходимую логику.
34 changes: 34 additions & 0 deletions docs/ПользовательскиеФункции.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Подсистема "пользовательские функции"

## Общие сведения
Пользовательские функции в системе 1С предназначены для эффективного повторного использования кода. Они позволяют классифицировать и хранить часто используемые фрагменты кода, упрощая настройку шаблонов проводок и других операций.
Форма списка справочника содержит перечень пользовательских функций, описание выделенной функции, а также код функции с указанием типов входных параметров в виде комментария.
В случае если выделена группа функций в окне кода появляется список функций, которые эта группа содержит.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct formatting and typographical issues in the general information section.

- ## Общие сведения
+ ## Общие сведения
-  Пользовательские функции в системе 1С предназначены для эффективного повторного использования кода. Они позволяют классифицировать и хранить часто используемые фрагменты кода, упрощая настройку шаблонов проводок и других операций.
+ Пользовательские функции в системе 1С предназначены для эффективного повторного использования кода. Они позволяют классифицировать и хранить часто используемые фрагменты кода, упрощая настройку шаблонов проводок и других операций.
-  Форма списка справочника  содержит перечень пользовательских функций, описание выделенной функции, а также код функции с указанием типов входных параметров в виде комментария.
+ Форма списка справочника содержит перечень пользовательских функций, описание выделенной функции, а также код функции с указанием типов входных параметров в виде комментария.

Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.

Suggested change
## Общие сведения
Пользовательские функции в системе 1С предназначены для эффективного повторного использования кода. Они позволяют классифицировать и хранить часто используемые фрагменты кода, упрощая настройку шаблонов проводок и других операций.
Форма списка справочника содержит перечень пользовательских функций, описание выделенной функции, а также код функции с указанием типов входных параметров в виде комментария.
В случае если выделена группа функций в окне кода появляется список функций, которые эта группа содержит.
## Общие сведения
Пользовательские функции в системе 1С предназначены для эффективного повторного использования кода. Они позволяют классифицировать и хранить часто используемые фрагменты кода, упрощая настройку шаблонов проводок и других операций.
Форма списка справочника содержит перечень пользовательских функций, описание выделенной функции, а также код функции с указанием типов входных параметров в виде комментария.
В случае если выделена группа функций в окне кода появляется список функций, которые эта группа содержит.


## Создание функции
Функции создаются в справочнике "Пользовательские функции". Они являются глобальными. Пользователь имеет возможность самостоятельно определить алгоритм, который сформирует возвращаемое значение.
Главным условием, является то, что сформированное значение должно быть помещено в переменную "Результат".
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct formatting and typographical issues in the function creation section.

- ## Создание функции
+ ## Создание функции
-  Функции создаются в справочнике "Пользовательские функции". Они являются глобальными. Пользователь имеет возможность самостоятельно определить алгоритм, который сформирует возвращаемое значение.
+ Функции создаются в справочнике "Пользовательские функции". Они являются глобальными. Пользователь имеет возможность самостоятельно определить алгоритм, который сформирует возвращаемое значение.
-  Главным условием, является то, что сформированное значение должно быть помещено в переменную "Результат".
+ Главным условием является то, что сформированное значение должно быть помещено в переменную "Результат".

Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.

Suggested change
## Создание функции
Функции создаются в справочнике "Пользовательские функции". Они являются глобальными. Пользователь имеет возможность самостоятельно определить алгоритм, который сформирует возвращаемое значение.
Главным условием, является то, что сформированное значение должно быть помещено в переменную "Результат".
## Создание функции
Функции создаются в справочнике "Пользовательские функции". Они являются глобальными. Пользователь имеет возможность самостоятельно определить алгоритм, который сформирует возвращаемое значение.
Главным условием является то, что сформированное значение должно быть помещено в переменную "Результат".


## Параметры функции
При создании пользовательской функции пользователь имеет возможность указать перечень входных параметров, их количество может быть произвольным.
Параметры и их тип хранятся в разрезе элементов, значения хранятся в разрезе пользователей.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нужно дописать что значения параметров используются для проверки, а для использования ссылочных констант в коде используется вкладка Переменные

Тип параметров - в текущим релизе реализованы типы параметров: примитивные типы, ссылочные типы, коллекции(таблица значений, список значений, массив, структура).
Допускается не указывать тип параметра, в таком случае при выборе значения параметра ограничение типа не накладывается. Существует возможность создания необязательных параметров.
![Параметры функ](https://github.com/firstBitSportivnaya/PSSL/assets/59319861/30367563-ce96-46d9-9b25-07d1b714cc87)

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove trailing space to adhere to coding standards.

-  
+

Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.

Suggested change

## Работа с функциями
В коде пользовательской функции допускается использование запросов. Для вызова конструктора запросов можно воспользоваться кнопкой "Конструктор запроса" на панели инструментов редактора кода или сочетанием клавиш "Ctrl + D".
В процессе написания пользовательской функции может потребоваться проверка выполнения кода. Для запуска пользовательской функции на выполнение можно воспользоваться кнопкой "Выполнить" на панели инструментов редактора кода.
Произойдет попытка исполнения кода функции в контексте общего модуля. В случае ошибки при исполнении кода, пользователю будет сообщено об этом.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct formatting and typographical issues in the working with functions section.

- ## Работа с функциями
+ ## Работа с функциями
-  В коде пользовательской функции допускается использование запросов. Для вызова конструктора запросов можно воспользоваться кнопкой "Конструктор запроса" на панели инструментов редактора кода или сочетанием клавиш "Ctrl + D".
+ В коде пользовательской функции допускается использование запросов. Для вызова конструктора запросов можно воспользоваться кнопкой "Конструктор запроса" на панели инструментов редактора кода или сочетанием клавиш "Ctrl + D".
-  В процессе написания пользовательской функции может потребоваться проверка выполнения кода. Для запуска пользовательской функции на выполнение можно воспользоваться кнопкой "Выполнить" на панели инструментов редактора кода.
+ В процессе написания пользовательской функции может потребоваться проверка выполнения кода. Для запуска пользовательской функции на выполнение можно воспользоваться кнопкой "Выполнить" на панели инструментов редактора кода.
-  Произойдет попытка исполнения кода функции в контексте общего модуля. В случае ошибки при исполнении кода, пользователю будет сообщено об этом.
+ Произойдет попытка исполнения кода функции в контексте общего модуля. В случае ошибки при исполнении кода, пользователю будет сообщено об этом.

Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.

Suggested change
## Работа с функциями
В коде пользовательской функции допускается использование запросов. Для вызова конструктора запросов можно воспользоваться кнопкой "Конструктор запроса" на панели инструментов редактора кода или сочетанием клавиш "Ctrl + D".
В процессе написания пользовательской функции может потребоваться проверка выполнения кода. Для запуска пользовательской функции на выполнение можно воспользоваться кнопкой "Выполнить" на панели инструментов редактора кода.
Произойдет попытка исполнения кода функции в контексте общего модуля. В случае ошибки при исполнении кода, пользователю будет сообщено об этом.
## Работа с функциями
В коде пользовательской функции допускается использование запросов. Для вызова конструктора запросов можно воспользоваться кнопкой "Конструктор запроса" на панели инструментов редактора кода или сочетанием клавиш "Ctrl + D".
В процессе написания пользовательской функции может потребоваться проверка выполнения кода. Для запуска пользовательской функции на выполнение можно воспользоваться кнопкой "Выполнить" на панели инструментов редактора кода.
Произойдет попытка исполнения кода функции в контексте общего модуля. В случае ошибки при исполнении кода, пользователю будет сообщено об этом.

Пример создания пользовательской функции:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нужно добавить пример вызова пользовательской функции из другого места __ОбщегоНазначенияСервер.ВыполнитьПользовательскуюФункциюСПараметрами(ТекстФункции, ТабПараметров, СтрПеременные) но вообще логичнее было бы доработать эту процедуру чтобы туда передавать ссылку на функцию и таблицу параметров, а переменные и код уже в общем модуле бы заполнялись по ссылке


```1C (BSL)
Функция УдалитьНедопустимыеСимволы(ИсходнаяСтрока) // Формируется на основании наименования элемента справочника и параметров
НедопустимыеСимволы = """'`/\[]{}:;|-=?*<>,.()+#№@!%^&~«»";
Результат = СтрСоединить(СтрРазделить(ИсходнаяСтрока, НедопустимыеСимволы, Истина));

Возврат Результат; // Установлен автоматически, отдельно прописывать не нужно
КонецФункции // Установлен автоматически, отдельно прописывать не нужно
```

31 changes: 26 additions & 5 deletions docs/ПредопределенныеЗначения.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,27 @@
# Подсистема предопределенных значений
# Подсистема "предопределенные значения"

Пример добавления нового элемента в модуле __ПредопределенныеЗначенияПереопределяемый
Для обращения к ссылкам из кода используем предопределенные значения, добавляем их в план видов характеристик (ПВХ) "__ПредопределенныеЗначения"

Для удобной работы с ПВХ у нас есть следующие функции:
- **__ОбщегоНазначенияСервер.ПолучитьПредопределенноеЗначение(Имя, ИспользоватьКэш)** - если это единичное значение, возвращается сразу оно, если установлен флаг "Список значений" то возвращает массив значений. Для получения часто используемых предопределенных значений, установите ИспользоватьКэш = Истина.
- Параметры:
- Имя - Строка
- ИспользоватьКэш - Булево
- Возвращаемое значение:
- ПроизвольныйТип - Значение переменной ПВХ.
- Массив - Массив значений переменной ПВХ.
- **__ОбщегоНазначенияСервер.ПолучитьПредопределенныеЗначения(Имена, ВРазрезеКлючей, ИспользоватьКэш)** - если "ВРазрезеКлючей" то возвращает соответствие нескольких элементов ПВХ, если ВРазрезеКлючей = ложь, то возвращает массив значений. Для получения часто используемых предопределенных значений, установите ИспользоватьКэш = Истина.
- Параметры:
- Имена - Строка - Имена переменных ПВХ, перечисленные через запятую.
- ВРазрезеКлючей - Булево
- ИспользоватьКэш - Булево
- Возвращаемое значение:
- Соответствие - Соответствие имен и значений переменных ПВХ.
- Ключ - Строка - имя значения
- Значение - ПроизвольныйТип
- Массив - ПроизвольныйТип

Пример добавления нового элемента в модуле __ПредопределенныеЗначенияПереопределяемый:

```1C (BSL)
Функция ПредопределенныеЗначения() Экспорт
Expand All @@ -21,7 +42,7 @@
КонецФункции
```

Пример получения множественного результата, второй параметр указывает если Истина, то результат оборачивается в соответствие, где Ключ - Имя предопределенного элемента, Значение - значение предопределенного элемента
Пример получения множественного результата:

```1C (BSL)
Функция ПолучитьДанныеАвторизации()
Expand All @@ -40,12 +61,12 @@
КонецФункции
```

Пример получения единичного результата
Пример получения единичного результата:

```1C (BSL)
Функция ЗаписыватьДанныеСтандартнымСпособом(ПроверяемаяДата)

Результат = __ОбщегоНазначенияСервер.ПолучитьПредопределенныеЗначения("ДатаНачалаЗаписиВРегистры", Истина, Истина);
Результат = __ОбщегоНазначенияСервер.ПолучитьПредопределенноеЗначение("ДатаНачалаЗаписиВРегистры", Истина);

Возврат ПроверяемаяДата = Результат;

Expand Down
Loading
Loading