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

Обновлено: 08.07.2024

В этой статье мы научимся создавать внешнюю печатную форму для "1С: Бухгалтерия предприятия 3.0". Причем создавать с нуля, не используя так называемые шаблоны. Вы сами научитесь создавать шаблоны внешних печатных форм.

Все это делается довольно просто))

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

Мы будем создавать внешний счет на оплату покупателю, поэтому обработку так и назовем: «СчетНаОплатуВнешний».


Сохраним ее на жесткий диск.

Зайдем в модуль обработки, и создадим экспортную функцию СведенияОВнешнейОбработке.

Внутри этой функции создадим структуру ПараметрыРегистрации, которая будет содержать определенный список полей. Каждое поле мы разберем в отдельности.

Создадим первый элемент структуры, он будет иметь ключ с название «Вид».

Значением данной связки КлючИЗначение идет одна из строк:

  • «ДополнительнаяОбработка»
  • «ДополнительныйОтчет»
  • «ЗаполнениеОбъекта»
  • «Отчет»
  • «ПечатнаяФорма»
  • «СозданиеСвязанныхОбъектов»

В нашем случае должна быть строка "ПечатнаяФорма".

Следующий элемент структуры должен иметь ключ с названием Назначение.

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

Они должны иметь тип строка, и быть в следующем формате:

Документ."НазваниеДокумента"

Справочник."НазваниеСправочника"

У нас этот массив будет возвращать отдельная функция ПолучитьНазначениеОбработки.

Допишем созданный последним элемент структуры.

Создадим новый элемент структуры, ключ которого будет называться «Наименование», а в значении будет содержаться наименование обработки, которое будет отображаться в справочнике "Дополнительные внешние печатные формы".

Следующий элемент структуры будет иметь название «Версия», значением данного элемента будет версия обработки. Задается программистом на его усмотрение.

Следующий элемент имеет название «Информация», который содержит краткую информацию по обработке.

Следующий элемент имеет название «БезопасныйРежим», его необходим устанавливать в значение истина или ложь, в зависимости от того необходимо устанавливать или отключать безопасный режим во время выполнения обработки. Мы установим значение Истина.

И в последнем параметре необходимо добавить команды, которые будут поставляться обработкой. Для этого нам необходимо создать и заполнить таблицу команд. Разработаем функцию, которая создает и возвращает таблицу с определенным набором полей. Делать это будем в функции ПолучитьТаблицуКоманд.

Создадим функцию и таблицу значений внутри нее.

Теперь создадим пять колонок этой таблицы.

И первая колонка – Представление (тип строка).

Эта колонка – представление команды в пользовательском интерфейсе, т.е. то, что пользователь увидит при нажатии меню"Печать" в документе или справочнике.

Вторая колонка – Идентификатор.

Это может быть любая текстовая строка, уникальная в пределах данной обработки.

Третья колонка – Использование.

Параметр данной колонки типа строка, должен принимать одно из четырех значений –

  • ОткрытиеФормы – Открывает форму обработки.
  • ВызовКлиентскогоМетода – будет вызвана клиентская процедура из модуля формы обработки.
  • ВызовСерверногоМетода - будет вызвана серверная процедура из модуля обработки.
  • СценарийВБезопасномРежиме – тоже будет вызвана серверная процедура из модуля обработки в безопасном режиме.

Конкретно мы будем использовать вызов серверного метода.

Следующая колонка – показывать оповещение. Принимает значение истина или ложь, в зависимости от того надо показывать оповещение или нет.

И последняя колонка – модификатор. Это дополнительный модификатор команды. В нашем случае будет иметь название ПечатьXML.

Теперь создадим процедуру, которая будет заполнять данную таблицу значений.

В данном коде все понятно.

В функции СведенияОВнешнейОбработке создадим команду и заполним ее.

Создаем таблицу значений:

Теперь заполним ее.

Еще раз пройдемся по параметрам.

  • Первый параметр, непосредственно таблица команд вновь созданная.
  • Второй параметр, как будет отображаться команда пользователю на форме (документа, справочника).
  • Третий – уникальный идентификатор команды, запомните его, он нам еще пригодится!
  • Четвертый параметр – использование, что вызовет Ваша команда.
  • Пятый параметр – показывать оповещение, мы не будем это делать.
  • Шестой параметр – модификатор, в нашем случае он всегда один ПечатьXML.

Теперь передадим вновь созданную таблицу команд в структуру ПараметрыРегистрации.

И пусть наша функция СведенияОВнешнейОбработке возвращает данную структуру.

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

Теперь в модуле объекта создадим процедуру Печать. Это процедура с четырьмя параметрами: МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода.

И вот начинается самое интересное, теперь вам необходимо войти в аналогичную процедуру в менеджере объекта счет на оплату покупателю, или в обработке, которая, по сути, является менеджером печати.

Как узнать, где находится нужная нам функция?

Откроем модуль менеджера документа Счет на оплату покупателю.


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

В этой процедуре найдем код, где добавляется команда для нужной нам печатной формы (список команд добавляется в таблицу значений КомандыПечати). И обратим внимание на свойство МенеджерПечати. Если этому свойству присваивается какое-нибудь значение - это путь к объекту метаданных, как правило к обработке, то значит при выводе нужной печатной формы будет отработан код в процедуре Печать, которая находится в модуле менеджере этого объекта (в обработке). А если это свойство в принципе не фигурирует при заполнении команды печати, то значит будет отработан код в процедуре Печать, которая находится в модуле менеджера нашего основного объекта (в нашем случае это документ СчетНаОплатуПокупателю)

Посмотрим на процедуру ДобавитьКомандыПечати в модуле менеджера документа "Счет на оплату покупателя".


Поскольку мы делаем внешнюю печатную форму счета на оплату, то нас интересует первое добавление в таблицу значений (см. свойство Представление), и мы видим, что в этом случае заполнено свойство МенеджерПечати, где указан объект Обработка.ПечатьСчетаНаОплату. Это значит, что нам нужно найти процедуру Печать в модуле менеджера обработки ПечатьСчетаНаОплату.

А если бы мы решили сделать внешнюю печатную форму договора счета на оплату (второе добавление в таблицу значений КомандыПечати), то нам нужно было бы найти процедуру Печать в модуле менеджера документа СчетНаОплатуПокупателя.

Откроем модуль менеджера обработки ПечатьСчетаНаОплату.


И раскроем процедуру Печать.


Нас интересует второе условие (где фигурирует строка "СчетЗаказ", см. идентификатор нужной команды в процедуре ДобавитьКомандыПечати модуля менеджера документа), скопируем это условие в процедуру Печать нашей внешней обработки.

Внимание! Копировать напрямую процедуру Печать из модуля менеджера (без разницы обработка это, документ или справочник) не следует. Поскольку у них отличается количество параметров, в последствие это приводит к ошибкам при работе.

Так же из модуля менеджера обработки скопируем процедуру СформироватьПечатнуюФорму.

В этом коде есть строка, где заполняется таблица сведений счета на оплату.

Эта таблица получается при помощи функции модуля менеджера объекта (в нашем случае это документ СчетНаОплатуПокупателю). Найдем эту функцию в модуле менеджера документа СчетНаОплатуПокупателю.


И скопируем её в модель нашей внешней обработки.

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

Если мы сейчас сделаем проверку модуля внешней обработки, то выйдет две ошибки. Первая, что не определена переменная ПараметрыПечати в процедуре Печать, и, что не найдена функция ПолучитьТекстЗапросаДляФормированияТаблицыСведенийСчетаНаОплату в функции ПолучитьТаблицуСведенийСчетаНаОплату.

Создадим переменную ПараметрыПечати в процедуре Печать. Это будет простая структура.

А потом найдем функцию ПолучитьТекстЗапросаДляФормированияТаблицыСведенийСчетаНаОплату в модуле менеджера документа СчетНаОплатуПокупателю и скопируем её в модуль внешней обработки.


Должен получится следующий состав процедур и функций модуля внешней обработки (для удобства я разделил их на две области).


Еще раз делаем проверку модуля. Ошибок не обнаружено.

Продолжаем, теперь нам необходимо, что бы брался наш макет, и печатался по нашей команде.

Нас интересует процедура СформироватьПечатнуюФорму, а в ней мы уделим внимание методу ПечатьСчетаНаОплату общего модуля ПечатьТорговыхДокументов.


Очевидно, она непосредственно формирует табличный документ. Перейдем в этот общий модуль, и скопируем функцию ПечатьСчетаНаОплату в модуль нашей внешней обработки.


Делаем проверку модуля внешней обработки. Ругается на несуществующие методы ВывестиЗаголовокПредупреждение и НомерСчетаНаОплату.


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


А функция НомерСчетаНаОплату в общем модуле ПечатьТорговыхДокументов экспортная, поэтому мы просто исправим код в процедуре ПечатьСчетаНаОплату, где используется проблемная функция, сделав вызов этой функции из вышеупомянутого общего модуля.

Проверяем еще раз ошибки. Все нормально.

Не забудем в процедуре СформироватьПечатнуюФорму убрать вызов метода ПечатьСчетаНаОплату из общего модуля.

Теперь зайдем в скопированную функцию ПечатьСчетаНаОплату, и посмотрим, где в ней подтягивается макет.


Находим данный макет в общих макетах и копируем его в макеты нашей обработки.


Исправляем выделенный код, где подтягивается макет, следующий образом.

Теперь зайдем в наш скопированный макет, и сделаем какое-нибудь изменение, чтобы вы видели, что команда подтянула именно макет из внешней обработки.


Вернемся обратно в процедуру Печать нашей внешней обработки.

И теперь осталась одна небольшая хитрость, без которой ваш внешний отчет не будет работать. Необходимо текст "СчетЗаказ" (это идентификатор типовой печатной формы).


Заменить на название идентификатора команды ("СчетНаОплатуВнешний").

Все, сохраняем данную обработку. И запускаем "1С: Предприятие" из конфигуратора.

Идем в администрирование. В дополнительные отчеты и обработки.

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

Наша инструкция «показывает» как подключить внешнюю печатную форму в 1С с конфигурацией на «ОБЫЧНЫХ» формах а именно:

  • «Бухгалтерия 2.0»
  • «Управление торговлей 10.3»
  • «Зарплата и управление персоналом 2.5»
  • «Комплексная автоматизация 1.1»
  • «Управление производственным предприятием 1.3»
  • «Розница 1.0»
  • и другие подобные конфигурации.

Для того чтобы подключить внешнюю печатную форму в 1С нам понадобится пройти 11 шагов.

Подключение внешней печатной формы 1С 8.2 (Действия 1-2-3) | tekdata.ru

Подключение внешней печатной формы 1С 8.2 (Действия 1-2-3-buh) | tekdata.ru

В новых версиях 1С (начиная с августа 2016 года) в программу встроен механизм предупреждения об опасности использования неизвестных внешних обработок, которые могут содержать «вирусы», в более ранних версиях программы предупреждение возникать не будет! Если оно возникло, то для подключения внешней обработки будет необходимо — 6 — нажать кнопку «Продолжить». (см. рис. ниже ↓)

Подключение внешней печатной формы 1С 8.2 (Действия 4-5-6) | tekdata.ru

Подключение внешней печатной формы 1С 8.2 (Действия 10) | tekdata.ru

Подключение внешней печатной формы 1С 8.2 (Действия 11) | tekdata.ru

Подключение внешней печатной формы 1С 8.2 (Действия 12) | tekdata.ru

Все это делается довольно просто))

И так, создадим новую обработку 1С.

Мы будем создавать внешний счет на оплату покупателю, поэтому обработку так и назовем: «СчетНаОплатуВнешний».

Внешняя обработка 1С 8.3

Сохраним ее на жесткий диск.

Зайдем в модуль обработки, и создадим экспортную функцию СведенияОВнешнейОбработке.

Внутри этой функции создадим структуру ПараметрыРегистрации, которая будет содержать определенный список полей. Каждое поле мы разберем в отдельности.

Создадим первый элемент структуры, он будет иметь ключ с название «Вид».

Значением данной связки КлючИЗначение идет одна из строк:

Следующий элемент структуры должен иметь ключ с названием Назначение.

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

Они должны иметь тип строка, и быть в следующем формате:

У нас этот массив будет возвращать отдельная функция ПолучитьНазначениеОбработки.

Допишем созданный последним элемент структуры.

Следующий элемент структуры будет иметь название «Версия», значением данного элемента будет версия обработки. Задается программистом на его усмотрение.

Следующий элемент имеет название «Информация», который содержит краткую информацию по обработке.

Следующий элемент имеет название «БезопасныйРежим», его необходим устанавливать в значение истина или ложь, в зависимости от того необходимо устанавливать или отключать безопасный режим во время выполнения обработки. Мы установим значение Истина.

И в последнем параметре необходимо добавить команды, которые будут поставляться обработкой. Для этого нам необходимо создать и заполнить таблицу команд. Разработаем функцию, которая создает и возвращает таблицу с определенным набором полей. Делать это будем в функции ПолучитьТаблицуКоманд.

Создадим функцию и таблицу значений внутри нее.

Теперь создадим пять колонок этой таблицы.

И первая колонка – Представление (тип строка).

Вторая колонка – Идентификатор.

Это может быть любая текстовая строка, уникальная в пределах данной обработки.

Третья колонка – Использование.

Параметр данной колонки типа строка, должен принимать одно из четырех значений –

Конкретно мы будем использовать вызов серверного метода.

Следующая колонка – показывать оповещение. Принимает значение истина или ложь, в зависимости от того надо показывать оповещение или нет.

И последняя колонка – модификатор. Это дополнительный модификатор команды. В нашем случае будет иметь название ПечатьMXL.

Теперь создадим процедуру, которая будет заполнять данную таблицу значений.

В данном коде все понятно.

В функции СведенияОВнешнейОбработке создадим команду и заполним ее.

Создаем таблицу значений:

Теперь заполним ее.

Еще раз пройдемся по параметрам.

  • Первый параметр, непосредственно таблица команд вновь созданная.
  • Второй параметр, как будет отображаться команда пользователю на форме (документа, справочника).
  • Третий – уникальный идентификатор команды, запомните его, он нам еще пригодится!
  • Четвертый параметр – использование, что вызовет Ваша команда.
  • Пятый параметр – показывать оповещение, мы не будем это делать.
  • Шестой параметр – модификатор, в нашем случае он всегда один ПечатьMXL.

Теперь передадим вновь созданную таблицу команд в структуру ПараметрыРегистрации.

И пусть наша функция СведенияОВнешнейОбработке возвращает данную структуру.

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

Теперь в модуле объекта создадим процедуру Печать. Это процедура с четырьмя параметрами: МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода.

И вот начинается самое интересное, теперь вам необходимо войти в аналогичную процедуру в менеджере объекта счет на оплату покупателю, или в обработке, которая, по сути, является менеджером печати.

Как узнать, где находится нужная нам функция?

Откроем модуль менеджера документа Счет на оплату покупателю.

Открыть модуль менеджера объекта

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

Добавить команды печати

оскольку мы делаем внешнюю печатную форму счета на оплату, то нас интересует первое добавление в таблицу значений (см. свойство Представление), и мы видим, что в этом случае заполнено свойство МенеджерПечати, где указан объект Обработка.ПечатьСчетаНаОплату. Это значит, что нам нужно найти процедуру Печать в модуле менеджера обработки ПечатьСчетаНаОплату.

А если бы мы решили сделать внешнюю печатную форму договора счета на оплату (второе добавление в таблицу значений КомандыПечати), то нам нужно было бы найти процедуру Печать в модуле менеджера документа СчетНаОплатуПокупателя.

Откроем модуль менеджера обработки ПечатьСчетаНаОплату.

Модуль менеджера обработки ПечатьСчетаНаОплату

И раскроем процедуру Печать.

Процедура печать обработки ПечатьСчетаНаОплату

Внимание! Копировать напрямую процедуру Печать из модуля менеджера (без разницы обработка это, документ или справочник) не следует. Поскольку у них отличается количество параметров, в последствие это приводит к ошибкам при работе.

Так же из модуля менеджера обработки скопируем процедуру СформироватьПечатнуюФорм

В этом коде есть строка, где заполняется таблица сведений счета на оплату.

Эта таблица получается при помощи процедуры модуля менеджера объекта (в нашем случае это документ СчетНаОплатуПокупателю). Найдем эту процедуру в модуле менеджера документа СчетНаОплатуПокупателю.

Получаем таблицу сведений счета на оплату

И скопируем её в модель нашей внешней обработки.

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

Если мы сейчас сделаем проверку модуля внешней обработки, то выйдет две ошибки. Первая, что не определена переменная ПараметрыПечати в процедуре Печать, и, что не найдена функция ПолучитьТекстЗапросаДляФормированияТаблицыСведенийСчетаНаОплату в функции ПолучитьТаблицуСведенийСчетаНаОплату.

Создадим переменную ПараметрыПечати в процедуре Печать. Это будет простая структура.

А потом найдем функцию ПолучитьТекстЗапросаДляФормированияТаблицыСведенийСчетаНаОплату в модуле менеджера документа СчетНаОплатуПокупателю и скопируем её в модуль внешней обработки.

Процедура в модуле менеджера счета на оплату

Должен получится следующий состав процедур и функций модуля внешней обработки (для удобства я разделил их на две области).

Состав процедур внешней печатной формы

Еще раз делаем проверку модуля. Ошибок не обнаружено.

Продолжаем, теперь нам необходимо, что бы брался наш макет, и печатался по нашей команде.

Нас интересует процедура СформироватьПечатнуюФорму, а в ней мы уделим внимание методу ПечатьСчетаНаОплату общего модуля ПечатьТорговыхДокументов.

Метод ПечатьСчетаНаОплату

Очевидно, она непосредственно формирует табличный документ. Перейдем в этот общий модуль, и скопируем функцию ПечатьСчетаНаОплату в модуль нашей внешней обработки.

Копирование процедуры ПечатьСчетаНаОплату

Делаем проверку модуля внешней обработки. Ругается на несуществующие методы ВывестиЗаголовокПредупреждение и НомерСчетаНаОплату.

Ошибки при проверки модуля внешней печатной формы

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

Функции общего модуля

А функция НомерСчетаНаОплату в общем модуле ПечатьТорговыхДокументов экспортная, поэтому мы просто исправим код в процедуре ПечатьСчетаНаОплату, где используется проблемная функция, сделав вызов этой функции из вышеупомянутого общего модуля.

Проверяем еще раз ошибки. Все нормально.

Не забудем в процедуре СформироватьПечатнуюФорму убрать вызов метода ПечатьСчетаНаОплату из общего модуля.

Теперь зайдем в скопированную функцию ПечатьСчетаНаОплату, и посмотрим, где в ней подтягивается макет.

Путь к общему макету

Находим данный макет в общих макетах и копируем его в макеты нашей обработки.

Копирование общего макета

Исправляем выделенный код, где подтягивается макет, следующий образом.

Теперь зайдем в наш скопированный макет, и сделаем какое-нибудь изменение, чтобы вы видели, что команда подтянула именно макет из внешней обработки.

Внешний счет на оплату

Вернемся обратно в процедуру Печать нашей внешней обработки.

Идем в администрирование. В дополнительные отчеты и обработки.

Внешняя печатная форма Счет на оплату

Записываем. И смотрим, как выходит наша печатная форма.

Записываем. И смотрим, как выходит наша печатная форма.


Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным


Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

Вступайте в мои группы:

2 thoughts on “ Создание внешней печатной формы в типовых конфигурациях 1С 8.3 ”

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

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

С тем, как был создан макет табличного документа (его мы и будем использовать), можете ознакомиться в этой статье:

А как было реализовано заполнение табличного документа, и осуществлен простой способ его вывода можете ознакомиться в этой статье:

И так, создадим подчиненную нашему документу команду печати.

Создание команды печати

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

Модуль и палитра свойств команды

Назовем новую команду ПечатьНакладной.

Имя команды объекта

Следующим шагом, нам нужно выбрать группу, в которой эта команда будет отображаться. Поскольку команду должна быть доступна на управляемой форме (или в форме документа, или в форме списка), то и группу нужно выбрать, связанную с формой. Поэтому выберем группу «Командная панель формы. Важное», если мы так сделаем, то кнопка команды печати будет отображаться в командной панели управляемой формы.

Выбор группы команды

Теперь, необходимо выбрать тип параметра, который будет передан в команду при её выполнении. Мы выберем ссылку на документ, которому эта команда подчинена.

Выбор типа параметра команды

Режим использования параметров

На этом мы закончим настройку свойств команды и перейдем к основной разработке: получению данных документов и заполнение табличного документа этими данными.

Делать всю эту работу мы будет в модуле менеджера документа. В принципе, всю эту работу можно было сделать и в модуле команды, но мы сделаем в модуле менеджера, чтобы потенциально этот код можно было применять и в других случаях. В модуле команды мы будем просто выводить табличный документ на просмотр. Поэтому откроем модуль менеджера документа.

Открываем модуль менеджера документа

В этом модуле напишем экспортную функцию, в которую в качестве параметров будет передан массив документов (как мы его будем получать, разберем ниже).

В этой функции первым делом создадим программно табличный документ 1С и получим макет, который был создан ранее в статье.

О том как этот макет сделан, читайте здесь: Создание макета табличного документа в 1С 8.3

Теперь я сделаю иерархический запрос, в котором в верхнем уровне иерархии будут документы, на детальном уровне данные из табличной части.

Если всё нормально, то мы выводим шапку документа и таблицы, как мы это делали в предыдущей статье.

Нам осталось получить выборку табличной части документа, обойти её и заполнить соответствующую область.

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

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

На этом мы закончим работать с функцией в менеджере модуля. Она в целом будет иметь следующий вид.

Откроем модуль команды, которую мы создали ранее.

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

Обратите внимание на параметр ПараметрКоманды, в этом параметре и содержится массив документов. Это именно массив, потому что при создании команды мы в свойстве команды «Режим использования данных» указали Множественный. Именно этот массив мы и передадим в функцию, которую создали в модуле менеджера объекта.

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

Теперь мы можем распечатать сразу несколько документов из формы списка документов.

Команда на форме списка документов

Печать нескольких документов

Для распечатывания нескольких документов, необходимо выделить мышкой нужные документы и выполнить команду печати.

Если Вы всё еще «плаваете» в конструкциях языка запросов, и у Вас вызывают трудности даже самые простые запросы, то рекомендую вам мой курс «Запросы в 1С от новичка до профи». Где эти и многие другие вопросы рассматриваются более подробно.


В чем особенность этого курса:
• Курс рассчитан на тех, кто не знаком с языком запросов в 1С;
• Учебный материал грамотно скомпонован и прост в освоении;
• Несколько десятков уроков;
• Полезные практические примеры;
• Все уроки изложены понятным и простым языком

Для моих читателей, купон на скидку 25%: hrW0rl9Nnx


Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Вступайте в мои группы:

One thought on “ Вывод на печать табличного документа в 1С 8.3. Используем команды объектов ”

Спасибо большое, очень помогло в разработке печати своего документа в УНФ.

Читайте также: