mirror of
https://github.com/firstBitSportivnaya/PSSL.git
synced 2024-11-21 17:56:47 +02:00
Documentation on objects and modules (#52)
Добавлена документация по подсистемам: Предопределенные значения Соответствия объектов ИБ Программная модификация форм
This commit is contained in:
parent
b730bf299b
commit
4e6c5a9c64
@ -14,9 +14,9 @@
|
||||
|
||||
Реализованные на данный момент подсистемы:
|
||||
|
||||
1. Предопределенные значения
|
||||
2. Соответствия объектов ИБ
|
||||
3. Программная модификация форм
|
||||
1. [Предопределенные значения](docs/ПредопределенныеЗначения.md)
|
||||
2. [Соответствия объектов ИБ](docs/СоответствиеОбъектовИнформационнойБазы.md)
|
||||
3. [Программная модификация форм](docs/РаботаСФормами.md)
|
||||
4. Подписки на события
|
||||
5. Управление интеграциями
|
||||
6. Пользовательские функции
|
||||
|
71
docs/ПереопределениеМетодовБСП.md
Normal file
71
docs/ПереопределениеМетодовБСП.md
Normal file
@ -0,0 +1,71 @@
|
||||
# Подисистема аналог библиотеки стандартных подсистем, для переопределения методов БСП
|
||||
|
||||
## 1. Использование общих модулей для переадресации методов
|
||||
Для переадресации методов используются общие модули-аналоги в названии которых содержится "Служебный", пример: "__ОбщегоНазначенияСлужебный". В случае отсутствия библиотеки стандартных подсистем(БСП), используются аналоги модулей и методов БСП.
|
||||
|
||||
Пример вызова серверной процедуры:
|
||||
|
||||
```1C (BSL)
|
||||
&НаСервере
|
||||
Процедура СохранитьКаталогИсходногоКодаКонфигурации(Каталог)
|
||||
__ОбщегоНазначенияСлужебный.ХранилищеОбщихНастроекСохранить(
|
||||
КлючОбъекта(),
|
||||
"__ПользовательскиеФункции_КаталогИсходногоКода",
|
||||
Каталог);
|
||||
КонецПроцедуры
|
||||
```
|
||||
|
||||
```1C (BSL)
|
||||
Процедура ОчиститьИсториюИнтеграции() Экспорт
|
||||
Попытка
|
||||
// Попытка удаления элементов справочника
|
||||
Исключение
|
||||
ИмяСобытия = НСтр("ru = 'Очистка истории интеграции'");
|
||||
ТекстОшибки = СтрШаблон("Не удалось удалить запись истории интеграции %1", ВыборкаДетальныеЗаписи.Ссылка);
|
||||
|
||||
__ЖурналРегистрацииСлужебный.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка,,, ТекстОшибки);
|
||||
КонецПопытки;
|
||||
КонецПроцедуры
|
||||
```
|
||||
|
||||
## 2. Добавление новых методов-аналогов БСП
|
||||
### 2.1 Поиск или создание внутренних модулей, аналогичных модулям БСП
|
||||
Найти внутренний модуль, с аналогичным названием и свойствами в БСП, если модуль отсутствует необходимо добавить новый, в имени должно содержатся "Служебный" (согласно общей концепции переопределения методов БСП).
|
||||
|
||||
Пример: "__ОбщегоНазначенияСлужебный", "__ЖурналРегистрацииСлужебный".
|
||||
|
||||
Методы располагаются в области "ПереадресацияМетодов", в описание метода указать см. __ИмяМодуля.ИмяМетода.
|
||||
|
||||
```1C (BSL)
|
||||
#Область ПереадресацияМетодов
|
||||
|
||||
// См. __ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации.
|
||||
Процедура ВыполнитьМетодКонфигурации(Знач ИмяМетода, Знач Параметры = Неопределено) Экспорт
|
||||
Модуль = ПолучитьМодуль();
|
||||
Модуль.ВыполнитьМетодКонфигурации(ИмяМетода, Параметры);
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
```
|
||||
|
||||
Если модуль-аналог новый добавить функцию в области "СлужебныеПроцедурыИФункции", где __ИмяМодуля для серверных модулей "__ОбщегоНазначенияПовтИсп.", для клиентских "__ОбщегоНазначенияКлиент"
|
||||
|
||||
```1C (BSL)
|
||||
Функция ПолучитьМодуль()
|
||||
Возврат __ИмяМодуля.ОбщийМодуль(ИмяМодуляБСП, ИмяМодуляАналогаБСП);
|
||||
КонецФункции
|
||||
```
|
||||
### 2.2 Создание методов в модуле-аналоге
|
||||
Пример: "__ОбщегоНазначения". Методы располагаются в области "МетодыАналогиБСП", описание метода начинать с "Аналог метода БСП."
|
||||
|
||||
```1C (BSL)
|
||||
#Область МетодыАналогиБСП
|
||||
|
||||
// Аналог метода БСП. Описание
|
||||
//
|
||||
Процедура ВыполнитьМетодКонфигурации(Знач ИмяМетода, Знач Параметры = Неопределено) Экспорт
|
||||
// ...
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
```
|
54
docs/ПредопределенныеЗначения.md
Normal file
54
docs/ПредопределенныеЗначения.md
Normal file
@ -0,0 +1,54 @@
|
||||
# Подсистема предопределенных значений
|
||||
|
||||
Пример добавления нового элемента в модуле __ПредопределенныеЗначенияПереопределяемый
|
||||
|
||||
```1C (BSL)
|
||||
Функция ПредопределенныеЗначения() Экспорт
|
||||
|
||||
Результат = ТаблицаПредопределенных();
|
||||
|
||||
// Добавление
|
||||
НоваяНастройка = Результат.Добавить();
|
||||
НоваяНастройка.Наименование = "Пароль доступа на ИТС";
|
||||
НоваяНастройка.ИдентификаторНастройки = "ПарольДоступаНаИТС";
|
||||
НоваяНастройка.Пароль = Истина;
|
||||
НоваяНастройка.СписокЗначений = Ложь;
|
||||
НоваяНастройка.ТипЗначения = Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(150));
|
||||
// КонецДобавления
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
```
|
||||
|
||||
Пример получения множественного результата, второй параметр указывает если Истина, то результат оборачивается в соответствие, где Ключ - Имя предопределенного элемента, Значение - значение предопределенного элемента
|
||||
|
||||
```1C (BSL)
|
||||
Функция ПолучитьДанныеАвторизации()
|
||||
|
||||
ДанныеАвторизации = Новый Структура("Логин, Пароль");
|
||||
Результат = __ОбщегоНазначенияСервер.ПолучитьПредопределенныеЗначения("Логин_ИТС, Пароль_ИТС", Истина, Истина);
|
||||
|
||||
Для Каждого Пара Из Результат Цикл
|
||||
Сообщить("Ключ: " Пара.Ключ);
|
||||
Сообщить("Значение: "+ Пара.Значение);
|
||||
ДанныеАвторизации[Пара.Ключ] = Пара.Значение;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат ДанныеАвторизации;
|
||||
|
||||
КонецФункции
|
||||
```
|
||||
|
||||
Пример получения единичного результата
|
||||
|
||||
```1C (BSL)
|
||||
Функция ЗаписыватьДанныеСтандартнымСпособом(ПроверяемаяДата)
|
||||
|
||||
Результат = __ОбщегоНазначенияСервер.ПолучитьПредопределенныеЗначения("ДатаНачалаЗаписиВРегистры", Истина, Истина);
|
||||
|
||||
Возврат ПроверяемаяДата = Результат;
|
||||
|
||||
КонецФункции
|
||||
```
|
||||
|
143
docs/РаботаСФормами.md
Normal file
143
docs/РаботаСФормами.md
Normal file
@ -0,0 +1,143 @@
|
||||
# Общий модуль __РаботаСФормами - Модуль динамического формирования интерфейса
|
||||
|
||||
Демо-пример использования методов общего модуля
|
||||
|
||||
```1C (BSL)
|
||||
#Область ДемоПример
|
||||
|
||||
#Область РаботаСРеквизитамиФормы
|
||||
|
||||
//
|
||||
СтруктураРеквизитов = Новый Структура;
|
||||
СтруктураРеквизитов.Вставить("_ДемоДата", __РаботаСФормами.ОписаниеТипаДатаВремя());
|
||||
СтруктураРеквизитов.Вставить("_ДемоНомер", __РаботаСФормами.ОписаниеТипаСтрока(11));
|
||||
СтруктураРеквизитов.Вставить("_ДемоПокупатель", __РаботаСФормами.ОписаниеТипаСправочник("_ДемоКонтрагенты"));
|
||||
СтруктураРеквизитов.Вставить("_ДемоПлатнаяДоставка", __РаботаСФормами.ОписаниеТипаБулево());
|
||||
СтруктураРеквизитов.Вставить("_ДемоТолькоБудни", __РаботаСФормами.ОписаниеТипаБулево());
|
||||
СтруктураРеквизитов.Вставить("_ДемоПолКурьера", __РаботаСФормами.ОписаниеТипаПеречисление("_ДемоПолФизическогоЛица"));
|
||||
СтруктураРеквизитов.Вставить("_ДемоТовары", __РаботаСФормами.ОписаниеТипаТаблицаЗначений());
|
||||
СтруктураРеквизитов.Вставить("_ДемоКомментарий", __РаботаСФормами.ОписаниеТипаСтрока(100));
|
||||
__РаботаСФормами.СоздатьРеквизиты(Форма, СтруктураРеквизитов);
|
||||
|
||||
// Реквизит таб. части.
|
||||
СтруктураРеквизитовТабЧасти = Новый Структура;
|
||||
СтруктураРеквизитовТабЧасти.Вставить("_ДемоТовар", __РаботаСФормами.ОписаниеТипаСправочник("_ДемоНоменклатура"));
|
||||
СтруктураРеквизитовТабЧасти.Вставить("_ДемоКоличество", __РаботаСФормами.ОписаниеТипаЧисло(10));
|
||||
СтруктураРеквизитовТабЧасти.Вставить("_ДемоЦена", __РаботаСФормами.ОписаниеТипаЧисло(10,2));
|
||||
СтруктураРеквизитовТабЧасти.Вставить("_ДемоУпаковать", __РаботаСФормами.ОписаниеТипаБулево());
|
||||
СтруктураРеквизитовТабЧасти.Вставить("_ДемоХрупкое", __РаботаСФормами.ОписаниеТипаБулево());
|
||||
__РаботаСФормами.СоздатьРеквизитыТаблицы(Форма, "_ДемоТовары", СтруктураРеквизитовТабЧасти);
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область РаботаСГруппамиФормы
|
||||
|
||||
//
|
||||
ГруппаШапка = __РаботаСФормами.СоздатьГруппаОбычнаяБезОтображения(Форма, "_ДемоГруппаШапка", Форма, 3);
|
||||
ГруппаШапкаЛевая = __РаботаСФормами.СоздатьГруппаОбычнаяБезОтображения(Форма, "_ДемоГруппаШапкаЛевая", ГруппаШапка, 1);
|
||||
ГруппаНомерДата = __РаботаСФормами.СоздатьГруппаОбычнаяБезОтображения(Форма, "_ДемоГруппаНомерДата", ГруппаШапкаЛевая, 3);
|
||||
ГруппаШапкаПравая = __РаботаСФормами.СоздатьГруппаОбычнаяБезОтображения(Форма, "_ДемоГруппаШапкаПравая", ГруппаШапка, 1);
|
||||
ГруппаСтраниц = __РаботаСФормами.СоздатьГруппаСтраниц(Форма, "_ДемоГруппаСтраниц", Форма, 1, 1);
|
||||
ГруппаТовары = __РаботаСФормами.СоздатьСтраница(Форма, "_ДемоГруппаТовары", ГруппаСтраниц, "Товары",, 1, 1);
|
||||
ГруппаЗаказы = __РаботаСФормами.СоздатьСтраница(Форма, "_ДемоГруппаЗаказы", ГруппаСтраниц, "Заказы клиента",, 1, 1);
|
||||
ГруппаПодвал = __РаботаСФормами.СоздатьГруппаОбычнаяБезОтображения(Форма, "_ДемоГруппаПодвал", Форма, 3);
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область РаботаСЭлементамиФормы
|
||||
|
||||
//
|
||||
НовыйЭлемент = __РаботаСФормами.СоздатьПоле(Форма, "_ДемоНомер", ГруппаНомерДата, "Номер", 1, "_ДемоНомер");
|
||||
ШиринаПоля = __РаботаСФормами.СтруктураСвойствРасположение(10,,, 10, Ложь,, Ложь);
|
||||
ОсновныеНастройкиПоля = __РаботаСФормами.СтруктураСвойствОсновные(,,,,,, Истина);
|
||||
__РаботаСФормами.УстановитьМножествоСтруктурСвойствЭлементу(НовыйЭлемент, ШиринаПоля, ОсновныеНастройкиПоля);
|
||||
|
||||
//
|
||||
__РаботаСФормами.СоздатьПоле(Форма, "_ДемоДата", ГруппаНомерДата, "от", 1, "_ДемоДата");
|
||||
__РаботаСФормами.СоздатьПоле(Форма, "_ДемоПокупатель", ГруппаШапкаЛевая, "Покупатель", 1, "_ДемоПокупатель");
|
||||
__РаботаСФормами.СоздатьПоле(Форма, "_ДемоПлатнаяДоставка", ГруппаШапкаЛевая, "Платная доставка", 2, "_ДемоПлатнаяДоставка");
|
||||
__РаботаСФормами.СоздатьПоле(Форма, "_ДемоПолКурьера", ГруппаШапкаПравая, "Пол курьера",1, "_ДемоПолКурьера");
|
||||
__РаботаСФормами.СоздатьПоле(Форма, "_ДемоКомментарий", ГруппаПодвал, "Комментарий", 1, "_ДемоКомментарий");
|
||||
|
||||
// Флажки
|
||||
__РаботаСФормами.СоздатьПолеФлажок(Форма, "ТолькоБудни", ГруппаШапкаЛевая, "Только будни", 3, "_ДемоТолькоБудни");
|
||||
|
||||
// Декорации
|
||||
__РаботаСФормами.СоздатьДекорацияКартинка(Форма, "_ДемоКартинкаЛоготип", ГруппаПодвал, "_ДемоРазделБизнесПроцессыИЗадачи");
|
||||
__РаботаСФормами.СоздатьДекорацияНадпись(Форма, "ИнформационнаяНадпись", ГруппаЗаказы, "Заказы по клиенту с начала года", 1);
|
||||
|
||||
НовыйЭлемент = __РаботаСФормами.СоздатьДекорацияКартинка(Форма, "_ДемоBotFather", ГруппаПодвал, "BotFather");
|
||||
ОсновныеНастройкиПоля = __РаботаСФормами.СтруктураСвойствОсновные(,,,, Ложь);
|
||||
__РаботаСФормами.УстановитьМножествоСтруктурСвойствЭлементу(НовыйЭлемент, ОсновныеНастройкиПоля);
|
||||
|
||||
// Выпадающий список
|
||||
МассивЗначений = Новый Массив;
|
||||
МассивЗначений.Добавить("Седан");
|
||||
МассивЗначений.Добавить("Универсал");
|
||||
МассивЗначений.Добавить("Грузовик");
|
||||
МассивЗначений.Добавить("Метро");
|
||||
__РаботаСФормами.СоздатьВыпадающийСписок(Форма, "ВыборТС", ГруппаШапкаПравая, "Тип ТС", МассивЗначений);
|
||||
|
||||
// Переключатель
|
||||
МассивЗначений = Новый Массив;
|
||||
МассивЗначений.Добавить("Обычная");
|
||||
МассивЗначений.Добавить("Срочно");
|
||||
МассивЗначений.Добавить("Вчера");
|
||||
__РаботаСФормами.СоздатьПереключатель(Форма, "СрочностьДоставки", ГруппаШапкаПравая, "Срочность", МассивЗначений, 1);
|
||||
|
||||
// Таблица формы
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("_ДемоТовар", "Товар");
|
||||
СтруктураКолонок.Вставить("_ДемоКоличество", "Количество");
|
||||
СтруктураКолонок.Вставить("_ДемоЦена", "Цена");
|
||||
НовыйЭлемент = __РаботаСФормами.СоздатьТаблицаФормы(Форма, "_ДемоТовары", ГруппаТовары, "_ДемоТовары", СтруктураКолонок);
|
||||
|
||||
ВысотаТаблицы = __РаботаСФормами.СтруктураСвойствТаблицыФормы(,,,,,,, 4);
|
||||
__РаботаСФормами.УстановитьСвойстваЭлементу(НовыйЭлемент, ВысотаТаблицы);
|
||||
|
||||
// Колонки таблицы формы
|
||||
ГруппаКолонки = __РаботаСФормами.СоздатьГруппаКолонокТаблицыФормы(Форма, "_ДемоГруппаДополнительно", НовыйЭлемент, 2,,, "Дополнительно");
|
||||
__РаботаСФормами.СоздатьКолонкаТаблицыФормы(Форма, "_ДемоУпаковать", ГруппаКолонки, 2, "Упаковать", "_ДемоТовары._ДемоУпаковать");
|
||||
__РаботаСФормами.СоздатьКолонкаТаблицыФормы(Форма, "_ДемоХрупкое", ГруппаКолонки, 2, "Стекло", "_ДемоТовары._ДемоХрупкое");
|
||||
|
||||
// Динамический список
|
||||
ТекстЗапроса = "ВЫБРАТЬ
|
||||
| _ДемоСчетФактураПолученный.Ссылка КАК Ссылка,
|
||||
| _ДемоСчетФактураПолученный.Номер КАК _ДемоНомер,
|
||||
| _ДемоСчетФактураПолученный.Дата КАК _ДемоДата,
|
||||
| _ДемоСчетФактураПолученный.Контрагент КАК _ДемоКонтрагент,
|
||||
| _ДемоСчетФактураПолученный.Сумма КАК _ДемоСумма
|
||||
|ИЗ
|
||||
| Документ._ДемоСчетФактураПолученный КАК _ДемоСчетФактураПолученный
|
||||
|ГДЕ
|
||||
| _ДемоСчетФактураПолученный.Дата > &Дата";
|
||||
ПараметрыЗапроса = Новый Структура;
|
||||
ПараметрыЗапроса.Вставить("Дата", НачалоГода(ТекущаяДатаСеанса()));
|
||||
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("_ДемоДата", "");
|
||||
СтруктураКолонок.Вставить("_ДемоНомер", "");
|
||||
СтруктураКолонок.Вставить("_ДемоКонтрагент","Покупатель");
|
||||
СтруктураКолонок.Вставить("_ДемоСумма", "");
|
||||
НовыйЭлемент = __РаботаСФормами.СоздатьДинамическийСписок(Форма, "_ДемоЗаказы", ГруппаЗаказы, ТекстЗапроса,
|
||||
ПараметрыЗапроса,, СтруктураКолонок,,, Истина);
|
||||
__РаботаСФормами.УстановитьСвойстваЭлементу(НовыйЭлемент, ВысотаТаблицы);
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область РаботаСКомандами
|
||||
|
||||
//
|
||||
__РаботаСФормами.СоздатьКоманду(Форма, "КогдаОбед", НСтр("ru='Когда обед?'; en='When is lunch?'"), "ПодсказатьКогдаОбед");
|
||||
__РаботаСФормами.СоздатьКнопка(Форма, "КогдаОбед", ГруппаПодвал,, "КогдаОбед", 2);
|
||||
|
||||
__РаботаСФормами.СоздатьКоманду(Форма, "СкрытьОтца", "Скрыть отца", "СкрытьОтца");
|
||||
__РаботаСФормами.СоздатьКнопка(Форма, "СкрытьОтца", ГруппаПодвал,, "СкрытьОтца", 1);
|
||||
|
||||
__РаботаСФормами.СоздатьКоманду(Форма, "ПоказатьОтца", "Показать отца", "ПоказатьОтца");
|
||||
__РаботаСФормами.СоздатьКнопка(Форма, "ПоказатьОтца", ГруппаПодвал,, "ПоказатьОтца", 1);
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
```
|
38
docs/СоответствиеОбъектовИнформационнойБазы.md
Normal file
38
docs/СоответствиеОбъектовИнформационнойБазы.md
Normal file
@ -0,0 +1,38 @@
|
||||
# Соответствие объектов информационной базы через регистр сведений
|
||||
|
||||
1. ПолучитьСоответствиеОбъектовИБ - Позволяет фильтровать результаты по трем объектам.
|
||||
|
||||
```1C (BSL)
|
||||
Процедура Тест()
|
||||
// Вызов метода с заданными параметрами
|
||||
МассивСоответствий = __ОбщегоНазначенияСервер.ПолучитьСоответствиеОбъектовИБ(ТипСоответствия, Объект1, Объект2, , Истина);
|
||||
|
||||
// Пример обработки полученного массива структур
|
||||
Для Каждого Соответствие Из МассивСоответствий Цикл
|
||||
Сообщить("Тип соответствия: " + Соответствие.ТипСоответствия);
|
||||
Сообщить("Объект 1: " + Соответствие.Объект1);
|
||||
Сообщить("Объект 2: " + Соответствие.Объект2);
|
||||
Сообщить("Объект 3: " + Соответствие.Объект3);
|
||||
КонецЦикла;
|
||||
КонецПроцедуры
|
||||
```
|
||||
2. ПолучитьЗначенияОбъектаСоответствияПоКлючу
|
||||
|
||||
```1C (BSL)
|
||||
Процедура Тест()
|
||||
ИмяКлюча = "Объект1";
|
||||
ЗначениеКлюча = Склад;
|
||||
ИмяОбъекта = "Объект3";
|
||||
// Вызов метода с заданными параметрами
|
||||
Значения = __ОбщегоНазначенияСервер.ПолучитьЗначенияОбъектаСоответствияПоКлючу(ТипСоответствия, ИмяКлюча, ЗначениеКлюча, ИмяОбъекта);
|
||||
|
||||
// Пример использования полученного массива значений
|
||||
Если ЗначениеЗаполнено(Значения) Тогда
|
||||
Для Каждого Значение Из Значения Цикл
|
||||
Сообщить("Значение объекта: " + Значение);
|
||||
КонецЦикла;
|
||||
Иначе
|
||||
Сообщить("По заданному ключу объекты не найдены.");
|
||||
КонецЕсли;
|
||||
КонецПроцедуры
|
||||
```
|
Loading…
Reference in New Issue
Block a user