Меню

Вывести табличный документ программно 1с

Основы формирования табличного документа на основе макета

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

Области макета предназначены для однократного или многократного вывода, например, ниже представлен макет для печати расходной накладной:

Некоторые ячейки содержат только текст, который должен быть выведен. Другие ячейки содержат имена параметров (в угловых скобках). Значения этих параметров должны указываться в программном модуле. В отличие от версии 7.7, в ячейку нельзя вписать выражение. В версии 8.0 весь программный код сосредоточен в программных модулях и при выводе секций нет связи с текущим контекстом программного модуля. Назначение параметров табличного документа должно производиться явно из программного модуля через коллекцию «Параметры» объекта «ТабличныйДокумент».

Область может состоять из нескольких расположенных подряд строк или колонок, либо быть прямоугольной областью таблицы. К области можно обратиться по имени или по координатам. Можно также обращаться к пересечению областей, используя вертикальную черту (как в версии 7.7).

Общая схема

Общая схема формирования печатной формы на основе макета:

  1. Создание макета в табличном редакторе (определение областей, имен параметров, форматирования).
  2. Создание нового табличного документа (этот пункт не требуется, если отчет выводится в элемент управления ПолеТабличногоДокумента).
  3. Получение макета в переменную (метод ПолучитьМакет).
  4. Получение областей макета (метод ПолучитьОбласть).
  5. Заполнение параметров области (свойство Параметры).
  6. Вывод области в табличный документ (методы Вывести и Присоединить).
  7. Установка свойств отображения табличного документа (сетка, заголовки, только просмотр и т.д.).
  8. Отображение табличного документа на экране (а может быть отправка на принтер или сохранение).

Пример вывода табличного документа

Ниже приведен пример формирования печатной формы расходной накладной из модуля документа:

Процедура Печать(ТабДок) Экспорт

//создание нового табличного документа
ТабДок = Новый ТабличныйДокумент ;

//получение макета для печати расходной накладной
Макет = Документы.РасходнаяНакладная. ПолучитьМакет («Основной»);

//получим область «Заголовок» как новый табличный документ (!)
Область = Макет. ПолучитьОбласть («Заголовок»);

//укажем параметры области
Область. Параметры .НомерДокумента = Номер;
Область.Параметры.От = Дата;
Область.Параметры.Кому = Контрагент;

//выведем заполненную область «Заголовок» в табличный документ
ТабДок. Вывести (Область);

//выведем область «Шапка» в табличный документ
ТабДок.Вывести(Макет.ПолучитьОбласть(«Шапка»));

//получение области «Строка»
//обратите внимание, что это можно сделать до цикла по строкам
Область = Макет.ПолучитьОбласть(«Строка»);

//вывод строк документа в печатную форму
Для Каждого СтрСостава Из Состав Цикл

//заполнение параметров области из строки табличной части
Область.Параметры. Заполнить (СтрСостава);

//вывод сформированной области в табличный документ
ТабДок.Вывести(Область);

//вывод области «Подвал»
Область = Макет.ПолучитьОбласть(«Подвал»);
Область.Параметры.ИтогоКоличество = Состав.Итог(«Количество»);
Область.Параметры.ИтогоСумма = Состав.Итог(«Сумма»);
ТабДок.Вывести(Область);

//установим параметры отображения табличного документа
ТабДок.ТолькоПросмотр = Истина;
ТабДок.ОтображатьЗаголовки = Истина;
ТабДок.ОтображатьСетку = Ложь;

//покажем табличный документ на экране
ТабДок. Показать ();

Основные методы

Основные методы формирования итогового табличного документа следующие:

Источник

Программирование в 1С для всех

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

И так, сам макет документа мы уже создали, как это сделано, вы можете узнать в соответствующей статье.

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

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

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

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

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

Имейте в виду, что метод ПолучитьМакет напрямую доступен только или в модуле документа, или в модуле менеджера документа. Еще этот метод можно применить, используя менеджер конкретного объекта, как я сделал выше. Непосредственно на форме его использовать нельзя!

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

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

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

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

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

Мы закончили с областью Шапка, и нам нужно вывести её в табличный документ, делается это при помощи метода Вывести табличного документа, где в качестве параметра указывается выводимая область.

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

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

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

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

Нам осталось получить область Подвал и вывести её в табличный документ.

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

Нам осталось доделать клиентскую процедуру ПечатьДокумента: мы будем выводить на просмотр полученный табличный документ при помощи метода табличного документа Показать().

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

Проверим, как работает наш код.

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

Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

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

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

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

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

Промо-код на скидку в 15% — 48PVXHeYu

Источник

Программный вывод табличного документа

Подскажите, кто уже умеет.

Программно создал на управляемой форме ПолеТабличногоДокумента:

нСтраница = Элементы.Добавить(«Детализация»+тРасчетПараметра.Показатель.Код,Тип(«ГруппаФормы»),Элементы.СтраницыДетализации);
нСтраница.Вид = ВидГруппыФормы.Страница;
нСтраница.Заголовок = тРасчетПараметра.Показатель.Наименование;

тТабПоле = Элементы.Добавить(«ПолеДетализации»+тРасчетПараметра.Показатель.Код,Тип(«ПолеФормы»),нСтраница);
тТабПоле.Вид = ВидПоляФормы.ПолеТабличногоДокумента;

(5) не даёт создать:
нРеквизит = Новый РеквизитФормы(«Детализация»+тРасчетПараметра.Показатель.Код,Тип(«ТабличныйДокумент»). Ложь);

Ошибка при вызове конструктора (РеквизитФормы)
нРеквизит = Новый РеквизитФормы(«Детализация»+тРасчетПараметра.Показатель.Код,Тип(«ТабличныйДокумент»). Ложь);
по причине:
Недопустимое значение параметра (параметр номер ‘2’)

нСтраница = Элементы.Добавить(«Детализация»+тРасчетПараметра.Показатель.Код,Тип(«ГруппаФормы»),Элементы.СтраницыДетализации);
нСтраница.Вид = ВидГруппыФормы.Страница;
нСтраница.Заголовок = тРасчетПараметра.Показатель.Наименование;

МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить(Новый РеквизитФормы(«рДетализация»+тРасчетПараметра.Показатель.Код, Новый ОписаниеТипов(«ТабличныйДокумент»). Ложь));

тТабПоле = Элементы.Добавить(«ПолеДетализации»+тРасчетПараметра.Показатель.Код,Тип(«ПолеФормы»),нСтраница);
тТабПоле.Вид = ВидПоляФормы.ПолеТабличногоДокумента;
тТабПоле.ПутьКДанным = «рДетализация»+тРасчетПараметра.Показатель.Код;

Источник

1С 8.3 Табличный документ — Программист 1С Минск. Автоматизация бизнеса.

1С 8.3 Табличный документ

&НаКлиенте
Процедура СозданиеПечатнойФормыИзТабличногоДокумента ( Команда )

НастройкаКолонтитуловПечатнойФормы ( ФормаПечати );
НастройкаПараметровПечатиТабличногоДокумента ( ФормаПечати );

ФормаПечати . Показать ( «Отчет по долгам» );

// Сохранение «Отчета по долгам»
ФормаПечати . Записать ( «D:\Storage\data\ОтчетПоДолгам.xls» , ТипФайлаТабличногоДокумента . XLS );

// Печать «Отчета по долгам» сразу на принтер
ФормаПечати . Напечатать ( РежимИспользованияДиалогаПечати . НеИспользовать );

&НаСервере
Функция СозданиеПечатнойФормыИзТабличногоДокументаНаСервере ()

Макет = ЭтотОбъект . ПолучитьМакет ( «Макет_Табл» );

// Изменение табличного макета после его создания.
ПрограммноеИзменениеТабличногоДокумента ( Макет );

ФормаПечати = Новый ТабличныйДокумент ;

// Получение области и макета по имени
Шапка = Макет . ПолучитьОбласть ( «Шапка» );
// Заполнение параметров
Шапка . Параметры . Дата = ТекущаяДата ();
Шапка . Параметры . Номер = 2020 ;
// Вывод шапки в документ
ФормаПечати . Вывести ( Шапка );

// Заголовок табличной части.
ЗаголовокТ = Макет . ПолучитьОбласть ( «ТЧ_Заголовок» );
ФормаПечати . Вывести ( ЗаголовокТ );

ТЧ_Строка = Макет . ПолучитьОбласть ( «ТЧ_Строка» );
SSDIntelOptaneDC = Справочники . Номенклатура . НайтиПоНаименованию ( «SSD Intel Optane DC P4800X 1.5TB» );

// Группировка строк таблицы в сворачивающийся блок
ФормаПечати . НачатьГруппуСтрок ( «Номенклатура» , Истина);

Для Х = 1 По 100 Цикл
ТЧ_Строка . Параметры . Номенклатура = SSDIntelOptaneDC ;
ТЧ_Строка . Параметры . Количество = Х ;

// Параметр расшифровки «РасшифровкаНоменклатуры» — для открытия формы номенклатуры из макета по клику
ТЧ_Строка . Параметры . РасшифровкаНоменклатуры = SSDIntelOptaneDC ;
ФормаПечати . Вывести ( ТЧ_Строка );
КонецЦикла;

// Конец группировки
ФормаПечати . ЗакончитьГруппуСтрок ();

Источник

Читайте также:  Вискоза что это за ткань как стирать