Дополнительные параметры обработки 1с
В некоторых случаях перед печатью документа требуется вручную указать какие-либо значения или параметры и передать в процедуру Печать() обработки. Для конфигураций линии УТ 10.3, БП 2.0 есть возможность передачи параметров, а также возможность без особых ухищрений вызвать форму обработки перед печатью с последующим выводом результата печати в штатное окно. В конфигурациях на основе Библиотеки стандартных процедур (Управление торговлей 11, Розница 2, УНФ, Бухгалтерия предприятия 3 и прочие) предусмотрены способы вызова команды печати в виде "ОткрытиеФормы" или "ВызовКлиентскогоМетода", но в этом случае вывод сформированного табличного документа необходимо реализовывать самостоятельно.
Рассмотрим один из способов передачи параметров для печати, не претендующий на оригинальность, так как используются штатные процедуры БСП.
В качестве примера выбрана печать простой накладной для УТ 11.0.9.15 - УТ 11.3 с возможностью печати со скидками или без них.
Создадим внешнюю обработку с основной формой "Форма" и реквизитом, например, "ПечататьСкидки", значение которого требуется передать в процедуру Печать() модуля обработки.
На вкладке "Параметры" укажем ключевые параметры "ДополнительнаяОбработкаСсылка" тип "СправочникСсылка.ДополнительныеОтчетыИОбработки", "ИдентификаторКоманды" тип "Строка", "ИмяФормы" тип "Строка", "ОбъектыНазначения" тип "Произвольный" (см. скриншот). Эти параметры передаются в обработку из конфигурации, а именно из диалога выбора внешних печатных форм, ключевыми в нашем случае они сделаны для упрощения обработки.
Далее определяем команду для печати или вывода печатной формы, навешиваем кнопку на форму.
Присваиваем команде обработчик действия (код следует поместить в модуль формы)
В модуле обработки создаём экспортную процедуру Печать(), с параметрами согласно стандартам БСП для печати с использованием серверной процедуры примерно такого вида
Реализация функции СформироватьПечатнуюФормуНакладная() зависит от конкретной задачи и здесь не рассматривается.
В экспортной функции СведенияОВнешнейОбработке() необходимо указать использование команды печати "ОткрытиеФормы" с модификатором "ПечатьMXL".
Подробнее смотрите статью Внешние обработки и отчеты 1С:Предприятие 8.2 или прилагаемый пример обработки.
Если всё сделано правильно, после регистрации внешней печатной формы в справочнике "ДополнительныеОбработки" она будет доступна из формы списка или документа в меню "Дополнительные печатные формы". После выбора из списка ВПФ на экране появится форма обработки.
Всё описанное выше изложено и прокомментировано в прилагаемой обработке.
Специальные предложения
Бухгалтерия предприятия, редакция 3.0 (3.0.26.11)
Результат работы, ошибка:
(1) Добавил печатную форму с выбором для Бухгалтерии предприятия 3.0. Ссылку найдёте в описании. Учитесь.
Небольшие изменения в обработке для БСП недавних релизов.
А что за изменения, а то моя обработка вдруг перестала работать
выдает ошибку МЕТОД ОБЪЕКТА НЕ ОБНАРУЖЕН (МЕТАДАННЫЕ)
(7) Одноэсники через одного дятлы, точнее из трёх два дятла. И вот почему - что за обработка, какая конфигурация, типа протелепатируй, мне лень писать.
Короче, разбирайся сам как знаешь. Приложенная ВПФ нормально работает в Управление торговлей 11.0.9 - 11.1.4.
Большое спасибо за подсказанную методику по использованию общей формы ПечатьДокументов. У меня как раз с этим был затык, открытие формы для ввода параметров делается без проблем просто в описании сведений о внешней обработке
Поручик, спасибо большое за классную инструкцию. Хотелось бы уточнить:
1. Где можно почитать мануал про БСП, на ИТС разбирался с данной обработкой печати - ни хорошего примера, нифига не нашел.
2. Как отлаживать такую обработку?
(12) davdykin, (12) davdykin, найти то в закрытке на ИТС, но там паролик нужен. Отдельно то конфигурация БСП поставляется как демка, но она, как и вся документация больше разработчикам в крупных фирмах нужна, где есть корпоративные стандарты.
И это только для разработчиков новых конфигураций. Все равно подстраиваться приходится под то что есть.
Для конфигураций линии УТ 10.3, БП 2.0 есть возможность передачи параметров, а также возможность без особых ухищрений вызвать форму обработки перед печатью с последующим выводом результата печати в штатное окно.
вот только никто не использует :(
В отраслевом ВДГБ Ломбард столкнулся. Печатные формы реализованы в виде отчета в конфигурации. Чтоб не передавать параметры (или, вернее чтоб передать параметр-объект документа, для вызова его (ДокументОбъекта) методов:
А уже от нажатой кнопки и как параметра "галочки" зависит вариант печати. Такой вот "штатный" механизм передачи параметров.
Все верно. Кроме как таких "танцев с бубном" передать в обработку печати свое значение невозможно.
Почему в БСП процедура написана таким образом? Что мешает добавить еще один параметр для передачи произвольных значений в эту процедуру. Непонятно.
Если бы в процедуре печати была доступна ссылка на внешнюю обработку (справочник "ДополнительныеВнешниеОтчетыИОбработки"), то это облегчило бы жизнь.
Иногда бывает нужно печатать с доп.параметрами, но при этом не открывать предварительно диалоговое окно. Классический пример - печатная форма с какими-нибудь ответственными или должностями, которые меняются время от времени, но не часто. Вбивать их в макет - тупо, показывать каждый раз при печати тоже не айс.
Я использовал такой метод: сделал две команды печати, одна команда печатной формы - для настройки параметров печати, вторая команда - для печати с уже настроенными ранее параметрами.
Форма для настройки параметров открывается и сохраняет значения в реквизит "ХранилищеНастроек" справочника "ДополнительныеВнешниеОтчетыИОбработки".
Вторая команда (печать с готовыми настройками) при открытии имея ссылку на справочник "ДополнительныеВнешниеОтчетыИОбработки" читает сохраненные настройки и сразу уходит на печать не открывая форму.
Единственный недостаток такого метода - видимость двух команд печати в списке команд (с открытием формы и без). Победить можно, но это предмет отдельного поста, пожалуй.
При запуске печатной формы такие проблемы:
: Поле объекта не обнаружено (БезопасныйРежим)
ВнешняяОбработкаОбъект = ПолучитьОбъектВнешнейОбработки(ИсточникДанных, ПараметрыИсточника.БезопасныйРежим);
Подскажите пжл куда копать?
обработка - "Расходная накладная с диалогом выбора" (параметры в печатную форму передать нужно)
конфигурация - УТ11.0.6.9 платформа 8.3.5.1383
При выборе печатной формы с документа происходит открытие диалогового окна, после нажатия "печать" вываливается в данную ошибку.
А можно ли как-нибудь реализовать печать с выводом диалоговой формы при печати комплекта? Команда печати комплекта отличается от команды печати отдельной формы тем, что комплект подготавливается полностью серверной процедурой.
Имеется ввиду комплект, настраиваемый через форму "НастройкаПечатиКомплекта". Готовый комплект (список форм и их количество) печатаются модулем менеджера регистра НастройкаПечатиОбъектов (процедура СформироватьКомплектВнешнихПечатныхФорм). Я не знаю как вызвать форму (причем логично и удобней) один раз для всего комплекта. (это где то в БСП 2.1.9)
Работает ли подобный код в Бухгалтерии предприятия 3.0?
У меня возникает ошибка "Поле объекта не обнаружено(ИдентификаторКоманды)"
(29) С чего она у тебя возникает? Скачай обработку для БП 3.0 и сделай по образцу. Предварительно вкурись в матчасть.
Отличная статья. Можно еще ВызовКлиентскогоМетода вместо ОткрытиеФормы опробывать, все равно в итоге общая форма .печатьдокументов вызывается.
Разобрался. При вызове общей формы "ПечатьДокументов" в качестве "ПараметрыОткрытия.ИсточникДанных" передал Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(Моя_ВПФ).
Очень интересная и разжеванная статья!
Подскажите как модуле формы обработки можно получить ссылку на документ? Мне необходимо вывести для пользователя некоторые реквизиты из документа.
Передо мной стояла аналогичная задача и я решил её таким же способом — посредством передачи параметра в первом элементе массива ОбъектыНазначения. Решение не очень красивое, но работает и альтернативы ему я не вижу. Жаль что 1С не предоставила удобного механизма решения этой задачи.
Добрый вечер!
Подскажите пожалуйста: у вас в форме обработки есть реквизит ТаблицаНоменклатуры, в которую попадает номенклатура из документа, и можно установить пометку. А как сделать так, чтоб в печатную форму попадала только помеченная номенклатура? У меня аналогичная задача. С обычными реквизитами все ок, а вот с тз что-то никак (((
Использовал Вызов клиентского метода. В форме обработки в процедуре Печать(ИдентификаторКоманды,ОбъектыНазначения) Экспорт
У меня была задача перед выполнением печати открыть форму внешней печатной формы,
там указать дополнительные параметры и потом только печатать.
Для этого в форме создала параметр "ОбъектыНазначения" тип Произвольный и обязательно галочку "Ключевой параметр"
иначе при открытии формы этот параметр не заполняется
Затем в процедуре НаКлиенте ПриОткрытииФормы добавила ваш текст
СтандартнаяОбработка = Истина;
//Проверка на релиз БСП для универсальности.
//Общий модуль ДополнительныеОтчетыИОбработкиКлиентПереопределяемый существует в версии БСП выше 2.0.1.19
Если ЕстьОбщийМодуль("ДополнительныеОтчетыИОбработкиКлиентПереопределяемый") Тогда
Выполнить("ДополнительныеОтчетыИОбработкиКлиентПереопределяемый.ПередВыполнениемКомандыПечатиВнешнейПечатнойФормы(ВыполняемаяКоманда.ОбъектыНазначения, СтандартнаяОбработка);");
Попытка
Для Каждого ОбъектНазначения Из Параметры.ОбъектыНазначения Цикл
Объект.ДокСпр = ОбъектНазначения;
Сообщить(ОбъектНазначения);
Сообщить(ТипЗнч(ОбъектНазначения));
КонецЦикла;
Исключение
КонецПопытки;
КонецЕсли;
потом в процедуры формы
&НаКлиенте
Процедура ПечатьТЧ(Команда)
ТабДок = Новый ТабличныйДокумент;
СтекОповещений = Новый Массив;
ПечатьФормыНаСервере(ТабДок);
ТабДок.ТолькоПросмотр = Истина;
ТабДок.Показать("Печать ТЧ");
КонецПроцедуры
КоллекцияПечатныхФорм = Новый ТаблицаЗначений;
КоллекцияПечатныхФорм.Колонки.Добавить("ТабличныйДокумент");
КоллекцияПечатныхФорм.Колонки.Добавить("ИмяМакета");
КоллекцияПечатныхФорм.Колонки.Добавить("ИмяВРЕГ");
КоллекцияПечатныхФорм.Колонки.Добавить("СинонимМакета");
КоллекцияПечатныхФорм.Колонки.Добавить("Экземпляров");
СтрокаП = КоллекцияПечатныхФорм.Добавить();
СтрокаП.ИмяМакета = "ПечатьТЧ";
СтрокаП.ИмяВРЕГ = ВРег("ПечатьТЧ");
СтрокаП.Экземпляров = 1;
СтрокаП.СинонимМакета = "Печать ТЧ";
ОбъектыПечати = Новый Структура;
ПараметрыВывода = Новый Структура;
ЭтотОбъектВПФ.Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
ТабДок = КоллекцияПечатныхФорм[0].ТабличныйДокумент;
КОнецПРоцедуры
Плюс в модуле объекта
Функция СведенияОВнешнейОбработке() Экспорт
.
НоваяКоманда.Использование = "ОткрытиеФормы";
.
КонецФункции
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
.
КонецПроцедуры
Все благодаря Вашим подробным объяснениям получилось и открыть форму и в форме печать МассивОбъектов сохранить
Спасибо!
Внешняя обработка (Печатная форма), содержащая: Необязательный реквизит «ДополнительныеПараметры» произвольного типа, которому будут передаваться дополнительные параметры примитивного типа в виде структуры.
Аналогично можно передать параметр во внешнюю печатную форму через реквизит «ДополнительныеПараметры».
В модуле обработки для использования этих параметров используем следующий код вида:
Код 1C v 8.х
Настроим передачу параметров внешней печатной форме
Для этого создаем новый элемент справочника «Внешние обработки» и заполняем его, как показано на рисунке ниже
В табличной части открываем Параметры обработки и вводим значения параметров
Похожие FAQ
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Cодержимое указанного ниже веб-сайта в этом приложении блокируется. Aboutsecurity_1cv8c.exe 1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э Google maps : вывод точек на карту и режим панорамы 7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора ZIP-архив Создание 0
Для того чтобы записать файлы в ZIP-архив необходимо выполнить несколько простых действий: * Создать архив с необходимыми параметрами, в который будут помещаться файлы. * Поместить в архив необходимые файлы. * Записать архив. Создание объекта За ZIP-архив Чтение 0
Для того чтобы прочитать файлы из ZIP-архива необходимо выполнить несколько простых действий: - Открыть необходимый архив - Распаковать файлы Создание объекта ЧтениеZIPФайла можно осуществить двумя путями - создать инициализированный объект или Посмотреть все результаты поиска похожих
Еще в этой же категории
Добавление дополнительных отчетов и обработок в тонком клиенте БП 3.0, ЗУП 3.0, УТ 11 7
Любой отчет и обработку можно подключить пользователям как дополнительные отчеты или обработки, вот например пункт в БП - Банк: Добавление происходит через далее Дополнительные отчеты и обработки , в списке нажмите Создать и Выберите Файл Как выгрузить все дополнительные обработки и отчеты в каталог? 6
Выгрузить все дополнительные обработки и отчеты в каталог всего за пару кликов. Простейшая обработка в один реквизит и команду. Набросайте элементы на форму и вставьте код в модуль формы обработки. И без всякого скачивания. Работоспособность п Добавление дополнительных отчетов и обработок в управляемом приложении 6
Для добавления отчета или обработки нужно в модуле добавить Функцию СведенияОВнешнейОбработке() Функция СведенияОВнешнейОбработке() Экспорт // Объявим переменную, в которой мы сохраним и вернем "наружу" необходимые данные ПараметрыРегистрации Пример создания внешней печатной формы для управляемого приложения 4
Пример создания внешней печатной формы АКТа для Бухгалтерии 3.0 1. В конфигураторе 1C Предприятия 8 создаем внешнюю обработку (Файл- Новый- Внешняя обработка), задаем имя. 2. В модуле обработки пишем код. Постараюсь его максимально комментироват Внешние обработки, печатные формы, обработки по заполнению табличных частей 3
Справочник «Внешние обработки, печатные формы, обработки по заполнению табличных частей» содержит список произвольных обработок, произвольных отчетов, дополнительных печатных форм, обработок для заполнения ТЧ объектов, обработок, подключаемых к отч Посмотреть все в категории Внешние печатные формы, отчеты и обработки заполнения
Внешняя обработка (Печатная форма), содержащая: Необязательный реквизит «ДополнительныеПараметры» произвольного типа, которому будут передаваться дополнительные параметры примитивного типа в виде структуры.
Аналогично можно передать параметр во внешнюю печатную форму через реквизит «ДополнительныеПараметры».
В модуле обработки для использования этих параметров используем следующий код вида:
Код 1C v 8.х
Настроим передачу параметров внешней печатной форме
Для этого создаем новый элемент справочника «Внешние обработки» и заполняем его, как показано на рисунке ниже
В табличной части открываем Параметры обработки и вводим значения параметров
Похожие FAQ
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Google maps : вывод точек на карту и режим панорамы 7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора ZIP-архив Создание 0
Для того чтобы записать файлы в ZIP-архив необходимо выполнить несколько простых действий: * Создать архив с необходимыми параметрами, в который будут помещаться файлы. * Поместить в архив необходимые файлы. * Записать архив. Создание объекта За ZIP-архив Чтение 0
Для того чтобы прочитать файлы из ZIP-архива необходимо выполнить несколько простых действий: - Открыть необходимый архив - Распаковать файлы Создание объекта ЧтениеZIPФайла можно осуществить двумя путями - создать инициализированный объект или Авто добавление обработки в справочник Внешних обработок 0
Чтобы не изменять типовую конфигурацию приходится использовать типовой механизм внешних печатных форм и обработок. Данный код проверяет - добавлена ли открываемая обработка в конфигурацию, если нет - задает вопрос и при положительном ответе - автома Посмотреть все результаты поиска похожих
Еще в этой же категории
Иногда пользователям необходимо печатать отчет с определенными данными и такие данные могут меняться, поэтому было бы логичнее создать форму ввода параметров для печатной формы, чтобы не тревожить программиста по пустякам)) Вот хочу показать небольшой пример как я вывела на печатную форму свой параметр "Название печатной формы", вообще в параметры можно добавлять что угодно, но проще для меня вывести обычную строку для примера:).
Итак, что мы делаем:
1. Создаем новую внешнюю обработку и указываем сведения в модуле объекта:
Также в модуле объекта пишем две процедуры:
2. Переходим к созданию основной формы обработки, она нам понадобится только для исполнения процедур:
- Добавим параметры к форме, обязательно в свойствах параметров указать "Ключевой параметр", после этого параметры выделятся жирным шрифтом
- В модуле основной формы пишем следующий код:
- Создаем еще одну форму, и назовем ее "ФормаВвода", разместим на ней реквизит "НазваниеПечатнойФормы":
- И на команду "Печать" добавим следующий код:
Данная печатная форма тестировалась в конфигурации 1с Бухгалтерия предприятия 3.0 (8.3.10.2561).
Специальные предложения
А теперь получилось. В заблуждение ввело то, что название формы совпало с названием параметра:
РегистрационныеДанные.Вставить("Вид", "ПечатнаяФорма");
Обратите на это внимание.
У меня из-за этой строки
ОбъектыНазначения.Добавить(Результат);
вылезла ошибка
"Метод объекта не обнаружен (Метаданные)".
Это лишняя строка, её можно просто убрать.
За примеры кода огромное спасибо.
"МассивОбъектов" внешней печатной формы хранит ссылки на объекты печати.
Теперь он хранит дополнительные параметры формы ввода.
Как теперь получить в модуле объекта "Массив объектов" т.е. и новые параметры формы ввода и массив объектов печсати ))) ?!
В основной форме добавляем в параметры формы "ОбъектыНазначенияМассив":
В форме ввода добавляем процедуру "ПриСозданииНаСервере" в которой принимаем "ОбъектыНазначенияМассив" :
Далее передаем все параметры формы ввода и наш массив ссылок в процедуру печати модуля объекта.
(11) Не совсем понял как можно в параметры засунуть массив: мне выдает: Тип "Массив" не может использоваться в данных формы
(11) Как вы это сделали, никак не получается получить параметры в модуле объекта, тем более без отладки
Можете пояснить как это сделать? Тоже не понял как
(14) Например, так:
В процедуру ПечатьЗавершение после строки
ОбъектыНазначения = Новый Массив;
добавить свои передаваемые параметры:
ДополнительныеПараметры = Новый Структура;
//Значения для передачи
ДополнительныеПараметры.Вставить("МойПараметр1", ЗначениеМоегоПараметра1);
ДополнительныеПараметры.Вставить("МойПараметр2", ЗначениеМоегоПараметра2);
А в модуле обработки в процедуре ПечатьМакета это будет первый элемент массива МассивОбъектов
В этой статье ( МассивОбъектов[0].НазваниеПечатнойФормы;) это в строке:
ОбластьМакета.Параметры.НазваниеПечатнойФормы = МассивОбъектов[0].НазваниеПечатнойФормы;
У меня уже была процедура заполнения макета с использованием «изначального» первого элемента этого массива, чтобы сделать "быстро и тупо", сделала так:
МойПарам1 = МассивОбъектов[0]. МойПараметр1;
МассивОбъектов.Удалить(0);
(16) Спасибо огромное мил человку, наконецто получилось! Без отладки не понимал как формировались параметры
Здравствуйте, не понимаю в какой момент происходит формирование печатной формы в модуле объекта обработки, в какой момент алгоритм туда заходит, объясните кто-нибудь пожалуйста, ?
Что мог сделать не так, что не выходит форма с параметрами, а сразу выходит печатная форма. Все сделал точно по статье.
Просмотры 32569
Загрузки 132
Рейтинг 63
Создание 23.03.18 20:58
Обновление 01.04.18 12:17
№ Публикации 804832
Конфигурация Конфигурации 1cv8
Операционная система Не имеет значения
Страна Россия
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Да
См. также
Запуск фонового задания во внешней обработке без регистрации в справочнике "Дополнительные отчеты и обработки"
Описал, как показать прогресс выполнения длительной операции во внешней обработке, и при этом не регистрировать обработку в справочнике "ДополнительныеОтчетыИОбработки". Проверял на БСП версии "3.1.2.264".
1 стартмани
09.03.2020 9472 VinnieThePOOH 6
Акт о передаче в производство (вводе в эксплуатацию) малоценных предметов к документу Требование-накладная
Дополнительная печатная форма "Акт о передаче в производство (вводе в эксплуатацию) малоценных предметов " к документу "Требование накладная". БП 3.0
1 стартмани
27.02.2019 5389 4 xxl_1 0
Сортировка метаданных с учетом объектов на замке
Порой одна конфигурация находится на поддержке нескольких поставщиков (со своими префиксами). Зачастую при обновлении отдельных поставок происходит "перемешивание" объектов с различными префиксами. Работать с такой конфигурацией не очень удобно, но есть способ для сортировки метаданных (в том числе объектов на замке), а также быстрого восстановления сортировки, если случайно очередное обновление было выполнено с взятием порядка метаданных из файла (которое устанавливается по умолчанию).
1 стартмани
16.08.2018 4441 Olenevod 1
Заполнение документа Word без ComОбъект
Идея написать публикацию пришла после прочтения очередного рассказа о том, как файл Word заполнялся через COM-объект в клиент-серверном варианте. При этом падал Сервер 1С. Зачем в принципе использовать файлы Word как шаблоны? Ну, допустим, в организации используется некая внутренняя отчетность, выполнения в корпоративном стиле, и переделать ее на привычные табличные документы нет возможности.
1 стартмани
08.07.2018 19170 nbeliaev 32
Создание мульти-базовых отчетов. Все, что вы хотели об этом знать
В статье описано создание отчета по данным из клиент-серверных баз кластера 1С. Подключение к базам осуществляется через com-соединение. В качестве примера создается отчет «Права доступа мульти-базовый», который оформлен в виде внешнего отчета с двумя вариантами выполнения. Для построения собственного отчета на базе описанного достаточно будет изменить функции «ПолучитьТекстЗапроса», в модуле объекта отчета и построить свой макет запроса. Также описан код вызова отчета путем нажатия кнопки с передачей параметров в макет запроса и форму отчета. Описание примера отчета показывает, что создание отчетов по нескольким базам данных в 1С, не является сверхсложной задачей и достигается простыми методами
1 стартмани
23.03.2018 11159 IVC_goal 3
«Танкистам» 8.2 (ч.2)
продолжении освоения 8.2 здесь только текст. Файл с текстом и картинками добавлен ниже
Внешние обработки, печатные формы, обработки по заполнению табличных частей
В данном материале описываются особенности реализации механизма подключения "Внешние обработки, печатные формы, обработки по заполнению табличных частей" (далее ВПФО). Также перечисляются требования, предъявляемые к внешним обработкам, для возможности их использования данным механизмом.
Общее описание
Механизм предназначен для подключения (без изменения конфигурации):
- Внешних обработок для произвольного выполнения
- Внешних обработок в качестве дополнительных печатных форм объектов (справочников и документов)
- Обработок для заполнения табличных частей объектов
Внешние печатные формы и обработки создаются разработчиком с соблюдением определенных условий. Условия обязательны для выполнения на этапе создания внешней обработки, для ее корректной работы в качестве подключаемой к конфигурации.
Для реализации механизма ВПФО используется справочник "Внешние обработки".
Для справочника предусмотрены специализированные реквизиты*:
- "Вид обработки" - описывает, какого вида данная ВПФО
- Произвольная обработка
- Обработка для заполнения табличных частей объектов
- Внешняя печатная форма
- "Хранилище внешней обработки" - хранит двоичные данные подключаемой внешней обработки. При использовании двоичные данные сохраняются на диск во временный файл, и обращение к файлу производится программно как к внешней обработке.
- Возможность использования механизма пользователями, НЕ имеющими права на интерактивное открытие внешних обработок
- Ограничение доступа к использованию и изменению обработок на уровне записей (RLS), т.е. к каждой обработке отдельно
- Целостность БД и неизменность функционала в зависимости от внешних факторов (переноса БД, сетевой работы пользователей, создания архивных копий БД и пр.)
- Объект – ДокументОбъект, СправочникОбъект. Откуда был произведен вызов процедуры заполнения внешней обработки;
- ИмяТабличнойЧасти – Строка. Имя табличной части, для которой вызвана обработка;
- ТабличноеПолеОбъекта – Элемент формы: Табличное поле. Табличное поле формы, для которого вызвана обработка.
- внешняя обработка
- список объектов, для которых данная печатная форма используется
- Отбор. Печатная форма будет доступной только для объектов, удовлетворяющих установленному отбору.
- Отдельную печатную форму. Следует учитывать, что в списках печатных форм в объектах будет всегда появляться одинаковый пункт подменю. Если отдельная печатная форма не указана, то будет использоваться печатная форма из шапки элемента ВПФО.
- Встроенную печатную форму. При заполнении данного реквизита, указанная встроенная печатная форма будет заменена внешней.
- заполняется реквизит "СсылкаНаОбъект" - тип "Любая ссылки", в который передается ссылка на объект, для которого необходимо выполнить печать;
- вызывается функция "Печать()" (должна располагаться в модуле обработки с признаком "Экспорт") без параметров, возвращающая табличный документ.
- ХранилищеВнешнейОбработки. Хранилище значения, хранятся двоичные данные обработки, определенной для всего элемента.
- ВидОбработки. ПеречислениеСсылка. ВидыДополнительныхВнешнихОбработок, определяет вид ВПФО каждый вид (печатная форма, заполнение табличных частей, обработка) рассмотрен отдельно в разделе "Описание видов справочника ВПФО и требования к подключаемым внешним обработкам".
- Комментарий. Строка неограниченной длинны.
- КомментарийКФайлуИсточнику. Строка, неограниченной длинны, хранит параметры файла, дату создания и пр. Заполняется автоматически в момент интерактивного выбора файла внешней обработки. Пользователем не изменяется.
- ПредставлениеОбъекта. Строка, неограниченной длинны, хранит строковое представление выбранного объекта, для отображения пользователю.
- СсылкаОбъекта. СправочникСсылка, ДокументСсылка, содержит пустую ссылку на объект конфигурации. т.к. реквизит типа "Тип" для табличной части не может быть определен, то по пустой ссылке определяется тип объекта, для которого следует подключать внешнюю печатную форму или обработку по заполнению табличной части. Ссылку на пустое значение определенного типа удобно использовать в запросах.
- ТабличнаяЧастьИмя**. Строка, 100. Содержит имя ТЧ объекта, для которого задается ВПФО.
- ТабличнаяЧастьПредставление**. Строка, неограниченной длинны. Содержит синоним ТЧ объекта, используется для отображения пользователю представления табличной части объекта, для которого задается.
- НастройкиПостроителяДляОтбора***. Хранилище значения, может содержать настройки построителя отчета, выгруженные из него отборы для выбранного объекта.
- ХранилищеВнешнейОбработки***. ХранилищеЗначения, может содержит двоичные данные подключаемой внешней обработки., которая будет использоваться в первую очередь, вместо обработки расположенной в шапке.
- ЗаменяемаяПечатнаяФорма***. Строка, 200. Имя печатной встроенной формы объекта, которую необходимо заменить подключаемой.
- ИмяФайлаПечатнойФормы***. Строка, неограниченной длинны - имя файла подключенной печатной формы.
- ПредставлениеОтбораПостроителя***. Строка, неограниченной длинны, хранит представление отбора построителя, используется для отображения представления отбора в табличной части формы элемента справочника "Внешние обработки".
ПРИМЕЧАНИЕ
Полный перечень реквизитов будет описан ниже, в разделе Техническая реализация механизма "Внешние обработки, печатные формы, обработки по заполнению табличных частей"
Для удобства, формы списков ВПФО вызываются раздельно, с предустановленным отбором по реквизиту "Вид обработки", из подменю "Сервис".
Добавлять и изменять ВПФО в базе данных может пользователь, обладающий правом администрирования дополнительных форм и обработок. Это отдельная роль в конфигурации.
Для остальных пользователей назначаются права на чтение(использование) и запись(изменение) по каждому элементу справочника ВПФО.
Преимущества использования механизма ВПФО перед механизмом платформы открытия внешних обработок:
Описание видов справочника ВПФО и требования к подключаемым внешним обработкам
Рассмотрим каждый вид ВПФО по отдельности.
Произвольная обработка
Для включения произвольных обработок в базу данных, необходимо указывать только внешнюю обработку, которая находится на диске.
Открытие произвольных обработок в форме списка производится при выборе элемента ВПФО с видом "Произвольная обработка". При этом, производится сохранение двоичных данных из реквизита "Хранилище внешней обработки" на диск во временный файл. После этого, у сохраненной внешней обработки открывается основная форма.
Основная форма для произвольной обработки должна быть определена обязательно.
Обработка для заполнения ТЧ объектов
Для обработок заполнения ТЧ необходимо указывать внешнюю обработку (файл на диске, с расширением epf), список объектов и их ТЧ, для которых необходимо использовать данную обработку.
В типовых конфигурациях объектами, использующими данный механизм, являются все документы, содержащие хоть одну табличную часть.
Перед открытием формы объекта в командных панелях табличных полей (источником данных для которых является табличная часть объекта), которым соответствуют определенные строки в справочнике ВПФО, программно добавляются пункты в подменю "Заполнить" (если подменю "Заполнить" отсутствует на командной панели, оно создается).
При нажатии на созданную перед открытием кнопку подменю "Заполнить" происходит сохранение соответствующей обработки на диск во временный файл, для сохраненной внешней обработки вызывается процедура:
Инициализировать (Объект, ИмяТабличнойЧасти, ТабличноеПолеОбъекта)
Наличие экспортной процедуры "Инициализировать()" в модуле объекта обработки с видом "Заполнение табличных частей" обязательно. В теле данной процедуры должен располагаться программный код, заполняющий табличную часть в соответствии с назначением обработки.
Обработка так же может иметь в своем составе макет "Параметры_Авторегистрации", используемый для автоматического заполнения принадлежности печатной формы в справочнике "Внешние обработки". Макет должен состоять из 2-х колонок – "полное имя объекта" и "имя табличной части".
Пример макета Параметры_Авторегистрации:
Внешняя печатная форма
Для подключаемых внешних печатных форм указывается:
Для каждого типа объекта дополнительно можно указать:
Вызов диалога настройка условий отбора осуществляется при начале выбора значения в колонке "отбор":
В формах объектов, в командной панели формы (обычно это нижняя командная панель) формируется подменю кнопок печатных форм. Подменю формируется программно, при открытии формы и при записи объекта в форме (для обеспечения изменения пунктов меню в зависимости от данных объекта, и срабатыванию указанных в печатных формах условий отборов). В формируемом меню стандартные печатные формы отделяется от подключаемых разделителем.
Например:
Если находится подключаемая печатная форма, которой необходимо заменить стандартную, то она заменяется и показывается в списке стандартных печатных форм. В этом случае подключенная печатная форма отдельно в списке подключенных печатных форм не отображается.
При нажатии на любую из кнопок печати происходит определение, соответствует ли данная кнопка внешней печатной форме или встроенной в конфигурацию.
Для кнопок, соответствующих печатным формам встроенным в конфигурацию, вызывается встроенный механизм печати (данный механизм в рамках текущего проекта не рассматривается).
Для кнопок, соответствующих внешним печатным формам, происходит сохранение соответствующей обработки на диск во временный файл.
Для сохраненной внешней обработки:
Наличие реквизита "СсылкаНаОбъект" и экспортной функции "Печать()" в модуле объекта обработки с видом "Внешняя печатная форма" обязательно.
В теле функции "Печать()" должен располагаться программный код, который формирует и возвращает табличный документ, в соответствии со значением реквизита "СсылкаНаОбъект".
Обработка так же может иметь в своем составе макет "Параметры_Авторегистрации", используемый для автоматического заполнения принадлежности печатной формы в справочнике "Внешние обработки" состоящий из одной колонки – полное имя объекта для которого будет создаваться соответствующая кнопка печати.
Пример макета Параметры_Авторегистрации:
При соблюдении этих требований пользователю будет достаточно указать при регистрации дополнительной печатной формы файл внешней обработки, после чего все реквизиты формы заполнятся автоматически.
Техническая реализация механизма "Внешние обработки, печатные формы, обработки по заполнению табличных частей"
В базе данных внешние обработки, печатные формы, обработки по заполнению табличных частей хранятся в справочнике "Внешние обработки". Справочник имеет следующую структуру:
ТабличнаяЧасть.Принадлежность. Хранит типы объектов, для которых задается ВПФО и прочие описанные ниже параметры. Табличная часть используется для элементов с видом обработки: "Печатная форма" или "Заполнение табличных частей".
Реквизиты табличной части:
** Используется только для элементов с видом обработки: "Заполнение табличных частей"
*** Используется только для элементов с видом обработки: "печатная форма".
Подключение дополнительных печатных форм к формам объектов конфигурации
Механизм дополнительных печатных форм является расширением стандартного механизма печатных форм объекта. Добавление дополнительной формы в общий список форм выполняется в процедурах модуля формы объекта перед открытием, после записи и при нажатии на кнопку "Установить печать по умолчанию".
Подменю "Печать" и кнопка "Печать по умолчанию" в форме объекта не должны присутствовать в обязательном порядке. Они формируются программно, в том случае, если есть хоть одна печатная форма и задана печать по умолчанию.
Подключение обработок по заполнению табличных частей к формам объектов конфигурации
Для обеспечения подключения механизма в форме объекта должны присутствовать следующие процедуры и функции:
Читайте также: