Имя: Пароль:
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)
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан