Создание печатной формы табличной части документа с использованием СКД


Создаем макет СКД, там произвольно или с какими-нибудь условиями выбираем в наборе данных поля табличной части, ставим условие на документ владелец,  и задаем оформление. В форме документа добавляем кнопку печать, прописываем в параметрах наш документ и оп-ля — печатная форма готова

Процедура ОсновныеДействияФормыПечать(Кнопка)

 Если Ссылка = Документы.РасчетЗаказа.ПустаяСсылка() тогда

 Предупреждение(«Документ не записан»);

 Возврат;

 Иначе

 Схема = ПолучитьМакет(«Макет1»);

 Настройки = Схема.НастройкиПоУмолчанию;

 КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных();

 КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);

 ПараметрДок = Новый ПараметрКомпоновкиДанных(«документ»);

 ЗначениеПараметраДок = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(ПараметрДок);

 ЗначениеПараметраДок.Значение = Ссылка;

 ЗначениеПараметраДок.Использование = Истина;

 Настройки = КомпоновщикНастроек.Настройки;

 КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

 МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки);

 ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;

 ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);

 ДокументРезультат = Новый ТабличныйДокумент;

 ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

 ПроцессорВывода.УстановитьДокумент(ДокументРезультат);

 ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

 ДокументРезультат.ОтображатьЗаголовки = Ложь;

 ДокументРезультат.ОтображатьСетку = Ложь;

 ДокументРезультат.АвтоМасштаб = Истина;

 ДокументРезультат.Показать();

 КонецЕсли;

КонецПроцедуры

14 Comments

  1. sanja

    Создаем макет СКД, там произвольно или с какими-нибудь условиями выбираем в наборе данных поля табличной части, ставим условие на документ владелец, и задаем оформление. В форме документа добавляем кнопку печать, прописываем в параметрах наш документ и оп-ля — печатная форма готова

    Перейти к публикации

    Reply
  2. sanja

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

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

    Reply
  3. vkt

    (2)

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

    sanja, ты бы еще файлик с реализованным примером выложил для наглядности

    Reply
  4. fomix

    (1) Yasen,

    Может (sanja) Алек4сандр и не знает как ими (внешними формами) пользоваться?! А так, кто мешает подобный механизм реализовать во внешней печатной форме…

    Reply
  5. dim0n_la

    В каком-то очень частном случае может и нужна такая печатная форма..

    Reply
  6. isn

    Печатные формы «ТЧ документа с использованием СКД» очень распространены в УТ 11. Рекомендую ознакомится с печатью документа «ПриказНаПроведениеИнвентаризацииТоваров» — «печать инвентаризационной описи». там собираются данные из 3 документов ссылающихся на текущий документ.

    На мой взгляд автору сего опуса будет полезно.

    Reply
  7. Valerich
    Если Ссылка = Документы.РасчетЗаказа.ПустаяСсылка() тогда

    от таких перлов советую избавляться сразу. Переменная Ссылка может быть равна и неопределено и другой ссылке вовсе не на нужный тип объекта…

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

    Очень начинающий код.

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

    Reply
  8. master_yoda

    Да и еще один момент:

    ЗначениеПараметраДок.Использование = Истина; не в том месте стоит

    надо ставить перед

    ЗначениеПараметраДок.Значение = Ссылка;

    Согласе с тем что это очень начинающий код

    Reply
  9. Jon2011

    Полезная вещь. Сам долго ковырялся с настройкой СКД, а тут все на конкретном примере показано. Спасибо.

    Такая форма нужна чтобы не мудрить табличные макеты, с их бесконечными настройками.

    Reply
  10. mikhailv
    «ПриказНаПроведениеИнвентаризацииТоваров» — «печать инвентаризационной описи»

    (6) isn, ткните носом: в модуле документа не увидел схемы. Только стандартный запрос и макет.

    (детально смотрел СформироватьПечатнуюФормуИНВ3, если имелась в виду «Инвентаризационная опись ИНВ3»)

    Reply
  11. MyPuK_OLD

    (2) Доброго времени суток!!!

    Можно ли получить более подробное описание?..Желательно со скринами как сделать вот это все: «Создаем макет СКД, там произвольно или с какими-нибудь условиями выбираем в наборе данных поля табличной части, ставим условие на документ владелец, и задаем оформление»…

    Reply
  12. MyPuK_OLD

    В эту публикацию заглядывает хоть кто-нибудь?..

    Reply
  13. ya.Avoronov

    Отлично работающий код! Спасибо!

    Reply
  14. busy1

    Официальный пример от разработчиков, приведен в книге Хрусталева Е.Ю. «Разработка сложных отчетов». Страница.189.

    https://its.1c.ru/db/pubcomplexreports#content:65:hdoc

    Reply

Leave a Comment

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