Как с помощью встроенного языка вывести в табличный документ новую область 1с
Обычно табличный документ формируется на основе макета как из строительных блоков. Макет представляет собой шаблон для формирования печатной формы. Построение макета производится в конфигураторе в специальном табличном редакторе. Разработчик может создавать области, изменять высоту строк и ширину колонок, задавать форматирование ячеек и всего табличного документа, включать в макет рисунки, диаграммы и сводные таблицы.
Области макета предназначены для однократного или многократного вывода, например, ниже представлен макет для печати расходной накладной:
Некоторые ячейки содержат только текст, который должен быть выведен. Другие ячейки содержат имена параметров (в угловых скобках). Значения этих параметров должны указываться в программном модуле. В отличие от версии 7.7, в ячейку нельзя вписать выражение. В версии 8.0 весь программный код сосредоточен в программных модулях и при выводе секций нет связи с текущим контекстом программного модуля. Назначение параметров табличного документа должно производиться явно из программного модуля через коллекцию "Параметры" объекта "ТабличныйДокумент".
Область может состоять из нескольких расположенных подряд строк или колонок, либо быть прямоугольной областью таблицы. К области можно обратиться по имени или по координатам. Можно также обращаться к пересечению областей, используя вертикальную черту (как в версии 7.7).
Общая схема
Общая схема формирования печатной формы на основе макета:
- Создание макета в табличном редакторе (определение областей, имен параметров, форматирования).
- Создание нового табличного документа (этот пункт не требуется, если отчет выводится в элемент управления ПолеТабличногоДокумента).
- Получение макета в переменную (метод ПолучитьМакет).
- Получение областей макета (метод ПолучитьОбласть).
- Заполнение параметров области (свойство Параметры).
- Вывод области в табличный документ (методы Вывести и Присоединить).
- Установка свойств отображения табличного документа (сетка, заголовки, только просмотр и т.д.).
- Отображение табличного документа на экране (а может быть отправка на принтер или сохранение).
Пример вывода табличного документа
Ниже приведен пример формирования печатной формы расходной накладной из модуля документа:
Процедура Печать(ТабДок) Экспорт
//создание нового табличного документа
ТабДок = Новый ТабличныйДокумент ;
//получение макета для печати расходной накладной
Макет = Документы.РасходнаяНакладная. ПолучитьМакет ("Основной");
//получим область "Заголовок" как новый табличный документ (!)
Область = Макет. ПолучитьОбласть ("Заголовок");
//укажем параметры области
Область. Параметры .НомерДокумента = Номер;
Область.Параметры.От = Дата;
Область.Параметры.Кому = Контрагент;
//выведем заполненную область "Заголовок" в табличный документ
ТабДок. Вывести (Область);
//выведем область "Шапка" в табличный документ
ТабДок.Вывести(Макет.ПолучитьОбласть("Шапка"));
//получение области "Строка"
//обратите внимание, что это можно сделать до цикла по строкам
Область = Макет.ПолучитьОбласть("Строка");
//вывод строк документа в печатную форму
Для Каждого СтрСостава Из Состав Цикл
//заполнение параметров области из строки табличной части
Область.Параметры. Заполнить (СтрСостава);
//вывод сформированной области в табличный документ
ТабДок.Вывести(Область);
//вывод области "Подвал"
Область = Макет.ПолучитьОбласть("Подвал");
Область.Параметры.ИтогоКоличество = Состав.Итог("Количество");
Область.Параметры.ИтогоСумма = Состав.Итог("Сумма");
ТабДок.Вывести(Область);
//установим параметры отображения табличного документа
ТабДок.ТолькоПросмотр = Истина;
ТабДок.ОтображатьЗаголовки = Истина;
ТабДок.ОтображатьСетку = Ложь;
//покажем табличный документ на экране
ТабДок. Показать ();
Основные методы
Основные методы формирования итогового табличного документа следующие:
Программирование системы
06.12.2016 10:31
4855
Для заполнения табличного документа удобно использовать макет. Макеты создаются в конфигураторе в специальном редакторе. Из макета получаютя области, а затем выводятся в табличный документ. Так же можно вывести не отдельные области, а макет целиком.
Основные функции
ПолучитьОбласть() – возвращает область макета в виде табличного документа.
Вывести() – выводит область в табличный документ добавляя её снизу, начиная с первой колонки.
Присоединить() – выводит область в табличный документ добавляя её справа, начиная со строки, в которую выводился предыдущий элемент.
Пример заполнения табличного документа
Задача.
Вывести в печатную форму, на подобии печати ценников, мини-прайсы. Т.е. некий набор номенклатуры с ценами.
Для тех кто не в курсе как печатаются ценники (на примере УТ11) выводятся фиксированные блоки поочередно присоединяя их, пока они по размеру входят в выводимую область. Как только присоединение не возможно, данные выводятся на «новой строке» Таблицы. Проверка осуществляется ч/з проверить присоединение и проверить вывод
Проблема заключается в том, что количество строк в каждом мини-прайсе различна, и заранее определить фиксированную область в макете для их присоединения (методом присоединить) не представляется возможным.
Решение, приведенное выше, конечно, рабочее и может применяться (даже применяется) на практике. Но к моему глубокому сожалению, для меня не приемлемо по моим внутренним убеждениям (люблю, чтоб код был простым и красивым). Поэтому у меня придумался другой подход.
Решение
Если коротко, то алгоритм следующий:
- Создаем «подставной» табличный документ
- Получаем из макета области для формирования мини-прайса (в примере Шапка, строка, подвал)
- В цикле по сгруппированным данным (по данным шапки)
- Очищаем подставной макет
- Выводим в него шапку
- Выводим все строки (цикл по строкам)
- Выводим подвал
- Получаем область из подставной табличной части, в которую вывели данные.
- Далее работаем с этой областью так же, как как если бы мы получили ее из макета целиком (проверяем на вывод и выводим)
Алгоритм не сложный, и думаю что не я первый, кто пользуется таким способом.
PS: Возможно, данная реализация не самая красивая и есть еще варианты. Предлагаю обсудить в комментах.
Ниже небольшая выдержка из кода обработки, прикрепленной для скачивания (демо пример в которой на ряду со «сборной» областью выводится фиксированная область, типа ценника)
ТабличныйДокумент = Новый ТабличныйДокумент ;
ВременнаяОбласть = Новый ТабличныйДокумент ;
ФиксОбласть = Макет . ПолучитьОбласть ( "ФиксХ|У" );
ФиксОбласть . Параметры . Текст = ТекстФиксированногоМакета ;
Х_Шапка = Макет . ПолучитьОбласть ( "Х_Шапка|У" );
Х_Строка = Макет . ПолучитьОбласть ( "Х_Строка|У" );
Х_Подвал = Макет . ПолучитьОбласть ( "Х_Подвал|У" );
ПерваяКолонка = Истина;
Если ВыводитьФиксированнуюОбласть Тогда
Область = ФиксОбласть ;
ВывестиОбласть ( ТабличныйДокумент , Область , ПерваяКолонка );
КонецЕсли;
Для х = 1 по СтрокиТаблицы . Количество () Цикл
СтрокаТаблицы = СтрокиТаблицы [ х – 1 ];
ВременнаяОбласть . Очистить ();
Х_Шапка . параметры . Наименование = СтрокаТаблицы . Наименование ;
ВременнаяОбласть . Вывести ( Х_Шапка );
Для Каждого строкаТ из СтрокаТаблицы . Строки Цикл
ЗаполнитьЗначенияСвойств ( Х_Строка . Параметры , строкаТ );
ВременнаяОбласть . Вывести ( Х_Строка );
КонецЦикла;
ВременнаяОбласть . Вывести ( Х_Подвал );
Область = ВременнаяОбласть . ПолучитьОбласть ( "R1C1:R" + ВременнаяОбласть . ВысотаТаблицы + "C" + ВременнаяОбласть . ШиринаТаблицы );
ВывестиОбласть ( ТабличныйДокумент , Область , ПерваяКолонка );
Если ВыводитьФиксированнуюОбласть Тогда
Область = ФиксОбласть ;
ВывестиОбласть ( ТабличныйДокумент , Область , ПерваяКолонка );
КонецЕсли;
Чот я редко пишу, ну и ладно. Продолжаю сражаться, глава 7 и 8.
Для чего предназначен объект конфигурации Отчет?
Объект конфигурации отчет служит для описания алгоритмов, при помощи которых пользователь может получать необходимые ему выходные данные.
Как создать отчет с помощью конструктора схемы компоновки данных?
В конфигураторе выбираем ветсь "Отчеты", правый клик мыши - команда "Добавить". На вкладке "Основные" выберем кнопку "Открыть схему компоновки данных"
Далее жмем кнопку "Добавить набор данных". Тут в качестве набора данных можно выбрать запрос, объект, объединение.
Запрос идет через консоль запросов. На закладке "Настройки" происходит управление выводом данных отчета, тут необходимо поставить галочки в окошке "выбранные поля"
На самом деле, скажу я честно, эта "система компоновки данных" мне совсем не нравится. Гораздо проще работать с кодом, проще и понятнее, чесслово.
Как отобразить отчет в разделах прикладного решения?
Правый клик по отчету - вкладка "Подсистемы"
Занятие 8
Для чего предназначен объект конфигурации макет?
Объект конфигурации макет предназначен для хранения различных форм представления данных, которые могут потребоваться каким-либо объектам конфигурации или всему прикладному решению в целом; Одно из предназначений подчиненного макета - создание печатной формы этого объекта;
Что такое конструктор печати?
Конструктор печати - это инструмент для создания печатных форм (хотя на самом деле удобнее не пользоваться конструктором)
Как создать макет с помощью конструктора печати?
Выбираем объект конфигурации, которому нужен макет (это может быть документ, отчет, внешняя обработка), правый клик по нему, команда "Изменить", вкладка "Макеты", кнопка "Конструктор Печати".
Так же будет возможность заполнить подвал печатной формы.
Как изменить табличный документ?
Изменение размеров ячеек происходит аналогично Excell, а другие свойства - правый клик по ячейке, свойства, справа выползет палитра свойств.
Какая разница в заполнении ячейки табличного документа текстом, параметром или шаблоном?
Текст - то, что будет показано на экране в любом случае;
Параметр - будет заменен некоторым значением, которое может быть присвоено ему (параметру) средствами встроенного языка. Например, запросом можно заполнить таблицу с колонкой номенклатура. При выводе на печать таблица будет построчно выводится, причем колонка Номенклатура будет выгружаться на место, где стоял параметр Номенклатура. Естественно, это требует дополнительной работы, но тут мне сейчас лениво описывать.
Шаблон - текстовая строка, в определенные места которой будут вставлены значения параметров.
Как с помощью встроенного языка вывести в табличный документ новую область?
С помощью следующей конструкции:
ОбластьИмяОбласти = Макет.ПолучитьОбласть("ИмяОбласти");
Перед этим надо создать на макете данную область. Выделяем колонку или строку, правый клик, команда "Свойства" и именуем нужную область.
Как изменить внешний вид и поведение формы?
Внешний вид формы меняется непосредственно при редактировании формы, а поведение формы - правый клик по открытой форме, команда свойства. В палитре свойств есть целая куча настроек поведения
Как отобразить сумму по колонке таблицы?
Вводим в форму подвал, в окошке формы выбираем колонку, прописываем путь к данным подвала
В отличие от регистра накопления устанавливает при движении документов-регистраторов новые значения ресурса, а регистр накопления лишь изменяет существующие. Так же при необходимости может хранить данные с привязкой по времени;
Ключ записи (Однозначно позволяет идентифицировать запись) является совокупностью значений измерений регистра и периода;
Правый клик в конфигурации по ветке «Регистры сведений», команда «Добавить», на вкладке «Основные» выбрать периодичность
Ведущее – запись регистра сведений имеет смысл, когда существует в базе данных объект, на который ссылается данное измерение;
Где АктуальнаяДата – параметр типа «Дата», определяет точку на оси времени, в которой нас интересует значение розничной цены.
Так же можно узнать с помощью запроса. В таком случае необходимо выбирать виртуальную таблицу регистра «СрезПоследних»;
Перечисление – описание структуры хранения постоянных наборов значений, не изменяемых в процессе работы конфигурации;
Правый клик по дереву конфигурации на ветке «Перечисления», команда «Добавить». На вкладке «данные» - установить значение перечисления
суббота, 8 июня 2013 г.
1сное же!
Чот я редко пишу, ну и ладно. Продолжаю сражаться, глава 7 и 8.
Для чего предназначен объект конфигурации Отчет?
Объект конфигурации отчет служит для описания алгоритмов, при помощи которых пользователь может получать необходимые ему выходные данные.
Как создать отчет с помощью конструктора схемы компоновки данных?
В конфигураторе выбираем ветсь "Отчеты", правый клик мыши - команда "Добавить". На вкладке "Основные" выберем кнопку "Открыть схему компоновки данных"
Далее жмем кнопку "Добавить набор данных". Тут в качестве набора данных можно выбрать запрос, объект, объединение.
Запрос идет через консоль запросов. На закладке "Настройки" происходит управление выводом данных отчета, тут необходимо поставить галочки в окошке "выбранные поля"
На самом деле, скажу я честно, эта "система компоновки данных" мне совсем не нравится. Гораздо проще работать с кодом, проще и понятнее, чесслово.
Как отобразить отчет в разделах прикладного решения?
Правый клик по отчету - вкладка "Подсистемы"
Занятие 8
Для чего предназначен объект конфигурации макет?
Объект конфигурации макет предназначен для хранения различных форм представления данных, которые могут потребоваться каким-либо объектам конфигурации или всему прикладному решению в целом; Одно из предназначений подчиненного макета - создание печатной формы этого объекта;
Что такое конструктор печати?
Конструктор печати - это инструмент для создания печатных форм (хотя на самом деле удобнее не пользоваться конструктором)
Как создать макет с помощью конструктора печати?
Выбираем объект конфигурации, которому нужен макет (это может быть документ, отчет, внешняя обработка), правый клик по нему, команда "Изменить", вкладка "Макеты", кнопка "Конструктор Печати".
Так же будет возможность заполнить подвал печатной формы.
Как изменить табличный документ?
Изменение размеров ячеек происходит аналогично Excell, а другие свойства - правый клик по ячейке, свойства, справа выползет палитра свойств.
Какая разница в заполнении ячейки табличного документа текстом, параметром или шаблоном?
Текст - то, что будет показано на экране в любом случае;
Параметр - будет заменен некоторым значением, которое может быть присвоено ему (параметру) средствами встроенного языка. Например, запросом можно заполнить таблицу с колонкой номенклатура. При выводе на печать таблица будет построчно выводится, причем колонка Номенклатура будет выгружаться на место, где стоял параметр Номенклатура. Естественно, это требует дополнительной работы, но тут мне сейчас лениво описывать.
Шаблон - текстовая строка, в определенные места которой будут вставлены значения параметров.
Как с помощью встроенного языка вывести в табличный документ новую область?
С помощью следующей конструкции:
ОбластьИмяОбласти = Макет.ПолучитьОбласть("ИмяОбласти");
Перед этим надо создать на макете данную область. Выделяем колонку или строку, правый клик, команда "Свойства" и именуем нужную область.
Как изменить внешний вид и поведение формы?
Внешний вид формы меняется непосредственно при редактировании формы, а поведение формы - правый клик по открытой форме, команда свойства. В палитре свойств есть целая куча настроек поведения
Как отобразить сумму по колонке таблицы?
Вводим в форму подвал, в окошке формы выбираем колонку, прописываем путь к данным подвала
В этой статье вы узнаете, по какому принципу осуществляется работа со страницами в табличном документе 1С 8.3. Будет показано, как определить помещается ли область (или области) в страницу, а также как принудительно осуществить разделение страниц.
Для демонстрации принципов работы страниц в табличном документе реализуем простой учебный пример: в табличном документе выведем строки со случайными числами и их текстовое представление, количество строк с числами, которые нужно вывести будем вводить в поле на управляемой форме обработки.
Создадим макет табличного документа с горизонтальными областями.
Создадим обработчик команды формы, в котором будем вызывать функцию, где создается и заполняется строками со случайными числами и их текстовым представлением табличный документ.
Этот код комментировать не будем, если у вас он вызывает затруднения, то ознакомьтесь с моими предыдущими статьями и видео-уроками.
Сейчас, когда мы выполним команду и выведем, например, 80 строк, то у нас все будет показано на одной странице, а при попытке распечатать (или выполнить предварительный просмотр) платформа самостоятельно разобьет табличный документ на страницы.
Согласитесь, что такой вариант формирования печатной формы не лицеприятно выглядит.
Для более приятного формирования печатной формы, сделаем так, чтобы каждый раз в конце страницы выводился подвал таблицы, а в начале новой страницы (кроме первой) выводилась шапка таблицы. Для этого доработаем код в методе СформироватьТабличныйДокумент.
Поясним этот код.
Используя метод табличного документа ПроверитьВывод можно проверить, войдет ли вывод области или нескольких областей на страницу табличного документа. Этот метод возвращает Истина, если область вмещается на страницу, и ложь – если нет. Параметром этого метода может быть как область, так и массив областей.
В функции мы создали массив, который состоит из области строки и из области подавала таблицы.
В каждой итерации цикла, в котором осуществляется вывод строк табличного документа, при помощи метода ПроверитьВывод выполняется проверка: вмещается ли область строки и область подвала таблицы в страницу табличного документа.
Если области не вмещаются на страницу табличного документа, то выводится подвал таблицы, потом выводится горизонтальный разделитель таблицы, который, по сути, создает новую страницу таблицы, и осуществляется вывод шапки таблицы уже на новой странице.
В результате, вывод табличного документа осуществится в более удобном виде.
Другие статьи про табличные документы в 1С:
Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
Для того, чтобы появилась возможность использовать свойство "Значение", необходимо явно присвоить свойству ячейки "СодержитЗначение" значение Истина или установить флажок "Содержит значение" в палитре свойств.
Для ячейки, у которой установлен признак "СодержитЗначение", можно задать тип значения, размещаемого в ячейке.
Следующий фрагмент демонстрирует, как можно управлять этими свойствами из встроенного языка://задаем нужный тип с помощью объекта "ОписаниеТипов"
Для ячейки табличного документа можно задавать формат вывода данных. Для этого используется свойство "Формат", которое содержит форматную строку. Приемы работы с форматной строкой полностью совпадают с функцией Формат()
Для ячейки, у которой установлен признак "СодержитЗначение", можно также задать элемент управления, который будет использоваться для редактирования этого значения.
Элемент управления можно назначить через палитру свойств или из встроенного языка с помощью метода "УстановитьЭлементУправления()". Чтобы проверить в программе, установлен ли элемент управления для конкретной ячейки, можно использовать свойство "ЭлементУправления", которое возвращает элемент управления, назначенный для ячейки.
Элементы управления, встроенные в ячейку, отображаются только при входе в режим редактирования значения. На приведенном ниже рисунке редактируемая ячейка обведена овалом и в ней отображается флажок:
Ниже показан пример установки элемента управления типа "Флажок" из встроенного языка://задаем нужный тип с помощью объекта "ОписаниеТипов"
Для элементов управления, расположенных в табличном документе, расширяется набор свойств, методов и событий:
Свойство "ВстроенВЯчейку" имеет тип "булево" и говорит о том, что элемент управления встраивается в ячейку или просто привязывается к ней, о чем было рассказано выше.
Свойство "Значение" предоставляет доступ к значению, которое редактируется в элементе управления. Оно используется только для элементов управления, поддерживающих связь с данными.
Метод "Расположить" позволяет разместить элемент управления в конкретной области ячеек табличного документа. Именно этот метод был использован в вышеприведенном примере.
Читайте также:
- Как вернуть тему письма в outlook
- Ваш браузер не принимает cookie файлы hamachi
- Браузер открывает вкладки в новом окне что делать
- Программы на айфон для хранения фото под паролем
- Удалить ready driver plus