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

26.02.15

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

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

Скачать файлы

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

 

1. Теория

 

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

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

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

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

 

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

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

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

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

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

 

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

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

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

 

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

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

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

 

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

 

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

 

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

 

2. Практика

 

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

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

 

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

 

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

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

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

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

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

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

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

 

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

 

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

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

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

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

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

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

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

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

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

 

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

 

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

 

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

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

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

 

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

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

 

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

 

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

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

 

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

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

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

 

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

 

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

 

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

См. также

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

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

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

01.03.2024    1282    dimanich70    6    

13

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

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

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

12.02.2024    687    FilippovRI    0    

15

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

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

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

07.02.2024    2351    YA_418728146    11    

40

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

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

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

19.01.2024    5166    PROSTO-1C    5    

45

Бесплатный митап 9 февраля «Библиотеки и фреймворки на 1С и всё, что с этим связано»

БСП (Библиотека стандартных подсистем) Мероприятия Бесплатно (free)

Митап посвящен вопросам создания, использования и поддержке переиспользуемого кода при разработке решений на платформе 1С:Предприятие 8.

15.01.2024    3799    0    Infostart    0    

20

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

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

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

28.12.2023    4832    mrXoxot    11    

99
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
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 749 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 74 30.01.15 07:16 Сейчас в теме
Да желательно продолжение по печатные формам
12. acrk 749 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 749 18.06.15 11:49 Сейчас в теме
(14) Andle, Этот вопрос к разработчикам БСП и типовых конфигураций.
Существующий механизм "заполнения объекта" не предусматривает такую возможность. Он же заполняет объект, а не форму, и объект записывается в базу.
Полтора года назад я этот вопрос поднимал в конференции 1С.
В новых релизах БСП (.1.6.ххх и выше) вроде создан новый тип дополнительной обработки - "заполнение формы".
По идее надо его использовать. Надо будет заняться.
18. dsdred 3251 10.05.16 07:36 Сейчас в теме
(14) Andle,
А вот как быть, если конфигурацию менять нельзя или не хочется?

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