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

объединение ячеек в табличном документе

Автор gmax007, 24 дек 2012, 17:04

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

gmax007

Доброго времени. возник один вопрос, надеюсь поможете. в общем сейчас накидаю схему печатной формы и тот вид к которрому нужно ее привести, насколько я понимаю нужно писать циклы на этапе выведение данных в ТабДок и напишу кусок кода который как раз нужно модифицировать чтобы привести таблицу в нужный вид
собственно вот схемы печатных форм
 
это есть:
-------------------------------------------------------------------------------------
| Парам1        |  Парам2   | Парам3
-----------------------------------------------------------------------------------
| Знач1          |   вацаац  | ывыыыыыыыыа
-------------------------------------------------------------------------------------
|  Знач1         |  увцуасу  |ааааааааааааааааыца
-------------------------------------------------------------------------------
|  Знач1         | rfgergcee  |куаукаукаукаук
---------------------------------------------------------------------------------
|  Знач2         | cergecger  |уаааааааааааааука
------------------------------------------------------------------------------------
| Знач2          |  vbmk,ui,   |аукаукауауаука
-----------------------------------------------------------------------------
| Знач2          |   oilioioioo  |ипарпарпарапрапр
-------------------------------------------------------------------------------------
|  Знач3         |  wewwer   |кенкенекнекнекнкн
--------------------------------------------------------------------------------------
| Знач3          |  bnmum    |екненкенкенкенкенкен
----------------------------------------------------------------------------------------
 
а нужно получить это:
 
-------------------------------------------------------------------------------------
| Парам1        |  Парам2   | Парам3
-----------------|------------ |------------------------------------------------------
|                    |   вацаац  | ывыыыыыыыыа
|                    |------------  |-------------------------------------------- 
|     Знач1      |  увцуасу |ааааааааааааааааыца
|                    |   ---------- |-----------------------------------------------------
|                    | rfgergcee  |куаукаукаукаук
-----------------|------------- |---------------------------------------------------
|                    | cergecger  |уаааааааааааааука
|                    |  ----------- |-----------------------------------------------------------
|  Знач2         |  vbmk,ui,   |аукаукауауаука
|                    | -------------|--------------------------------------------------------------
|                    |   oilioioioo  |ипарпарпарапрапр
-----------------|------------- | ----------------------------------------------------
|                    |  wewwer   |кенкенекнекнекнкн
|  Знач3         |-------------|------------------------------------------------------------------------------
|                    |  bnmum    |екненкенкенкенкенкен
----------------------------------------------------------------------------------------
 
то есть в самом левом столбце объединить ячейки с одинаковыми значениями. ну и в них написать это значение, которое одинаково в объединяемых ячейках
 
 
 
Вот код образования таблицы 
///////////////////////////////////////////////////////////////////////////////////////////
Процедура Печать(ТабДок, Ссылка) Экспорт
     //{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
     Макет = Документы.ЗаказПоставщику.ПолучитьМакет("Печать");
     Запрос = Новый Запрос;
     Запрос.Текст =
     "ВЫБРАТЬ
     |    парам1
     |    парам2
     |    парам3
 
     |ИЗ
     |    Документ.ЗаказПоставщику КАК ЗаказПоставщику
     |ГДЕ
     |    ЗаказПоставщику.Ссылка В (&Ссылка)";
     Запрос.Параметры.Вставить("Ссылка", Ссылка);
     Выборка = Запрос.Выполнить().Выбрать();
 
     Шапка = Макет.ПолучитьОбласть("Шапка");
     ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
     ОбластьТовары = Макет.ПолучитьОбласть("Товары"); // парам1 в области "товары"
     ТабДок.Очистить();
 
     ВставлятьРазделительСтраниц = Ложь;
     Пока Выборка.Следующий() Цикл
         Если ВставлятьРазделительСтраниц Тогда
             ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
         КонецЕсли;
 
         Шапка.Параметры.Заполнить(Выборка);
         Шапка.Параметры.Дата = Формат(Шапка.Параметры.Дата, "ДФ=dd.MM.yyyy");
         ТабДок.Вывести(Шапка, Выборка.Уровень());
 
         ТабДок.Вывести(ОбластьТоварыШапка);
         ВыборкаТовары = Выборка.Товары.Выбрать();
         Пока ВыборкаТовары.Следующий() Цикл
             ОбластьТовары.Параметры.Заполнить(ВыборкаТовары);
             ТабДок.Вывести(ОбластьТовары, ВыборкаТовары.Уровень());
             
         КонецЦикла;
 
         ВставлятьРазделительСтраниц = Истина;
     КонецЦикла;
     
КонецПроцедуры
 
/////////////////////////////////////////////////////
подскажите пожалуйста
 
насколько я понимаю нужно писать объединение ячеек если у них одинаковое значение в цикле Пока Выборка.Следующий() Цикл , ну не могу реализовать, только начинаю разбираться с программированием в 1с

dmitry29

Предлагаю вам научиться делать печатные формы

pmdav

Можно "присоединить" ячейку к полю которое было выведено ранее.

Синтаксис:

Присоединить(<Таблица>, <Уровень>, <ИмяГруппы>, <Открыта>)
Параметры:

<Таблица> (обязательный)

Тип: ТабличныйДокумент; ПолеТабличногоДокумента.
Выводимая таблица.
<Уровень> (необязательный)

Тип: Число.
Уровень используется для автоматической группировки колонок табличного документа. Соседние колонки с одинаковым уровнем будут отнесены к одной группе. Строки с минимальным уровнем в группу не объединяются.
<ИмяГруппы> (необязательный)

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

Тип: Булево.
Истина - выведенная группа будет открыта,
Ложь - группа будет выведена в свернутом виде.
Возвращаемое значение:

Тип: ОбластьЯчеекТабличногоДокумента.
Область, в которую был осуществлен вывод.
Описание:

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

Доступность:

Сервер, толстый клиент, внешнее соединение.
Пример:

ТабДок = Новый ТабличныйДокумент;
Секция = ТабДок.ПолучитьОбласть("R1C1");
ТабДок.НачатьАвтогруппировкуКолонок();
Секция.Область("R1C1").Текст = "Параметр";
ТабДок.Вывести(Секция,1,"Группа 1",Ложь);
Для К=1 По 10 Цикл
    Секция = ТабДок.ПолучитьОбласть("R1C1");
    Секция.Область().Текст = "А"+К;
    Секция.Область().ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право;
    ТабДок.Присоединить(Секция,2,"Группа 2",Истина);
КонецЦикла;
Секция.Область("R1C1").Текст = "Итого:";
ТабДок.Присоединить(Секция,1,"Группа 2",Ложь);
Секция.Область("R1C1").Текст = "Значение";
ТабДок.Вывести(Секция,1,"Группа 2",Ложь);
Цена = 10; Итог = Цена;
Для К=1 По 10 Цикл
    Секция = ТабДок.ПолучитьОбласть("R1C1");
    Секция.Область().Текст = Цена;
    ТабДок.Присоединить(Секция,2,"Группа 2",Истина);
    Цена = Цена + 10;
    Итог = Итог + Цена;
КонецЦикла;
Секция.Область("R1C1").Текст = Итог;
ТабДок.Присоединить(Секция,1,"Группа 2",Ложь);
ТабДок.ЗакончитьАвтогруппировкуКолонок();
ТабДок.ИтогиСправа = Истина;
ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Истина;
ТабДок.Показать("Пример использования гор. автогруппировки");


Теги:

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

Рейтинг@Mail.ru

Поиск