Имя: Пароль:
1C
1С v8
Вывод данных из таблицы значений в табличную часть формы
0 Crimscon
 
24.05.18
13:15
1С 8.2. Имеется форма, в которой есть таблица значений, называемая "ТаблицаТоваров".

Я отбираю запросом все розничные склады предприятия и создаю таблицу значений в которую добавляю колонки Номенклатуры, Склада и Наименования. Следующим шагом я создаю все колонки складов в форме и пытаюсь заполнить таблицу значений остатками. Вроде заполняет. Как потом данные из таблицы значений перенести в табличную часть формы?

Код:
Процедура ПриОткрытии()
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    Склады.Наименование КАК Склад,
                   |    Склады.Ссылка
                   |ИЗ
                   |    Справочник.Склады КАК Склады
                   |ГДЕ
                   |    Склады.ЯвляетсяРозничным";
    
    
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    
    ТЗСклады = Новый ТаблицаЗначений;    
    ТЗСклады.Колонки.Добавить("Номенклатура");
    ТЗСклады.Колонки.Добавить("Склад");
    ТЗСклады.Колонки.Добавить("Наименование");
    
    ЭлементыФормы.ТаблицаТоваров.Колонки.Добавить("Номенклатура");
    
    Пока Выборка.Следующий() Цикл
        Склад = СтрЗаменить(Выборка.Склад," ","_");
        Склад = СтрЗаменить(Склад,".","");
        Склад = СтрЗаменить(Склад,"-","");
        ЭлементыФормы.ТаблицаТоваров.Колонки.Добавить("Цена_"+Склад, Новый ОписаниеТипов(Новый КвалификаторыЧисла(12,2)));
        ЭлементыФормы.ТаблицаТоваров.Колонки.Добавить("Остаток_"+Склад, Новый ОписаниеТипов(Новый КвалификаторыЧисла(12,2)));
        ЭлементыФормы.ТаблицаТоваров.Колонки["Остаток_"+Склад].Положение = ПоложениеКолонки.НаСледующейСтроке;        
        Стр = ТЗСклады.Добавить();
        Стр.Склад = Выборка.Ссылка;
        Стр.Наименование = Склад;
    КонецЦикла;
    
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ОстаткиНоменклатурыОстатки.Номенклатура КАК Номенклатура,
                   |    ОстаткиНоменклатурыОстатки.Склад КАК Склад,
                   |    ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК Остаток
                   |ИЗ
                   |    РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки
                   |ГДЕ
                   |    ОстаткиНоменклатурыОстатки.Склад В ИЕРАРХИИ(&Склад)
                   |ИТОГИ
                   |    СУММА(Остаток)
                   |ПО
                   |    Склад,
                   |    Номенклатура";
    
    Запрос.УстановитьПараметр("Номенклатура", ТЗСклады.ВыгрузитьКолонку("Номенклатура"));
    Запрос.УстановитьПараметр("Склад", ТЗСклады.ВыгрузитьКолонку("Склад"));
        
    Результат = Запрос.Выполнить();
    ВыборкаСклад = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаСклад.Следующий() Цикл
        ВыборкаНоменклатура = ВыборкаСклад.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        Пока ВыборкаНоменклатура.Следующий() Цикл
            Стр = ТЗСклады.Добавить();
            Склад = ВыборкаНоменклатура.Склад;
            Стр.Номенклатура = ВыборкаНоменклатура.Номенклатура;
            //Остаток =  ВыборкаНоменклатура.Остаток;
            //ИмяКолонки = НайтиИмяКолонки(Склад,"Остаток_");
            //ЭлементыФормы.ТаблицаТоваров.Колонки[ИмяКолонки] = Остаток;
        КонецЦикла;
    КонецЦикла;    
    
КонецПроцедуры

Функция НайтиИмяКолонки(Склад,Префикс)
    Стр = ТЗСклады.Найти(Склад,"Склад");
    Если Стр <> Неопределено Тогда
        Возврат Префикс+Стр.Наименование;
    КонецЕсли;
КонецФункции
1 Crimscon
 
24.05.18
13:15
Переменная ТЗСклады - глобальная. Объявляется выше.
2 DrShad
 
24.05.18
13:19
потом пишешь
ЭлементыФормы.МоеТабличноеПоле.Значение = МояГлобальнаяТаблица;
ЭлементыФормы.МоеТабличноеПоле.СоздатьКолонки()
3 Crimscon
 
24.05.18
13:24
(3) Когда потом?
4 DrShad
 
24.05.18
13:27
(3) ну сразу как соберешь глобальную таблицу
5 Crimscon
 
24.05.18
13:29
Благодарю)
6 Crimscon
 
24.05.18
14:05
(4) Хорошо, все работает. Теперь такой вопро, а как сделать в таблице значений одну колонку под другой? У меня теперь суммарно получается 15 колонок, когда было 8. Номенклатура в своей, а вот цена/остаток на одном складе должна быть в одной странице.
7 VitShvets
 
24.05.18
14:13
ЭлементыФормы.МоеТабличноеПоле.Колонки.КолонкаКоторуюНужноПоместитьВТужеКолонку.Положение = ПоложениеКолонки.ВТойЖеКолонке;