Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут!

Как отладить внешние печатных формы в 1С 8.3 управляемом приложении

Многие сталкиваются с проблемой отладки внешних печатных форм в 1С 8.3 (8.2) в режиме управляемых форм (да порой и в обычном тоже). Связано это в первую очередь с тем, что запуская такую форму, система создает временный файл, и точки останова не срабатывают.

Можно конечно использовать готовые обработки для целей отладки, благо, найти их не составляет проблемы. Например: http://infostart.ru/public/73691/.

Но есть недостатки большинства таких решений:

  • часто не подходят для новых релизов, приходится «допиливать/перепиливать» (фирма 1С постоянно что-то меняет в свежих релизах);
  • в основном подходят для внешних печатных форм, созданных с помощью библиотеки стандартных подсистем;
  • на практике бывает быстрее и проще сделать свою небольшую обработку, чем найти готовую, а потом еще с ней и разобраться.

Рассмотрим пример разработки собственной внешней печатной формы с возможностью отладки.

Создание внешней обработки для отладки печатных форм на управляемом приложении 1С

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

Итак, создаем новую внешнюю обработку. Назовите ее как угодно.

Добавим в обработку реквизит «СсылкаНаОбъект». Тип реквизита может быть составным и зависеть от конфигурации. Я выбрал тип – документ «РеализацияТоваровУслуг». Такой документ есть и в торговле и в бухгалтерии.

Так же добавим форму с единственным полем «Ссылка» и кнопкой «Печать». Кнопку добавим позже, когда создадим команду. Еще добавим макет, в который будем выводить данные документа.

Команду назовем «ПечатьОбъекта» с одноименным действием на клиенте:

форма для отладки печатной формы 1с

Создадим простой Макет:

новый макет

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

&НаКлиенте

Процедура ПечатьОбъекта(Команда)
ТаблДокум = Новый  ТабличныйДокумент;
ТаблДокум = ПечатьНаСервере(Объект.СсылкаНаДок, ТаблДокум);
ТаблДокум.Показать("Печать документа");
КонецПроцедуры

Пример функции на сервере:

Получите 267 видеоуроков по 1С бесплатно:

&НаСервере
Функция ПечатьНаСервере(СсылкаНаДок, ТаблДокум)
Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|             РеализацияТоваровУслугТовары.Ссылка.Ссылка,
|             РеализацияТоваровУслугТовары.Ссылка.Номер,
|             РеализацияТоваровУслугТовары.Ссылка.Дата,
|             РеализацияТоваровУслугТовары.Ссылка.Организация,
|             РеализацияТоваровУслугТовары.Ссылка.Склад,
|             РеализацияТоваровУслугТовары.Ссылка.Контрагент,
|             РеализацияТоваровУслугТовары.Номенклатура,
|             РеализацияТоваровУслугТовары.Количество,
|             РеализацияТоваровУслугТовары.Цена,
|             РеализацияТоваровУслугТовары.Сумма,
|             РеализацияТоваровУслугТовары.Номенклатура.ЕдиницаИзмерения,
|             РеализацияТоваровУслугТовары.НомерСтроки
|ИЗ
|             Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
|ГДЕ
|             РеализацияТоваровУслугТовары.Ссылка = &СсылкаНаОбъект";
 
Запрос.УстановитьПараметр("СсылкаНаОбъект", СсылкаНаДок);
 
РезультатЗапроса = Запрос.Выполнить();
 
ВыборкаДетЗап = РезультатЗапроса.Выбрать();
 
ТаблДокум.Очистить();
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапкаТабЧасти = Макет.ПолучитьОбласть("ШапкаТабЧасти");
ОблДеталиТаблЧасти = Макет.ПолучитьОбласть("ДеталиТаблЧасти");
 
ТаблДокум.НачатьАвтогруппировкуСтрок();
 
Пока ВыборкаДетЗап.Следующий() Цикл
 
 
Если ВыборкаДетЗап.НомерСтроки = 1 Тогда
ОбластьШапка.Параметры.НомерДок = ВыборкаДетЗап.Номер;
ОбластьШапка.Параметры.ДатаДок = ВыборкаДетЗап.Дата;
ОбластьШапка.Параметры.Организация = ВыборкаДетЗап.Организация;
ОбластьШапка.Параметры.Склад = ВыборкаДетЗап.Склад;
ОбластьШапка.Параметры.Контрагент = ВыборкаДетЗап.Контрагент;
ТаблДокум.Вывести(ОбластьШапка);
ТаблДокум.Вывести(ОбластьШапкаТабЧасти);
КонецЕсли;
 
ОблДеталиТаблЧасти.Параметры.НомерСтроки = ВыборкаДетЗап.НомерСтроки;
ОблДеталиТаблЧасти.Параметры.Номенклатура = ВыборкаДетЗап.Номенклатура;
ОблДеталиТаблЧасти.Параметры.Количество = ВыборкаДетЗап.Количество;
ОблДеталиТаблЧасти.Параметры.НоменклатураЕдиницаИзмерения = ВыборкаДетЗап.НоменклатураЕдиницаИзмерения;
ОблДеталиТаблЧасти.Параметры.Цена = ВыборкаДетЗап.Цена;
ОблДеталиТаблЧасти.Параметры.Сумма = ВыборкаДетЗап.Сумма;
ТаблДокум.Вывести(ОблДеталиТаблЧасти, ВыборкаДетЗап.Уровень());
 
КонецЦикла;
 
ТаблДокум.ЗакончитьАвтогруппировкуСтрок();
ТаблДокум.АвтоМасштаб = Истина;
ТаблДокум.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТаблДокум.ПолеСлева = 5;
ТаблДокум.ПолеСправа = 5;
 
Возврат ТаблДокум;
 
КонецФункции

Для отладки ставим точку останова в нужном нам месте и запускаем обработку в режиме предприятия.

Скачать получившуюся обработку для примера можно по ссылке — ОтладкаВнешнихПечатныхФорм. Обработку можно использовать как шаблон.

Важно: Если база данных находится на сервере, для отладки на сервере нужно запустить с параметром «-debug».

После отладки макет и код процедуры и функции можно вставить в нужный объект и пользоваться.

Создание внешних печатных форм в 1С 8.3 (Управляемое приложение) с нуля:

P.S. Наша компания предоставляет услуги по настройке, доработке и комплексному внедрению 1С. Закажите бесплатный расчет стоимости вашей задачи на странице Услуги 1С или по телефону +7 (499) 350 29 00.

Остались вопросы?

Задайте ВОПРОС на нашем форуме 1С! ››

СПРОСИТЕ в комментариях!

Добавить комментарий:

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*