Имя: Пароль:
1C
1С v8
Метод Присоединить() ?
0 Сергей333
 
18.09.17
13:13
Всем здравствуйте. Подскажите пожалуйста, есть макет http://s016.radikal.ru/i334/1709/8f/283b43ba0a1b.png

в нем областьУпаковка, а в областиСтрокаТЧ есть параметр Характеристики. Как сделать что бы количество колонок было столько, сколько характеристик?
1 Сергей333
 
18.09.17
13:14
Вроде можно методом Присоединить(), вот только я новичок и с таким не сталкивался. Прошу Вашей помощи.
2 Волшебник
 
модератор
18.09.17
13:15
Откройте Синтакс-помощник и столкнитесь
3 Рэйв
 
18.09.17
13:15
>>бы количество колонок было столько, сколько характеристик

Сначала считаешь характиристики, сортируешь и ваыводишь шапку.Потом по тойже сортировке будешь выводить значения в колонки
4 mistеr
 
18.09.17
13:16
(1) Залей в другое место, не видно ни фига. Imgur рекомендую.
5 aka AMIGO
 
18.09.17
13:17
(0) Первая страница форума, "Поиск", в поле поиска "Присоединить()"
Там много чего, в частности:
v8: Как действует метод Присоединить()?
6 Сергей333
 
18.09.17
14:48
(2) Смотрел, но к сожалению ничего не пойму. "Присоединяет табличный документ к результирующему табличному документу, помещая его в следующей колонке правее самой правой выведенной колонки, начиная со строки, с которой выводился предыдущий табличный документ".
7 Ёпрст
 
18.09.17
15:43
(0)Наслаждайся:

ОбластьЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы|Наименование");
ОбластьУпаковка = Макет.ПолучитьОбласть("ЗаголовокТаблицы|Упаковка");
ТабДок.Вывести(ОбластьЗаголовокТаблицы);
Для к = 1 По КоличествоХарактеристик Цикл
   ТабДок.Присоединить(ОбластьУпаковка);
КонецЦикла;

//аналогично, для строк таблицы + заполнение параметров Областей
8 Сергей333
 
19.09.17
08:34
(7) Ошибка "КоличествоХарактеристик " переменная не определена.
У меня в макете две разные колонки (параметр) КоличествоЗаказано и Характеристики, может Вам показалось что это одно слово. Или я чет не так сделал?
9 Jokerman
 
19.09.17
08:38
Естесственно ..
10 Рэйв
 
19.09.17
08:38
(8)
вставь

КоличествоХарактеристик =ТутНадоПосчитатьИх();
11 Сергей333
 
19.09.17
08:47
(10) Так? КоличествоХарактеристик = 10;
12 Рэйв
 
19.09.17
08:59
(11)Ну если их у тебя всегда 10, то можно и так как костыль.
Но по нормальному все таки надо их считать программно а не на пальцах.потому что если вдруг характеристик станет не 10, то у тебя все расползется.
13 Сергей333
 
19.09.17
09:03
(12) Функция ПечатьПогрузочныйЛист(ИмяМакета)
    
    ТабДок = новый ТабличныйДокумент;
    //Макет = ПолучитьМакет("Печать");
    Макет = ПолучитьМакет("ПогрузочныйЛист");
    
    ОбластьШапки            = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтрокаТЧ         = Макет.ПолучитьОбласть("СтрокаТЧ");
    ОбластьПодвал           = Макет.ПолучитьОбласть("Подвал");
    //ОбластьУпаковка         = Макет.ПолучитьОбласть("Упаковка");
    //ОбластьЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
    //ОбластьНаименование     = Макет.ПолучитьОбласть("Наименование");
    
    ОбластьЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы|Наименование");
    ОбластьУпаковка = Макет.ПолучитьОбласть("ЗаголовокТаблицы|Упаковка");
    ТабДок.Вывести(ОбластьЗаголовокТаблицы);
    КоличествоХарактеристик = 10;
    Для к = 1 По КоличествоХарактеристик  Цикл
        ТабДок.Присоединить(ОбластьУпаковка);
    КонецЦикла;    

    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
        |    ЗаказПокупателяСводныйТовары.Маршрут КАК Маршрут,
        |    ЗаказПокупателяСводныйТовары.Номенклатура,
        |    ЗаказПокупателяСводныйТовары.ХарактеристикаНоменклатуры,
        |    ЗаказПокупателяСводныйТовары.КоличествоЗаказано
        |ИЗ
        |    Документ.ЗаказПокупателяСводный.Товары КАК ЗаказПокупателяСводныйТовары
        |ГДЕ
        |    ЗаказПокупателяСводныйТовары.Ссылка = &Ссылка
        |
        |СГРУППИРОВАТЬ ПО
        |    ЗаказПокупателяСводныйТовары.Маршрут,
        |    ЗаказПокупателяСводныйТовары.Номенклатура,
        |    ЗаказПокупателяСводныйТовары.ХарактеристикаНоменклатуры,
        |    ЗаказПокупателяСводныйТовары.КоличествоЗаказано
        |ИТОГИ ПО
        |    Маршрут";
    
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    
    ВыборкаМаршрут = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        
    Пока ВыборкаМаршрут.Следующий() Цикл
        //Шапка
        Шапка = Макет.ПолучитьОбласть("Шапка");
        Шапка.Параметры.Дата = Формат(Дата, "ДЛФ=DD");
        Шапка.Параметры.ДатаВремя = ТекущаяДата();
        Шапка.Параметры.Маршрут = ВыборкаМаршрут.Маршрут;
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ТранспортныеСредства.Водитель,
        |    ТранспортныеСредства.ГосНомерТранспортногоСредства
        |ИЗ
        |    Справочник.ТранспортныеСредства КАК ТранспортныеСредства";
        
        РезультатЗапроса = Запрос.Выполнить();
        Выборка = РезультатЗапроса.Выбрать();
        СтруктураОтбора = Новый Структура();
        Пока Выборка.Следующий() Цикл
            Шапка.Параметры.Имя = Выборка.Водитель;
            Шапка.Параметры.ГосНомер = Выборка.ГосНомерТранспортногоСредства;
        КонецЦикла;    
        ТабДок.Вывести(Шапка);
        ВыборкаНоменклатура = ВыборкаМаршрут.Выбрать();
        
        
        Пока ВыборкаНоменклатура.Следующий() Цикл
            //СтрокаТЧ
            СтрокаТЧ = Макет.ПолучитьОбласть("СтрокаТЧ");
            СтрокаТЧ.Параметры.Номенклатура = ВыборкаНоменклатура.Номенклатура;
            СтрокаТЧ.Параметры.КоличествоЗаказано = ВыборкаНоменклатура.КоличествоЗаказано;
            СтрокаТЧ.Параметры.Характеристики = ВыборкаНоменклатура.ХарактеристикаНоменклатуры;
            ТабДок.Вывести(СтрокаТЧ);                
        КонецЦикла;
        //Подвал
        Подвал = Макет.ПолучитьОбласть("Подвал");
        Подвал.Параметры.Заполнить(ЭтотОбъект);
        Подвал.Параметры.Кладовщик = Ответственный;
        ТабДок.Вывести(Подвал);
    КонецЦикла;

    ТабДок.Показать();
    Возврат 0;
    
КонецФункции

Правильно я вставляю? Ток в макете хрень выходит, ща скрин залью.
14 Сергей333
 
19.09.17
09:09
15 dezss
 
19.09.17
09:14
(14) при выводе СтрокаТЧ надо делать так же, как и при выводе шапки.
16 Рэйв
 
19.09.17
09:15
(13)
Выводишь сначала фиксированную шапку, где название даты и тд

потом в цикле перебираешь характиристики и рисуешь шапку таблицы с названиями колонок.

И только потом перебираешь результат хапроса и выводишь строку, причем  храктеристики должны выводиться динамически ровно в том же порядке как и при формирования шапки таблицы.

Короче если ты этого не понимаешь то объяснять тебе письменно бесполезно. Позови специалиста, пусть тебе один раз покажет.
17 Сергей333
 
19.09.17
09:17
(16) Спасибо большое.