Дополнительные отчеты и обработки для конфигураций, основанных на БСП. Часть 1. Заполнение объектов.

26.02.15

Разработка - БСП (Библиотека стандартных подсистем)

В статье приводится аргументация за использование во внешних отчетах и обработках только одного варианта использования - ОткрытиеФормы, и приводится пример обработки заполнения объекта, которая подключается к любой конфигурации ко всем объектам. Обработку легко отлаживать и можно использовать в качестве шаблона для создания других обработок заполнения объектов.

Скачать исходный код

Наименование Файл Версия Размер
АЦРК_ДополнительнаяВнешняяОбработкаЗаполненияОбъекта_ЗаполнениеКомментария
.epf 11,52Kb
163
.epf 1.0.003 11,52Kb 163 Скачать
Текст статьия в формате RTF
.rtf 57,11Kb
11
.rtf 57,11Kb 11 Скачать

 

1. Теория

 

БСП — библиотека стандартных подсистем, на которой основаны типовые конфигурации 1С на управляемых формах.

В состав БСП входит и подсистема «Дополнительные отчеты и обработки»», которая определяет правила создания и подключения к конфигурациям дополнительных ВНЕШНИХ отчетов и обработок различного назначения.

С обычными дополнительными отчетами и обработками более-менее все ясно, Они работают так же, как и при их вызове через главное меню «Файл/Открыть», поэтому с их разработкой и отладкой особых проблем нет.

А вот обработки других типов (внешние печатные формы и заполнение объектов и др.) дело сложнее.

 

В БСП для дополнительных внешних отчетов и обработок (далее ДВОО) предусмотрен справочник "ДополнительныеОтчетыИОбработки". Кроме того, для каждой ДВОО предусмотрено три способа вызова:

- вызов серверного метода;

- вызов клиентского метода;

- открытие формы.

Вызов обработок из справочника сильно затрудняет отладку в управляемом приложении, да еще разные способы вызова.

 

Наверное, эти три способа сложились у разработчиков БСП исторически. Можно предположить, что сначала появился вызов серверного метода, чтобы не связываться самим и не связывать разработчиков ДВОО требованиями к формам их отчетов и обработок. Вызвал серверный метод из модуля обработки и все, никаких тебе форм: с сервера нельзя открыть никакую форму.

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

Ну а потом видимо решили вызов упростить, и появился метод просто открытия формы обработки.

 

Но если над всем этим подумать, то при открытии формы сначала на сервере вызывается обработчик события "ПриСозданииНаСервере. В нем можно вызвать любую серверную процедуру, и если форма не нужна, то "Отказ=Истина;" и все. Получаем тот же вызов серверного метода.

Затем при создании формы вызывается обработчик "ПриОткрытии", уже на клиенте. В нем можно вызвать клиентский метод формы, и если сама форма не нудна, то "Отказ=Истина;" и все. Получаем вызов клиентского метода.

Ну и наконец, если мы не отказываемся создать и открыть форму, то форма и откроется. Получаем вызов ДВОО способом "Открытие формы".

 

То есть я хочу сказать, что все ДВОО надо делать со способом вызова "Открытие формы". Это первый вывод.

 

Рассуждаем дальше. Открытие формы есть открытие формы. То есть, делается это в конфигурации БСП или просто через главное меню "Файл / Открыть", управление попадает в метод формы "ПриСозданииНаСервере". То есть такую обработку очень легко отлаживать. Запускаем через "Файл / Открыть" и отлаживаем. А потом подключаем в конфигурацию и она должна работать так же.

 

Рассуждаем дальше. БСП при вызове разных типов обработок (печатные формы, обработки заполнения объекта и т.д.) передает им дополнительные параметры. Эти параметры можно отобразить на открываемой форме, чтобы задавать их в режиме отладки. Тем более, что не трудно определить, открывается форма через "Файл / Открыть" или штатным для БСП способом через справочник "ДополнительныеОтчетыИОбработки" и скрывать эти реквизиты при штатной работе и показывать при отладке.

 

2. Практика

 

Сделаем обработку, которая подключается ко всем возможным объектам конфигурации и заполняет поле комментарий. Сделаем для нее две разные команда: одну без открытия формы, другую с открытием формы, в которой можно будет задать произвольный комментарий.

Обработка можно будет подключить к любой конфигурации с БСП. В тех объектах, для которых предусмотрено подключение обработок заполнения, должна появится кнопка "Заполнить", заодно сразу будет видно, для каких объектов заполнение с помощь ДВОО не предусмотрено.

 

Файл обработки - АЦРК_ДополнительнаяВнешняяОбработкаЗаполненияОбъекта_ЗаполнениеКомментария.epf

 

2.1 Модуль обработки

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

Как заполняется эта структура понятно из текста функции. Отметим следующие моменты:

- в качестве массива назначений указаны все ссылочные типы конфигурации;

- режим небезопасный, потому что меняет содержимое базы данных. Вообще можно дать такую рекомендацию: сначала ставим небезопасный режим, отлаживаем, потом ставим безопасный режим. Если будет работать, значит, оставляем безопасный режим, если нет - возвращаем небезопасный;

- обработка имеет две команды: по одной добавляется фиксированный комментарий, по другой команде открывается дополнительная форма для добавления произвольного комментария. Для формирования таблицы команд используются еще вспомогательные функция и процедура, знакомые всем, кто делал дополнительные отчеты и обработки по стандартам БСП;

- вариант использования для всех команд - "ОткрытиеФормы"

 

Замечение: в справочнике "ДополнительныеОтчетыИОбработки" есть еще два флажка "ИспользоватьДляФормыОбъекта" и "ИспользоватьДляФормыСписка". Почему их нет в структуре параметров регистрации - загадка. Уж разработчик внешней обработки знает, как она будет использоваться и сможет ли работать со списком объектов, и мог бы так же установить это в параметрах регистрации. По умолчанию они оба устанавливаются, поэтому их надо проверять и устанавливать вручную.

 

2.2 Форма обработки.

Раз уж мы стоим за вариант использования "ОткрытиеФормы" и ТОЛЬКО за него, то у обработки обязательно должна быть хотя бы одна форма. Рассмотрим ее.

При вызове формы БСП передает ей 4 параметра:

- "ДополнительнаяОбработкаСсылка" типа "СправочникСсылка.ДополнительныеОтчетыИОбработки";

- "ИдентификаторКоманды" типа "Строка";

- "ИмяФормы типа" типа "Строка";

- "ОбъектыНазначения" типа "Массив".

Поэтому добавляем в параметры формы соответствующие параметры. Параметр "ОбъектыНазначения" имеет тип "Произвольный", потому что типа "Массив" на клиенте нет.

Создаем реквизиты формы, соответствующие параметрам формы, и помещаем их на форму, объединив в группу "ГруппаРеквизитовДляОтладки".

 

В процедуре ПриСозданииНаСервере перенесем параметры формы в соответствующие реквизиты, и в дальнейшем будем работать с этими реквизитами (сами-то параметры будут уже недоступны).

 

Добавим реквизит формы рф_РежимОтладки типа булево. Он будет установлен в процедуре ПрисозданииНаСервере. Признак отладки - пустое значение параметра "ДополнительнаяОбработкаСсылка", потому что пи штатном запуске БСП всегда передает в этом параметре ссылка на элемент справочника "ДополнительныеОтчетыИОбработки", в котором хранится наша обработка.

 

Еще добавим для информации таблицу команд, которые есть в нашей обработке, и заполним ее при создании формы на сервере из команд, заданных при регистрации обработки.

А при открытии заполним этими командами список выбора для реквизита "ИдентификаторКоманды".

Сама таблица при открытии скрыта, потому что список команд можно посмотреть в списке выбора идентификатора команды, но, закомментировав соответствующую строку, таблицу команд можно увидеть.

 

Теперь добавляем реквизит для ввода нашего комментария и помещаем его на формы.

И еще добавляем команду формы "ДобавитьВКомментарий" и выносим ее на форму в соответствующую кнопку.

 

Еще добавляем в форму реквизит рф_ИмяЭтойОбработки, которую можно использовать для открытия других форм этой обработки с помощью команды:
ОткрытьФорму("ВнешняяОбработка."+рф_ИмяЭтойОбработки+".Форма.ИмяФормы",л_СтруктураПараметров,ЭтаФорма.ВладелецФормы);

 

Вот собственно и все.

Можно отлаживать обработку через "Файл / открыть", и потом подключить ее в Дополнительные отчеты и обработки.

 

Конечно, не все так просто, есть нюансы.

Один нюанс связан с отсутствием формы-владельца при отладке через Файл / Открыть. Заключаем такие строки в Попытку.

Другой нюанс заключается в том, что объекты назначения передаются в параметры как массив, но показать массив на форме нельзя, зато для отображения на форме можно использовать список значений. Значит возможно придется выполнять преобразование массива в список и обратно. Для этого есть методы рф_ОбъектыНазначения.ЗагрузитьЗначения(Параметры.ОбъектыНазначения) и рф_ОбъектыНазначения.ВыгрузитьЗначения(), которые работают на сервере.

 

Обратите внимание на последнюю строку в процедуре ПриОткрытии. Закомментируйте ее, подключите обработку в справочник Дополнительные отчеты и обработки и вызовите обработку в штатном режиме через кнопку Заполнить. Когда форма откроется, вы увидите параметры, которые ей переданы.

 

В следующей части будет пример внешней печатной формы.

 

внешняя обработка заполнение объектов АЦРК

См. также

Шаблон многопоточного выполнения фонового задания

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Пример шаблона для многопоточного выполнения фонового задания на основе БСП. Шаблоны сделаны для процедуры и функции.

2 стартмани

03.05.2024    597    4    Hitcher    2    

7

БСП. Добавляем отчет в меню Отчеты

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Добавим новый отчет в меню нового документа средствами БСП.

02.04.2024    3465    John_d    10    

92

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    1984    dimanich70    8    

14

Заполнение поля адреса в своей обработке [БСП]

Механизмы платформы 1С БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Небольшая шпаргалка по функциям БСП касательно адреса. Так скажем, еще один способ помимо https://infostart.ru/1c/articles/1060970/

12.02.2024    842    FilippovRI    0    

15

Расширяем возможности дополнительных обработок и настраиваем их отладку

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Уже не одна веб-страница исписана знаниями о дополнительных обработках, как создать, как подключить. Есть масса вариантов, как их можно отладить. Я разобрался в кишках работы библиотеки и покажу, как можно расширить возможности дополнительных отчетов, а также покажу удобный способ отладки.

07.02.2024    2760    YA_418728146    11    

47

1С:БСП Дополнительные реквизиты и сведения

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Бесплатно (free)

В этой статье расскажем об архитектуре, использовании и особенностях реализации подсистемы «Свойства» из инструментария разработчика «1С:Библиотека стандартных подсистем» (1С: БСП).

19.01.2024    7158    PROSTO-1C    5    

47
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. jobkostya1c_ERP 100 08.01.15 18:38 Сейчас в теме
БСП вещь "хорошая" потому что теперь везде. В УТ 11.1, БП 3.0...Трудоемкость печатных форм возросла в 1,5 раза! При необходимости вернусь к материалу.
2. CherAl 13.01.15 00:39 Сейчас в теме
Весьма полезная статья. Огромное спасибо автору!
Мах; SemenovaMarinaV; +2 Ответить
3. afanasko 35 14.01.15 20:13 Сейчас в теме
Плюс за режим "открытие формы". Даже не задумывался над тем как это удобно для тестирования и отладки внешних форм.
4. Sam13 342 15.01.15 11:54 Сейчас в теме
Тема важная и нужная. Автору респект, продолжать в том же духе
5. MishaHD 32 18.01.15 11:11 Сейчас в теме
Спасибо за статью, тема по работе с БСП очень актуальна. Ждем продолжения!
6. ronhard 19.01.15 00:05 Сейчас в теме
А разве типа "Массив" на клиенте нет? Насколько известно тип "Массив" есть и на клиенте и на сервере. Или я что-то не правильно понял?
7. acrk 750 19.01.15 10:03 Сейчас в теме
(6) ronhard, наверное неточно выразился. Массив-то на клиенте есть, но на форме его отобразить нельзя - надо в список значений перегнать.
8. ronhard 19.01.15 10:32 Сейчас в теме
9. Sam13 342 25.01.15 13:19 Сейчас в теме
Автору респект, сам долго мучился над этой темой. Статью читал несколько раз, пока не погрузился в тему не очень было понятно, когда уже сам наткнулся на проблемы, то повторное прочтение расставило точки над i.
Мах; SemenovaMarinaV; +2 Ответить
10. SemenovaMarinaV 26.01.15 10:47 Сейчас в теме
Очень полезная статья
11. sergbsv 73 30.01.15 07:16 Сейчас в теме
Да желательно продолжение по печатные формам
12. acrk 750 30.01.15 14:03 Сейчас в теме
(11) sergbsv,
клиенты покоя не дают - конец года. Может в феврале поспокойнее будет.
13. jobkostya1c_ERP 100 28.02.15 08:43 Сейчас в теме
(12) радоваться надо клиентам. Сейчас время такое, кризисное.
14. Andreeei 47 17.06.15 14:51 Сейчас в теме
Добрый день! После использования обработки заполнения в обычной форме (если не записывать заполненный объект принудительно) пользователь имеет возможность отказаться от наделанного. Как добиться такого же поведения в управляемой форме? Вернее, примерно, понятно как это сделать с внесением изменений в конфигурацию - при помощи добавления в форму заполняемого объекта процедуры обработки оповещения. А вот как быть, если конфигурацию менять нельзя или не хочется?
15. acrk 750 18.06.15 11:49 Сейчас в теме
(14) Andle, Этот вопрос к разработчикам БСП и типовых конфигураций.
Существующий механизм "заполнения объекта" не предусматривает такую возможность. Он же заполняет объект, а не форму, и объект записывается в базу.
Полтора года назад я этот вопрос поднимал в конференции 1С.
В новых релизах БСП (.1.6.ххх и выше) вроде создан новый тип дополнительной обработки - "заполнение формы".
По идее надо его использовать. Надо будет заняться.
18. dsdred 3338 10.05.16 07:36 Сейчас в теме
(14) Andle,
А вот как быть, если конфигурацию менять нельзя или не хочется?

Очень просто быть. "Расширение конфигурации"
16. echo77 1886 30.09.15 15:45 Сейчас в теме
Раскрасьте пожалуйста публикацию
17. acrk 750 12.10.15 21:25 Сейчас в теме
(16) echo77, что значит "раскрасить"? Научите.
19. KAV2 156 11.05.17 10:18 Сейчас в теме
Жаль не раскрыта тема добавления внешеней обработки в интерфейс, например, "групповой обработки справочников и документов"
20. nezaby75 11.09.17 21:22 Сейчас в теме
никак не могу получить массив ссылок в ОбъектыНазначения((( пусто там и всё....
21. acrk 750 12.09.17 10:34 Сейчас в теме
(20) Объекты назначения передаются в параметры внешней печатной формы.
БСП передает в параметры открываемой формы 4 параметра: ДополнительнаяОбработкаСсылка, ИдентификаторКоманды, ИмяФормы, ОбъектыНазначения.
Вот оттуда их и можно получить в процедуре ПриСозданииНаСервере через Параметры.ОбъектыНазначения.
22. nezaby75 12.09.17 13:01 Сейчас в теме
(21) спасибо! а потом их надо сохранить в реквизит формы - уже разобралась :) Ваша статья - супер ;)
23. acrk 750 12.09.17 16:16 Сейчас в теме
(22) хочу продолжение писать, да руки не доходят пока.
24. Gadzhalik 01.03.22 10:52 Сейчас в теме
Оставьте свое сообщение