Имя: Пароль:
1C
 
Заполнить значение реквизита записи справочника по имени реквизита.
0 ice777
 
28.05.09
15:22
Имею 2 объекта не совсем аналогичных (записи 2-х похожих справочников).
Надо значение конкретного реквизита из одной записи переписать в другую. Имя реквизита известно(как строка). Записи как объекты имеются. Хочется что-то вроде
НовЗ[РеквизитВ].Значение = СтарЗ[Реквизит].Значение.  




Что-то писали про ПолучитьАтрибут.. но это же тока в XML годится.
1 bvn13
 
28.05.09
15:29
(0) а НовЗ[РеквизитВ].Значение = СтарЗ[Реквизит].Значение не прокатывает?
2 Jaap Vduul
 
28.05.09
15:29
НовЗ[РеквизитВ] = СтарЗ[Реквизит];
3 ice777
 
28.05.09
15:29
1. нет. Иначе бы в качестве примера и не приводил :(
4 ice777
 
28.05.09
15:31
Ну давайте яснее напишу:
НовОбъектСправочника1[РеквизитВ].Значение = СтарыйОбъектСправочника1[Реквизит].Значение.

- типа этого хочу
5 ice777
 
28.05.09
15:32
(2)нет к объектам такого обращения
6 НЕА123
 
28.05.09
15:33
(5) что неправильно в (2)?
ЗЫ
сегодня пятница?
7 zbv
 
28.05.09
15:34
(5) Почему нет?
8 ice777
 
28.05.09
15:37
Потому что НовЗ и СтарЗ - типа СправочникОбъект, а в квадратных скобках - строковое имя реквизита. Ругается 1С и все.
9 73
 
28.05.09
15:38
Глобальный контекст
ЗаполнитьЗначенияСвойств (FillPropertyValues)
Синтаксис:
ЗаполнитьЗначенияСвойств(<Приемник>, <Источник>, <Список свойств>, <Исключая свойства>)
10 ice777
 
28.05.09
15:40
(9) это похоже на правду
11 НЕА123
 
28.05.09
15:41
(9) имена реквизитов вроде разные.
12 73
 
28.05.09
15:42
(11) Не заметил, для разных не подойдет.
13 Defender aka LINN
 
28.05.09
15:43
(5) Что курил?
14 Jaap Vduul
 
28.05.09
15:44
(8)Покажь код и ругательства
15 zbv
 
28.05.09
15:44
(8) кавычки поставь, если "строковое"
16 hhhh
 
28.05.09
15:44
(4) наоборот, как в (4) точно не будет работать. Как в (2) работает.
17 ice777
 
28.05.09
15:54
(15)Обисняю: никаких кавычек"" поставить не могу, бо только моей обработке известно имя обрабатываемого реквизита. Оно строковое. А [] итак стоят.

(13) Это СправочникОбъект! разве можно к значению реквизита обратиться вот так, именем в [] ?
18 hhhh
 
28.05.09
15:57
(17) это у тебя заклинание такое "СправочникОбъект"? Он не кусается, попробуй, увидишь.
19 zbv
 
28.05.09
15:58
РеквизитВ - это что? равно чему-нибудь?
20 ice777
 
28.05.09
15:58
код:
       // Нов запись в выверке:
       СтарЗ=НЗап.Ссылка.ПолучитьОбъект();
       НовЗ=Справочники.СотрудникиВыверенные.СоздатьЭлемент();
       РеквизитыВ=НовЗ.Метаданные().Реквизиты;
       
       реквизиты=НЗап.Ссылка.ПолучитьОбъект().Метаданные().Реквизиты;
       Для каждого Реквизит из Реквизиты цикл
           Для каждого РеквизитВ из РеквизитыВ цикл
               Если РеквизитВ.Имя=Реквизит.Имя тогда        
                   Сообщить(Реквизит);
                   НЗап[Реквизит.Имя]=СтарЗ[Реквизит.Имя];
                   //ЗаполнитьЗначенияСвойств(СтарЗ,НовЗ,Реквизит.Имя);
               КонецЕсли;
           КонецЦикла;
       КонецЦикла;
21 ice777
 
28.05.09
16:00
ОШИБКА: Поле объекта не обнаружено (Организация)                    НЗап[Реквизит.Имя]=СтарЗ[Реквизит.Имя];
22 zbv
 
28.05.09
16:01
(20) и на что ругается.

Кстати ЗаполнитьЗначенияСвойств - подойдет, только код переписать...
23 hhhh
 
28.05.09
16:01
(20) наоборот надо
               ЗаполнитьЗначенияСвойств(НОВЗ, СтарЗ, Реквизит.Имя);
24 ice777
 
28.05.09
16:02
(23) верно. но что, пустую ссылку не пишет?
25 hhhh
 
28.05.09
16:03
(24) ты точно накурился. Что же ты пишешь

                НЗап[Реквизит.Имя]=СтарЗ[Реквизит.Имя];

надо

                Новз[Реквизит.Имя]=СтарЗ[Реквизит.Имя];
26 ice777
 
28.05.09
16:03
(23) работает. А вот что говорят в (18) - не верю.
27 zbv
 
28.05.09
16:07
НовЗ=Справочники.СотрудникиВыверенные.СоздатьЭлемент();

ЗаполнитьЗначенияСвойств(НОВЗ, НЗап);
28 ice777
 
28.05.09
16:10
(25) О , hhhh? ты прав. И такая фича работает. Я действительно лоханулся, когда вместо объекта набор записей воткнул.
Блин, в справке об таком способе НИФИГА!


КОРОЧЕ, Оба способа работают.
29 ice777
 
28.05.09
16:11
(27) там немного разный набор полей, поэтому мне надо проверять наличие в приемнике.
30 NewNick
 
28.05.09
16:12
(29) само проверит )
а за такие вложеные циклы надо руки отрывать ;)
AdBlock убивает бесплатный контент. 1Сергей