Волшебство программирования на 1С:Предприятие 7.7 и 8.0 - Практика программирования
Волшебство
программирования на 1С:Предприятие 7.7 и 8.0
Тема внешних форм оказалась интересна многим, мы получили больше десятка писем.
Сегодня Александр продолжит раскрывать эту тему.
Внешняя печатная форма и групповая обработка печати.
Часто, для печати большого количества документов, удобно пользоваться Групповой обработкой справочников и документов. Например для печати Актов сверки взаиморасчетов в конце месяца.
Однако при выводе на печать с помощью групповой обработки внешних печатных форм, вас может подстерегать один неприятный момент.
А выражается он в том, что при попытке вывести все документы на печать сразу на принтер, молча, без предварительного просмотра, вы получаете вал открытых в программе печатных форм документа. А в это время на принтере абсолютная тишина.
В своей статье Как создать внешнюю печатную форму из встроенной я говорил о том, что необходимо обязательно функцию Печать заканчивать возвратом внешней печатной формы, а не встроенной процедурой вывода печатной формы, как в случае тестирования.
Не правильно УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, ОбщегоНазначения.СформироватьЗаголовокДокумента(ДокументОбъект));
Правильно Возврат ТабДокумент;
На днях имел удовольствие убедиться в пагубном влиянии этой ошибки.
Как обычно начал копать сразу код Групповой обработки справочников и документов, чтобы выяснить “откуда ноги растут”.
В групповой обработке в цикле для каждого документа вызывается функция Печать() из модуля документа, а результат передается в процедуру НапечататьДокумент() групповой обработки.
Так вот функция Печать из модуля документа возвращала в Групповую обработку значение Неопределено вместо сформированного экземпляра печатного документа. Полез в код внешней печатной формы и увидел там картину, описанную выше
Вместо строки возврата экземпляра печатного документа, которая у меня была закомментирована работала стандартная процедура вывода экземпляра документа на печать УниверсальныеМеханизмы.НапечататьДокумент()
Естественно в процедуре печати Групповой обработки справочников и документов стоит проверка входящего параметра на Неопределено и, не получив печатной формы документа, возвращает из процедуры без исполнения.
Не делайте таких ошибок, а если вдруг такая ошибка у вас возникла, то проверьте в первую очередь Функцию печати внешней печатной формы.