Имя: Пароль:
1C
1С v8
КД. Подмена ссылки при выгрузке документа.
0 Sиlьver
 
26.03.15
09:42
Коллеги, подскажите хороший вариант решения.
При выгрузке документа из УТ в БП нужно в случае, если контрагент - это физ. лицо, подменять ссылку Контрагента на значение Розничный покупатель.
Я сделал проверку в ПКС: если физлицо, тогда свойство не выгружать. Получается при выгрузке Контрагент пустой. А в ПКО ПослеЗагрузки я заполняю контрагента значением Розничный покупатель, если значение не заполнено. Тут минус в том, что при повторной выгрузке значение может не перезаполниться по моему правилу, т.к. реквизит уже будет заполнен ранее.
1 hawksib
 
26.03.15
09:46
для свойства поставить "получать значения из входящих данных" и в процедуре ПередВыгрузкой вставить проверку, если физЛицо тогда Значение = Розничный покупатель, если контрагент тогда Значение = Контрагент.
2 Alex S D
 
26.03.15
09:48
(1) а зачем получать из входящих данных?
3 Sиlьver
 
26.03.15
09:49
(1) А если у меня в базе-источники нет такой ссылки - Розничный покупатель? Нужно как-то через ИсходящиеДанные разруливать?
4 hawksib
 
26.03.15
09:49
(3) а в источнике какая ссылка у тебя? что выгружаться должно?
5 hawksib
 
26.03.15
09:50
(2) для порядку
6 Alex S D
 
26.03.15
09:50
Передавай через ПараметрыОбъекта признак розничного покупателя
7 Alex S D
 
26.03.15
09:50
(5) какого еще порядку?)) это лишнее
8 Sиlьver
 
26.03.15
09:53
(4) В источнике - док. Приходный кассовый ордер. В самом свойстве Контрагент: Вася, Петя, МарьИванна...
9 hawksib
 
26.03.15
09:56
(8) ты хочешь контрагента в физлицо что ли превратить?
10 hawksib
 
26.03.15
09:58
у МарьиИванны тип какой?
11 Sиlьver
 
26.03.15
09:59
(9) нет. В УТ есть куча контрагентов с типом: физ.лицо. Вот их мне нужно грузить в БП в виде одного контрагента Розничный покупатель. А если контрагент - юрлицо, то надо грузить как есть.
12 Sиlьver
 
26.03.15
09:59
(10) речь идет только о Контрагентах
13 hawksib
 
26.03.15
10:02
(11) дак это проще, В УТ создай розничного покупателя и если контрагент - это физлицо, тогда значение = ссылка на розничного покупателя
14 Sиlьver
 
26.03.15
10:03
(6) Можно чуть подробней, как это делается? и можно ли будет выгружать Контрагента как есть, если это юрлицо?
15 Sиlьver
 
26.03.15
10:04
(13) Придется наверно. Не хотелось бы делать поиск по наименованию в правилах, т.к. в случае задвойки в УТ, это же случится и в БП.
16 Godofsin
 
26.03.15
10:07
(13) Зачем лишние элементы?
(15) делай через (6)
17 Sиlьver
 
26.03.15
10:09
(16) Можно чуть подробней, как это делается? и можно ли будет выгружать Контрагента как есть, если это юрлицо?
18 Alex S D
 
26.03.15
10:15
Создаешь ПКС с галкой "ПередаватьДанныеВПараметр"

ПередВыгрузкой:

Если физлицо Тогда Значение = Код, наименование или уид..
Иначе
Отказ = Истина;
КонецЕсли;


В ПКО после загрузки:

Если ПараметрыОбъекта <> Неопределено Тогда

ТвойПризнакПоиска = ПараметрыОбъекта["НаименованиеПараметра"];

....
19 Sиlьver
 
26.03.15
10:22
А если это не физлицо, то получается не выгрузится реквизит. Тогда отдельное ПКО сделать?
20 Alex S D
 
26.03.15
10:27
ну ты же его будешь перезаписывать только если это физлицо. Стандартное правило же остается
21 Sиlьver
 
26.03.15
10:29
Т.е. мое ПКС будет идти после уже существующего. Сначала контрагент заполнится по типовым правилам, а потом, если нужно затрется моим значением. Я правильно понял?
Если да, то получится, что все лишние контрагенты будут записываться в базу БП.
22 Godofsin
 
26.03.15
10:30
(19) Ты не понял смысла. ПКС для контрагента оставляй как есть, ничего не меняя. Добавляешь параметр, в нем в при выгрузке анализируешь , кто там у тебя и вставляешь признак в параметр. В после загрузки ПКО читаешь параметр и если там признак физлица присваиваешь котрагенту розничного покупателя.
23 Godofsin
 
26.03.15
10:31
(21) Ну тогда в ПКС напиши чонибудь типа Если физЛицо то Значение ПустаяССылка
24 Alex S D
 
26.03.15
10:35
(21) в ПКС контрагента пропиши, если физлицо Тогда Отказ = Истина
25 Sиlьver
 
26.03.15
11:14
Спасибо, други! Все работает. Встрял правда немного на том, что ПараметрыОбъекта это соответствие и ПараметрыОбъекта["НаименованиеПараметра"] надо поправить на ПараметрыОбъекта.Получить("НаименованиеПараметра")