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

26.02.15

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
АЦРК_ДополнительнаяВнешняяОбработкаЗаполненияОбъекта_ЗаполнениеКомментария
.epf 11,52Kb ver:1.0.003
163
163 Скачать (1 SM) Купить за 1 850 руб.
Текст статьия в формате RTF
.rtf 57,11Kb
11
11 Скачать (1 SM) Купить за 1 850 руб.

 

1. Теория

 

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

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

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

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

 

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

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

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

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

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

 

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

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

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

 

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

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

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

 

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

 

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

 

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

 

2. Практика

 

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

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

 

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

 

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

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

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

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

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

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

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

 

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

 

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

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

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

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

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

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

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

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

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

 

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

 

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

 

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

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

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

 

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

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

 

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

 

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

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

 

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

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

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

 

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

 

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

 

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

См. также

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

Синтакс-помощник БСП - cправочник по библиотекам стандартных подсистем и электронных документов. В состав справочника входит описание экспортных процедур и функций, размещенных в областях кода ПрограммныйИнтерфейс БСП и БЭД.

1800 руб.

21.11.2024    3647    16    15    

18

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

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

27.12.2024    3446    PROSTO-1C    15    

43

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

Синтакс-помощник БСП - справочник по Библиотеке Стандартных Подсистем, профессиональный инструмент разработчика с интуитивно понятным интерфейсом. Читайте в статье как использовать все возможности справочника и сделать работу с БСП более комфортной и эффективной.

11.12.2024    3906    gorenski    0    

8

БСП (Библиотека стандартных подсистем) Менеджеры внешних отчетов Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление холдингом Абонемент ($m)

За последние лет 5 несколько раз сталкиваюсь с проблемой на разных проектах (в конфигурациях 1С:ERP, 1С:ERP УХ и многих других, основанных на БСП), когда много пользователей (около 30 тысяч) в информационной базе, время добавления доступа для пользователей занимает значительное время. Открытие списка занимает от 10 до 15 секунд, и каждое изменение списка еще примерно столько же.

1 стартмани

10.12.2024    997    Iaskeliainen    2    

7

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

Некоторые нюансы, если вы захотите создавать свои расширения. Доработка отчета "Связанные документы" для отражения документов расширения. Печатные формы с шаблоном Word.

20.11.2024    3342    milkers    3    

12

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

В статье описан алгоритм для включения документа или справочника в систему БСП. Будет полезно программистам 1С, начинающим работать с БСП.

24.10.2024    1684    PROSTO-1C    0    

18

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

В материале описан универсальный механизм работы с добавленными элементами на общую форму «ФормаОтчета». Думаю, облегчит работу многим разработчикам.

08.10.2024    1374    PROSTO-1C    4    

14
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 348 15.01.15 11:54 Сейчас в теме
Тема важная и нужная. Автору респект, продолжать в том же духе
5. MishaHD 33 18.01.15 11:11 Сейчас в теме
Спасибо за статью, тема по работе с БСП очень актуальна. Ждем продолжения!
6. ronhard 19.01.15 00:05 Сейчас в теме
А разве типа "Массив" на клиенте нет? Насколько известно тип "Массив" есть и на клиенте и на сервере. Или я что-то не правильно понял?
7. acrk 677 19.01.15 10:03 Сейчас в теме
(6) ronhard, наверное неточно выразился. Массив-то на клиенте есть, но на форме его отобразить нельзя - надо в список значений перегнать.
8. ronhard 19.01.15 10:32 Сейчас в теме
9. Sam13 348 25.01.15 13:19 Сейчас в теме
Автору респект, сам долго мучился над этой темой. Статью читал несколько раз, пока не погрузился в тему не очень было понятно, когда уже сам наткнулся на проблемы, то повторное прочтение расставило точки над i.
Мах; SemenovaMarinaV; +2 Ответить
10. SemenovaMarinaV 26.01.15 10:47 Сейчас в теме
Очень полезная статья
11. sergbsv 75 30.01.15 07:16 Сейчас в теме
Да желательно продолжение по печатные формам
12. acrk 677 30.01.15 14:03 Сейчас в теме
(11) sergbsv,
клиенты покоя не дают - конец года. Может в феврале поспокойнее будет.
13. jobkostya1c_ERP 100 28.02.15 08:43 Сейчас в теме
(12) радоваться надо клиентам. Сейчас время такое, кризисное.
14. Andreeei 50 17.06.15 14:51 Сейчас в теме
Добрый день! После использования обработки заполнения в обычной форме (если не записывать заполненный объект принудительно) пользователь имеет возможность отказаться от наделанного. Как добиться такого же поведения в управляемой форме? Вернее, примерно, понятно как это сделать с внесением изменений в конфигурацию - при помощи добавления в форму заполняемого объекта процедуры обработки оповещения. А вот как быть, если конфигурацию менять нельзя или не хочется?
15. acrk 677 18.06.15 11:49 Сейчас в теме
(14) Andle, Этот вопрос к разработчикам БСП и типовых конфигураций.
Существующий механизм "заполнения объекта" не предусматривает такую возможность. Он же заполняет объект, а не форму, и объект записывается в базу.
Полтора года назад я этот вопрос поднимал в конференции 1С.
В новых релизах БСП (.1.6.ххх и выше) вроде создан новый тип дополнительной обработки - "заполнение формы".
По идее надо его использовать. Надо будет заняться.
18. dsdred 3758 10.05.16 07:36 Сейчас в теме
(14) Andle,
А вот как быть, если конфигурацию менять нельзя или не хочется?

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