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

26.02.15

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

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

Файлы

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

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

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

 

1. Теория

 

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

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

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

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

 

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

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

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

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

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

 

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

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

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

 

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

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

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

 

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

 

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

 

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

 

2. Практика

 

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

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

 

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

 

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

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

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

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

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

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

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

 

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

 

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

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

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

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

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

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

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

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

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

 

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

 

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

 

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

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

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

 

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

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

 

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

 

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

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

 

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

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

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

 

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

 

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

 

Вступайте в нашу телеграмм-группу Инфостарт

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

См. также

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

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

3254 руб.

21.11.2024    12741    46    24    

52

БСП (Библиотека стандартных подсистем) Универсальные функции Программист 1С 8.3 1С:Библиотека стандартных подсистем Бесплатно (free)

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

06.02.2026    7662    manul1c    6    

23

Рефакторинг и качество кода БСП (Библиотека стандартных подсистем) Механизмы платформы 1С Программист 1С:Предприятие 8 1С:Библиотека стандартных подсистем Бесплатно (free)

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

23.09.2025    11985    AlexeyPROSTO_1C    1    

18

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

Уже заезженная тема с выводом в Word макетов при помощи БСП, но некоторые коллеги все равно спрашивают. Поэтому размещаю тут материал, как это сделать за три простых шага. Решение, которым я успешно пользуюсь в случаях, когда не нужна универсальность подключаемых внешних печатных форм.

16.09.2025    6056    _seerco2002    0    

34

Нейросети БСП (Библиотека стандартных подсистем) Инструментарий разработчика Программист 1С:Предприятие 8 1С:Библиотека стандартных подсистем Бесплатно (free)

Telegram-бот для разработчиков 1С, работающих с БСП. Если не знаете нужный под задачу метод или не помните название, то опишите боту задачу и получите список подходящих экспортных методов из общих модулей БСП.

02.09.2025    7264    krasnov322    25    

43

Анализ учета БСП (Библиотека стандартных подсистем) 1С:Предприятие 8 1С:Библиотека стандартных подсистем Бесплатно (free)

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

22.05.2025    5712    242    seperblunt    9    

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

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