Как добавить область в макет 1с
Перейти к содержимому

Как добавить область в макет 1с

  • автор:

Как добавить область в макет 1с

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

К примеру, как я сформировал макеты для тестовой базы.

Я зашёл в форму обработки и перешёл на закладку «Макеты»:

Далее я нажал на «Плюсик» и выбрал тип «Табличный документ»:

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

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

Как назначить имя области

Что я понимаю под областью? Это и несколько строк и несколько ячеек, в общем любая часть табличного документа, которая может быть выделена нами, используя левую кнопку мыши.

Вот выделенная область из двух строк:

А вот выделенная область из 2 столбцов:

А сейчас мы выделим область на пересечении первых двух строк и первых двух столбцов:

Так вот. Если мы сумели выделить нужную нам область, то, нажав на ней правой кнопкой и выбрав пункт «Свойства», мы сможем присвоить ей имя, по-которому мы будем к ней обращаться из нашего кода, формируя печатную форму:

Это базовый навык, которым мы должны овладеть, чтобы суметь делать табличные макеты.

Как посмотреть уже назначенные имена

А давайте посмотрим какие имена областям уже назначены в макете?

Для этого из меню конфигуратора выбираем:

Вот она наша только что назначенная область «Шапка»:

А если сейчас выделим её в диалоге и нажмём «Выбрать», то в редакторе будет выбрана соотв. область ячеек:

Как задать параметр области

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

Эти параметры мы задаём у области и заданные значения автоматически попадают в нужные ячейки.

Для этого в свойствах нужной нам ячейки (куда будет выводиться значение параметра).

Указываем в поле «Заполнение» значение «Параметр», а в поле «Параметр» пишем имя, по которому мы будем обращаться к этому параметру из кода:

Если же указать в заполнении не «Параметр», а «Шаблон», то можно будет в самой ячейке указать какой-то текст (шаблон) с использованием имени параметра в квадратных скобках:

В этом случае имя параметра (и его позиция в шаблоне) указывается в квадратных скобках.

Как задать параметр расшифровки?

Имя параметра расшифровки задаётся всё в тех же свойствах ячейки:

Уже потом из кода мы присвоим этому параметру (по имени «РасшифровкаНоменклатуры») нужное значение (ссылку на элемент номенклатуры).

И когда пользователь сделает двойной щелчок на этой ячейки — ему откроется значение, присвоенное параметру расшифровки (в данном случае откроется форма элемента номенклатуры).

Дальнейшее напутствие

Мы рассмотрели необходимые основы. А теперь внимательно исследуйте рабочий пример.

Скачайте и разверните эту базу. Найдите в ней обработку «ОбработкаДляИспытаний».

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

Уже затем (в этой же обработке) переходите к примерам использования этих макетов. Только так вы научитесь создавать свои печатные формы на основе табличных макетов.

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Владимир Милькин

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

Можно ли в макете табличного документа программно создать область и параметр в ней?

ОбластьЯчеекТабличногоДокумента (SpreadsheetDocumentRange)
Параметр (Parameter)
Использование:

Чтение и запись.
Описание:

Тип: Строка.
Имя параметра, используемого при выводе области.

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.

ТабличныйДокумент.Область (SpreadsheetDocument.Area)
ТабличныйДокумент (SpreadsheetDocument)
Область (Area)
Вариант синтаксиса: По имени

Тип: Строка.
Имя области или адрес в формате "R1C1:R2C2", где число после "R" обозначает номер строки, число после "C" — номер колонки, символом ":" (двоеточие) разделяются координаты левого верхнего и правого нижнего угла области. В качестве имени также можно передавать пересечение двух областей, записываемое как "<Имя области 1> | <Имя области 2>".
Вариант синтаксиса: По адресу

Область(<НомерПервойСтроки>, <НомерПервойКолонки>, <НомерПоследнейСтроки>, <НомерПоследнейКолонки>)
Параметры:

Тип: Число.
Номер первой строки области таблицы.
Если отсутствует, то указывается область, состоящая из колонок.
<НомерПервойКолонки> (необязательный)

Тип: Число.
Номер первой колонки области таблицы.
Если отсутствует, то указывается область, состоящая из строк.
<НомерПоследнейСтроки> (необязательный)

Тип: Число.
Номер последней строки области таблицы.
Если выделяется область из колонок (параметр <НомерПервойСтроки> не задан), то указывается номер строки, из которой берется формат строк.
<НомерПоследнейКолонки> (необязательный)

Тип: Число.
Номер последней колонки области таблицы.
Описание варианта метода:

Если последняя строка и последняя колонка отсутствуют, то область задана единственной ячейкой. Если строки или колонки отсутствуют, то область задана диапазоном строк или колонок соответственно. Если метод вызван без параметров, то область задана всей таблицей.
Возвращаемое значение:

Тип: ОбластьЯчеекТабличногоДокумента; РисунокТабличногоДокумента.

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

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Пример:

ИменованнаяОбласть = ТабДок.Область("Шапка");
Ячейка = ТабДок.Область("R2C5");
ПрямоугольнаяОбластьЯчеек = ТабДок.Область("R2C2:R3C5");
ОбластьСтрока = ТабДок.Область("R2");
ОбластьСтрок = ТабДок.Область("R2:R4");
ОбластьКолонка = ТабДок.Область("C4");
ОбластьКолонок = ТабДок.Область("C4:C5");

Области табличного документа в 1С

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

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

И начнем с вертикальных областей.

Вертикальные области табличного документа 1С 8.3

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

Для реализации, создадим у обработки макет табличного документа, который так и назовем «ВертикальныеОбласти».

Макет обработки 1С

Нам нужно создать вертикальную область в этом макете. Для этого выделим те колонки макета табличного документа, в которых мы хотим создать область, и выполним команду «Назначить имя», которая находится по пути «Главное меню – Таблица – Имена».

Колонки табличного документа 1С

В открывшемся окне введем имя области.

Имя области табличного документа 1С

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

Вертикальная область табличного документа 1С

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

Объединение ячеек макета 1С

В объединенных ячейках установим в свойство Заполнение значение Параметр. У нас в этих ячейках будет выходить какой-то параметр, назовем его НомерКолонки, а также в свойство Горизонтальное положение установим значение Центр.

Свойство ячеек макета 1С

И увеличим размер шрифта.

Шрифт текста в ячейке макета 1С

Всё, с макетом мы закончили.

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

Управляемая форма обработки 1С

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

В функции ПолучитьТабличныйДокументВертикальныеОбласти мы получим макет обработки, получим область макета «Колонка», создадим простой цикл от 1 до значения реквизита формы количество колонок, а потом в теле цикла будет в табличном документе присоединять область при помощи метода Присоединить(), который добавляет ячейки области по горизонтали, как бы присоединяя их.

И у нашей обработки будет следующий результат работы.

Вертикальные области табличного документа 1С

Горизонтальные области табличного документа 1С 8.3

В этой задаче будем выводить в табличном документе пронумерованные строки. Для этого создадим макет обработки, который назовем «Горизонтальные области». В этом макете выделим строки, и выполним уже знакомую команду «Назначить имя» («Главное меню – Таблица – Имена»).

Горизонтальные области табличного документа 1С

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

Горизонтальные области табличного документа 1С

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

Ячейки табличного документа 1С

На основной форме обработки создадим новый реквизит КоличествоКолонок (тип Число) и команду ВывестиГоризонтальныеОбласти.

Управляемая форма обработки 1С

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

И результат работы этого кода.

Горизонтальные области табличного документа 1С

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

Научимся выводить таблицу.

Пересечение областей табличного документа 1С 8.3

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

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

Пересечение областей табличного документа 1С

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

Пересечение областей табличного документа 1С

На форме обработки создадим команду ВывестиТаблицу.

Команда формы обработки 1С

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

Пересечение областей на табличной документе задается таким способом: «Строки|Колонки». Пишем название одной области, вертикальную черту и название другой области, которая с ней пересекается. Так мы получим именно пересечение областей, с которым дальше и будем работать: выводить и присоединять.

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

В этот раз у нас будет следующий результат.

Пересечение областей табличного документа 1С

Видео ниже почти повторяет статью, но в нем есть БОНУС. В конце видео я показываю, как добавить в таблицу вывод шапки и боковика, а также вывожу табличный документ на управляемой форме 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

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


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

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

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

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

2 Replies to “Области табличного документа в 1С”

Добрый вечер. А сделать печать документа с динамическими колонками (которые создаются программно)?
«В документе не хочет печатать �� Выдает ошибку:
Значение не является значением объектного типа (Параметры)
<Документ.КомплектационныйЛист.Форма.ФормаДокумента.Форма(264)>: Заголовок.Параметры.НомерДок = Объект.Номер;
<Документ.КомплектационныйЛист.Форма.ФормаДокумента.Форма(298)>: ТабДок = ПечатьЛистаКомплектацииНаСервере();»

Код:
ТабДок = Новый ТабличныйДокумент;
Макет = Документы.КомплектационныйЛист.ПолучитьМакет(«ПечатьЛистаКомплектации»);

Заголовок = Макет.ПолучитьОбласть(«ГорОблЗаголовок|ВертОблОснова»);
Заголовок.Параметры.НомерДок = Объект.Номер;
Заголовок.Параметры.ДатаДокумента = Формат(Объект.Дата,»ДФ=dd.MM.yyyy»);
ТабДок.Вывести(Заголовок);

Шапка = Макет.ПолучитьОбласть(«ГорОблШапка|ВертОблОснова»);
ШапкаБоковик = Макет.ПолучитьОбласть(«ГорОблШапка|ВертОблКлиент»);
СтрокаБоковик = Макет.ПолучитьОбласть(«ГорОблШапка|ВертОблОснова»);
Боковик = Макет.ПолучитьОбласть(«ГорОблСтрока|ВертОблКлиент»);

ТабДок.Вывести(Шапка);
Для Н = 1 По Объект.СписокКлиентов.Количество() Цикл
ШапкаБоковик.Параметры.КодКлиента = Н.КодКлиента;
ТабДок.Присоединить(ШапкаБоковик);
КонецЦикла;

Для СтрН = 1 По Объект.Товары.Количество() Цикл
СтрокаБоковик.Параметры.НПП = СтрН.НомерСтроки;
СтрокаБоковик.Параметры.Товар = СтрН.Номенклатура.НаименованиеПолное;
СтрокаБоковик.Параметры.СтранаТовара = СтрН.Номенклатура.Родитель;
СтрокаБоковик.Параметры.ПроизводительТовара = СтрН.Номенклатура.Производитель.Наименование;
ТабДок.Вывести(СтрокаБоковик);

Для К = 1 По Объект.СписокКлиентов.Количество() Цикл
Боковик.Параметры.КолВо = 0;
ТабДок.Присоединить(Боковик);
КонецЦикла;
КонецЦикла;

Подскажите пожалуйста как реализовать перенос колонок на новую строку.

Функция Кнопка2НаСервере(КоличествоОбластей)
ТабличныйДокумент = Новый ТабличныйДокумент;

Макет = Обработки.ПечатьЦенник.ПолучитьМакет(«ВертикальныеОбласти»);
ВертикальнаяОбласть = Макет.ПолучитьОбласть(«Колонка»);

Для Каждого ТекСтрокаНоменклатура Из Объект.Состав Цикл

Для н = 1 по КоличествоОбластей Цикл
ВертикальнаяОбласть.Параметры.НомерКолонки = ТекСтрокаНоменклатура.ТабНоменклатура;
ВертикальнаяОбласть.Параметры.Цена = «Цена»;
ТабличныйДокумент.Присоединить(ВертикальнаяОбласть);
КонецЦикла;

Область макета

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

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

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

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

Рис. 1 Макет печатной формы документа 1С

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

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

Параметры внутри табличного документа должны выводится прямо из модуля программы 1С, при помощи коллекции «Параметры» в объекте «ТабличныйДокумент».

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

2. Схема формирования печатной формы

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

Рис. 2 Формирование печатной формы документа с помощью макета

Рассмотрим подробнее каждый пункт данной схемы.

1. Вначале происходит формирование макета внутри редактора для таблиц: определение необходимых областей, наименований для всех параметров, а также форматирование.

2. Создаётся новый табличный документа, если отчёт будет выведен в элемент по управлению «ПолеТабличногоДокумента», данный пункт будет пропущен.

3. Далее происходит отправка макета в переменную при помощи метода «ПолучитьМакет».

4. Следующим шагом получаем области в макете при помощи свойства «Параметры».

5. Производим заполнение всех параметров внутри области, также при помощи свойства «Параметры».

6. Выводится область для документа таблицы, используя два метода: «Вывести» и «Присоединить».

7. Устанавливаются свойства по отображению документа таблицы, это – все заголовки, сетка, отображение (например, только просмотр);

8. На экране отображается документ таблицы, происходит также отправка на принтер для печати и сохранение.

3. Документа таблицы в модуле документа 1С

Рассмотрим пример формирования печатной формы накладной по расходам в модуле документа 1С.

Рис. 3 Формирование печатной формы накладной

4. Главные методы в области макета в 1С

Далее представлены главные методы по формированию итогового табличного документа.

· Метод «Вывести» — служит для вывода в печатной форме фрагмента, при этом прибавляет его внизу с первого столбца.

· Метод «Присоединить» — выполняет функцию присоединения к форме печати фрагмента справа, начиная со строки, с которой был произведён вывод прошлого фрагмента при помощи метода «Вывести».

· Метод «Область» — необходим для получения области в виде объекта с типом «ОбластьЯчеекТабличногоДокумента», при помощи данного объекта есть возможность создавать форматирование внутри конкретной области, это может быть размер и цвет шрифта, фоновый цвет, дизайн ячеек.

· Метод «ПолучитьОбласть» — служит для получения области в виде объекта с типом «ТабличныйДокумент», после чего объект может быть использован для методов «Присоединить» и «Вывести», далее при помощи этого же объекта обозначаются значения по параметрам внутри соответствующей области.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *