Имя: Пароль:
1C
1С v8
Ковертация данных. Как вызвать выполнение необходимого правила ?
0 PCcomCat
 
11.01.12
11:23
Доброго времени, уважаемые!

С НОВЫМ ГОДОМ! Исполнения желаний Вам!

Собственно вопрос:
В конфигурации-источнике у банковского счета владелец(реквизит ЮрФизЛицо) типа Справочник.ЮрЛицо либо Справочник.ФизЛицо, а в конфигурации-приемнике владелец типа Справочник.Контрагент. При этом я могу в конфигурации-источнике найти контрагента, у которого установлен в реквизите ЮрФизЛицо этот владелец банковского счета. Есть правило ковертации Контрагент->Контрагент.

Как в ПКС при выгрузке реквизита вызвать выполнение этого правила?



В ПСК при выгрузке ЮрФизЛицо->Владелец я пишу:

Справ = СоздатьОбъект("Справочник.Контрагенты");
Если Справ.НайтиПоРеквизиту("ЮрФизЛицо",ЮрФизЛицо)=1 тогда
  Контрагент = Справ.ТекущийЭлемент();

  //????? Здесь нужен вызов правила

КонецЕсли;
1 Rie
 
11.01.12
11:25
(0) Не понял, зачем там вызов правила.

Но на всякий случай - может, тебе нужно ВыгрузитьПоПравилу()?
2 Гефест
 
11.01.12
11:25
ВыгрузитьПоПравилу()
3 PCcomCat
 
11.01.12
11:31
Спасибо! Думаю, именно это и нужно.
4 Defender aka LINN
 
11.01.12
11:31
Неа. Не это ему нужно.
5 PCcomCat
 
11.01.12
11:32
(4)?
6 PCcomCat
 
11.01.12
11:36
Может и не это. Если я явно укажу правило, тогда перед его выполнением мне нужно заменить источник. А если не указывать правило, тогда его нужно вызвать.

Что подскажете?
7 Rie
 
11.01.12
11:36
(5)
Тебе, вероятно, нужно

Значение = Справ.ТекущийЭлемент();
8 PCcomCat
 
11.01.12
11:37
(7) Но это значение тоже нужно выгружать!
9 Rie
 
11.01.12
11:38
(8) Оно без тебя с этим справится.
10 PCcomCat
 
11.01.12
11:40
(9) Правило нужно при этом явно установить?
11 Rie
 
11.01.12
11:43
(10) У тебя в ПКС что насчёт правила сказано?
12 Fish
 
11.01.12
11:44
(10) поройся здесь http://www.mykod.info/primeri/ - там куча примеров по правилам обмена
13 Rie
 
11.01.12
11:45
+(11) Если что - можешь установить ИмяПКО. Но, насколько я понял тебя, в твоём случае это не надо.
14 PCcomCat
 
11.01.12
11:52
Я пишу В ПКС При выгрузке (при этом правило не указываю):

Справ = СоздатьОбъект("Справочник.Контрагенты");
Если Справ.НайтиПоРеквизиту("ЮрФизЛицо",Значение)=1 тогда
   Значение = Справ.ТекущийЭлемент();
Иначе
   Сообщить("Не найден контрагент для " + СокрЛП(Значение));
   Отказ=1;
КонецЕсли;    

А в режиме предприятия при выполнении выгрузки пишет ошибку:

Ошибка исполнения обработчика:  ПКС_ПриВыгрузке_БанковскиеСчета_ЮрЛиц_Владелец_Свойство10
 - Недостаточное число параметров передано при вызове функции/процедуры объекта

Что-то все-таки не так!
15 Гефест
 
11.01.12
11:58
(14) дык еще бы

НайтиПоРеквизиту(<?>,,);
Синтаксис:
НайтиПоРеквизиту(<ИмяРеквизита>,<Значение>,<ФлагГлобальногоПоиска>)
16 PCcomCat
 
11.01.12
11:58
Простите, туплю! Давно с 7.7 не работала.
17 Defender aka LINN
 
11.01.12
13:07
(14) Что это? О_о
18 Рэйв
 
11.01.12
13:17
(0)
Обработчики Правила Конвертации Свойств
ПередВыгрузкой

ИмяПКО - имя правила конвертации по которому производится преобразование значения свойства. Может быть выбрано в зависимости от каких=то условий
(С)Хрусталева
19 Рэйв
 
11.01.12
13:19
ай в копирайте ошибся :-)
(С)Бояркин и Филатов
20 Defender aka LINN
 
11.01.12
13:20
(18) Ну нафига? Смею заверить, КД с определением нужного правила справится в разы лучше аффтара. Достаточно на (14) посмотреть.
21 PCcomCat
 
11.01.12
15:38
Сработало как надо при данном коде в ПКС При выгрузке:

Справ = СоздатьОбъект("Справочник.Контрагенты");
Если Справ.НайтиПоРеквизиту("ЮрФизЛицо",Значение,1)=1 тогда
   Значение = Справ.ТекущийЭлемент();
   ВыгрузитьПоПравилу(Значение,,,, "Контрагенты");
Иначе
   Сообщить("Не найден контрагент для " + СокрЛП(Значение));
КонецЕсли;
22 PCcomCat
 
11.01.12
15:38
Спасибо за помощь!!!
23 Starhan
 
11.01.12
15:47
(12) там вроде б всего 5-6 примеров
24 Fish
 
11.01.12
15:49
(23) Чтобы понять основные принципы вполне достаточно. А разжёвано всё достаточно подробно, даже с картинками :))
25 Starhan
 
11.01.12
15:57
основные принципы я и так понял по помошнику в КД )
А вот как остатки с БП в УПП перекинуть приходиться разбиратся по примеру правил с 1.6 )