Имя: Пароль:
1C
1С v8
Ключ в структуре из переменной
0 lampa
 
12.03.15
18:50
Доброго дня.

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

Пример:

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ТоварыНаСкладах.Номенклатура.Артикул КАК Артикул,
        |    ТоварыНаСкладах.Серия.Номер КАК Номер
        |ИЗ
        |    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    СписокНомеров = Новый Массив;
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Запись = Новый Структура;
        Запись.Вставить(ВыборкаДетальныеЗаписи.Артикул,ВыборкаДетальныеЗаписи.Номер);         
        СписокНомеров.Добавить(Запись);  
    КонецЦикла;
    

Выдает ошибку "Задано неправильное имя атрибута структуры"
1 Крошка Ру
 
12.03.15
18:54
(0) Может потому что структуру надо описать при создании? Задать ключ и значение? А потом уже вставлять их?
2 Fram
 
12.03.15
18:57
(0) Используй Соответствие
3 Fram
 
12.03.15
18:58
Хотя и Структура должна работать. Может Артикул пустой?
4 Михаил Козлов
 
12.03.15
19:06
В структуре ключ должен быть совместим с именем переменной. Т.е. если артикул начинается на цифру, то не пойдет.
Используйте Соответствие.
5 Fram
 
12.03.15
19:09
(4) Да? Атрибут же строковый. Чем набор чисел (символов) не строка?
6 Fram
 
12.03.15
19:10
(5) Пардон, туплю. Обращение через точку же доступно для структур
7 Михаил Козлов
 
12.03.15
19:10
Да, забыл: что будет, если есть дубли по артикулу? Например, пустой артикул.
И как быть, если есть дубли серий по номеру?
8 Nuobu
 
12.03.15
19:11
(4) Можно написать что-то типа Запись.Вставить("м" + ВыборкаДетальныеЗаписи.Артикул,ВыборкаДетальныеЗаписи.Номер);
9 lampa
 
12.03.15
19:14
(8)(4) спасибо, помогло (Соответствие)
10 Михаил Козлов
 
12.03.15
19:22
(9) А что насчет (7)?
11 D_E_S_131
 
12.03.15
20:08
(8) А почему "м", а не "а"? Это же артикул. :)
12 Ненавижу 1С
 
гуру
12.03.15
20:24
(7)не забыть про дефисы, точки, пробелы, скобки