Как с помощью встроенного языка вывести в табличный документ новую область 1с
В 1С Предприятии для представления табличной информации существует специальный вид файлов "Табличный документ". Файлы могут быть созданы в 1С Конфигураторе или в 1С Предприятии. Для создания новых файлов необходимо перейти в главном меню Файл->Новый. В языке программирования 1С существует одноименный объект ТабличныйДокумент, который позволяет программно создавать, сохранять и выводить табличные документы.
Область печати
В табличном документе может быть определена область печати. В этом свойстве можно указать ту область, которая будет напечатана на принтере. Такое может потребоваться если нужно распечатать часть документа. Это можно сделать двумя способами. Задать можно только одну область.
1. Через пользовательские настройки
Область печати может быть задана непосредственно через главное меню Таблица->Настройка печати->Задать область печати. Так же через главное меню можно удалить область печати Таблица->Настройка печати->Удалить область печати. Добавляемая и удаляемая области должны быть выделены.
На печать будет выведена 3 строка с 1 по 7 колонку. Остальные области будут проигнорированы.
2. Средствами встроенного языка
Другой вариант определить область печати - программный. Используя объект встроенного языка ТабличныйДокумент, можно задать какую область печатать. Для этого есть специальное свойство ОбластьПечати. В этом свойстве определяется ОбластьЯчеекТабличногоДокумента, которая будет печататься.
Следует учесть, что при программном выводе одного табличного документа в другой свойство ОбластьПечати затирается. Так же происходит при определении области печати в макете и последующем выводе макета в табличный документ. Поэтому область печати нужно задавать в результирующем табличном документе.
Повторяющаяся область печати
Табличный документ широко применяется при создании печатных форм. Довольно часто, при создании печатных форм может потребоваться повторять какую либо информацию вверху на каждой последующей странице. Например, это может быть шапка таблицы. Задать можно только одну область.
1. Через пользовательские настройки
Повторяющуюся область можно задать через главное меню Таблица->Настройки печати->Повторять на каждом листе. Для удаления области, в главном меню нужно выбрать Таблица->Настройки печати->Удалить повторение. Добавляемая и удаляемая области должны быть выделены.
На всех последующих страницах, вверху, будет повторяться вывод 3 строки. Остальные области будут выводиться как обычно.
2. Средствами встроенного языка
Для решения задачи вывода повторяющейся области, в объекте ТабличныйДокумент есть специальные свойства: ПовторятьПриПечатиСтроки и ПовторятьПриПечатиКолонки. Как видно из названия, в первом свойстве ПовторятьПриПечатиСтроки определяется область строк (тип: ОбластьЯчеекТабличногоДокумента, задается только номерами строк), а во втором ПовторятьПриПечатиКолонки задается область колонок (тип: ОбластьЯчеекТабличногоДокумента, задается только номерами колонок).
Следует учесть, что при программном выводе одного табличного документа в другой, свойства ПовторятьПриПечатиСтроки и ПовторятьПриПечатиКолонки затираются. Так же происходит при определении повторяющихся областей печати в макете и последующем выводе макета в табличный документ. Поэтому эти свойства нужно задавать в результирующем табличном документе.
Комментарии (1)
Основы формирования табличного документа на основе макета
Обычно табличный документ формируется на основе макета как из строительных блоков. Макет представляет собой шаблон для формирования печатной формы. Построение макета производится в конфигураторе в специальном табличном редакторе. Разработчик может создавать области, изменять высоту строк и ширину колонок, задавать форматирование ячеек и всего табличного документа, включать в макет рисунки, диаграммы и сводные таблицы.
Области макета предназначены для однократного или многократного вывода, например, ниже представлен макет для печати расходной накладной:
Некоторые ячейки содержат только текст, который должен быть выведен. Другие ячейки содержат имена параметров (в угловых скобках). Значения этих параметров должны указываться в программном модуле. В отличие от версии 7.7, в ячейку нельзя вписать выражение. В версии 8.0 весь программный код сосредоточен в программных модулях и при выводе секций нет связи с текущим контекстом программного модуля. Назначение параметров табличного документа должно производиться явно из программного модуля через коллекцию "Параметры" объекта "ТабличныйДокумент".
Область может состоять из нескольких расположенных подряд строк или колонок, либо быть прямоугольной областью таблицы. К области можно обратиться по имени или по координатам. Можно также обращаться к пересечению областей, используя вертикальную черту (как в версии 7.7).
Общая схема
Общая схема формирования печатной формы на основе макета:
- Создание макета в табличном редакторе (определение областей, имен параметров, форматирования).
- Создание нового табличного документа (этот пункт не требуется, если отчет выводится в элемент управления ПолеТабличногоДокумента).
- Получение макета в переменную (метод ПолучитьМакет).
- Получение областей макета (метод ПолучитьОбласть).
- Заполнение параметров области (свойство Параметры).
- Вывод области в табличный документ (методы Вывести и Присоединить).
- Установка свойств отображения табличного документа (сетка, заголовки, только просмотр и т.д.).
- Отображение табличного документа на экране (а может быть отправка на принтер или сохранение).
Пример вывода табличного документа
Ниже приведен пример формирования печатной формы расходной накладной из модуля документа:
Процедура Печать(ТабДок) Экспорт
//создание нового табличного документа
ТабДок = Новый ТабличныйДокумент ;//получение макета для печати расходной накладной
Макет = Документы.РасходнаяНакладная. ПолучитьМакет ("Основной");//получим область "Заголовок" как новый табличный документ (!)
Область = Макет. ПолучитьОбласть ("Заголовок");//укажем параметры области
Область. Параметры .НомерДокумента = Номер;
Область.Параметры.От = Дата;
Область.Параметры.Кому = Контрагент;//выведем заполненную область "Заголовок" в табличный документ
ТабДок. Вывести (Область);//выведем область "Шапка" в табличный документ
ТабДок.Вывести(Макет.ПолучитьОбласть("Шапка"));//получение области "Строка"
//обратите внимание, что это можно сделать до цикла по строкам
Область = Макет.ПолучитьОбласть("Строка");//вывод строк документа в печатную форму
Для Каждого СтрСостава Из Состав Цикл
//заполнение параметров области из строки табличной части
Область.Параметры. Заполнить (СтрСостава);
//вывод сформированной области в табличный документ
ТабДок.Вывести(Область);
КонецЦикла;
//вывод области "Подвал"
Область = Макет.ПолучитьОбласть("Подвал");
Область.Параметры.ИтогоКоличество = Состав.Итог("Количество");
Область.Параметры.ИтогоСумма = Состав.Итог("Сумма");
ТабДок.Вывести(Область);
//установим параметры отображения табличного документа
ТабДок.ТолькоПросмотр = Истина;
ТабДок.ОтображатьЗаголовки = Истина;
ТабДок.ОтображатьСетку = Ложь;
//покажем табличный документ на экране
ТабДок. Показать ();
Чот я редко пишу, ну и ладно. Продолжаю сражаться, глава 7 и 8.
Для чего предназначен объект конфигурации Отчет?
Объект конфигурации отчет служит для описания алгоритмов, при помощи которых пользователь может получать необходимые ему выходные данные.
Как создать отчет с помощью конструктора схемы компоновки данных?
В конфигураторе выбираем ветсь "Отчеты", правый клик мыши - команда "Добавить". На вкладке "Основные" выберем кнопку "Открыть схему компоновки данных"
Далее жмем кнопку "Добавить набор данных". Тут в качестве набора данных можно выбрать запрос, объект, объединение.
Запрос идет через консоль запросов. На закладке "Настройки" происходит управление выводом данных отчета, тут необходимо поставить галочки в окошке "выбранные поля"
На самом деле, скажу я честно, эта "система компоновки данных" мне совсем не нравится. Гораздо проще работать с кодом, проще и понятнее, чесслово.
Как отобразить отчет в разделах прикладного решения?
Правый клик по отчету - вкладка "Подсистемы"
Занятие 8
Для чего предназначен объект конфигурации макет?
Объект конфигурации макет предназначен для хранения различных форм представления данных, которые могут потребоваться каким-либо объектам конфигурации или всему прикладному решению в целом; Одно из предназначений подчиненного макета - создание печатной формы этого объекта;
Что такое конструктор печати?
Конструктор печати - это инструмент для создания печатных форм (хотя на самом деле удобнее не пользоваться конструктором)
Как создать макет с помощью конструктора печати?
Выбираем объект конфигурации, которому нужен макет (это может быть документ, отчет, внешняя обработка), правый клик по нему, команда "Изменить", вкладка "Макеты", кнопка "Конструктор Печати".
Определяем, какие реквизиты табличных частей будут выводится;
Так же будет возможность заполнить подвал печатной формы.
Как изменить табличный документ?
Изменение размеров ячеек происходит аналогично Excell, а другие свойства - правый клик по ячейке, свойства, справа выползет палитра свойств.
Какая разница в заполнении ячейки табличного документа текстом, параметром или шаблоном?
Текст - то, что будет показано на экране в любом случае;
Параметр - будет заменен некоторым значением, которое может быть присвоено ему (параметру) средствами встроенного языка. Например, запросом можно заполнить таблицу с колонкой номенклатура. При выводе на печать таблица будет построчно выводится, причем колонка Номенклатура будет выгружаться на место, где стоял параметр Номенклатура. Естественно, это требует дополнительной работы, но тут мне сейчас лениво описывать.
Шаблон - текстовая строка, в определенные места которой будут вставлены значения параметров.
Как с помощью встроенного языка вывести в табличный документ новую область?
С помощью следующей конструкции:
ОбластьИмяОбласти = Макет.ПолучитьОбласть("ИмяОбласти");
Перед этим надо создать на макете данную область. Выделяем колонку или строку, правый клик, команда "Свойства" и именуем нужную область.
Как изменить внешний вид и поведение формы?
Внешний вид формы меняется непосредственно при редактировании формы, а поведение формы - правый клик по открытой форме, команда свойства. В палитре свойств есть целая куча настроек поведения
Как отобразить сумму по колонке таблицы?
Вводим в форму подвал, в окошке формы выбираем колонку, прописываем путь к данным подвала
В предыдущих статьях, все табличные документы выводились в виде отдельного окна, что, согласитесь, бывает иногда не удобно. В этой статье я покажу, как выводить табличный документ на управляемой форме.
Я рассмотрю два примера. В первом, мы будем на управляемой форме выводить произвольный отчет, который будет сделан при помощи макета табличного документа. А во втором примере, я создам форму для вывода различных печатных форм документов, как это делается в большинстве современных конфигураций.
Пример с отчетом
Реализуем самый простой вариант отчета, который будет без какой-то смысловой нагрузки, призванный просто показать, как работает табличный документ на управляемой форме. В основном все современные отчеты делают на СКД, но этот мы сделаем по «старинке», используя табличный документ. Для этого создадим объект Отчет и подчиненный ему макет табличного документа всего с одной областью.
Подробнее о том, как создается и оформляется макет табличного документа, читайте в этой статье:
Следующим шагом создадим пустую форму подчиненную этом отчёту, и добавим у неё реквизит управляемой формы с типом ТабличныйДокумент.
Поместим этот реквизит на форму. Если его перетащить мышкой, то он станет элементом поля табличного документа. Чтобы не было заголовка, нужно в свойстве ПоложениеЗаголовка добавленного элемента формы установить значение Нет.
Создадим команду управляемой формы, и поместим её на форму в виде кнопки.
Подробнее о заполнении табличных документов читайте в этой статье:
И всё, если мы сейчас попробуем выполнить нашу команду, то отчет заполнится нужными данными.
Пример с печатной формой документа
А сейчас, мы доработаем вывод печатной формы документа, который мы делали в статье ранее:
Раньше у нас печатная форма документа выходила каждый раз в отдельном окне, так её выводила платформа 1С, мы же сделаем так, чтобы печатная форма выводилась в нужной нам управляемой форме.
Для этого мы создадим общую форму, которую назовем ФормаВыводаПечатнойФормы.
У этой формы создадим реквизит с типом ТабличныйДокумент, разместим его на форме, а также поменяем заголовок формы.
Следующим шагом, создадим параметр ТабДок с типом ТабличныйДокумент.
Нам осталось при создании формы реквизиту управляемой формы присвоить значение параметра.
На этом мы закончим работать с общей формой. В нашем случае, при открытии, форма будет заполняться тем табличным документом, который будет передан в параметре.
Перейдем в модуль команды документа, которую мы создали в предыдущей статье.
И подправим эту команду: будем открывать общую форму, в которую в качестве параметра передадим сформированный ранее табличный документ.
Чтобы каждый раз открывалась новая форма, я передают в качестве третьего параметра новый уникальный идентификатор.
Всё! На этом доработка команды закончена. Можно проверить, как работает открытие нашей формы.
Причем, форму мы можем открыть, как с общего списка документов, так и из нужного нам документа.
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
Читайте также: