- Как получить секции в табличном документе?
- Работа с макетом. Вывод информации в области.
- Программирование в 1С для всех
- Вертикальные области табличного документа 1С 8.3
- Горизонтальные области табличного документа 1С 8.3
- Пересечение областей табличного документа 1С 8.3
- One thought on “ Области табличного документа в 1С ”
Как получить секции в табличном документе?
Понятие «секции», существовавшее в 1С:Предприятии 7.7, не используется в 1С:Предприятии 8. Теперь табличный документ может содержать области, представляющие собой совокупность ячеек прямоугольной формы, состоящую из смежных ячеек. Для области может быть задано имя, по которому можно обращаться к этой области из встроенного языка.
Если табличный документ используется в качестве макета, на основании которого формируется итоговый табличный документ, возникает необходимость получения различных областей макета, для установки значений параметров и вывода этих областей в итоговый табличный документ. В этом случае следует воспользоваться методом табличного документа ПолучитьОбласть() . Область будет получена в виде нового табличного документа.
Для получения области может быть использовано ее имя. Например:
Если необходимо получить область, которая находится на пересечении двух именованных областей, следует использовать следующий синтаксис:
Область табличного документа можно получить также указывая номера строк и столбцов, ограничивающих нужную область. Например, прямоугольная область в левом верхнем углу табличного документа, шириной в 5 столбцов и высотой в 3 может быть получена следующим образом:
Для получения области табличного документа также может быть передан адрес в формате RC :
Наряду с методом ПолучитьОбласть() у табличного документа существует свойство «Область», имеющее аналогичный синтаксис.
Следует понимать, что метод ПолучитьОбласть() предназначен для получения нового табличного документа, содержащего указанную область. Этот новый документ, в частности, может быть использован для вывода в итоговый табличный документ.
В отличие от этого метода, свойство «Область» возвращает область того табличного документа (макета), к которому оно было применено. Возвращаемая область будет представлять собой не табличный документ, а область ячеек табличного документа или рисунок. Полученная таким образом область предназначена для модификации существующего табличного документа (макета), и не подразумевает вывод ее в другой табличный документ.
Источник
Работа с макетом. Вывод информации в области.
Товарищи. Долго искал информацию, как разбить вывод отчёта по областям макета. До этого с макетами не приходилось работать. Может у вас имеются идеи?
Сделал макет, как на фото ниже. При формировании отчёта, печатается только Область_1 и друг под дружкой. А мне нужно на листе А4 в альбомном формате уместить 12 областей по порядку.
Процедура Печать(ТабДок) Экспорт
//создание нового табличного документа
ТабДок = Новый ТабличныйДокумент;
//получение макета для печати расходной накладной
Макет = Документы.РасходнаяНакладная.ПолучитьМакет(«Основной»);
//получим область «Заголовок» как новый табличный документ (!)
Область = Макет.ПолучитьОбласть(«Заголовок»);
//укажем параметры области
Область.Параметры.НомерДокумента = Номер;
Область.Параметры.От = Дата;
Область.Параметры.Кому = Контрагент;
//выведем заполненную область «Заголовок» в табличный документ
ТабДок.Вывести(Область);
//выведем область «Шапка» в табличный документ
ТабДок.Вывести(Макет.ПолучитьОбласть(«Шапка»));
//получение области «Строка»
//обратите внимание, что это можно сделать до цикла по строкам
Область = Макет.ПолучитьОбласть(«Строка»);
//вывод строк документа в печатную форму
Для Каждого СтрСостава Из Состав Цикл
//заполнение параметров области из строки табличной части
Область.Параметры.Заполнить(СтрСостава);
//вывод сформированной области в табличный документ
ТабДок.Вывести(Область);
//вывод области «Подвал»
Область = Макет.ПолучитьОбласть(«Подвал»);
Область.Параметры.ИтогоКоличество = Состав.Итог(«Количество»);
Область.Параметры.ИтогоСумма = Состав.Итог(«Сумма»);
ТабДок.Вывести(Область);
//установим параметры отображения табличного документа
ТабДок.ТолькоПросмотр = Истина;
ТабДок.ОтображатьЗаголовки = Истина;
ТабДок.ОтображатьСетку = Ложь;
//покажем табличный документ на экране
ТабДок.Показать();
Источник
Программирование в 1С для всех
В этой статье научимся работать с областями табличного документа в 1С 8.3. Вы узнаете, как создать и вывести вертикальные области, как создать и вывести горизонтальные области, а также как работать с пересечением областей.
Создадим обработку 1С, в которой будем разрабатывать макеты для демонстрации работы с разными областями табличных документов 1С.
И начнем с вертикальных областей.
Вертикальные области табличного документа 1С 8.3
Выполним небольшую задачу: будем выводить в табличном документе пронумерованные колонки, количество которых задается с формы.
Для реализации, создадим у обработки макет табличного документа, который так и назовем «ВертикальныеОбласти».
Нам нужно создать вертикальную область в этом макете. Для этого выделим те колонки макета табличного документа, в которых мы хотим создать область, и выполним команду «Назначить имя», которая находится по пути «Главное меню – Таблица – Имена».
В открывшемся окне введем имя области.
После того, как мы зададим имя, на макете будет создана область: в поле сверху появится название области, а также отобразятся вертикальные полосы, которые будут эту область ограничивать.
Немного доработаем макет. Объединим ячейки во второй строке. Для этого необходимо их выделить, вызвать контекстное меню, и применить команду «Объединить» этого меню.
В объединенных ячейках установим в свойство Заполнение значение Параметр. У нас в этих ячейках будет выходить какой-то параметр, назовем его НомерКолонки, а также в свойство Горизонтальное положение установим значение Центр.
И увеличим размер шрифта.
Всё, с макетом мы закончили.
Следующим шагом, разработаем основную форму обработки. На этой управляемой форме создадим реквизит «Количество колонок» (тип целое и неотрицательно число), а также команду формы «Вывести вертикальные области».
У команды формы создадим клиентский обработчик, который будет вызывать серверную бесконтекстную функцию.
В функции ПолучитьТабличныйДокументВертикальныеОбласти мы получим макет обработки, получим область макета «Колонка», создадим простой цикл от 1 до значения реквизита формы количество колонок, а потом в теле цикла будет в табличном документе присоединять область при помощи метода Присоединить(), который добавляет ячейки области по горизонтали, как бы присоединяя их.
И у нашей обработки будет следующий результат работы.
Горизонтальные области табличного документа 1С 8.3
В этой задаче будем выводить в табличном документе пронумерованные строки. Для этого создадим макет обработки, который назовем «Горизонтальные области». В этом макете выделим строки, и выполним уже знакомую команду «Назначить имя» («Главное меню – Таблица – Имена»).
В результате выполнения команды, выйдет окно, где нужно ввести название области, после того, как введем название области, макет табличного документа изменится: в поле слева появится название области, а также отобразятся горизонтальные полосы, которые будут эту область ограничивать.
Также как и с предыдущим макетом (вертикальные области), объединим ячейки, сделаем их параметром, увеличим шрифт и выполним центрирование.
На основной форме обработки создадим новый реквизит КоличествоКолонок (тип Число) и команду ВывестиГоризонтальныеОбласти.
Далее, мы создаем обработчик события команды формы и функцию, которая возвращает табличный документ с горизонтальными областями. В этом коде будет все точно также, как и в коде, который формировал табличный документ с вертикальными областями, но только вместо метода Присоединить будет использоваться метод Вывести, который добавляет ячейки области по вертикали.
И результат работы этого кода.
Таким образом. Метод Присоединить табличного документа добавляет области по горизонтали таблицы, а метод Вывести – по вертикали.
Научимся выводить таблицу.
Пересечение областей табличного документа 1С 8.3
Сделаем возможность вывода таблицы с определенным количеством строк и колонок, которое будет задаваться из реквизитов формы, созданных ранее.
Для этого создадим новый макет табличного документа, с пересекающимися вертикальными и горизонтальными областями.
В пересечении областей объединим ячейки, зададим параметр, отцентрируем, а также обведем объединенную ячейку.
На форме обработки создадим команду ВывестиТаблицу.
Создадим обработчик команды и функцию, которая будет формировать таблицу.
Пересечение областей на табличной документе задается таким способом: «Строки|Колонки». Пишем название одной области, вертикальную черту и название другой области, которая с ней пересекается. Так мы получим именно пересечение областей, с которым дальше и будем работать: выводить и присоединять.
В этой функции делаем два цикла. В первом цикле обходим и создаем строки. Первую ячейку строки (она же первая ячейка колонки) мы выводим в табличный документ методом Вывести, а потом начинаем делать цикл по колонкам и уже присоединяем области по горизонтали, с помощью метода Присоединить. Когда колонки заканчиваются мы выходим из цикла по колонками и начинаем следующую итерацию цикла по строкам, выводя опять новую ячейку ниже по таблице с помощью метода Вывести. И так далее.
В этот раз у нас будет следующий результат.
Видео ниже почти повторяет статью, но в нем есть БОНУС. В конце видео я показываю, как добавить в таблицу вывод шапки и боковика, а также вывожу табличный документ на управляемой форме 1С.
Смотрите в этом видео:
Другие статьи про табличные документы в 1С:
Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Вступайте в мои группы:
One thought on “ Области табличного документа в 1С ”
Добрый вечер. А сделать печать документа с динамическими колонками (которые создаются программно)?
«В документе не хочет печатать 🙁 Выдает ошибку:
Значение не является значением объектного типа (Параметры)
<Документ.КомплектационныйЛист.Форма.ФормаДокумента.Форма(264)>: Заголовок.Параметры.НомерДок = Объект.Номер;
<Документ.КомплектационныйЛист.Форма.ФормаДокумента.Форма(298)>: ТабДок = ПечатьЛистаКомплектацииНаСервере();»
Код:
ТабДок = Новый ТабличныйДокумент;
Макет = Документы.КомплектационныйЛист.ПолучитьМакет(«ПечатьЛистаКомплектации»);
Заголовок = Макет.ПолучитьОбласть(«ГорОблЗаголовок|ВертОблОснова»);
Заголовок.Параметры.НомерДок = Объект.Номер;
Заголовок.Параметры.ДатаДокумента = Формат(Объект.Дата,»ДФ=dd.MM.yyyy»);
ТабДок.Вывести(Заголовок);
Шапка = Макет.ПолучитьОбласть(«ГорОблШапка|ВертОблОснова»);
ШапкаБоковик = Макет.ПолучитьОбласть(«ГорОблШапка|ВертОблКлиент»);
СтрокаБоковик = Макет.ПолучитьОбласть(«ГорОблШапка|ВертОблОснова»);
Боковик = Макет.ПолучитьОбласть(«ГорОблСтрока|ВертОблКлиент»);
ТабДок.Вывести(Шапка);
Для Н = 1 По Объект.СписокКлиентов.Количество() Цикл
ШапкаБоковик.Параметры.КодКлиента = Н.КодКлиента;
ТабДок.Присоединить(ШапкаБоковик);
КонецЦикла;
Для СтрН = 1 По Объект.Товары.Количество() Цикл
СтрокаБоковик.Параметры.НПП = СтрН.НомерСтроки;
СтрокаБоковик.Параметры.Товар = СтрН.Номенклатура.НаименованиеПолное;
СтрокаБоковик.Параметры.СтранаТовара = СтрН.Номенклатура.Родитель;
СтрокаБоковик.Параметры.ПроизводительТовара = СтрН.Номенклатура.Производитель.Наименование;
ТабДок.Вывести(СтрокаБоковик);
Для К = 1 По Объект.СписокКлиентов.Количество() Цикл
Боковик.Параметры.КолВо = 0;
ТабДок.Присоединить(Боковик);
КонецЦикла;
КонецЦикла;
Источник