Имя: Пароль:
1C
1С v8
Отладчик для массива
, ,
0 Roma1314704
 
07.05.18
09:41
Есть следующая функция. Необходимо в хml вывести значения со справочника и с регистра сведения  - параметры

Как глянуть через отладчик что в массиве?

&НаСервере
Функция ПолучитьМассивДанных()
    
    МассивДанных = Новый Массив;
        //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    
    Запрос = Новый Запрос;
    Запрос.Текст =
"ВЫБРАТЬ
|        Товар.Код КАК Код,
|        Товар.Родитель,
|        Товар.Родитель.Код КАК РодительКод,
|        Товар.Наименование КАК Наименование,
|        Товар.Ссылка,
|        Товар.ЦенаПродажиРозетка КАК ЦенаПродажи,
|        Товар.Бренд КАК Бренд,
|        Товар.ХарактеристикаXML КАК ОписаниеТовара,
|        Товар.СсылкаФотоТовара1 Как СсылкаФотоТовара1,
|        Товар.СсылкаФотоТовара2 Как СсылкаФотоТовара2,
|        Товар.СсылкаФотоТовара3 Как СсылкаФотоТовара3,
|        Товар.СсылкаФотоТовара4 Как СсылкаФотоТовара4,
|        Товар.ТоварXml КАК ТоварXml,
|        Товар.СсылкаНаСайт Как СсылкаНаСайт,
|        Остатки.КоличествоОстаток КАК ОстатокТовара
|        
|        
|                
|    ИЗ
|        Справочник.Номенклатура КАК Товар
|        ЛЕВОЕ СОЕДИНЕНИЕ
|        РегистрНакопления.ОстаткиПоСкладам.Остатки КАК Остатки
|                    
|    ПО
|        Товар.Ссылка = Остатки.Номенклатура
|        
|    ГДЕ
|        Номенклатура.ТоварXml = &Истина И
|        Склад = &Склад;
|ВЫБРАТЬ
|    РегистрСведенийЗначениеХарактеристикТоваров.Номенклатура КАК Номенклатура,
|    РегистрСведенийЗначениеХарактеристикТоваров.Характеристика КАК Характеристика,
|    РегистрСведенийЗначениеХарактеристикТоваров.ЗначениеХарактеристики КАК ЗначениеХарактеристики
|ИЗ
|    РегистрСведений.ЗначениеХарактеристикТоваров КАК РегистрСведенийЗначениеХарактеристикТоваров
|ГДЕ
|    РегистрСведенийЗначениеХарактеристикТоваров.Номенклатура = Номенклатура.Ссылка";


            
    Запрос.УстановитьПараметр("Истина", Истина);
    Запрос.УстановитьПараметр("Склад", Справочники.Склады.НайтиПоНаименованию("Основной склад"));

    
    РезультатЗапроса = Запрос.ВыполнитьПакет();
    ВыборкаДетальныеЗаписи = РезультатЗапроса[0].Выбрать();
    
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        НоваяЗапись = Новый Структура("Код, Наименование, Бренд, ОписаниеТовара, Характеристика, ЗначениеХарактеристики, ЦенаПродажи, СсылкаНаСайт, Категория, РодительскаяКатегорияКод,РодительскаяКатегория,СсылкаФотоТовара1,СсылкаФотоТовара2, СсылкаФотоТовара3, СсылкаФотоТовара4, ОстатокТовара");
        НоваяЗапись.Код = Строка(ВыборкаДетальныеЗаписи.Код);
        НоваяЗапись.Наименование = Строка(ВыборкаДетальныеЗаписи.Наименование);
        НоваяЗапись.ЦенаПродажи = Строка(ВыборкаДетальныеЗаписи.ЦенаПродажи);
        НоваяЗапись.СсылкаНаСайт = Строка(ВыборкаДетальныеЗаписи.СсылкаНаСайт);
        НоваяЗапись.РодительскаяКатегория = Строка(ВыборкаДетальныеЗаписи.Родитель);
        НоваяЗапись.РодительскаяКатегорияКод = Строка(ВыборкаДетальныеЗаписи.РодительКод);
        НоваяЗапись.СсылкаФотоТовара1 = Строка(ВыборкаДетальныеЗаписи.СсылкаФотоТовара1);
        НоваяЗапись.СсылкаФотоТовара2 = Строка(ВыборкаДетальныеЗаписи.СсылкаФотоТовара2);
        НоваяЗапись.СсылкаФотоТовара3 = Строка(ВыборкаДетальныеЗаписи.СсылкаФотоТовара3);
        НоваяЗапись.СсылкаФотоТовара4 = Строка(ВыборкаДетальныеЗаписи.СсылкаФотоТовара4);
        НоваяЗапись.ОстатокТовара = Строка(ВыборкаДетальныеЗаписи.ОстатокТовара);
        ВыборкаДетальныеЗаписиХарактеристикиТовара = РезультатЗапроса[1].Выбрать();
        

        Пока  ВыборкаДетальныеЗаписиХарактеристикиТовара.Следующий() Цикл
            НоваяЗапись.Характеристика = Строка(ВыборкаДетальныеЗаписиХарактеристикиТовара.Характеристика);
            НоваяЗапись.ЗначениеХарактеристики = Строка(ВыборкаДетальныеЗаписиХарактеристикиТовара.ЗначениеХарактеристики);
            

        КонецЦикла;

        //Для Каждого Элемента ИЗ ВыборкаДетальныеЗаписи.Характеристика Цикл
            
        НоваяЗапись.ОписаниеТовара = Строка(ВыборкаДетальныеЗаписи.ОписаниеТовара);
        //МассивДанных.Добавить(НоваяЗапись);
        //КонецЦикла;
        НоваяЗапись.Бренд = Строка(ВыборкаДетальныеЗаписи.Бренд);
        МассивДанных.Добавить(НоваяЗапись);
        
        
    КонецЦикла;
    
    Возврат МассивДанных;
    
КонецФункции


&НаКлиенте
Процедура ТестоваяКоманда(Команда)
    ПолучитьМассив = ПолучитьМассивДанных();
    //Для Каждого Элемент Из ПолучитьМассив Цикл
    //    Сообщить(Элемент);
    //КонецЦикла;
    
КонецПроцедуры
1 xxTANATORxx
 
07.05.18
09:43
F2 ??
2 Fish
 
07.05.18
09:43
(0) "Показать значение в отдельном окне". Удивительный вопрос.
3 Roma1314704
 
07.05.18
10:06
Пока  ВыборкаДетальныеЗаписиХарактеристикиТовара.Следующий() Цикл
            НоваяЗапись.Характеристика = Строка(ВыборкаДетальныеЗаписиХарактеристикиТовара.Характеристика);
            НоваяЗапись.ЗначениеХарактеристики = Строка(ВыборкаДетальныеЗаписиХарактеристикиТовара.ЗначениеХарактеристики);
            

КонецЦикла;

Характеристик и их значений 8 позиций по факту в массив записывает только 1 как мне записать все остальные?
4 Lexey_
 
07.05.18
10:10
(3) нужно исправить код, который вне цикла
5 Ненавижу 1С
 
гуру
07.05.18
10:13
(3) потому-что у тебя всего одна НоваяЗапись
6 Roma1314704
 
07.05.18
10:14
Подскажите как это реализовать
7 Мандалай
 
07.05.18
10:15
Толи я после праздников плохо соображаю, то ли надо пакет убрать, соединить все в один запрос и организовать группировку по товарам, характеристикам. У тебя там бред какой то получается при определении ВыборкаДетальныеЗаписиХарактеристикиТовара = РезультатЗапроса[1].Выбрать();
8 Boleev
 
07.05.18
10:19
(6) мне просто интересно, чем ты занимался  11 лет 6 месяцев 1 день
9 Roma1314704
 
07.05.18
10:21
Собирался с мыслями что надо учить 1с
10 Roma1314704
 
07.05.18
10:23
Если серьезно , нужно помощь как это все до ума довести
11 Мандалай
 
07.05.18
10:28
1. Убери пакет, оставь только первый запрос.
2. На регистре остатков у тебя должна хранится информация по остаткам в разрезе характеристик, иначе бред получается.
3. Бери характеристики напрямую из регистра остатков. То есть второй запрос тебе без надобности, хотя тебе видней.
4. Не очень понимаю зачем тебе справочник Номенклатура, в таком варианте ты получишь всю номенклатуру, и ту которая есть на остатках и ту которой нет на остатке. Если конечно так надо по условию значит надо. Поэтому огласи какие данные должны попасть в отчет.
12 Roma1314704
 
07.05.18
10:42
НоваяЗапись = Новый Структура("Код, Наименование, Бренд, ОписаниеТовара, Характеристика, ЗначениеХарактеристики, ЦенаПродажи, СсылкаНаСайт, Категория, РодительскаяКатегорияКод,РодительскаяКатегория,СсылкаФотоТовара1,СсылкаФотоТовара2, СсылкаФотоТовара3, СсылкаФотоТовара4, ОстатокТовара");
Все это должно попасть в отчет. Но в регистре сведений характеристика товара не 1-но значение их может быть несколько - как их все выдернуть в массив -не могу осилить
13 Мимохожий Однако
 
07.05.18
10:47
Возьми листочек и нарисуй, что и где лежит. Потом по этому плану делай запрос.
14 Roma1314704
 
07.05.18
11:08
Да правильно. Не могу понять с этим массивом  -ведь в структуре 1 значение характеристики соответственно сколько  не перебирай запрос в цикле  -запишет только последнее значение и одно единественное значение. Как записать в структуру остальные значения Характеристик?
15 Roma1314704
 
07.05.18
11:58
Разобрался. Всем спасибо
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой