Основы формирования табличного документа на основе макета
Обычно табличный документ формируется на основе макета как из строительных блоков. Макет представляет собой шаблон для формирования печатной формы. Построение макета производится в конфигураторе в специальном табличном редакторе. Разработчик может создавать области, изменять высоту строк и ширину колонок, задавать форматирование ячеек и всего табличного документа, включать в макет рисунки, диаграммы и сводные таблицы.
Области макета предназначены для однократного или многократного вывода, например, ниже представлен макет для печати расходной накладной:
Некоторые ячейки содержат только текст, который должен быть выведен. Другие ячейки содержат имена параметров (в угловых скобках). Значения этих параметров должны указываться в программном модуле. В отличие от версии 7.7, в ячейку нельзя вписать выражение. В версии 8.0 весь программный код сосредоточен в программных модулях и при выводе секций нет связи с текущим контекстом программного модуля. Назначение параметров табличного документа должно производиться явно из программного модуля через коллекцию «Параметры» объекта «ТабличныйДокумент».
Область может состоять из нескольких расположенных подряд строк или колонок, либо быть прямоугольной областью таблицы. К области можно обратиться по имени или по координатам. Можно также обращаться к пересечению областей, используя вертикальную черту (как в версии 7.7).
Общая схема
Общая схема формирования печатной формы на основе макета:
Пример вывода табличного документа
Ниже приведен пример формирования печатной формы расходной накладной из модуля документа:
Процедура Печать(ТабДок) Экспорт
//создание нового табличного документа
ТабДок = Новый ТабличныйДокумент ;
//получение макета для печати расходной накладной
Макет = Документы.РасходнаяНакладная. ПолучитьМакет («Основной»);
//получим область «Заголовок» как новый табличный документ (!)
Область = Макет. ПолучитьОбласть («Заголовок»);
//выведем заполненную область «Заголовок» в табличный документ
ТабДок. Вывести (Область);
//выведем область «Шапка» в табличный документ
ТабДок.Вывести(Макет.ПолучитьОбласть(«Шапка»));
//получение области «Строка»
//обратите внимание, что это можно сделать до цикла по строкам
Область = Макет.ПолучитьОбласть(«Строка»);
//вывод строк документа в печатную форму
Для Каждого СтрСостава Из Состав Цикл
//заполнение параметров области из строки табличной части
Область.Параметры. Заполнить (СтрСостава);
//вывод сформированной области в табличный документ
ТабДок.Вывести(Область);
//вывод области «Подвал»
Область = Макет.ПолучитьОбласть(«Подвал»);
Область.Параметры.ИтогоКоличество = Состав.Итог(«Количество»);
Область.Параметры.ИтогоСумма = Состав.Итог(«Сумма»);
ТабДок.Вывести(Область);
//установим параметры отображения табличного документа
ТабДок.ТолькоПросмотр = Истина;
ТабДок.ОтображатьЗаголовки = Истина;
ТабДок.ОтображатьСетку = Ложь;
//покажем табличный документ на экране
ТабДок. Показать ();
Основные методы
Основные методы формирования итогового табличного документа следующие:
Значения ячеек и элементы управления в табличном документе
Табличный документ (ТД) состоит из строк и столбцов, которые образуют ячейки. В этой статье рассмотрены возможности «1С:Предприятия 8», позволяющие разместить в ячейках табличного документа элементы управления для редактирования значений.
Ниже рассмотрены следующие темы:
Свойства «Текст» и «Значение» ячейки табличного документа
Следующий фрагмент демонстрирует, как можно управлять этими свойствами из встроенного языка:
Свойство «Формат» ячейки табличного документа
Элемент управления в табличном документе
Элементы управления, встроенные в ячейку
Элементы управления, встроенные в ячейку, отображаются только при входе в режим редактирования значения. На приведенном ниже рисунке редактируемая ячейка обведена овалом, и в ней отображается флажок:
Ниже показан пример установки элемента управления типа Флажок из встроенного языка:
Элементы управления, не встроенные в ячейку
Существует еще один способ размещения элемента управления в ячейке: использование независимого элемента управления и его «привязка» к нужной ячейке. В этом случае сама ячейка не участвует в процессе работы, а ее значения и свойства ни на что не влияют. Значения нужно будет непосредственно получать из элемента управления как обычного элемента формы. Ячейка при этом используется только как область размещения (привязки) элемента управления.
Ниже показано, как могут выглядеть такие элементы управления (не встроенные в ячейку):
В следующем фрагменте приводится пример размещения не встроенного в ячейку элемента управления в табличном документе:
Расширение элементов управления, расположенных в поле табличного документа
Для элементов управления, расположенных в табличном документе, расширяется набор свойств, методов и событий:
Разберем самые важные свойства и методы:
Свойство «Защита» ячейки табличного документа
Устанавливается это свойство так же, как и любое другое:
Табличный документ
Табличный документ — это общий объект встроенного языка. Он используется для создания выходных документов — первичных документов и отчетов. Табличный документ является мощным интерактивным средством отображения информации и может использоваться как сам по себе, так и входить в состав любой из форм, используемых в прикладном решении. По своей сути табличный документ напоминает электронные таблицы — он состоит из строк и столбцов, в которых размещаются данные, однако его возможности гораздо шире:
Оформление ячеек
Табличный документ обладает большими возможностями оформления. Разработчик может задавать тип и размер шрифта для отображения текста, расположенного в ячейках табличного документа:
Табличный документ позволяет оформлять ячейки рамками различного вида:
Также разработчик имеет возможность управлять цветом текста, фона и рамок, выбирая цвета как из палитры операционной системы, так и из палитры Web-цветов, поддерживаемой платформой, или из палитры того стиля, который будет использоваться прикладным решением:
Группировки
Табличный документ поддерживает возможность группировки строк и столбцов. Это позволяет группировать данные в отчетах, используя произвольное количество вложенных группировок.
Бывают горизонтальные и вертикальные группировки, причем у разработчика есть возможность управлять расположением итогов в группировке: для вертикальных группировок они могут быть расположены сверху или снизу, а для горизонтальных группировок — справа или слева.
Поддерживается отображение уровней группировок, и нажатием цифр в заголовках можно развернуть сразу все группировки данного уровня и свернуть более детальные группировки.
Отступ уровней иерархии при использовании группировок формируется системой автоматически:
Расшифровки
В системе поддерживается механизм расшифровок, который позволяет пользователю получить детальный или дополнительный отчет, щелкнув мышью на строке или ячейке табличного документа. Платформа поддерживает возможность обработки нажатий клавиши мыши в ячейках табличного документа. При этом система может выполнять как стандартные действия, так и алгоритмы, заданные разработчиком.
Стандартные действия при расшифровке выполняются, например, если щелкнуть мышью на документе или элементе справочника. В этом случае система откроет этот объект для просмотра (если иное поведение не предусмотрено разработчиком).
Обработка нестандартных расшифровок производится средствами встроенного языка. Например, разработчик может задать алгоритм получения детального отчета, путем переформирования существующего с использованием дополнительных условий отбора («показать продажи только по этому контрагенту»). Или же, используя расшифровку, пользователь может получить совершенно новый отчет (например «показать расходные накладные, которые сделали вклад в объем продаж по данному контрагенту»).
Механизм расшифровок позволяет значительно облегчить работу пользователя, поскольку вызов тех или иных отчетов, содержащихся в конкретном прикладном решении, происходит автоматически и не требует от пользователя задания начальных параметров. Настройки нужного отчета могут быть определены автоматически, исходя из контекста, в котором пользователь вызывает этот отчет.
Примечания
Разработчик имеет возможность задавать примечания для отдельных ячеек или групп ячеек документа. Ячейка с примечанием имеет маленький треугольник в правом верхнем углу. При наведении курсора на ячейку, примечание отображается во всплывающем окне. С помощью примечаний можно добавлять в табличные документы дополнительную (справочную) информацию, которая не отображается на экране (в обычном режиме), но может быть легко просмотрена, если подвести курсор мыши к нужной ячейке:
Ширина столбцов
Табличный документ поддерживает возможность задания различной ширины колонок для различных строк. Это возможность является весьма важной для регламентированных отчетов. Фактически в этом случае табличный документ будет представлять собой нескольких таблиц, что, например, часто встречается в бухгалтерской и налоговой отчетности:
Компактный документ
Для мобильных устройств с узким экраном реализовано компактное представление табличного документа. Ячейки реорганизуются по вертикали таким образом, чтобы отсутствовала горизонтальная прокрутка документа.
Ввод данных в табличный документ
Хотя табличные документы используются, в основном, для представления уже обработанной информации, существует возможность непосредственного ввода данных в табличный документ как в «обычную» электронную таблицу.
В процессе ввода данных в ячейки табличного документа они могут быть обработаны процедурами на встроенном языке, и результаты такой обработки могут использоваться при вычислении других ячеек табличного документа.
Непосредственный ввод данных в табличный документ может применяться, например, при формировании заявки на доставку товара или бухгалтерского баланса:
Сохранение
Поскольку табличный документ, чаще всего, используется для формирования выходных документов, он может быть сохранен в файл на диске для последующего использования или переноса на другие компьютеры. Табличный документ может быть сохранен как в собственном формате, так и экспортирован в другие форматы хранения данных, в том числе в формат документов Microsoft Office (*.xlsx, *.docx), в формат электронной таблицы OpenDocument (*.ods) или в формат электронных документов Adobe (*.pdf):
Редактор табличного документа
Для создания макетов, из которых в результате будет сформирован табличный документ, показанный пользователю, разработчик может использовать редактор табличного документа — мощное средство, сочетающее в себе оформительские возможности табличной структуры и векторной графики. Он позволяет создавать как небольшие документы с очень сложной структурой линий (типа платежного поручения), так и объемные ведомости, журналы и т. п. Подробнее…
Программирование в 1С для всех
При помощи табличных документов, в 1С можно организовывать вывод печатных форм. В этой статье мы научимся создавать макеты табличных документов объектов, на примере макета печатной формы документа.
Разработка макета табличного документа в 1С
Чтобы при помощи табличного документа вести какую-то печатную форму, необходимо создать макет табличного документа. Научимся создавать макеты конкретных объектов (справочники, документы). Для этого в конфигураторе 1С нужно выделить ветку «Макеты» ветки соответствующего объекта, вызвать правой клавишей мышки контекстное меню
После выполнения команды откроется конструктор 1С, где можно поменять название макета, но необходимо оставить тип макета «Табличный документ».
Нажимаем кнопку «Готово», после этого будет создан макет табличного документа, который имеет форму таблицы.
Этот макет состоит из строк, столбцов и ячеек. Каждая ячейка имеет свои свойства. Для того, чтобы открыть палитру свойств ячейки, необходимо выделить нужную ячейку, вызывать контекстное меню, и в этом меню выполнить команду «Свойства».
В палитре свойств ячейки можно осуществлять различные настройки, мы же заполним текст ячейки.
Этот текст отобразится в нашей ячейки, и вы заметили, что он как бы сдвинулся относительно самой ячейки. И у нас автоматически появились пунктирные линии. Пунктирные линии ограничивают область, которая выведется на печать. И как вы видите на предыдущей картинке, наш текст немного сдвинулся относительно пунктира. Это значит, что мы хоть и увидим весь текст при просмотре, на печать выйдет только та часть текста, что была до пунктира.
В том случае, когда текст не помещается в ячейку (как у нас сейчас), сделать так, чтобы он весь отображался можно двумя способами: расширить саму ячейку и объединить ячейки.
Объединим ячейки. Для этого выделим нужную область, вызовем контекстное меню и выполним команду «Объединить»
После этого, ячейки, куда входит наша строка, объединятся, а линии печати сдвинутся.
Области макета табличного документа 1С
В макете табличного документа существует возможность задать области. Для чего нужны области? Для того, чтобы более оптимально работать с макетом в программном коде: мы можем несколько раз получать одну и туже область и выводить её в результирующем табличном документе (по сути, на печать).
Зададим в нашем макете табличного документа три области: Шапка, ШапкаТаблицы, СтрокаТаблицы и Подвал. Это будут области строк.
Для того, чтобы задать область, необходимо выделить нужное количество строк (или столбцов), из которых мы хотим сделать область, после выполнить команду «Назначить имя» (Главное меню – Таблица – Имена).
После этого нужно указать имя области (все имена в макете должны быть уникальны)
После этого внешний вид нашего макета изменится – слева появится название области.
После того, как мы добавим ещё три области, наш макет табличного документа будет выглядеть следующим образом.
Области Шапка, ШапкаТаблицы и Подвал будут выводится один раз, а область СтрокаТаблицы будет выводится столько раз сколько строк в табличной части документа.
В нашей выводимой таблице будет 5 столбцов: номер, номенклатура, количество, цена и сумма. Оформим теперь шапку таблицы, написав название каждого столбца. Также мы расширим или сузим ячейки для более удобного просмотра. И сдвинем наш заголовок в шапке на одну ячейку влево (для этого нужно выделить объединенные ячейки и перетащить их мышкой влево)
Параметры макета табличного документа
В область СтрокаТаблицы скопируем те же названия, что из области шапки (кроме №, его так и назовем НомерТаблицы), но это у нас будут не просто названия, а параметры, в которые мы будем передавать данные, при формировании табличного документа. Для того, чтобы сделать данные названия параметрами, первым делом выделим все заполненные ячейки области СтрокаТаблицы, вызовем контекстное меню и выполним команду свойства.
У свойств всех пяти ячеек мы изменим одно только свойство Заполнение — выберем у него значение Параметр.
После этого вид нашего макета табличного документа опять изменится.
Теперь нам осталось сделать нашу таблицу таблицей в прямом смысле. Для этого нужно выделить каждую ячейку шапки и строки (удерживаете клавишу CTRL, кликаете по каждой ячейке мышкой, тогда будет выделена каждая ячейка в отдельности), вызвать, уже знакомым способом, контекстное меню, и в группе Оформление, изменить параметр Обвести.
После этих действий, все нужные ячейки будут обведены.
Печатная форма почти готова, нам осталось сделать, чтобы в шапке вместе с поступлением товара выходил номер и дата документа. Для этого мы выделим ячейку, где введен тест «Документ…» вызовем контекстное меню и в свойстве Заполнение укажем значение Шаблон.
И в тексте ячейки укажем параметры, в которые будем передавать значения. Если в тексте шаблона мы указываем какое-то слово в квадратных скобках, то в эту «переменную» будут переданы параметры при формировании отчета.
Я добавил левую ячейку в объединение ячеек. Чтобы это сделать нужно снять объединение, и создать новое объединение ячеек с еще одной ячейкой.
Всё наш макет готов, в следующей статье научимся выводить его на печать.
Более подробно и основательно работа с печатными формами в 1С дается в моей книге: «Программировать в 1С за 11 шагов»

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
Промо-код на скидку в 15% — 48PVXHeYu
Вступайте в мои группы:
2 thoughts on “ Создание макета табличного документа в 1С 8.3 ”
Добрый день, осень сильно помог ваш видео ролик, но хотелось бы узнать полный способ вывода реквизитов табличной части (на 19 минуте и 32 секунде вы указали что нету смысла расписывать каждый реквизит), если не трудно не могли бы вы расписать как это делается, а то маюсь уже не первые сутки.
Вам, в принципе, можно использовать Заполнить, и когда нужно заполнить меньше параметров, чем в запросе. Например, в запросе 10 полей, а в таблице 5 параметров, они и заполнятся. А так, если не хотите использовать Заполнить, то просто указываете параметр через точку, как это делали в шапке в статье, где заполняли табличный документ. Например, так:
Также можно параметры использовать, после метода Заполнить:
Программирование в 1С для всех
В массе своей, в прикладных задачах нужно вывести на печать какие-либо данные оформленные нужным образом (например, счет, торговую накладную, акт сверки и т.п.). Для вывода на печать в 1С 8.3. можно использовать табличные документы. В предыдущей статье я показал, как создать макет табличного документа и как правильно его оформить. Нам осталось научиться заполнять его данными и выводить на просмотр для последующей печати. Материал по выводу табличного документа на печать, я решил разбить на две части. В первой части мы разберем простой пример (я бы назвал его учебным), а во втором случае реализуем пример приближенный к реальному. Эта статья — первая часть, в ней мы реализуем простой пример: будем выводить табличный документ на печать, используя команду управляемой формы. Этот вариант имеет следующий недостаток: нельзя вывести печатную форму из списка документов, можно это сделать, только открыв форму документа. Для того, чтобы можно было вывести печатную форму из списка документов, необходимо создать команду документа. Этот вариант мы рассмотрим в следующей статье.
И так, сам макет документа мы уже создали, как это сделано, вы можете узнать в соответствующей статье.
Сейчас мы получим ранее созданный макет, заполним табличный документ 1С по этому макету, и нам останется вывести табличный документе 1С на просмотр для последующей печати.
Мы сделаем упрощенный (учебный) вариант: формирование всего нашего табличного документа будет осуществляться на модуле управляемой формы. Для этого мы на форме документа создадим команду «ПечатьДокумента», которую разместим в командной панели формы.
Для команды ПечатьДокумента создадим два обработчика в клиентском и серверном контексте.
Серверный обработчик переименуем в функцию, в нем мы создадим программно табличный документ 1С, который она и будет возвращать.
Теперь нужно получить макет, созданный в предыдущей статье, для этого мы будем использовать метод менеджера документа ПолучитьМакет.
Имейте в виду, что метод ПолучитьМакет напрямую доступен только или в модуле документа, или в модуле менеджера документа. Еще этот метод можно применить, используя менеджер конкретного объекта, как я сделал выше. Непосредственно на форме его использовать нельзя!
Алгоритм заполнения табличного документа будет следующим: мы будем получать нужную область макета, если необходимо заполнять эту область какими-нибудь данными, а потом выводить полученную область в табличный документ.
Напомню, что макет у нас имеет четыре области: Шапка, ШапкаТаблицы, СтрокаТаблицы, Подвал. Области Шапка, ШапкаТаблицы и Подвал будут выведены в табличный документ всего один раз, а область СтрокаТаблицы будет выведена столько раз, сколько строк в табличной части обрабатываемого документа.
Весь код ниже я выполняю между кодом получения макета и возвратом табличного документа.
Получим самую первую область макета, при помощи метода ПолучитьОбласть, где в качестве параметра следует указать название получаемой области.
В этой области мы используем шаблон, в котором имеются два параметра: НомерДок и ДатаДок передадим номер документа и дату документа в соответствующие параметры области, используя свойство Параметры нужной нам области. Данное свойство содержит коллекцию параметров табличного документа, и мы можем обращаться к нужному параметру через оператор «.».
Мы закончили с областью Шапка, и нам нужно вывести её в табличный документ, делается это при помощи метода Вывести табличного документа, где в качестве параметра указывается выводимая область.
Точно также получим область, которая соответствует шапке таблицы, заполнять его не нужно, а мы просто выведем его сразу же в табличный документ.
Следующим шагом выведем область СтрокаТаблицы, причем эта область должна быть выведена столько раз, сколько строк в табличной части документа. Поэтому мы сначала получим эту область, а потом циклом будем обходить табличную часть, заполнять параметры области и выводить область в табличный документ.
В коде выше, мы обошли табличную часть документа, обратившись к ней через основной реквизит Объект управляемой формы (основной формы документа).
Обратите внимание, я использовал метод Заполнить, потому что названия параметров макета совпадают с названиями реквизитов табличной части документа.
Нам осталось получить область Подвал и вывести её в табличный документ.
На этом мы закончим работать с функцией на сервере, весь ее код будет выглядеть следующим образом.
Нам осталось доделать клиентскую процедуру ПечатьДокумента: мы будем выводить на просмотр полученный табличный документ при помощи метода табличного документа Показать().
В качестве первого параметра метода Показать, я указал название, которое выйдет на форме табличного документа.
Проверим, как работает наш код.
Напомню, что я рассмотрел самый простой (учебный) пример вывода печатной формы, следующие примеры будут более приближенные к реальным.
Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
Промо-код на скидку в 15% — 48PVXHeYu









































