Имя: Пароль:
1C
1С v8
Изменение значения реквизита в справочнике
0 -Chubik-
 
27.12.11
18:33
Здравствуйте. Проблема вот в чем. Есть справочник А, в него из справочника Б ставится элемент со своими реквизитами: Код и Наименование(на каждом элемента заранее предопределен свой код(тобишь он уникальный)), необходимо обработкой заменить источник показаний в справочнике А.
Я пишу вот так:

Контрагент = Справочники.А;
СсылкаНайденногоКонрагента = Контрагент.НайтиПоКоду("38381");
СсылкаНайденногоКонрагента = СсылкаНайденногоКонрагента.Б.ПолучитьОбъект();    
СсылкаНайденногоКонрагента.Код = "000000190"; //Заменяю на нужный мне Код,
СсылкаНайденногоКонрагента.Записать();

При таком виде записи у меня Код становится не уникальным, т.е он меняет Код у установленного источника, а не заменяет его элементом с кодом 000000190. Как сделать чтобы было хорошо?)) Заранее спс.
1 -Chubik-
 
27.12.11
18:35
Чтобы не было двусмысленности. Код так же есть и у Справочника А, соответственно по нему и идет в начале поиск)
2 Mort
 
27.12.11
18:35
Такими фокусами одну ссылку другой не подменить.
3 -Chubik-
 
27.12.11
18:38
Ну я как бы догадался, какой фокус нужно провернуть чтобы подменить?
4 kosts
 
27.12.11
18:47
(3) Используй типовую обработку поиск и замена ссылок
5 -Chubik-
 
27.12.11
18:51
Типовая обработка не прокатывает, это лишь часть программы. На которой у меня случился затуп и уже 6 часов не проходит :) У меня есть Эксель таблица (гигантская, около 20 мегабайт), в не забиты все коды, какой на какой поменять, соответсвенно база с контрагентами не меньше, поэтому приходится писать обработку, всё остальное написал, остался этот кусочек маленький... Как-нибудь глянуть код типовой обработки можно? Буду очень признателен :)
6 kosts
 
27.12.11
18:53
(5) На итс есть. В инете полно таких, поищи.
7 kosts
 
27.12.11
18:55
В методах платформы есть такой, который ищет все вхождения указанной ссылки.
Затем последовательно обходишь найденное и заменяешь ссылки на новые.
8 -Chubik-
 
27.12.11
18:57
Спасибо, ушел копаться, если у кого появятся еще идеи, то буду благодарен и за них :)
9 -Chubik-
 
27.12.11
20:10
Вопрос остается открытым, тот метод который НайтиПоСсылкам, не прокатывает тоже или у меня фантазии не хватает как его прикрутить)
10 -Chubik-
 
27.12.11
20:56
НАйденныйКонтрагент = СсылкаНАйденногоКонтрагента.ПолучитьОбъект();
НайденныйКонтрагент.Б = Справочники.Б.НайтиПоКоду("00000190");
НайденныйКОнтрагент.Записать();

Вот решение проблем. Обработки пишут извращенцы, там эта же функция делается миллионом запросов и сотней условий...
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой