Структура 1С. Не верный ключ. Заполнение в цикле;

1. user894386 09.03.18 14:24 Сейчас в теме
Привет. Очень для меня странная проблема.

Таблица = Новый Структура();
	
	Для Каждого Строка ИЗ Выборка.ДопУслуги Цикл
		Имя = Строка(Строка.Услуга.Наименование);
		Цена = Строка.Услуга.Стоимость;
		Таблица.Вставить(Имя, Цена);	
	КонецЦикла;


На сколько я знаю ключ должен быть строкой так вот
Строка.Услуга.Наименование

это строка но мне пишет что не верный ключ.
Если сделать ключ = "какойтатекст" то все ок
Если сделать так "Строка.Услуга.Наименование" Тоже не верный ключ я так понимаю из за точек.
Как это все сделать что бы ключ было имя.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. BackinSoda 09.03.18 14:38 Сейчас в теме
(1) перед назначением имени, надо бы СтрЗаменить всякие пробелы да точки
зы: может такой вариант проще будет ?
 Таб = Выборка.ДопУслуги.Свернуть("Услуга","Стоимость");

Только не понятно "Строка.Услуга.Стоимость" Стоимость - это реквизит услуги или всё же он в таб.части отдельно идёт ?
user894386; +1 Ответить
2. qazaas 09.03.18 14:30 Сейчас в теме
Ключ должен быть одним словом, без пробелов, типа "РемонтДорог", а у тебя в наименовании, как вариант, "Ремонт дорог", что неправильно
user894386; Kami4; FesenkoA; +3 Ответить
3. qazaas 09.03.18 14:31 Сейчас в теме
А еще может быть, что у тебя одно слово, но с пробелом в конце/начале (как умудрятся ввести пользователи), тогда делай так СокрЛП(Строка.Услуга.Наименование)
user894386; Kami4; +2 Ответить
5. Kami4 09.03.18 14:48 Сейчас в теме
Плюс к вышесказанному переименуй СТРУКТУРУ переименуй соответствующе - например так:
 СтруктураТоваров = Новый Структура(); 
user894386; +1 Ответить
6. user894386 09.03.18 14:54 Сейчас в теме
Да в название есть пробелы.Всем спасибо
7. YanTsys 12 09.03.18 16:49 Сейчас в теме
Рекомендую вместо структуры чаще пользоваться соответствием. Способно в качестве ключа переварить почти любую фигню :)

Таблица = Новый Соответствие;
    
    Для Каждого Строка ИЗ Выборка.ДопУслуги Цикл
        Имя = Строка(Строка.Услуга.Наименование);
        Цена = Строка.Услуга.Стоимость;
        Таблица.Вставить(Имя, Цена);    
    КонецЦикла;


Потом считываете как
Цена = Таблица[Имя];

Если при считывании потом ошибетесь в имени хотя бы на один пробел получите Цена = неопределено

И кстати чисто теоретически на больших количествах элементов соответствие будет быстрее структуры...
А вложенные соответствия дают масштабные возможности...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот