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

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

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

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

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

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

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

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

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

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

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

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

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

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

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

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

новый макет

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

&НаКлиенте

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

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

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

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

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

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

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

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

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

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

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

Комментариев: 9 на “Как отладить внешние печатных формы в 1С 8.3 управляемом приложении
  1. Здравствуйте! Как сделать, чтобы эта внешняя печатная форма работала в отладчике?

    Ответить

    • так никто и не ответил…. какой-то косяк в платформе… кнопка «Режим отладки» во внешних печ формах есть, а отладить нельзя…..

      Ответить

  2. Здравствуйте!
    Есть ли в 8.3 механизм разбиения слова по ячейкам в макете?

    Ответить

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

      Ответить

  3. Если надо протестировать, как работает печать нескольких выбранных документов, на что надо заменить реквизит СсылкаНаОбъект? Вопрос актуальный, в типовых чаще параметром печати выступает МассивОбъектов.

    Ответить

    • Делай список значений ни форме. А в запросе параметр указывай ссылка в (&твойсписокзнаяей)

      Ответить

  4. Огромное Вам спасибо за «Отладку внешних печатных форм». Очень облегчила жизнь.

    Ответить

  5. Название не соответствует содержимому…

    Ответить

  6. бред

    Ответить

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

Ваш адрес email не будет опубликован.