Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Получаю на сервере таблицу значений. Как сформировать из ТЗ ДеревоЗначений?

Получаю на сервере таблицу значений. Как сформировать из ТЗ ДеревоЗначений?
Я
   altaykniga
 
13.10.16 - 08:59
Доброго дня, умные люди. Прошу вашей помощи. Ни разу не приходилось с деревом значений работать. Задача такая:
 Программно получаю на сервере ТаблицуЗначений. Потом эту ТЗ нужно отобразить на форме как дерево значений (с возможностью ввода/изменения колонки "количество")

Что сделал:
1. создал внешнюю обработку. На форму добавил реквизит ДеревоЗначений с колонками Номенклатура,ЕдиницаИзмерения, Количество, Родитель.
2. получил на сервере нужную ТЗ. вот скрин: https://yadi.sk/i/xKd-_p_Ewk6oU

вопрос: как заполнить реквизит формы ДеревоЗначений данными из этой ТЗ?
 
 
   aleks_default
 
1 - 13.10.16 - 09:00
запросом, например
   altaykniga
 
2 - 13.10.16 - 09:05
(1) можете подсказать текст запроса? И как потом результат запроса передать в дерево значений на форму?
   Ifkerri
 
3 - 13.10.16 - 09:10
Дерево = РеквизитФормыВЗначение("ТвоеДерево");
    Дерево.Строки.Очистить();
    Дерево = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
    ЗначениеВРеквизитФормы(Дерево, "ТвоеДерево");
   Ifkerri
 
4 - 13.10.16 - 09:10
(3) имена колонок и полей в запросе должны совпадать
   Ifkerri
 
5 - 13.10.16 - 09:11
в самом запросе итоги херачишь и все)
   altaykniga
 
6 - 13.10.16 - 09:15
(5) как будет выглядеть текст запроса применительно к моей ТЗ (скрин в (0))?
   aleks_default
 
7 - 13.10.16 - 09:24
может нам и зарплату за тебя получить?
   Ifkerri
 
8 - 13.10.16 - 09:25
(6) а я хз:) как я те по таблице текст запроса скажу)))
   Ifkerri
 
9 - 13.10.16 - 09:25
(8) если есть готовая тз то можно просто конвертнуть ее в дерево, для любителей винтажа так сказать
   Ifkerri
 
10 - 13.10.16 - 09:28
ПЗ = Новый ПостроительЗапроса;
    ПЗ.ИсточникДанных          = Новый ОписаниеИсточникаДанных(ТаблицаДляОтправки.Выгрузить());
    ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
    ПЗ.ИсточникДанных.Колонки["ЗаказКлиента"].Измерение = Истина;
    ПЗ.ЗаполнитьНастройки();
    ПЗ.Выполнить();
    Дерево = ПЗ.Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
 
 Рекламное место пустует
   Ifkerri
 
11 - 13.10.16 - 09:28
усе просто
   Тындр
 
12 - 13.10.16 - 09:39
Во времена 77 и 8.0 нельзя было запросом выбрать ТЗ. Приходилось извращаться. А в 77 вообще чтобы сделать дерево приходилось делать таблицы значений, в строках которых были таблицы значений. Вот это было круто. Вот были времена
   novichok79
 
13 - 13.10.16 - 09:43
(10) +100500 - самый правильный ответ
   newbling
 
14 - 13.10.16 - 09:44
(6) Можешь подгрузить её как временную таблицу и по ней уже что хочешь делать. Хоть в дерево, хоть в лес.
   altaykniga
 
15 - 13.10.16 - 10:11
товарищи, дерево значений на форму передаваться стало! Ура! НО передается не то, что надо ))
неправильный текст запроса?

вот код:
Дерево = РеквизитФормыВЗначение("ДеревоЗначений1");
    
    Менеджер=Новый МенеджерВременныхТаблиц;
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    //|    ТЗ.Номенклатура

    |    *
    |    поместить ВремТЗ
    |ИЗ
    |    &ТЗ КАК ТЗ";
    Запрос.УстановитьПараметр("ТЗ", тТаблица);
    Запрос.МенеджерВременныхТаблиц=Менеджер;
    
    Запрос.Выполнить();
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    *
    |ИЗ
    |    ВремТЗ КАК ТЗ
    |ИТОГИ ПО
    |    ТЗ.Номенклатура";
    
    Дерево.Строки.Очистить();
    Дерево = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    ЗначениеВРеквизитФормы(Дерево, "ДеревоЗначений1");

   altaykniga
 
16 - 13.10.16 - 10:22
(15) ну гляньте скрин ТаблицыЗначений... может там данных не хватает для вывода в ДеревоЗначений?
   Жан Пердежон
 
17 - 13.10.16 - 10:37
(16) может за тебя еще сделать? из запроса не всякое дерево получить можно.
   altaykniga
 
18 - 13.10.16 - 13:07
(16) не надо за меня делать. Я не могу понять сам принцип формирования дерева... Какие поля должны быть в запросе, чтобы корректно выгрузить данные в дерево значений
   SergTheGreat
 
19 - 13.10.16 - 14:38
(0) Может с др. конца к задаче подойти: в том месте, где первоначально ТЗ создается, сразу Дерево создавать?
   altaykniga
 
20 - 13.10.16 - 15:22
(19) ТЗ создается в общем типовом модуле с помощью процедуры "УправлениеНебольшойФирмойСервер.Разузлование(СтруктураСостава, ТаблицаСостава, ТаблицаОпераций);"

ТЗ получается в том виде, скриншот которого приведен в (0). Помогите разобраться, какие данные нужно довнести в ТЗ, чтобы можно было сформировать деревоЗначений?
   Ёпрст
 
21 - 13.10.16 - 15:26
(20) да ё.. сделай итоги по узлу и номенклатуре, наслаждайся
   Жан Пердежон
 
22 - 13.10.16 - 15:27
(20) ппц, сколько можно уже.
разберись сначала, чем дерево от ТЗ отличается.
   shpioleg
 
23 - 13.10.16 - 15:29
Пробуй запрос по справочнику Номенклатура  и соединяй со своей ТЗ. И ОбходРезультата по Группировкам с иерархией.
   altaykniga
 
24 - 13.10.16 - 15:35
(23) это вариант не подходит, т.к. мне нужно вывести дерево спецификаций, т.е. состава изделия.
   shpioleg
 
25 - 13.10.16 - 15:58
(24) Можешь на основе своей ТЗ сформировать Дерево как тебе нужно и засунуть в реквизит формы.
Т.е.
1. Создаешь Новый ДеревоЗначений и нужные колонки.
2. Пробегаешь по своей ТЗ и заполняешь дерево значений как тебе нужно. Дерево(или Родитель).Строки.Добавить();
3. Конвертишь ДеревоЗначений в реквизит формы ДанныеФормы Дерево
4. И наконец!, мучаешь дерево на клиенте :)


Список тем форума
Рекламное место пустует  Рекламное место пустует
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует