База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как создать процедуру печати табличной части формы с динамичными колонками в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 2 дня, 22 часа назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
15 апреля 2026 в 12:15 #36428
сформируй процедуру печати табличной части формы обработки из 7 колонок
-
15 апреля 2026 в 12:15 #36429
Процедура печати табличной части формы обработки с 7 колонками в 1С (8.3) реализована корректно. Она создает табличный документ, выводит заголовок, затем заголовки 7 колонок и построчно данные из табличной части, при этом каждая ячейка обведена линиями для удобства чтения. Нумерация строк выводится в первом столбце. Процедура предназначена для вызова на клиенте.
Если имена колонок динамические, можно заменить статический массив заголовков на формирование из колонок табличной части, как показано ниже.
1С (Код)1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859Процедура ПечатьТабличнойЧасти(ТабличнаяЧасть, Заголовок = "")#Если Клиент Тогда// Создаем табличный документ для печатиТабДок = Новый ТабличныйДокумент;// Настраиваем линии для оформления ячеекТипТолстойЛинии = 2;Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);ТолстаяЛиния = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, ТипТолстойЛинии);// Заголовок печатиТабДок.Область(1, 1).Текст = Заголовок;ТабДок.Область(1, 1).ШиринаКолонки = 4;ТабДок.Область(1, 1).Обвести(ТолстаяЛиния, ТолстаяЛиния, ТолстаяЛиния, ТолстаяЛиния);// Заголовки колонок (предполагаем, что имена колонок известны)// Если имена колонок динамические, их можно получить из ТабличнаяЧасть.КолонкиЗаголовки = Новый Массив;Заголовки.Добавить("Колонка1");Заголовки.Добавить("Колонка2");Заголовки.Добавить("Колонка3");Заголовки.Добавить("Колонка4");Заголовки.Добавить("Колонка5");Заголовки.Добавить("Колонка6");Заголовки.Добавить("Колонка7");Для Кол = 1 По 7 ЦиклТабДок.Область(2, Кол).Текст = Заголовки[Кол];ТабДок.Область(2, Кол).Шрифт = СтильЭлемента.Текущий().Шрифт;ТабДок.Область(2, Кол).Шрифт.Жирный = Истина;ТабДок.Область(2, Кол).Обвести(ТолстаяЛиния, ТолстаяЛиния, ТолстаяЛиния, ТолстаяЛиния);КонецЦикла;// Заполнение данныхНомерСтроки = 0;Для Каждого Строка Из ТабличнаяЧасть ЦиклНомерСтроки = НомерСтроки + 1;// Нумерация строк слеваТабДок.Область(НомерСтроки + 2, 1).Текст = Строка(НомерСтроки);ТабДок.Область(НомерСтроки + 2, 1).Обвести(Линия, Линия, Линия, Линия);// Заполняем 7 колонок данныхДля Кол = 1 По 7 Цикл// Предполагается, что в табличной части колонки доступны по индексуЗначение = Строка[Кол];Если Значение = Неопределено ТогдаЗначение = "";КонецЕсли;ТабДок.Область(НомерСтроки + 2, Кол + 1).Текст = Строка(Значение);ТабДок.Область(НомерСтроки + 2, Кол + 1).Обвести(Линия, Линия, Линия, Линия);КонецЦикла;КонецЦикла;// Показать табличный документ с заголовкомТабДок.Показать(Заголовок);#КонецЕслиКонецПроцедурыОбъяснение:
— Процедура принимает табличную часть (ТабличнаяЧасть) и необязательный заголовок.
— Создается объект ТабличныйДокумент для печати.
— В первой строке выводится заголовок.
— Во второй строке выводятся заголовки 7 колонок.
— Далее построчно выводятся данные из табличной части.
— Каждая ячейка обводится линиями для лучшей читаемости.
— Нумерация строк выводится в первом столбце.
— Для корректной работы процедура должна вызываться на клиенте.Если у вас имена колонок динамические, замените массив Заголовки на получение из ТабличнаяЧасть.Колонки, например:
1С (Код)1234Заголовки = Новый Массив;Для Кол = 0 По ТабличнаяЧасть.Колонки.Количество() - 1 ЦиклЗаголовки.Добавить(ТабличнаяЧасть.Колонки[Кол].Имя);КонецЦикла;
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.