Имя: Пароль:
1C
1С v8
ЗаполнитьЗначенияСвойств таблицы значений
0 novmax
 
16.04.22
11:19
Помогите пожалуйста! Как можно с помощью функции ЗаполнитьЗначенияСвойств() перенести данные из соответствия в строку таблицы значений. В соответствии несколько пар ключ:значение. В строке таблицы значений такое же количество колонок, по имени совпадают с ключами. Это учебная задача, не получается никак.
1 hhhh
 
16.04.22
11:20
покажите, как пробовали.
2 novmax
 
16.04.22
11:26
Много как. Все не работает и уже стерто.
Хочу что-то вроде перебора пар соответствий, тогда источником будет конкретная пара, но вот что приемником?
Как связать колонку таблицы значений с ключом соответствия?

Строка = ТЗ.Добавить();        
   Для Каждого Пара ИЗ Соответствие Цикл
      ...
      ЗаполнитьЗначенияСвойств(???, Пара);
   КонецЦикла;
3 youalex
 
16.04.22
11:28
ЗаполнитьЗначенияСвойств - обязательное условие?
4 novmax
 
16.04.22
11:33
Обязательное, в том и смысл задачи. Без него все было бы намного проще.
5 Смотрящий
 
16.04.22
11:47
ТЗСтрока = ТЗ.Добавить();
ЗаполнитьЗначенияСвойств(ТЗСтрока, Соответствие);
6 RomanYS
 
16.04.22
11:47
(2)
СтрокаТЗ = ТЗ.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЗ, Соответствие);
7 dreizehn
 
16.04.22
11:56
(5), (6) - Теоретики...
8 RomanYS
 
16.04.22
12:05
(7) да, перепроверил. Структуру из соответствия НЕ заполняет.
9 dreizehn
 
16.04.22
12:08
(8) Из соответствия нельзя извлечь значение, кроме как при помощи метода Получить и его "короткой" записи "[]". Так что для ЗаполнитьЗначенияСвойств без вспомогательных данных не обойтись - переложить в цикле в промежуточную структуру, например.

Но вообще дичь, конечно.
(0) Это где такие учебные задачи раздают?
10 novmax
 
16.04.22
12:12
Ладно, нельзя так нельзя. Думаю, что с этой задачей я уже сдамся. Пусть разъяснят.
Где раздают, не хочется афишировать.
11 dreizehn
 
16.04.22
12:15
Хотя можно, конечно, извратиться и без цикла =)

    Приемник = Новый ТаблицаЗначений;
    Приемник.Колонки.Добавить("Поле1");
    Приемник.Колонки.Добавить("Поле2");
    Приемник.Колонки.Добавить("НеПоле");
    
    Источник = Новый Соответствие;
    Источник.Вставить("Поле1", "Значение 1");
    Источник.Вставить("Поле2", "Значение 2");
    Источник.Вставить("Поле3", "Значение 3");
    
    Запись = Новый ЗаписьJSON;
    Запись.УстановитьСтроку();
    ЗаписатьJSON(Запись, Источник);
    
    Чтение = Новый ЧтениеJSON;
    Чтение.УстановитьСтроку(Запись.Закрыть());
    
    ИсточникСтруктурой = ПрочитатьJSON(Чтение, Ложь);
    ЗаполнитьЗначенияСвойств(Приемник.Добавить(), ИсточникСтруктурой);
    
    Приемник.ВыбратьСтроку();
12 Фрэнки
 
16.04.22
13:38
(10) это при приеме на работу или где-то еще? не в плане физического адреса, а какая цель такого задания?
13 ДедМорроз
 
16.04.22
20:33
Заполнить значения свойств использует свойства объекта источника и приемника.
Но,соответствие - это такой объект,у которого свойств нет,то есть через точку от соответствия ничего не получить,это же не структура.
14 Индиго
 
16.04.22
20:37
А то что имена полей должны совпадать автору уже говорили?
15 dreizehn
 
16.04.22
21:15
(14) > автору уже говорили?

Давай я научу тебя забытому исскуству. Вот пост (0), там разные значки написаны. Если присмотреться, то они во что-то даже складываются: п-о и-м-е-н-и с-о-в-п-а-д-а-ю-т с к-л-ю-ч-а-м-и. Правда, здорово?
16 Индиго
 
16.04.22
21:49
(15)Спасибо.
Давая научу тебя еще более древнему искуству.
Не читать всю тему, которая может растянуться на 1000 постов, а просто задать вопрос.И вот такие дурачки как ты набегут и все раскажут.
Спасибо:-)
17 Said_We
 
16.04.22
22:04
(16) Опять не внимательно прочитал. В условии в (0) написано про совпадающие ключи и имена полей. Для этого не надо переписку читать. Это условие в (0).
18 youalex
 
16.04.22
22:43
ЗаписатьXDTO() тоже мимо. Примечательно, что там элементы называются именно пары (pairs).
В любом случае, кмк, без одевания штанов через голову (создания структуры из соответствия, тем или иным способом)  не обойтись. Собственно, (9)