Имя: Пароль:
1C
1С v8
Загрузка в реквизит дерево значений, привязанный к табличному полю на обычной ф.
0 Vladislava-smile
 
20.10.15
10:49
На обычной форме есть таб. поле. К нему привязан реквизит дерево значений. Создаю колонки программно перед открытием:
Функция СоздатьКолонкиВДеревеЗначений()
    
КолонкиДереваОтгрузок = ДеревоОтгрузок.Колонки;

// ---------------- Отгрузки ----------------------------------------
КЧ = Новый КвалификаторыЧисла(10,3);
МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("ДокументСсылка.ОтгрузкаТовара"));
МассивТипов.Добавить(Тип("ДокументСсылка.РеализацияТоваровУслуг"));
МассивТипов.Добавить(Тип("ДокументСсылка.ПоступлениеТоваровУслуг"));
МассивТипов.Добавить(Тип("ДокументСсылка.ПеремещениеТоваров"));
МассивТипов.Добавить(Тип("ДокументСсылка.СписаниеТоваров"));

КолонкиДереваОтгрузок.Добавить("Ссылка", Новый ОписаниеТипов(МассивТипов), "Отгрузка", 20);     
МассивТипов.Очистить();

// ---------------- Организация ----------------------------------------
МассивТипов.Добавить(Тип("СправочникСсылка.Организации"));
МассивТипов.Добавить(Тип("СправочникСсылка.Контрагенты"));
КолонкиДереваОтгрузок.Добавить("Организация", Новый ОписаниеТипов(МассивТипов), "Организация", 15);     
МассивТипов.Очистить();

// ---------------- Транспортная компания ----------------------------------------
МассивТипов.Добавить(Тип("СправочникСсылка.Контрагенты"));
КолонкиДереваОтгрузок.Добавить("ТранспортнаяКомпания", Новый ОписаниеТипов(МассивТипов), "Транспортная компания", 15);     
МассивТипов.Очистить();


// ---------------- Сумма сделки  ----------------------------------------

МассивТипов.Добавить(Тип("Число"));
КолонкиДереваОтгрузок.Добавить("Сумма", Новый ОписаниеТипов(МассивТипов,,, КЧ), "Сумма сделки", 10);
МассивТипов.Очистить();


// ---------------- Транспортные затраты  ----------------------------------------
МассивТипов.Добавить(Тип("Число"));
КолонкиДереваОтгрузок.Добавить("ТранспортныеЗатраты", Новый ОписаниеТипов(МассивТипов,,,КЧ), "Транспортные затраты", 10);
МассивТипов.Очистить();

// ----------------  С/с  ----------------------------------------

МассивТипов.Добавить(Тип("Число"));
КолонкиДереваОтгрузок.Добавить("СС", Новый ОписаниеТипов(МассивТипов,,,КЧ), "С/с", 10);
МассивТипов.Очистить();

// ---------------- Процент транспортных затрат  ----------------------------------------

МассивТипов.Добавить(Тип("Число"));
КолонкиДереваОтгрузок.Добавить("ПроцентТранспортныхЗатрат", Новый ОписаниеТипов(МассивТипов,,,КЧ), "% транспортных затрат", 10);
МассивТипов.Очистить();


// ---------------- Прибыль  ----------------------------------------

МассивТипов.Добавить(Тип("Число"));
КолонкиДереваОтгрузок.Добавить("Прибыль", Новый ОписаниеТипов(МассивТипов,,,КЧ), "Прибыль", 10);
МассивТипов.Очистить();

// ---------------- Маржа  ----------------------------------------

МассивТипов.Добавить(Тип("Число"));
КолонкиДереваОтгрузок.Добавить("Маржа", Новый ОписаниеТипов(МассивТипов,,,КЧ), "Маржа, %", 10);
МассивТипов.Очистить();

// ---------------- Согласован  ----------------------------------------

МассивТипов.Добавить(Тип("Булево"));
КолонкиДереваОтгрузок.Добавить("Согласован", Новый ОписаниеТипов(МассивТипов), "Согласован", 10);
МассивТипов.Очистить();

// ---------------- Не согалсован  ----------------------------------------

МассивТипов.Добавить(Тип("Булево"));
КолонкиДереваОтгрузок.Добавить("НеСогласован", Новый ОписаниеТипов(МассивТипов), "Не согласован", 10);
МассивТипов.Очистить();

// ---------------- Кто согласовал  ----------------------------------------

МассивТипов.Добавить(Тип("СправочникСсылка.Пользователи"));
КолонкиДереваОтгрузок.Добавить("КтоСогласовалИлиНеСогласовал", Новый ОписаниеТипов(МассивТипов), "Кем согласован/не согласован/отменен", 10);
МассивТипов.Очистить();

// ---------------- Когда согласовал  ----------------------------------------

МассивТипов.Добавить(Тип("Дата"));
КолонкиДереваОтгрузок.Добавить("ДатаСогласованияИлиНеСогласования", Новый ОписаниеТипов(МассивТипов), "Дата изменения статуса", 15);


ЭлементыФормы.Отгрузка.СоздатьКолонки();




ЭлементыФормы.Отгрузка.Колонки.Ссылка.ОтображатьИерархию=Истина;

ЭлементыФормы.Отгрузка.Колонки.Согласован.ДанныеФлажка="Согласован";
ЭлементыФормы.Отгрузка.Колонки.Согласован.Данные="";
ЭлементыФормы.Отгрузка.Колонки.Согласован.ТолькоПросмотр=Ложь;
ЭлементыФормы.Отгрузка.Колонки.Согласован.РежимРедактирования=РежимРедактированияКолонки.Непосредственно;

ЭлементыФормы.Отгрузка.Колонки.НеСогласован.ДанныеФлажка="Согласован";
ЭлементыФормы.Отгрузка.Колонки.НеСогласован.Данные="";
ЭлементыФормы.Отгрузка.Колонки.НеСогласован.ТолькоПросмотр=Ложь;
ЭлементыФормы.Отгрузка.Колонки.НеСогласован.РежимРедактирования=РежимРедактированияКолонки.Непосредственно;


КонецФункции

Потом по кнопке заполняю:
Результат = ВыгрузитьДоки(ЭлементыФормы.Флажок1.Значение).Выполнить();
Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
Пока Выборка.Следующий() Цикл
    ДеревоОтгрузка = ДеревоОтгрузок.Строки.Добавить();
    ДеревоОтгрузка.Ссылка = Выборка.Ссылка ;
    ВыборкаДокументВОтгрузке = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаДокументВОтгрузке.Следующий() Цикл
        ДеревоОтгрузкаДокументВОтгрузке = ДеревоОтгрузок.Строки.Добавить();
        ДеревоОтгрузкаДокументВОтгрузке.Ссылка = ВыборкаДокументВОтгрузке.ДокументВОтгрузке ;
    КонецЦикла;
        
КонецЦикла;

Из запроса:

Запрос=Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ
                    |    ОтгрузкаТовараКонтакты.Ссылка.Ссылка КАК Ссылка,
                    |    Себестомость.ДокументВОтгрузке КАК ДокументВОтгрузке,
                    |    ОтгрузкаТовараКонтакты.Организация КАК Организация,
                    |    ЕСТЬNULL(ОтгрузкаТовараКонтакты.Ссылка.СуммаТранспортных, 0) КАК ТранспортныеЗатраты,
                    |    ТранспортнаяКомпания.Организация КАК ТранспортнаяКомпания,
                    |    Себестомость.Цена * Себестомость.Количество КАК СС,
                    |    Себестомость.СуммаДокумента КАК СуммаДокумента,
                    |    Себестомость.СтатьяДДС,
                    |    ОтгрузкаТовараКонтакты.Ссылка.Согласован КАК Согласован,
                    |    ОтгрузкаТовараКонтакты.Ссылка.НеСогласован КАК НеСогласован,
                    |    ОтгрузкаТовараКонтакты.Ссылка.ДатаСогласованияИлиНеСогласования КАК ДатаСогласованияИлиНеСогласования,
                    |    ОтгрузкаТовараКонтакты.Ссылка.КтоСогласовалИлиНеСогласовал КАК КтоСогласовалИлиНеСогласовал
                    |ИЗ
                    |    Документ.ОтгрузкаТовара.Контакты КАК ОтгрузкаТовараКонтакты
                    |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                    |            ОтгрузкаТовараКонтакты.Организация КАК Организация,
                    |            ОтгрузкаТовараКонтакты.Ссылка КАК Ссылка
                    |        ИЗ
                    |            Документ.ОтгрузкаТовара.Контакты КАК ОтгрузкаТовараКонтакты
                    |        ГДЕ
                    |            ОтгрузкаТовараКонтакты.ВидКонтакта = &ВидконтактаТранспортнаяКомпания) КАК ТранспортнаяКомпания
                    |        ПО ОтгрузкаТовараКонтакты.Ссылка = ТранспортнаяКомпания.Ссылка
                    |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                    |            РеализацияТоваровУслугТовары.Ссылка КАК ДокументВОтгрузке,
                    |            ОтгрузкаТовараДокументы.Ссылка КАК СсылкаДляСвязи,
                    |            РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
                    |            РеализацияТоваровУслугТовары.Количество КАК Количество,
                    |            ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена,
                    |            РеализацияТоваровУслугТовары.Ссылка.СуммаДокумента КАК СуммаДокумента,
                    |            СтатьиДвиженияДенежныхСредств.Ссылка КАК СтатьяДДС
                    |        ИЗ
                    |            Документ.ОтгрузкаТовара.Документы КАК ОтгрузкаТовараДокументы
                    |                ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
                    |                    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
                    |                    ПО РеализацияТоваровУслугТовары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
                    |                        И РеализацияТоваровУслугТовары.Ссылка.Склад.ТипЦенСебестоимости.ПараллельныйТипЦен = ЦеныНоменклатурыСрезПоследних.ТипЦен
                    |                ПО ОтгрузкаТовараДокументы.Документ.Ссылка = РеализацияТоваровУслугТовары.Ссылка,
                    |            Справочник.СтатьиДвиженияДенежныхСредств КАК СтатьиДвиженияДенежныхСредств
                    |        ГДЕ
                    |            РеализацияТоваровУслугТовары.Ссылка <> ЗНАЧЕНИЕ(Документ.РеализацияТоваровУслуг.ПустаяСсылка)
                    |            И СтатьиДвиженияДенежныхСредств.Код = ""125013""
                    |        
                    |        ОБЪЕДИНИТЬ ВСЕ
                    |        
                    |        ВЫБРАТЬ
                    |            ПеремещениеТоваровТовары.Ссылка,
                    |            ОтгрузкаТовараДокументы.Ссылка,
                    |            ПеремещениеТоваровТовары.Номенклатура,
                    |            ПеремещениеТоваровТовары.Количество,
                    |            ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0),
                    |            0,
                    |            СтатьиДвиженияДенежныхСредств.Ссылка
                    |        ИЗ
                    |            Документ.ОтгрузкаТовара.Документы КАК ОтгрузкаТовараДокументы
                    |                ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
                    |                    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
                    |                    ПО ПеремещениеТоваровТовары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
                    |                        И ПеремещениеТоваровТовары.Ссылка.СкладОтправитель.ТипЦенСебестоимости.ПараллельныйТипЦен = ЦеныНоменклатурыСрезПоследних.ТипЦен
                    |                ПО ОтгрузкаТовараДокументы.Документ.Ссылка = ПеремещениеТоваровТовары.Ссылка,
                    |            Справочник.СтатьиДвиженияДенежныхСредств КАК СтатьиДвиженияДенежныхСредств
                    |        ГДЕ
                    |            ПеремещениеТоваровТовары.Ссылка <> ЗНАЧЕНИЕ(Документ.ПеремещениеТоваров.ПустаяСсылка)
                    |            И СтатьиДвиженияДенежныхСредств.Код = ""125011""
                    |        
                    |        ОБЪЕДИНИТЬ ВСЕ
                    |        
                    |        ВЫБРАТЬ
                    |            ПоступлениеТоваровУслугТовары.Ссылка,
                    |            ОтгрузкаТовараДокументы.Ссылка,
                    |            ПоступлениеТоваровУслугТовары.Номенклатура,
                    |            ПоступлениеТоваровУслугТовары.Количество,
                    |            ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0),
                    |            ПоступлениеТоваровУслугТовары.Ссылка.СуммаДокумента,
                    |            СтатьиДвиженияДенежныхСредств.Ссылка
                    |        ИЗ
                    |            Документ.ОтгрузкаТовара.Документы КАК ОтгрузкаТовараДокументы
                    |                ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
                    |                    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
                    |                    ПО ПоступлениеТоваровУслугТовары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
                    |                        И ПоступлениеТоваровУслугТовары.Ссылка.СкладОрдер.ТипЦенСебестоимости.ПараллельныйТипЦен = ЦеныНоменклатурыСрезПоследних.ТипЦен
                    |                ПО ОтгрузкаТовараДокументы.Документ.Ссылка = ПоступлениеТоваровУслугТовары.Ссылка,
                    |            Справочник.СтатьиДвиженияДенежныхСредств КАК СтатьиДвиженияДенежныхСредств
                    |        ГДЕ
                    |            ПоступлениеТоваровУслугТовары.Ссылка <> ЗНАЧЕНИЕ(Документ.ПоступлениеТоваровУслуг.ПустаяСсылка)
                    |            И СтатьиДвиженияДенежныхСредств.Код = ""125014""
                    |        
                    |        ОБЪЕДИНИТЬ ВСЕ
                    |        
                    |        ВЫБРАТЬ
                    |            СписаниеТоваровТовары.Ссылка,
                    |            ОтгрузкаТовараДокументы.Ссылка,
                    |            СписаниеТоваровТовары.Номенклатура,
                    |            СписаниеТоваровТовары.Количество,
                    |            ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0),
                    |            0,
                    |            NULL
                    |        ИЗ
                    |            Документ.ОтгрузкаТовара.Документы КАК ОтгрузкаТовараДокументы
                    |                ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеТоваров.Товары КАК СписаниеТоваровТовары
                    |                    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
                    |                    ПО СписаниеТоваровТовары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
                    |                        И СписаниеТоваровТовары.Ссылка.Склад.ТипЦенСебестоимости.ПараллельныйТипЦен = ЦеныНоменклатурыСрезПоследних.ТипЦен
                    |                ПО ОтгрузкаТовараДокументы.Документ.Ссылка = СписаниеТоваровТовары.Ссылка
                    |        ГДЕ
                    |            СписаниеТоваровТовары.Ссылка <> ЗНАЧЕНИЕ(Документ.СписаниеТоваров.ПустаяСсылка)) КАК Себестомость
                    |        ПО ОтгрузкаТовараКонтакты.Ссылка = Себестомость.СсылкаДляСвязи
                    |ГДЕ
                    |    ОтгрузкаТовараКонтакты.ВидКонтакта = &ВидКонтактаПлательщик
                    |    И ОтгрузкаТовараКонтакты.Организация.Код В(&Плательщик)
                    |    И ВЫБОР
                    |            КОГДА &СогласованИлиНет = ИСТИНА
                    |                ТОГДА ИСТИНА
                    |            ИНАЧЕ ОтгрузкаТовараКонтакты.Ссылка.Согласован = &СогласованИлиНет
                    |                    И ОтгрузкаТовараКонтакты.Ссылка.НеСогласован = &СогласованИлиНет
                    |        КОНЕЦ
                    |    И ОтгрузкаТовараКонтакты.Ссылка.Подразделение = &Подразделение
                    |    И ОтгрузкаТовараКонтакты.Ссылка.ФайлТТН = """"
                    |    И ОтгрузкаТовараКонтакты.Ссылка.ПометкаУдаления = ЛОЖЬ
                    |    И ОтгрузкаТовараКонтакты.Ссылка.Дата >= ДАТАВРЕМЯ(2015, 10, 1, 0, 0, 0)
                    |ИТОГИ
                    |    СУММА(ТранспортныеЗатраты),
                    |    СУММА(СС),
                    |    СУММА(СуммаДокумента),
                    |    Согласован КАК Согласован,
                    |    НеСогласован КАК НеСогласован,
                    |    ДатаСогласованияИлиНеСогласования КАК ДатаСогласованияИлиНеСогласования,
                    |    КтоСогласовалИлиНеСогласовал КАК КтоСогласовалИлиНеСогласовал
                    |ПО
                    |    Ссылка,
                    |    ДокументВОтгрузке");

Результат: https://dropmefiles.com/kW9qs

Нужно, чтобы было раскрытие, и "+" тоже отображались. Подскажите пжлст, можно так сделать или нет?
1 Lexey_
 
20.10.15
10:52
(0) КолонкаТабличногоПоля (TableBoxColumn)
ОтображатьИерархию (ShowHierarchy)
Использование:

Чтение и запись.
Описание:

Тип: Булево.
Содержит признак вывода линий иерархии и пиктограмм раскрытия узлов дерева.
Истина - отображается
2 Vladislava-smile
 
20.10.15
10:55
(1) - Написано уже:
ЭлементыФормы.Отгрузка.Колонки.Ссылка.ОтображатьИерархию=Истина;
3 Lexey_
 
20.10.15
10:55
(2) иерархии нет
Пока ВыборкаДокументВОтгрузке.Следующий() Цикл
        ДеревоОтгрузкаДокументВОтгрузке = ДЕРЕВООТГРУЗКА.Строки.Добавить();
        ДеревоОтгрузкаДокументВОтгрузке.Ссылка = ВыборкаДокументВОтгрузке.ДокументВОтгрузке ;
    КонецЦикла;
4 Vladislava-smile
 
20.10.15
11:02
(3) Блин, не соображу (( Можно по-подробнее немного или примерчик, если есть какой-нить ...
5 Lexey_
 
20.10.15
11:07
(4) куда уж подробнее, в (3) примерчик, готовый код написан, а вообще вот этого достаточно, без предварительного создания колонок:
    ДеревоОтгрузок = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
    ЭлементыФормы.ДеревоОтгрузок.СоздатьКолонки();
    только я хз как у тебя дерево называется, переименуй если че
6 Lexey_
 
20.10.15
11:10
(5) + в запросе должна быть иерархия, естественно
7 Vladislava-smile
 
20.10.15
12:12
(5) - не получается.

Запрос=Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ
                    |    ОтгрузкаТовараДокументы.Ссылка.Ссылка КАК Ссылка,
                    |    ОтгрузкаТовараДокументы.Документ
                    |ИЗ
                    |    Документ.ОтгрузкаТовара.Документы КАК ОтгрузкаТовараДокументы
                    |ГДЕ
                    |    ОтгрузкаТовараДокументы.Ссылка.Подразделение = &Подразделение
                    |ИТОГИ ПО
                    |    Ссылка");


Делаю так как ты сказал

  ДеревоОтгрузок = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
    ЭлементыФормы.Отгрузки.СоздатьКолонки();

Получаю:

Отгрузка 1            Документ
    отгрузка 1        Реализация 1

А надо, чтобы было

Отгрузка 1
    Реализация 1
8 НЕА123
 
20.10.15
12:21
(7)
"ну вот оно - дерево"  (3)
ДеревоОтгрузкаДокументВОтгрузке = ДЕРЕВООТГРУЗКА.Строки.Добавить();
9 Vladislava-smile
 
20.10.15
12:27
(8) Результат = ВыгрузитьДоки(ЭлементыФормы.Флажок1.Значение).Выполнить();
Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
Пока Выборка.Следующий() Цикл
    ДеревоОтгрузка = ДеревоОтгрузок.Строки.Добавить();
    ДеревоОтгрузка.Ссылка = Выборка.Ссылка ;
    ВыборкаДокументВОтгрузке = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаДокументВОтгрузке.Следующий() Цикл
        ДеревоОтгрузкаДокументВОтгрузке = ДеревоОтгрузок.Строки.Добавить();
        ДеревоОтгрузкаДокументВОтгрузке.Ссылка = ВыборкаДокументВОтгрузке.ДокументВОтгрузке ;
    КонецЦикла;
        
КонецЦикла;

В верхнем обходе - отгрузка, во втором - реалка, заполняется верно, только без подстрочек, а просто списком.
10 Vladislava-smile
 
20.10.15
12:34
Вопрос закрыт, спс )