Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
09 сен 2026, 09:26

Ячейки и Области в Табличном документе

Автор Funt432286, 21 авг 2026, 20:42

0 Пользователей и 1 гость просматривают эту тему.

Funt432286

всем доброго времени суток!

Заполняю программно табличный документ и столкнулся с проблемой.
Если область"ЗаказФальц", прежде чем ее вывести на форму, нужно заполнить областями разной длины.
Длина областей будет рассчитываться индивидуально.

Funt432286

Немного поменял расположение заголовков, но результат все равно не получается!

1. На каждое оборудование переименовал Область, получаю ее. Но в таблице ничего нет.
В идеале я должен выбрать произвольную область в колонке, объединить ее и заполнить текстом (номер заказа)
Области должны будут идти один за другим.
Вот код которым заполняю таблицу с заказами:
    ТабДокОб = Новый ТабличныйДокумент;
    МакетЗаказ = ОбработкаОбъект.ПолучитьМакет("МакетВерт");
    ОбластьЗаказ = МакетЗаказ.ПолучитьОбласть("C3_360");
    //ОбластьЗаказ.ТекущаяОбласть.ЦветФона = Новый Цвет(230, 230, 230);

    ТабДокОб.Вывести(ОбластьЗаказ);
   
    ЭлементыФормы.ТабДокФальцовка.Вывести(ТабДокОб);

2. Как закрепить строку с Оборудованием, прописовал команду ФиксацияСтроки = 1!
   Не хочет, все равно сползает!

Помогите пожалуйста! Буду очень признателен помощи!

Funt432286

Funt432286, система почему-то выводит их в самый низ, а нужно чтобы они располагались рядом с часовыми маркерами

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

antoneus

Ну, выводишь всё подряд (пустую таблицу, строки - время, колонки - оборудование), вычисляешь номера ячеек в областях, которые надо объединить, объединяешь, заполняешь. Так?

Funt432286

antoneus, Да так! Я уже модуль вычисления добавил в то место где формируются строки-время!
Все равно кидает вниз!

Процедура ВывестиТабДокуВерт()
   
    ЭлементыФормы.ТабДокОборудование.Очистить();
   
    // *********** вывести ОБОРУДОВАНИЕ *************
        ТабДокОб = Новый ТабличныйДокумент;
        ТабДокОб.ФиксацияСверху = 1;
        ТабДокОб.ФиксацияСлева = 13;
        Макет = ОбработкаОбъект.ПолучитьМакет("МакетВерт");
        ТабДокОб.Вывести(Макет.ПолучитьОбласть("ШапкаФальц"));
        ЭлементыФормы.ТабДокФальцовка.Вывести(ТабДокОб);
   
    // *********** вывести область СМЕНЫ (День и Ночь) *********
        ТабДокФальц = Новый ТабличныйДокумент;
        ТабДокФальц.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
        МакетФальц = ОбработкаОбъект.ПолучитьМакет("МакетВерт");
       
        ТекДатаДень = День(ТекущаяДата()) + 1;
       
        Для ДеньИнд = 1 по 3 Цикл             
            // ************ День **************
            ТабДень = МакетФальц.ПолучитьОбласть("СменаДень");
            ДатаДень = Строка(День(ТекущаяДата()) + (ДеньИнд - 1)) + "." + Формат(ТекущаяДата(), "ДФ=MM");
            ТабДень.Параметры.ДатаДень = ДатаДень;
            ТабДокФальц.Вывести(ТабДень);
           
            // ************ Ночь **************
            ТабНочь = МакетФальц.ПолучитьОбласть("СменаНочь");
            ТабНочь.Параметры.ДатаНочь = Строка(День(ТекущаяДата()) + ДеньИнд - 1) + "-" + Строка(День(ТекущаяДата()) + ДеньИнд) +
                                            "." + Формат(ТекущаяДата(), "ДФ=MM");       
            ТабДокФальц.Вывести(ТабНочь);       
        КонецЦикла;
       
    // *************** заполнить данными по ТЗ *********************
            ОбластьЗаказ = МакетФальц.ПолучитьОбласть("R4C3:R16C3");
            ОбластьЗаказ.ТекущаяОбласть.ЦветФона = Новый Цвет(230, 230, 230);

            ТабДокОб.Вывести(ОбластьЗаказ);

        ЭлементыФормы.ТабДокФальцовка.Вывести(ТабДокФальц);
   
КонецПроцедуры

antoneus

Ну а куда ещё-то оно лепить будет, если Вывести - это и значит вывести с новой строки? Область надо не в макете получать, а в самом ТабДокОб и на месте объединять и красить.

Funt432286

antoneus, с этим вроде разобрался!

А можете пожалуйста, подсказать почему верхняя строчка не фиксируется, хотя код прописан!

    // *********** вывести ОБОРУДОВАНИЕ *************
        ТабДокОб = Новый ТабличныйДокумент;
        ТабДокОб.ФиксацияСверху = 1;
        ТабДокОб.ФиксацияСлева = 13;
        Макет = ОбработкаОбъект.ПолучитьМакет("МакетВерт");
        ТабДокОб.Вывести(Макет.ПолучитьОбласть("ШапкаФальц"));
        ЭлементыФормы.ТабДокФальцовка.Вывести(ТабДокОб);

antoneus

Не знаю как там в обычных формах (это же обычные?), но, возможно, фиксацию надо прям у ТабДокФальцовка указывать?

Funt432286

antoneus, получилось через обращение к элементу формы

    ЭлементыФормы.ТабДокФальцовка.ФиксацияСверху = 1;
ЭлементыФормы.ТабДокФальцовка.ФиксацияСлева = 13;

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск