Имя: Пароль:
1C
 
Вывод в табличный документ таблицы значений.
0 yellowheel
 
10.11.14
14:55
Ситуация такая, есть источник данных(массив).Из него я собираю таблицу значений. Мне необходимо в ячейку таблицы значений добавить другую ТЗ.
ТабЗН = Новый ТаблицаЗначений;
             ТабЗН.Колонки.Добавить("НомерЗаказа");
             ТабЗН.Колонки.Добавить("КонтрАгент");
             ТабЗН.Колонки.Добавить("Дата");
             ТабЗН.Колонки.Добавить("Номенклатура");
             i=0;
            Для Каждого Строка Из МассивСтруктур Цикл
                       НоваяСтрока=ТабЗН.Добавить();
                       НоваяСтрока.НомерЗаказа = Строка.ЗаказНомер ;
                       НоваяСтрока.КонтрАгент = Строка.ЗаказКонтрАгент;
                       НоваяСтрока.Дата = Строка.ЗаказДата;
                      
                       Если НЕ МассивСтруктур[i].Свойство("МассСтрок") = Ложь Тогда
                           Если НЕ МассивСтруктур[i].МассСтрок.Количество() = 0 Тогда
                               ТабНомен = Новый ТаблицаЗначений;
                               ТабНомен.Колонки.Добавить("Номенклатура");
                               ТабНомен.Колонки.Добавить("КоличествоНоменклЗак");
                               ТабНомен.Колонки.Добавить("НоменклЦена");
                               ТабНомен.Колонки.Добавить("НоменклСумма");
                               ТабНомен.Колонки.Добавить("КолОПЗ");
                               //ТабНомен.Колонки.Добавить("СтоимостьОПЗ");
                               ТабНомен.Колонки.Добавить("КолРТУ");
                               //ТабНомен.Колонки.Добавить("СтоимостьРТУ");
                               //ТабНомен.Колонки.Добавить("Счет43");
                               ТабНомен.Колонки.Добавить("ДатаЗаказ");
                               ТабНомен.Колонки.Добавить("ДатаОПЗ");
                               ТабНомен.Колонки.Добавить("ДатаРТУ");
                              
                              
                                   j=0; // index МассСтрок                          
                               Для Каждого Номен из  МассивСтруктур[i].МассСтрок Цикл
                                   СтрокаНомен = ТабНомен.Добавить();
                                   СтрокаНомен.Номенклатура = Номен.Номенкл;
                                   СтрокаНомен.КоличествоНоменклЗак = Номен.КоличествоНоменклЗак;
                                   СтрокаНомен.НоменклЦена = Номен.НоменклЦена;
                                   СтрокаНомен.НоменклСумма = Номен.НоменклСумма;
                                   Если НЕ МассивСтруктур[i].МассСтрок[j].Свойство("МассивОПЗ") = Ложь Тогда
                                       Если НЕ МассивСтруктур[i].МассСтрок[j].МассивОПЗ.Количество() = 0 Тогда
                                        ТабОПЗ = Новый ТаблицаЗначений;
                                        ТабОПЗ.Колонки.Добавить("КоличествоОПЗ");
                                        ТабОПЗ.Колонки.Добавить("СтоимостьОПЗ");
                                        ТабДатаОПЗ = Новый ТаблицаЗначений;
                                        ТабДатаОПЗ.Колонки.Добавить("ДатаОПЗ");
                                        
                                        Для Каждого ОПЗ из МассивСтруктур[i].МассСтрок[j].МассивОПЗ Цикл
                                            СтрокаОПЗ = ТабОПЗ.Добавить();
                                            СтрокаОПЗ.КоличествоОПЗ = ОПЗ.КоличествоОПЗ;
                                            СтрокаОПЗ.СтоимостьОПЗ = ОПЗ.КоличествоОПЗ*Номен.НоменклЦена;
                                            СтрокаОПЗ = ТабДатаОПЗ.Добавить();
                                            СтрокаОПЗ.ДатаОПЗ = ОПЗ.ДатаОПЗ;
                                        КонецЦикла;
                                        СтрокаНомен.КолОПЗ=ТабОПЗ.Скопировать();
                                        СтрокаНомен.КолОПЗ=ТабДатаОПЗ.Скопировать();
                                       КонецЕсли;
                                   КонецЕсли;
                                    Если НЕ МассивСтруктур[i].МассСтрок[j].Свойство("МассивРТУ") = Ложь Тогда
                                       Если НЕ МассивСтруктур[i].МассСтрок[j].МассивРТУ.Количество() = 0 Тогда
                                        ТабРТУ = Новый ТаблицаЗначений;
                                        ТабРТУ.Колонки.Добавить("КоличествоРТУ");
                                        ТабРТУ.Колонки.Добавить("СтоимостьРТУ");
                                        ТабРТУ.Колонки.Добавить("Счет43");
                                        ТабДатаРТУ = Новый ТаблицаЗначений;
                                        ТабДатаРТУ.Колонки.Добавить("ДатаРТУ");
                                        
                                        Для Каждого РТУ из МассивСтруктур[i].МассСтрок[j].МассивРТУ Цикл
                                            СтрокаРТУ = ТабРТУ.Добавить();
                                            СтрокаРТУ.КоличествоРТУ = РТУ.КоличествоРТУ;
                                            СтрокаРТУ.СтоимостьРТУ = РТУ.КоличествоРТУ*Номен.НоменклЦена;
                                            СтрокаРТУ = ТабДатаРТУ.Добавить();
                                            СтрокаРТУ.ДатаРТУ = РТУ.ДатаРТУ;
                                        КонецЦикла;
                                        СтрокаНомен.КолРТУ=ТабРТУ.Скопировать();
                                        СтрокаНомен.КолРТУ=ТабДатаРТУ.Скопировать();
                                       КонецЕсли;
                                   КонецЕсли;
                                  

                                СтрокаНомен.ДАтаЗаказ = Номен.НоменклДатаОтгрузки;                      
                               КонецЦикла;
                        
                        
                     КонецЕсли;
                      НоваяСтрока.Номенклатура=ТабНомен.Скопировать();
                       КонецЕсли;
1 yellowheel
 
10.11.14
14:56
Я проверил в отладчике,таблицы значений не пусты,но при выводе в табдок,не видны "вложенные" тз.
2 mikecool
 
10.11.14
14:57
ты в табдок в ячейку пихаешь ТЗ?
3 yellowheel
 
10.11.14
15:00
(2) Использовал вот эту штуку для вывода.

        Построитель = Новый ПостроительОтчета;
        Построитель.ИсточникДанных  = Новый ОписаниеИсточникаДанных(ТабЗН);
        ТабДок = Новый ТабличныйДокумент;
        Построитель.Вывести(ТабДок);
        ТабДок.Показать();
4 hhhh
 
10.11.14
15:03
(30 как ты впихнешь в маленькую ячейку большую ТЗ?
5 yellowheel
 
10.11.14
15:07
(4) непосредственно в этом и есть вопрос,как мне реализовать вывод в таб док такой конструкции?
6 Ёпрст
 
10.11.14
15:08
ручонками
7 kosts
 
10.11.14
15:11
(5) визуально как это будет выглядеть?
8 yellowheel
 
10.11.14
15:13
не знаю как у вас ту загружать картинки,но примерно вот так,первая таблица в статье.
http://1cstyle.ru/articles/organizatsiya_pozakaznogo_proizvodstva_v_pp_1s_upravlenie_proizvodstvennym_predpriyatiem/ (7)
9 Fish
 
10.11.14
15:19
(8) Тебе поможет метод:
ОбластьЯчеекТабличногоДокумента (SpreadsheetDocumentRange)
Объединить (Merge)
Синтаксис:

Объединить()
Описание:

Объединяет ячейки области.

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

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Пример:

Область = ТабДок.Область(2,2,3,3);
Область.Объединить();
10 yellowheel
 
11.11.14
12:41
(9) как я понял,этот метод сработает,если я буду каждый раз определять нужный мне диапазон области целиком. А если я использую именованные области, и ,к примеру,одну и ту же вывожу несколько раз циклом? В определенный момент при необходимом мне условии, нужно объединить выведенные строки(области) и продолжить вывод далее, возможно сделать что-то подобное? НУ или может есть какой-то альтернативный вариант как вывести в табдок в таком виде ТЗ.
11 yellowheel
 
13.11.14
10:53
Подскажите пожалуйста,что произойдет со значениями в ячейке,если я применю таки этот метод:
ОбластьЯчеекТабличногоДокумента (SpreadsheetDocumentRange)
Объединить (Merge) ?
12 hhhh
 
13.11.14
11:33
(11) ну на примере екселя попробуйте. Выделяете ячейки, нажимаете Объединить. в 1с то же самое.
13 hhhh
 
13.11.14
11:41
(11) а вообще посмотрите макеты. Вам нужно нарисовать макет и его заполнять.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший