1с вставить табличный документ в табличный документ
НачалоНовогоФорматаСтрок = ТабличныйДокумент.ВысотаТаблицы + 1;
ОбластьПрямоугольная = РезультатИсследования.Область(1, ,РезультатИсследования.ВысотаТаблицы);
ТабличныйДокумент.ВставитьОбласть(ОбластьПрямоугольная, ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, 1));
ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, ,НачалоНовогоФорматаСтрок + РезультатИсследования.ВысотаТаблицы - 1, ).СоздатьФорматСтрок();
Для Счетчик = 1 По РезультатИсследования.ШиринаТаблицы Цикл
ТабличныйДокумент.Область(НачалоНовогоФорматаСтрок, Счетчик).ШиринаКолонки = РезультатИсследования.Область(1, Счетчик).ШиринаКолонки;
КонецЦикла;
КонецПроцедуры
конкретно на этом виде документа - для красивости надо еще объединить две верхние ячейки по горизонтали и задать ширину колонок "Растягивать по горизонтали"
еще проблема - во вставляемом ТД могут попадаться строки со своим форматом строк
я правильно понимаю, что для корректной вставки надо вставлять каждую строку по отдельности
и как объединять ячейки кодом?
вопрос только по строкам без текста - при вставке области не "понимает" область печати - строка над "Пациентом"
Синтаксис:
Вывести(, , , )
Параметры:
Тип: ТабличныйДокумент, ПолеТабличногоДокумента.
Тип: Число.
Уровень используется для автоматической группировки строк табличного документа. Соседние строки с одинаковым уровнем будут отнесены к одной группе. Строки с минимальным уровнем в группу не объединяются.
Тип: Строка.
Название группы, к которой относятся выводимые строки.
Тип: Булево.
Истина - выведенная группа будет открыта; Ложь - группа будет выведена в свернутом виде.
Значение по умолчанию: Истина.
Возвращаемое значение:
Тип: ОбластьЯчеекТабличногоДокумента.
Область, в которую был осуществлен вывод.
Описание:
Выводит табличный документ в результирующий табличный документ, добавляя его со следующей строки вслед за самой нижней выведенной строкой, начиная с первой колонки.
Табличные документы, которые выводятся при помощи данного метода, не рекомендуется передавать между клиентом и сервером и обратно.
1С 8.3 Объединение табличных документов (с разной шириной)
// Процедура ПрисоединитьТабличныйДокумент осуществляет вывод Присоединяемого документа под указанным
// С возможностью создания нового формата строк для всей области присоединяемого документа
// Удобно использовать, чтобы колонки различной ширины не разъезжались
//
// Параметры:
// ПриемникТаблДок - ТабличныйДокумент - документ, куда будут добавлены области присоединяемого документа
// ПередатчикТаблДок - ТабличныйДокумент/ОбластьЯчеекТабличногоДокумента - документ, который присоединяем
// СоздатьФорматСтрок - Булево - флаг, указывающий на то, что необходимо создать свой формат строк
//
Процедура ПрисоединитьТабличныйДокумент ( ПриемникТаблДок , Знач ПередатчикТаблДок , Знач СоздатьФорматСтрок = Ложь) Экспорт
ВременныйТаблДок = Новый ТабличныйДокумент ;
ОбластьЯчеек = ВременныйТаблДок . Вывести ( ПередатчикТаблДок );
Если СоздатьФорматСтрок Тогда
ОбластьЯчеек . СоздатьФорматСтрок ();
КонецЕсли;
ПриемникТаблДок . Вывести ( ВременныйТаблДок );
// Добавляет один сформированный табличный документ к другому
//
// Параметры:
// - табличный документ, в который добавляется Табличный документ
// - табличный документ, вставляемый в приемник
Процедура ДобавитьТабличныйДокумент ( ПриемникТаблДок , ПередатчикТаблДок )
Если ПередатчикТаблДок = Неопределено Тогда
Возврат;
КонецЕсли;
НачалоНовогоТД = ПриемникТаблДок . ВысотаТаблицы + 1 ;
//Разобъем вствляемый ТД на куски форматов строк
ФорматыСтрокТЗ = Новый ТаблицаЗначений ;
ФорматыСтрокТЗ . Колонки . Добавить ( "ПерваяСтрока" );
ФорматыСтрокТЗ . Колонки . Добавить ( "ПоследняяСтрока" );
ФорматыСтрокТЗ . Колонки . Добавить ( "МассивЗначенийШирины" );
//Чтобы узнать ширину колонки для каждой ячейки необходимо разъединить все объединенные ячейки
//А, т.к. вставляемый ТД нам не нужно изменять, создадим копию вставляемого ТД
ВременныйТаблДок = ПередатчикТаблДок . ПолучитьОбласть ();
ВременныйТаблДок . Область (). Разъединить ();
//Готовим таблицу, где будет храниться информация обо всех "группах" форматирования строк
ПредыдущаяШиринаСтрокой = "" ;
Для НомерСтроки = 1 По ВременныйТаблДок . ВысотаТаблицы Цикл
МассивЗначенийШирины = Новый Массив ;
Для НомерКолонки = 1 По ВременныйТаблДок . ШиринаТаблицы Цикл
МассивЗначенийШирины . Добавить ( ВременныйТаблДок . Область ( НомерСтроки , НомерКолонки ). ШиринаКолонки );
КонецЦикла;
ШиринаСтрокой = ПолучитьШиринуСтрокой ( МассивЗначенийШирины , ";" );
Если ШиринаСтрокой <> ПредыдущаяШиринаСтрокой Тогда
Если ФорматыСтрокТЗ . Количество ()> 0 Тогда
ФорматыСтрокТЗ [ ФорматыСтрокТЗ . Количество () - 1 ]. ПоследняяСтрока = НомерСтроки - 1 ;
КонецЕсли;
ФорматыСтрокСтрока = ФорматыСтрокТЗ . Добавить ();
ФорматыСтрокСтрока . ПерваяСтрока = НомерСтроки ;
ФорматыСтрокСтрока . МассивЗначенийШирины = МассивЗначенийШирины ;
КонецЦикла;
ФорматыСтрокТЗ [ ФорматыСтрокТЗ . Количество () - 1 ]. ПоследняяСтрока = НомерСтроки - 1 ;
//Теперь вставляем в Приемник вставляемую ТД кусками. Сразу же устанавливаем ширину колонок
Для Каждого СтрокаФорматыТЗ Из ФорматыСтрокТЗ Цикл
ПерваяСтрокаОбласти = НачалоНовогоТД + СтрокаФорматыТЗ . ПерваяСтрока - 1 ;
ПоследняяСтрокаОбласти = НачалоНовогоТД + СтрокаФорматыТЗ . ПоследняяСтрока - 1 ;
КусокВставляемогоТабДок =
ПередатчикТаблДок . ПолучитьОбласть ( СтрокаФорматыТЗ . ПерваяСтрока ,, СтрокаФорматыТЗ . ПоследняяСтрока );
ОбластьИсточник = КусокВставляемогоТабДок . Область ();
ОбластьПриемник = ПриемникТаблДок . Область ( ПерваяСтрокаОбласти , , ПоследняяСтрокаОбласти , );
ПриемникТаблДок . ВставитьОбласть ( ОбластьИсточник , ОбластьПриемник );
ОбластьПриемник . СоздатьФорматСтрок ();
Для Счетчик = 1 По КусокВставляемогоТабДок . ШиринаТаблицы Цикл
ПриемникТаблДок . Область ( ПерваяСтрокаОбласти , Счетчик , ПоследняяСтрокаОбласти , Счетчик ). ШиринаКолонки =
СтрокаФорматыТЗ . МассивЗначенийШирины [ Счетчик - 1 ];
КонецЦикла;
Функция ПолучитьШиринуСтрокой ( перМассив , разделитель = ";" )
Рез = "" ;
Для Каждого Стр Из перМассив Цикл
Рез = Рез + стр + разделитель ;
КонецЦикла;
Возврат Рез ;
КонецФункции
Табличный документ в 1С 8.3 - это объект встроенного языка, который используется для создания печатных форм документов и отчетов. Является электронной таблицей, так как состоит из строк и столбцов и имеет функциональность, определенную следующими методами: ввод данных, группировка элементов, расшифровка, примечание в ячейках, оформление ячеек, форматирование, сохранение. Табличный документ использоваться как сам по себе, и может входить в состав любой из форм и служит для отображения информации.
✔ Создание печатной формы из табличного документа
&НаКлиенте
Процедура СозданиеПечатнойФормыИзТабличногоДокумента ( Команда )
НастройкаКолонтитуловПечатнойФормы ( ФормаПечати );
НастройкаПараметровПечатиТабличногоДокумента ( ФормаПечати );
ФормаПечати . Показать ( "Отчет по долгам" );
// Сохранение "Отчета по долгам"
ФормаПечати . Записать ( "D:\Storage\data\ОтчетПоДолгам.xls" , ТипФайлаТабличногоДокумента . XLS );
// Печать "Отчета по долгам" сразу на принтер
ФормаПечати . Напечатать ( РежимИспользованияДиалогаПечати . НеИспользовать );
&НаСервере
Функция СозданиеПечатнойФормыИзТабличногоДокументаНаСервере ()
Макет = ЭтотОбъект . ПолучитьМакет ( "Макет_Табл" );
// Изменение табличного макета после его создания.
ПрограммноеИзменениеТабличногоДокумента ( Макет );
ФормаПечати = Новый ТабличныйДокумент ;
// Получение области и макета по имени
Шапка = Макет . ПолучитьОбласть ( "Шапка" );
// Заполнение параметров
Шапка . Параметры . Дата = ТекущаяДата ();
Шапка . Параметры . Номер = 2020 ;
// Вывод шапки в документ
ФормаПечати . Вывести ( Шапка );
// Заголовок табличной части.
ЗаголовокТ = Макет . ПолучитьОбласть ( "ТЧ_Заголовок" );
ФормаПечати . Вывести ( ЗаголовокТ );
ТЧ_Строка = Макет . ПолучитьОбласть ( "ТЧ_Строка" );
SSDIntelOptaneDC = Справочники . Номенклатура . НайтиПоНаименованию ( "SSD Intel Optane DC P4800X 1.5TB" );
// Группировка строк таблицы в сворачивающийся блок
ФормаПечати . НачатьГруппуСтрок ( "Номенклатура" , Истина);
Для Х = 1 По 100 Цикл
ТЧ_Строка . Параметры . Номенклатура = SSDIntelOptaneDC ;
ТЧ_Строка . Параметры . Количество = Х ;
// Параметр расшифровки "РасшифровкаНоменклатуры" - для открытия формы номенклатуры из макета по клику
ТЧ_Строка . Параметры . РасшифровкаНоменклатуры = SSDIntelOptaneDC ;
ФормаПечати . Вывести ( ТЧ_Строка );
КонецЦикла;
В предыдущих статьях, все табличные документы выводились в виде отдельного окна, что, согласитесь, бывает иногда не удобно. В этой статье я покажу, как выводить табличный документ на управляемой форме.
Я рассмотрю два примера. В первом, мы будем на управляемой форме выводить произвольный отчет, который будет сделан при помощи макета табличного документа. А во втором примере, я создам форму для вывода различных печатных форм документов, как это делается в большинстве современных конфигураций.
Пример с отчетом
Реализуем самый простой вариант отчета, который будет без какой-то смысловой нагрузки, призванный просто показать, как работает табличный документ на управляемой форме. В основном все современные отчеты делают на СКД, но этот мы сделаем по «старинке», используя табличный документ. Для этого создадим объект Отчет и подчиненный ему макет табличного документа всего с одной областью.
Подробнее о том, как создается и оформляется макет табличного документа, читайте в этой статье:
Следующим шагом создадим пустую форму подчиненную этом отчёту, и добавим у неё реквизит управляемой формы с типом ТабличныйДокумент.
Поместим этот реквизит на форму. Если его перетащить мышкой, то он станет элементом поля табличного документа. Чтобы не было заголовка, нужно в свойстве ПоложениеЗаголовка добавленного элемента формы установить значение Нет.
Создадим команду управляемой формы, и поместим её на форму в виде кнопки.
Для команды создадим обработчики в серверном и клиентском контексте. В серверном обработчике получим макет табличного документа и единственную область макета. А потом просто будем выводить, как мы это уже делали ранее, полученную область в табличном документе — реквизите формы.
Подробнее о заполнении табличных документов читайте в этой статье:
И всё, если мы сейчас попробуем выполнить нашу команду, то отчет заполнится нужными данными.
Пример с печатной формой документа
А сейчас, мы доработаем вывод печатной формы документа, который мы делали в статье ранее:
Раньше у нас печатная форма документа выходила каждый раз в отдельном окне, так её выводила платформа 1С, мы же сделаем так, чтобы печатная форма выводилась в нужной нам управляемой форме.
Для этого мы создадим общую форму, которую назовем ФормаВыводаПечатнойФормы.
У этой формы создадим реквизит с типом ТабличныйДокумент, разместим его на форме, а также поменяем заголовок формы.
Следующим шагом, создадим параметр ТабДок с типом ТабличныйДокумент.
Нам осталось при создании формы реквизиту управляемой формы присвоить значение параметра.
На этом мы закончим работать с общей формой. В нашем случае, при открытии, форма будет заполняться тем табличным документом, который будет передан в параметре.
Перейдем в модуль команды документа, которую мы создали в предыдущей статье.
И подправим эту команду: будем открывать общую форму, в которую в качестве параметра передадим сформированный ранее табличный документ.
Чтобы каждый раз открывалась новая форма, я передают в качестве третьего параметра новый уникальный идентификатор.
Всё! На этом доработка команды закончена. Можно проверить, как работает открытие нашей формы.
Причем, форму мы можем открыть, как с общего списка документов, так и из нужного нам документа.
Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
Все версии 7.x 8.x ОП 8.2 УП 8.3 УП Видео Добавить FAQТабличный документ | Версия | |
---|---|---|
Автоматическая установка ширины колонки табличного документа. | [7.x, 8.x] | |
Вывести табличный документ в PDF | [8.x] | |
Вывод картинки (изображения) на печать, в макет (табличный документ) | [7.x, 8.x] | |
Вывод колонтитулов программно ВерхнийКолонтитул, НижнийКолонтитул | [8.x] | |
Вывод результата запроса в табличный документ | [8.x] | |
Выгрузка табличного документа в Google таблицу | [8.x] | |
Группировка строк в табличном документе | [8.x] | |
Загрузка данных в документ из табличного документа (в ТД скопировано из Excel) | [8.x] | |
Загрузка данных из файла табличного документа в управляемом приложении | [8.2 УП, 8.3] | |
Как в отобразить картинку в табличной части | [8.x] | |
Как в табличном документе изменить значение определенной ячейки? | [8.x] | |
Как вставить Разделитель страниц или Новую страницу? | [7.x, 8.x, 8.2 УП] | |
Как выгрузить табличный документ в excel | [8.x] | |
Как закрепить, фиксировать область выводимого табличного документа? | [7.x, 8.x] | |
Как изменить шрифт в ячейке Табличного Документа? | [8.x] | |
Как отсечь ненужные пробелы из выборки запроса при заполнении параметров макета | [8.x] | |
Как очистить табличный документ? | [8.x] | |
Как преобразовать MXL файл в Таблицу Значений? | [8.x, 8.2 УП, 8.3] | |
Как при выводе данных в Табличный Документ изменить Текст и Цвет Текста конкретной ячейки? | [7.x, 8.x] | |
Как при выводе данных в табличный документ свернуть выводимые группировки? | [8.x] | |
Как при печати выводить шапку на каждой странице (ПовторятьПриПечатиСтроки)? | [8.x, 8.2 УП, 8.3] | |
Как программно изменить текст, цвет, фон ячейки или области табличного документа? | [8.x, 8.2 УП, 8.3] | |
Как сделать Расшифровку в табличном документе | [8.x, 8.2 УП, 8.3] | |
Как сделать чтобы при выделении числе в табличном документе, отчете выводилась их сумма? | [8.x, 8.2 УП] | |
Как сделать чтобы при редактировании в ячейке появлялся калькулятор? | [8.x, 8.2 УП] | |
Как сжать ширину колонок табличного поля | [8.x] | |
Как сформировать, вывести на печать таблицу, табличный документ | [7.x, 8.x] | |
Как табличный документ заполнить на сервере и открыть на клиенте? | [8.2 УП] | |
Как убрать, очистить выделение в табличном документе и переместить курсор в R1C1? | [8.x] | |
Как установить значение в Ячейку Табличного Документа | [8.x, 8.2 УП] | |
Кнопки управления уровнями группировки (генерировать программно) | [8.x, 8.2 УП] | |
Корректировка документа | [8.3] | |
Сводные таблицы | [8.x, 8.2 УП] | |
Создание сводной таблицы | [8.x] | |
Табличный документ: Колонтитулы и параметры страницы | [8.x] | |
Функции преобразуют табличный документ (ТД) в строку и обратно | [8.x] | |
Функция загружает весь табличный документ в таблицу значений | [8.x] | |
Шаблон кода для вывода данных в табличный документ | [8.x, 8.2 УП, 8.3] |
Читайте также: