From ea2dcc03fc5c06e082779a9677e7a6e51c6600e1 Mon Sep 17 00:00:00 2001 From: wakadakawaka Date: Thu, 17 Apr 2025 00:42:23 +0500 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=81=D1=82=D0=B0=D1=82=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Длительная многопоточная операция.md | 150 ++++++++++++++++++ .../Длительная однопоточная операция.md | 127 +++++++++++++++ .../Настройки/Внешняя печатная форма.md | 4 +- .../Подключение к подсистемам/Дата запрета изменений.md | 54 +++++++ .../БСП и типовые/Механизмы печати/Макет печатной формы.md | 20 +++ .../Механизмы печати/Пример вывода настроек печати.md | 148 +++++++++++++++++ .../Подключение БСП к собственной конфигурации.md | 26 +++ 7 files changed, 528 insertions(+), 1 deletion(-) create mode 100644 src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Длительные операции и выполнение в фоне/Длительная многопоточная операция.md create mode 100644 src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Длительные операции и выполнение в фоне/Длительная однопоточная операция.md create mode 100644 src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Интеграция собственных объектов/Подключение к подсистемам/Дата запрета изменений.md create mode 100644 src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Механизмы печати/Макет печатной формы.md create mode 100644 src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Механизмы печати/Пример вывода настроек печати.md create mode 100644 src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Подключение БСП к собственной конфигурации.md diff --git a/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Длительные операции и выполнение в фоне/Длительная многопоточная операция.md b/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Длительные операции и выполнение в фоне/Длительная многопоточная операция.md new file mode 100644 index 0000000..80ddb5a --- /dev/null +++ b/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Длительные операции и выполнение в фоне/Длительная многопоточная операция.md @@ -0,0 +1,150 @@ +# Определение длительной операции +Многопоточные операции применяются в случаях обработки большого массива данных — например, для изменения реквизитов номенклатуры, обработки больших табличных документов, массового добавления объектов и пр. +В типовых конфигурациях есть механизм для создания операций, выполняющихся в нескольких потоках — этот механизм определен в общих модулях `«Длительные операции»` +Для примера возьмем алгоритм, изменяющий реквизиты объектов справочника `Номенклатура`. Реализуем в общем модуле процедуру, которая будет вызываться в многопоточном режиме: +```bsl +Процедура ИзменитьРеквизитыНоменклатуры(НаборЗаписей) Экспорт + + Если Не Пользователи.ЭтоПолноправныйПользователь(Пользователи.ТекущийПользователь()) Тогда + ТекстСообщения = "Это действие может выполнить только администратор"; + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения); + Возврат; + КонецЕсли; + + Для Каждого Элемент Из НаборЗаписей Цикл + + Об = Элемент.Номенклатура.ПолучитьОбъект(); + Если Об.Заблокирован() Тогда + Продолжить; + КонецЕсли; + + Попытка + Об.Заблокировать(); + Исключение + ТекстСообщения = СтрШаблон("Не удалось изменить %1. Объект заблокирован", Элемент.Номенклатура); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения); + Продолжить; + КонецПопытки; + + Об.ИспользоватьУпаковки = Истина; + Об.НаборУпаковок = Элемент.НаборУпаковок; + Попытка + Об.Записать(); + Исключение + ТекстСообщения = СтрШаблон("Не удалось изменить %1. Ошибка записи объекта", Элемент.Номенклатура); + ОбщегоНазначения.СообщитьПользователю(ТекстСообщения); + Продолжить; + КонецПопытки; + + КонецЦикла; + +КонецПроцедуры +``` + +# Определение клиентских вызовов +![image.png](https://sinenikolsky.ru/s/QEWSKmHn7HKGJX4/download?path=%2F2025%2F04%2F16&files=0f68e5a7-bd92-4e6a-9d6b-4972c5ed1f44.png) +Команда `«Установить новый набор»` выполняет разделение строк ТЧ на равные порции, т.е. создает список наборов, которые будут передаваться в процедуру из шага 1 (Функция `«СписокНаборовДанныхДляДлительнойОперации«`). Дополнительно инициализируются настройки ожидания и параметры выполняемой процедуры (Функция `«ДлительныеОперации«`). Также указывается процедура, которая будет выполнена после завершения всех потоков длительной операции +```bsl +&НаКлиенте +Процедура УстановитьНовыйНабор(Команда) + + ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект); + ПараметрыОжидания.ВыводитьОкноОжидания = Истина; + ПараметрыОжидания.ВыводитьСообщения = Истина; + ПараметрыОжидания.ОповещениеПользователя.Показать = Истина; + + СписокНаборов = СписокНаборовДанныхДляДлительнойОперации(); + + МногопоточнаяОперация = ДлительнаяОперация(УникальныйИдентификатор, СписокНаборов); + + ОписаниеОповещения = Новый ОписаниеОповещения("ВыполнитьПоЗавершениюМногопоточнойОперации", ЭтотОбъект); + + ДлительныеОперацииКлиент.ОжидатьЗавершение(МногопоточнаяОперация, ОписаниеОповещения, ПараметрыОжидания); + +КонецПроцедуры + +&НаКлиенте +Функция СписокНаборовДанныхДляДлительнойОперации() + + НаборЗаписей = Новый Массив; + + КоличествоЗаписейНаПоток = Цел(Объект.СписокНоменклатуры.Количество() / КоличествоПотоков) + 1; + + СписокНаборов = Новый Массив; + + Сч = 1; + Для Каждого Строка Из Объект.СписокНоменклатуры Цикл + + Если Не Строка.НовыйИспользоватьУпаковки Тогда + Сообщить("Не добавлена строка " + Строка.НомерСтроки); + Продолжить; + КонецЕсли; + + ПараметрыСтроки = Новый Структура; + ПараметрыСтроки.Вставить("Номенклатура", Строка.Номенклатура); + ПараметрыСтроки.Вставить("ИспользоватьУпаковки", Истина); + ПараметрыСтроки.Вставить("НаборУпаковок", Строка.НовыйНаборУпаковок); + + НаборЗаписей.Добавить(ПараметрыСтроки); + Сч = Сч + 1; + НужноДобавитьНабор = Истина; + + Если Сч % КоличествоЗаписейНаПоток = 0 Тогда + СписокНаборов.Добавить(НаборЗаписей); + НаборЗаписей = Новый Массив; + НужноДобавитьНабор = Ложь; + КонецЕсли; + + КонецЦикла; + + Если НужноДобавитьНабор Тогда + СписокНаборов.Добавить(НаборЗаписей); + КонецЕсли; + + КоличествоЗаписей = 0; + + Для Каждого Массив Из СписокНаборов Цикл + + КоличествоЗаписей = КоличествоЗаписей + Массив.Количество(); + + КонецЦикла; + + Возврат СписокНаборов; + +КонецФункции + +&НаКлиенте +Процедура ВыполнитьПоЗавершениюМногопоточнойОперации(Задание, ДополнительныеПараметры) Экспорт + + Если Задание = Неопределено Тогда + Возврат; + КонецЕсли; + + Сообщить(Задание.Статус); + +КонецПроцедуры +``` +В функции длительная операция необходимо правильно сформировать параметры для метода `ДлительныеОперации.ВыполнитьПроцедуруВНесколькоПотоков`. Первым аргументом передаем полное имя экспортного метода, который нужно выполнять, вторым — структуру `ДлительныеОперации.ПараметрыВыполненияВФоне`, а третьим — правильно оформленный набор параметров. + +**Набор параметров** — это соответствие, ключ — произвольный тип, значение — МАССИВ параметров, которые нужно передать в вызываемый метод. Количество параметров — **до 7 шт**. В примере метод `«ИзменитьРеквизитыНоменклатуры»` принимает только один параметр, соответственно в значение записи набора параметров мы передаем обернутое в массив значение параметра (`«ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Набор)»`) +```bsl +&НаСервере +Функция ДлительнаяОперация(УИД, СписокНаборовДанных) + + ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УИД); + ПараметрыВыполнения.НаименованиеФоновогоЗадания = "Многопоточное изменение реквизитов номенклатуры"; + ПараметрыВыполнения.ЗапуститьВФоне = Истина; + + Сч = 1; + НаборПараметровПроцедуры = Новый Соответствие; + Для Каждого Набор Из СписокНаборовДанных Цикл + НаборПараметровПроцедуры.Вставить("Набор №" + Сч, ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Набор)); + Сч = Сч + 1; + КонецЦикла; + + Возврат ДлительныеОперации.ВыполнитьПроцедуруВНесколькоПотоков( + "Расш1_ДлительныеОперации.ИзменитьРеквизитыНоменклатуры", + ПараметрыВыполнения, НаборПараметровПроцедуры); + +КонецФункции +``` \ No newline at end of file diff --git a/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Длительные операции и выполнение в фоне/Длительная однопоточная операция.md b/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Длительные операции и выполнение в фоне/Длительная однопоточная операция.md new file mode 100644 index 0000000..2390093 --- /dev/null +++ b/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Длительные операции и выполнение в фоне/Длительная однопоточная операция.md @@ -0,0 +1,127 @@ +# Схема выполнения длительной серверной операции +Механизм длительных операций БСП необходим для выполнения тяжелых операций без блокирования окна клиентского приложения. По умолчанию платформа блокирует клиентский интерфейс до тех пор, пока серверная операция не будет завершена. Подсистема "Длительные операции" позволяет обойти эту проблему +![diagramma-bez-nazvaniya.drawio.png](https://sinenikolsky.ru/s/QEWSKmHn7HKGJX4/download?path=%2F2025%2F04%2F16&files=fe7a4397-bffe-44ca-be28-f3f909684212.png) + +## Создание длительной операции +Длительную операцию необходимо размещать в **экспортной** функции. Рекомендуется выносить их в общий модуль. Например, для примера создаем длительную функцию в общем модуле `МоиДлительныеОперации` +```bsl +Функция МояДлительнаяОперацияНаСервере(ВремяОжидания) Экспорт + + // Имитация длительной операции + КонечнаяДата = ТекущаяДатаСеанса() + ВремяОжидания; + Пока ТекущаяДатаСеанса() < КонечнаяДата Цикл + + //=================================================================================================== + + // Алгоритмы операции, Очень много страшного тяжелого кода + + //=================================================================================================== + + + //=================================================================================================== + // Относится к механизму "Длительные операции" + // Расчет прогресса для сообщения клиенту + СекундОсталось = КонечнаяДата - ТекущаяДатаСеанса(); + Прогресс = -(Окр((СекундОсталось / ВремяОжидания) * 100, 0)) + 100; + // Сообщение клиенту + ДлительныеОперации.СообщитьПрогресс(Прогресс, "Выполняюсь, осталось " + (100 - Прогресс) + "%"); + //=================================================================================================== + + КонецЦикла; + + // Любой тип, доступный на клиенте. + // Можно, например, возвращать какой-то сложный табличный документ, или ссылку на какой-нибудь объект. + Возврат "Все выполнилось хорошо"; + +КонецФункции +``` + +## Настройка модуля формы + +Так как пользователь взаимодействует с формами, очевидно, что инициализация процесса начинается именно с нее. Для примера создадим внешнюю обработку с одним числовым реквизитом и командой. Планируется запускать длительную операцию на то количество секунд, которое введет пользователь +Как показано на схеме, при нажатии на кнопку на стороне клиента должны сформироваться параметры ожидания. +`Параметры ожидания` — это структура с определенными ключами, на основании которой будут установлены настройки длительной операции. Параметры формируются функцией общего модуля `ДлительныеОперацииКлиент.ПараметрыОжидания`. Описание можно посмотреть в общем модуле. Пример реализации: +```bsl +&НаКлиенте +Процедура ВыполнитьВФоне(Команда) + + // Аргументом передается форма, с которой запускается длительное задание + ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект); + ПараметрыОжидания.ТекстСообщения = "Выполняется длительная операция."; + ПараметрыОжидания.ВыводитьПрогрессВыполнения = Истина; + ПараметрыОжидания.Интервал = 2; + + // Структура, которая передается в качестве настроек оповещения при завершении длительной операции + ПараметрыОповещения = Новый Структура("НавигационнаяСсылка, Пояснение, Картинка, Важное" + , "" + , "" + , Неопределено + , Ложь); + + ПараметрыОповещения.Вставить("Показать", Истина); + ПараметрыОповещения.Вставить("Текст", "Синхронизация завершена"); + + ПараметрыОжидания.ОповещениеПользователя = ПараметрыОповещения; + + // Инициализация запуска длительной операции. + МояДлительнаяОперация = ДлительнаяОперация(УникальныйИдентификатор, "МояДлительнаяОперацияНаСервере", ДлительностьОжидания); + + // Определение действия после завершения длительной операции + ОписаниеОповещения = Новый ОписаниеОповещения("ПослеЗавершенияВыполненияДлительнойФункции", ЭтаФорма); + + // Запуск ожидания завершения + ДлительныеОперацииКлиент.ОжидатьЗавершение(МояДлительнаяОперация + , ОписаниеОповещения + , ПараметрыОжидания); + + +КонецПроцедуры +``` +В этом методе есть вызов функции `ДлительнаяОперация`, собственно и запускает выполнение серверной функции. Она возвращает объект, позволяющий отслеживать выполнение операции с клиента в методе `ДлительныеОперацииКлиент.ОжидатьЗавершение` +```bsl +&НаСервереБезКонтекста +Функция ДлительнаяОперация(УИДЭтойФормы, ИмяФункции, ДлительностьОжидания) + + // Указываем идентификатор владельца задания, + // полный путь до тяжелой операции и дополнительные параметры (до 7 шт), + // которые необходимо передать в тяжелую операцию + Операция = ДлительныеОперации.ВыполнитьФункцию(УИДЭтойФормы + , "МоиДлительныеОперации." + ИмяФункции + , ДлительностьОжидания); + + Возврат Операция; + +КонецФункции +``` +Также в качестве параметра ожидания на клиенте было передано `ОписаниеОповещения`, которое определяет поведение после завершения выполнения длительной операции. +> ВАЖНО! Длительная операция может завершиться как удачно, так и нет, и это нужно учитывать +```bsl +&НаКлиенте +Процедура ПослеЗавершенияВыполненияДлительнойФункции(Результат, ДополнительныеПараметры) Экспорт + + // В аргумент "Результат" принимается структура с определенными ключами, среди которых + // наиболее интересны Статус, АдресРезультата, КраткоеПредставлениеОшибки + // + //Если что-то пошло не так, то результат будет Неопределено + Если Результат = Неопределено Тогда + Сообщить("Ошибка выполнения"); + Возврат; + КонецЕсли; + + // Если результат не равер Неопределено, то анализируется статус + // Варианты статусов - "Выполняется", "Выполнено", "Ошибка", "Отменено" + Если Результат.Статус = "Выполнено" Тогда + // Возвращаемое значение длительной операции помещается во временное хранилище + // и передается на клиент в качестве адреса + Сообщение = ПолучитьИзВременногоХранилища(Результат.АдресРезультата); + ИначеЕсли Результат.Статус = "Ошибка" Тогда + Сообщение = "Ошибка выполнения: " + + Символы.ПС + + Результат.КраткоеПредставлениеОшибки; + Иначе + Сообщение = "Неопределенный результат выполнения длительной операции. См. журнал регистрации"; + КонецЕсли; + + Сообщить(Сообщение); + +``` \ No newline at end of file diff --git a/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Дополнительные отчеты и обработки/Настройки/Внешняя печатная форма.md b/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Дополнительные отчеты и обработки/Настройки/Внешняя печатная форма.md index ae65f46..5c917f0 100644 --- a/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Дополнительные отчеты и обработки/Настройки/Внешняя печатная форма.md +++ b/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Дополнительные отчеты и обработки/Настройки/Внешняя печатная форма.md @@ -154,4 +154,6 @@ Теперь можно заниматься отладкой печати БЕЗ добавления нового элемента в справочник `«ДополнительныеОтчетыОбработки»`. Для этого мы рисовали форму в обработке ![image.png](data:image/png;base64,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FruWOZeNZdvozPiJAAIBC1Qvy5Yaf+myrPFElnZUWRbop1Juq6HlF2xioUE1m084y1RWQm2Fz3aOtRX5ExMBBESgalm2GMBrZmam0+kEkMgiZZl8sAbeCOe26kwh2MScPCPfDWaZtrNS2s6xIv98MX0EtlygUll25MiRhYXFxt+3biVlWeNpLCwsHjlyZMtXbNgHCOa26kIHm5ibaNz7gSxT9q+Pu1+zb8nabOdYWzIBgiKAgCFQqSw7dOjQ3Nzt+fmFZt83b97qdDrN5jA/vzA3d/vQoUOGLZuDCARyWy2mHmxixVRjPtL4MqkE0t9IK/5uWM0rs51j1Zw64RBAoESgUln20ksvXbhwYb7p182bN9OyrOE8Lly48NJLL5U4c7hfgcZvq2WJBptYWcJxHm98mbL/MjT9O5e3egm2c6ytngvxEUBACVQqy06dOnXw4MGpqanZ2bnbt+ebet+8eev9999vavTbt+dnZ+empqYOHjx46tQpPlgIIIAAAggggMBgApXKspmZmYmJifHx8eeff/5Xzb2ef/758fHx5sb/lUpgYmJiZmZmsGWgFwIIIIAAAgggUKks63a7MzMz586dO3ny5F+be508efLcuXPNjf9XlQA1GZcTAggggAACCFQRqFqWVRmbvggggAACCCCAAAIiQFkmFGwggAACCCCAAAJNClCWNanP2AgggAACCCCAgAhQlgkFGwgggAACCCCAQJMClGVN6jM2AggggAACCCAgApRlQsEGAggggAACCCDQpABlWZP6jI0AAggggAACCIgAZZlQsIEAAggggAACCDQpQFnWpD5jI4AAAggggAACIkBZJhRsIIAAAggggAACTQpUKsvW1lbOn36iPf6FF3/Z4r3NAu3xL5w//cTa2kqTHx/GRgABBBBAAIH6BCqVZedPP3Hy5XuXLn2r+/F/8N5mgaVL3zr58r3nTz9R34eBSAgggAACCCDQpEClsuzIC59fvPhg9/q3eTcisHjxwSMv/GOTHx/GRgABBBBAAIH6BCqVZS/+stW9/k3eDQokS8ALAQQQQAABBIZCoHJZdu3furybE6AsG4rLkEkggAACCCCQCFQvy77Wvca7MQHKMq5jBBBAAAEEhkageln2r91rvBsToCwbmkuRiSCAAAIIIFC5LJv+ly7v5gQoy7iGEUAAAQQQGBqB6mXZl7vTvBsT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) -![image.png](data:image/png;base64,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) \ No newline at end of file +![image.png](data:image/png;base64,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) + +А после добавления в справочник у нас автоматом нарисуется нужная **команда печати** для тех элементов, которые мы указали в массиве назначений (Если на форме используются подключаемые команды, конечно. Просто так ничего не нарисуется) \ No newline at end of file diff --git a/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Интеграция собственных объектов/Подключение к подсистемам/Дата запрета изменений.md b/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Интеграция собственных объектов/Подключение к подсистемам/Дата запрета изменений.md new file mode 100644 index 0000000..9533779 --- /dev/null +++ b/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Интеграция собственных объектов/Подключение к подсистемам/Дата запрета изменений.md @@ -0,0 +1,54 @@ +# Общие модули +В процедуре `ЗаполнитьИсточникиДанныхДляПроверкиЗапретаИзменения` общего модуля `ДатыЗапретаИзмененияПереопределяемый` дополнить: +```bsl +// Позволяет задать таблицы и поля объектов для проверки запрета изменения данных. +// Для добавления нового источника в ИсточникиДанных см. ДатыЗапретаИзменения.ДобавитьСтроку. +// +// Вызывается из процедуры ИзменениеЗапрещено общего модуля ДатыЗапретаИзменения, +// используемой в подписке на событие ПередЗаписью объекта для проверки наличия +// запретов и отказа от изменений запрещенного объекта. +// +// Параметры: +// ИсточникиДанных - ТаблицаЗначений: +// * Таблица - Строка - полное имя объекта метаданных, +// например Метаданные.Документы.ПриходнаяНакладная.ПолноеИмя(). +// * ПолеДаты - Строка - имя реквизита объекта или табличной части, +// например: "Дата", "Товары.ДатаОтгрузки". +// * Раздел - Строка - имя раздела дат запрета, указанного в +// процедуре ПриЗаполненииРазделовДатЗапретаИзменения (см. выше). +// * ПолеОбъекта - Строка - имя реквизита объекта или реквизита табличной части, +// например: "Организация", "Товары.Склад". +// +Процедура ЗаполнитьИсточникиДанныхДляПроверкиЗапретаИзменения(ИсточникиДанных) + + ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, + Метаданные.Документы.<МойДокумент>.ПолноеИмя(), + "Дата"); + +КонецПроцедуры +``` +# Настройка формы +В обработчике `ПриЧтенииНаСервере` +```bsl +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + //СтандартныеПодсистемы.ДатыЗапретаИзменения + ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + //Конец СтандартныеПодсистемы.ДатыЗапретаИзменения +КонецПроцедуры +``` + +## Запрет создания и удаления объектов в закрытом периоде +### Добавление +дополняем подписки на события +`ПроверитьДатуЗапретаИзмененияПередЗаписьюДокумента` //Для документов +`ПроверитьДатуЗапретаИзмененияПередЗаписьюНабораЗаписей` //Для регистров +- `ИСТОЧНИК` — новые объекты, которые нужно проверять +- `Событие` — ПередЗаписью +- `Обработчик` — Процедура общего модуля `ДатыЗапретаИзменения.ПроверитьДатуЗапретаИзмененияПередЗаписьюДокумента` для документов или `ДатыЗапретаИзменения.ПроверитьДатуЗапретаИзмененияПередЗаписьюНабораЗаписей` для регистров +### Удаление +дополняем подписки на события +`ПроверитьДатуЗапретаИзмененияПередУдалением` +- `ИСТОЧНИК` — новые объекты, которые нужно проверять +- `Событие` — ПередУдалением +- `Обработчик` — Процедура общего модуля `ДатыЗапретаИзменения.ПроверитьДатуЗапретаИзмененияПередУдалением` \ No newline at end of file diff --git a/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Механизмы печати/Макет печатной формы.md b/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Механизмы печати/Макет печатной формы.md new file mode 100644 index 0000000..1d011b3 --- /dev/null +++ b/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Механизмы печати/Макет печатной формы.md @@ -0,0 +1,20 @@ +```bsl +//Возвращает макет печатной формы по полному пути к макету. +//Если конфигурация рассчитана на несколько языков, в ней могут быть предусмотрены несколько макетов для этих языков: +// - ПФ_DOC_СчетНаОплату_ru +// - ПФ_DOC_СчетНаОплату_en +// - и т.п. +// В этом случае при поиске нужного макета учитывается следующий приоритет: +// 1) на языке, указанном в параметре КодЯзыка, +// 2) на языке конфигурации (ОбщегоНазначения.КодОсновногоЯзыка()), +// 3) без указания языка. +// +// Параметры +// ПутьКМакету - Строка - полный путь к макету в формате: +// "Документ.<ИмяДокумента>.<ИмяМакета>" +// "Обработка.<ИмяОбработки>.<ИмяМакета>" +// "ОбщийМакет.<ИмяМакета>". +// КодЯзыка - Строка - язык, на котором требуется получить макет. +// Состоит из кода языка по ISO 639-1 и, опционально, кода страны по ISO 3166-1, разделенных символом подчеркивания. Примеры: "en", "en_US", "en_GB", "ru", "ru_RU". +Макет = УправлениеПечатью.МакетПечатнойФормы(ПутьКМакету, КодЯзыка) +``` \ No newline at end of file diff --git a/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Механизмы печати/Пример вывода настроек печати.md b/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Механизмы печати/Пример вывода настроек печати.md new file mode 100644 index 0000000..e9de72c --- /dev/null +++ b/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Механизмы печати/Пример вывода настроек печати.md @@ -0,0 +1,148 @@ +--- +title: Вывод настроек печати перед печатью на примере дополнительной внешней ПФ акта сверки взаиморасчетов +--- + +# Сведения о внешней обработке +```bsl +Функция СведенияОВнешнейОбработке() Экспорт + + // Версия БСП, на которой велась разработка - 3.1.9.302 + + ВерсияБСП = СтандартныеПодсистемыСервер.ВерсияБиблиотеки(); + + ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(ВерсияБСП); + ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма(); + + МассивНазначений = Новый Массив; + МассивНазначений.Добавить("Документ.СверкаВзаиморасчетов"); + + ПараметрыРегистрации.Назначение = МассивНазначений; + ПараметрыРегистрации.Наименование = "Акт сверки взаимных расчетов (развернутое сальдо)"; + ПараметрыРегистрации.БезопасныйРежим = Ложь; + ПараметрыРегистрации.Версия = "1.0.1.1"; + ПараметрыРегистрации.Информация = "Акт сверки взаимных расчетов с развернутым сальдо"; + + ПараметрыРегистрации.Команды.Колонки.Добавить("ПроверкаПроведенияПередПечатью", Новый ОписаниеТипов("Булево")); + + Команда = ПараметрыРегистрации.Команды.Добавить(); + Команда.Представление = "Акт сверки взаимных расчетов (развернутое сальдо)"; + Команда.Идентификатор = " СН_АктСверкиВзаимныхРасчетовРазвернутоеСальдо"; + Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода(); // ВАЖНО + Команда.ПоказыватьОповещение = Истина; + Команда.Модификатор = "ПечатьMXL"; + Команда.ПроверкаПроведенияПередПечатью = Истина; + + Возврат ПараметрыРегистрации; + +КонецФункции +``` +# Формы внешней обработки +В создаем 2 формы — основная форма для отладки, и форма настроек печати для вызова перед печатью. Форму настроек печати просто копируем из типовой конфигурации. Основная форма будет открываться только при явном открытии файла внешней обработки. +Добавляем на основную форму реквизит с типом необходимого документа и команду «Печать» +![image-12.png](https://sinenikolsky.ru/s/QEWSKmHn7HKGJX4/download?path=%2F2025%2F04%2F16&files=5d781369-bfa1-4db3-8dcf-e4abd6c57bf2.png) +![image-13.png](https://sinenikolsky.ru/s/QEWSKmHn7HKGJX4/download?path=%2F2025%2F04%2F16&files=d87c1613-5ee7-4843-b61e-d73af33a7ee4.png) +## Основная форма +В модуле основной формы реализуем интерфейсный метод «Печать», который будет искать механизм БСП. В нем передаем нужные параметры и открываем форму настроек. +```bsl +&НаКлиенте +Процедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ИдентификаторКоманды", ИдентификаторКоманды); + ПараметрыФормы.Вставить("МассивОбъектов", МассивОбъектов); + + ОткрытьФорму("ВнешняяОбработка.<ИмяВнешнейОбработки>.Форма.НастройкаПечати",ПараметрыФормы); + +КонецПроцедуры + +&НаКлиенте +Процедура ТестПечати(Команда) + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ИдентификаторКоманды", ""); + МассивОбъектов = Новый Массив; + МассивОбъектов.Добавить(СверкаВзаимныхРасчетов); + ПараметрыФормы.Вставить("МассивОбъектов", МассивОбъектов); + + ОткрытьФорму("ВнешняяОбработка.<ИмяВнешнейОбработки>.Форма.НастройкаПечати",ПараметрыФормы); +КонецПроцедуры +``` +## Форма настроек печати +В скопированную форму настроек (в моем случае форма настроек документа «Сверка взаиморасчетов») добавляем реквизит `«Объект»`, с типом `«(ВнешняяОбработка.<ИмяВнешнейОбработки>)»`. Этот реквизит нужен для обращения к методам модуля объекта внешней обработки. + +Также добавляем реквизит с типом `«Список значений»`, куда будут записываться ссылки на документы, которые необходимо напечатать. В модуле формы `при создании на сервере` необходимо прописать заполнение этого реквизита +![image-14.png](https://sinenikolsky.ru/s/QEWSKmHn7HKGJX4/download?path=%2F2025%2F04%2F16&files=1bce3405-6d36-49ae-9a6a-26da857b8de7.png) +```bsl +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ... + // типовой код + ... + + МассивОбъектов = Новый Массив; + Если Параметры.Свойство("МассивОбъектов", МассивОбъектов) Тогда + + Для Каждого ОбъектПечати Из МассивОбъектов Цикл + СписокОбъектовПечати.Добавить(ОбъектПечати); + КонецЦикла; + + КонецЕсли; + +КонецПроцедуры +``` +В модуле формы настроек реализуем вызов метода `Печать` с клиента +```bsl +&НаКлиенте +Процедура ПечатьНаКлиенте() + + ТабДок = ПечатьНаСервере(); + КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("ПФ_MXL_АктСверкиВзаимныхРасчетовРазвернутоеСальдо"); + КоллекцияПечатныхФорм[0].ТабличныйДокумент = ТабДок; + КоллекцияПечатныхФорм[0].Экземпляров=1; + КоллекцияПечатныхФорм[0].СинонимМакета = "Акт сверки взаимных расчетов (развернутое сальдо)"; + УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, Неопределено, ЭтотОбъект); + +КонецПроцедуры + +&НаСервере +Функция ПечатьНаСервере() + + ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); + Возврат ОбработкаОбъект.ПечатьАктаСверкиВзаимныхРасчетовСРазвернутымСальдо(СписокОбъектовПечати.ВыгрузитьЗначения(), Новый СписокЗначений); + +КонецФункции +``` +В основной команде вызываем новый метод `ПечатьНаКлиенте()`. В моем случае это команда `«Сохранить»`, у которой я явно поменял заголовок на «Печать» +```bsl +&НаКлиенте +Процедура Сохранить(Команда) + + НастройкиПечати = НастройкиПечатиПоУмолчанию(); + ЗаполнитьЗначенияСвойств(НастройкиПечати, ЭтотОбъект); + СохранитьНастройкиНаСервере(НастройкиПечати); + Закрыть(НастройкиПечати); + + ПечатьНаКлиенте(); + +КонецПроцедуры +``` + +# Модуль объекта обработки +В модуле объекта внешней обработки реализуем методы печати +```bsl +Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт + + ИдентификаторКомандыПечати = "СН_АктСверкиВзаимныхРасчетовРазвернутоеСальдо"; + + ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, ИдентификаторКомандыПечати); + Если ПечатнаяФорма <> Неопределено Тогда + ПечатнаяФорма.ТабличныйДокумент = СформироватьПечатнуюФормуАктСверкиВзаиморасчетов(МассивОбъектов, ОбъектыПечати); + ПечатнаяФорма.СинонимМакета = "Акт сверки взаимных расчетов (развернутое сальдо)"; + КонецЕсли; + + ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, МассивОбъектов, КоллекцияПечатныхФорм); + +КонецПроцедуры +``` +Дальше — все как обычно. Получаем нужные данные, формируем ТабДок и т.д. В примере все это вызывается методом `СформироватьПечатнуюФормуАктСверкиВзаиморасчетов` \ No newline at end of file diff --git a/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Подключение БСП к собственной конфигурации.md b/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Подключение БСП к собственной конфигурации.md new file mode 100644 index 0000000..e5c3e38 --- /dev/null +++ b/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/Подключение БСП к собственной конфигурации.md @@ -0,0 +1,26 @@ +# Для полной интеграции БСП, не частичной +1. Создаем пустую конфигурацию +2. Запускаем в пользовательском режиме +3. Открываем обработку ПервоеВнедрениеБСП.epf из папки шаблона БСП (`%AppData%\1C\1cv8\tmplts\1c\SSL\3_1_9_144\ExtFiles`) +4. В обработке ничего не выбираем, оставляем только базовую функциональность +5. Сохраняем в файл +6. Сравниваем и объединяем нашу пустую конфигурацию с конфигурацией из шаблона БСП `1Cv8.cf`. Полную замену не делаем, ставим на поддержку (опционально) +В окне снимаем все флажки и загружаем настройки, сохраненные в п.5 +1. Назначаем имя, поставщика и версию конфигурации +2. Копируем общий модуль `ОбновлениеИнформационнойБазыБСП`, переименовываем (`ОбновлениеИнформационнойБазыСигма`, например). В нем редактируем процедуру `ПриДобавленииПодсистемы` и удаляем код из всех остальных методов модуля +```bsl +Процедура ПриДобавленииПодсистемы(Описание) Экспорт + + Описание.Имя = "Сигма"; // ИмяКонфигурации + Описание.Версия = "1.0.1.1"; //ВерсияКонфигурации + //Описание.ИдентификаторИнтернетПоддержки = "SSL"; + //Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно"; + //Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0"; + //Описание.ЗаполнятьДанныеНовыхПодсистемПриПереходеСДругойПрограммы = Истина; + +КонецПроцедуры +``` +9. В модуле `ПодсистемыКонфигурацииПереопределяемый` в методе `ПриДобавленииПодсистем` пишем +```bsl +МодулиПодсистем.Добавить("ОбновлениеИнформационнойБазыСигма") +``` \ No newline at end of file