Имя: Пароль:
1C
 
ЗаполнитьЗначенияСвойств не работает с соотвествиями?
0 Chameleon1980
 
18.06.24
10:18
Есть соответствие
получаю из него новое:
НовыеЗначенияФормы = ОбщегоНазначения.СкопироватьРекурсивно(СтарыеЗначенияФормы);

хочу заполнить стандартным методом:

ЗаполнитьЗначенияСвойств(НовыеЗначенияФормы, ЭтаФорма);

не работает.
ключи совпадают (правда, видимо из-за метода СкопироватьРекурсивно, в другом порядке)

В форме по ключам существуют реквизиты с именами, как ключи в соответствии.

вижу, что после ЗаполнитьЗначенияСвойств - новые значения не заполняются.
1 Ненавижу 1С
 
18.06.24
10:20
(0) с соответствием не работает, потому что заполняются не по ключам, а одноименные свойства. А у соответствия их нельзя расширить. Порядок ключей в соответствии это вообще что?
2 Chameleon1980
 
18.06.24
10:22
(1) вообще не представляю про порядок ключей в соответствии, наверное, порядок их добавления.
Визуально в отладке наоборот расположены. понятно, что, вероятно рекурсия шла создавать с конца, вот и результат.
3 Chameleon1980
 
18.06.24
10:22
(1) понял - спасибо. Напишем свое для простого соответствия.
4 Ненавижу 1С
 
18.06.24
10:31
(2) лучше думать, что у соответствия нет порядка ключей
5 Chameleon1980
 
18.06.24
10:34
(4) я все понимаю. Понимаю, что такое соответствие. Понимаю, что нет порядка. Что ты докопался? визуально то наоборот получилось после копирования. Значит отладчик отображает их в порядке добавления ИМХО. Вопрос закрыт. И не нужно умничать, наверное.
6 vde69
 
18.06.24
10:39
В соответствии в ключе может быть число или ссылка. А в получателем ключ может быть числом?
7 lEvGl
 
18.06.24
10:42
(0) для структуры работает, видимо из за этого (6)
8 mikecool
 
18.06.24
10:44
(2) не в рекурсии дело, мне показалось - похоже на стек лифо соответствие при добавлении элементов
9 Chameleon1980
 
18.06.24
11:17
(6) 1. Это я понимаю (в этом и одно из отличий структуры и соотвествия)
2. типы 100% одинаковые, в моем случае - ответ да.
10 Chameleon1980
 
18.06.24
11:19
(9) + теоретически. ответ - нет для (6) т.к. в текущей задаче я работаю с реквизитами формы. По-этому произвольных ключей быть не может. Намек понял - можно переехать на структуру. Спасибо. Но оставил пока так (написал свое заполнение с доп. проверкой, нужной только мне)
11 Ненавижу 1С
 
18.06.24
11:39
легкое преобразование, если ключи "хорошие":

Функция СоответствиеВСтруктуру(Соответствие)

    Результат = Новый Структура;
    ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(Результат,Соответствие,Истина);
    Возврат Результат;

КонецФункции
12 Chameleon1980
 
18.06.24
12:05
(11) спасибо большое. Но соответствие в соответствие. Посмотрел соответствующие конструкторы или методы не нашел из структуры в соответствие.
13 Chameleon1980
 
18.06.24
12:06
+(12) уже уехал далеко к другой части задачи :)
14 DrZombi
 
18.06.24
12:32
(0) Вот и ладушки :)