|
Конвертация данных : ПараметрОбъекта | ☑ | ||
---|---|---|---|---|
0
camomile
03.04.12
✎
08:56
|
Помогите разобраться как им пользоваться. Задача в том что необходимо по некоему ключу «документа источника» подобрать нужный «документ приемника» . «Документ источника» это реквизит таб части документа «корректировка записей регистров» и может соответствовать нескольким документам приемника, где «документ приемника» это реквизит документа «опер бух». Поскольку не сильна в конвертации решила что сделаю так - передам через параметр ключ и найду по ключу нужный документ. Передать то получается , но получаю «не определено».
В ПКС таб части для реквизита «Документ» указываю источник – «документ», передавать данные в параметр, имя параметра «ДокументСторно». Перед выгрузкой для ПКС пишу: значениеПараметра = ОбъектКоллекции.Документ.Номер; //здесь задаю ключ но для простоты примера пусть пока будет только номер ПередатьОдинПараметрВПриемник("ДокументСторно", значениеПараметра); После загрузки ПКО: Если ПараметрыОбъекта <> Неопределено тогда сообщить(ТипЗНЧ(ПараметрыОбъекта["ДокументСторно"])); //выдает : Не определено сообщить(ПараметрыОбъекта); //выдает : Соответствие ДокументСторно = ПараметрыОбъекта[ДокументСторно]; // выдает : Не определено Иначе ДокументСторно = Неопределено; КонецЕсли; Что не так ? почему «не определено»? |
|||
1
patapum
03.04.12
✎
09:03
|
с параметрами пока не работал, но сделать хочешь что-то непонятное. из строки табличной части формируешь ключ, и он может соответствовать нескольким документам в приемнике. и ты тогда пишешь в первый попавшийся или во все? или это разные строки могут соответствовать разным докам приемника?
в общем, понять бы чего ты хочешь, а там уже искать пути решения |
|||
2
camomile
03.04.12
✎
09:17
|
переношу "корректировка записей регистров" (БП 8.1) в "опер бух" (БП Корп 2.0), причем переносить следует для одного типа операции - сторно и одного типа документа источника (документ не типовой), этот документ из таб части ЗаполнениеДвижений в КЗР переносится в реквизит "документ" соответственно "Опер бух" приемника и имеет там составной тип "ПТиУ" и такой же тип как в источнике. поэтому решила формировать ключ - скажем структура "номер, дата , тип " и по этому ключу потом искать нужный документ приемника. может конечно есть и проще способ решения но конвертация для меня пока темный лес.
|
|||
3
patapum
03.04.12
✎
09:22
|
интересно, но сумбурно :)
то есть тебе надо реквизит таб. части перенести в реквизит документа? |
|||
4
camomile
03.04.12
✎
09:27
|
из таб часть в таб часть, согласна что кривовато, но это индивидуальный случай такой , таб часть КЗР "заполнение движение" и таб часть Опер бух "заполнение движений" , но реквизит "Документ" имеет разный тип в источнике и приемнике , в приемнике - составной, и строка всегда одна.
|
|||
5
patapum
03.04.12
✎
09:29
|
уходит он одним типом, а приходит одним - или разным, в зависимости от условий?
|
|||
6
camomile
03.04.12
✎
09:31
|
нет, точнее сказать реквизит и там и там имеет составной тип , но нужно переносить только одного типа документ и в применике он превращается либо в поступление товаров и услуг либо в "свой" тип - это не типовой документ (в источнике тип такой же).
|
|||
7
camomile
03.04.12
✎
09:33
|
(5) уходит одним , приходит таким же или другим. определяется в зависимости от условий.
|
|||
8
patapum
03.04.12
✎
09:35
|
а вычислить тип, в котором он придет, в источнике можно? или только в приемнике?
|
|||
9
Aprobator
03.04.12
✎
09:36
|
вообще то в 8 ке уже есть в ПКС галочка - куда передавать в приемник ил в параметр. Если из 8 - ки в 8 - ку. Вот какое значение в конечном счете будет в параметрах объекта при выгрузке туда данных из коллекции - вопрос. Поскольку параметры объекта привязаны к объекту целиком, а не к строке коллекции.
|
|||
10
camomile
03.04.12
✎
09:38
|
(9) вот я эту галочку использую, ставлю передавать в параметр и пишу имя параметра перед выгрузкой ПКС пишу либо так
значение = ОбъектКоллекции.Документ.Номер; //здесь задаю ключ но для простоты примера пусть пока будет только номер либо так ПередатьОдинПараметрВПриемник("ДокументСторно", значениеПараметра); но в любом случае получаю ничего. |
|||
11
camomile
03.04.12
✎
09:39
|
я и хочу понять как использовать эту галочку , информации по ней совсем мало, и не понятно как передавать ПараметрОбъекта
|
|||
12
Aprobator
03.04.12
✎
09:41
|
ПараметрОбъекта, а не строки какой то коллекции внутри его.
|
|||
13
patapum
03.04.12
✎
09:42
|
с параметром понятно - если ты передаешь в параметр, то в приемнике в параметрах объекта будет переданное тобой значение. но объекта, а не строки ТЧ. можно ли передать в параметр реквизит строки ТЧ, и что будет - непонятно. можно в разных обработчиках сообщалок наставить и поотслеживать. но при том что ты мало знаешь о конвертации, думаю, пока не для тебя путь
|
|||
14
Aprobator
03.04.12
✎
09:43
|
имхо, логичнее сделать переадресовку из ПКС элемента коллекции в нужное ПКО и уже там юзать параметр.
|
|||
15
patapum
03.04.12
✎
09:43
|
ты бы лучше задачу изложила подробнее, в конвертации почти всегда можно больше одного пути придумать
|
|||
16
Рыцарь
03.04.12
✎
09:45
|
Может лучше в зависимости от типа источника соответствующее правило предлагать?
|
|||
17
СноваЗдорова
03.04.12
✎
09:47
|
Вообще непонятно, что хочет сделать (0)
|
|||
18
patapum
03.04.12
✎
09:48
|
(16) там не в зависимости от типа источника, там еще от каких то условий зависит. если их можно определить на стороне источника, то так и надо сделать. но развести девушку на изложить задачу подробно пока не получается :)
|
|||
19
camomile
03.04.12
✎
10:00
|
я не знаю куда еще подробей написать :), значит так , есть в БП8.1 документ корректировка с операцие сторно документа "движения товаров" (не типовой документ) , эти сторно корректировки нужно перетащить в БП2.0 в документ "Операция бух" , документ "Движения товаров" в источнике формирует движения в РН "Движения товаров" по партиям, в применике ведется учет по партиям, но партионные учеты почему то разные! так вот мне поставили задачу перетащить сторно из источника в приемник так чтобы сторнируемый документ из источника встал в сторнируемый документ "Операция бух" приемника а потом произошло заполнение движений документа "Операция бух" по указанному документу. при этом в источнике сторно = один тип документа а в приемнике это может быть либо "поступлдение товаров и услуг" либо такой же тип "Движения товаров"
|
|||
20
camomile
03.04.12
✎
10:05
|
"но при том что ты мало знаешь о конвертации, думаю, пока не для тебя путь" , ну вы уж не думайте только что совсем дуб товарищ, я способная , только конвертация такой лес , тяжеловато для нестандартных задач освоить сходу. поэтому, прошу, подсказывайте если есть идеи как правильно сделать, а я уж разберусь
|
|||
21
patapum
03.04.12
✎
10:11
|
на (8) ответь?
(20) я тоже не дуб, а гений, как и ты :). но КД осваивал не за один раз, и с большими затратами времени и нервов, с матами-перематами когда доходило. и пока до конца не освоил. |
|||
22
camomile
03.04.12
✎
10:19
|
(8) можно, вообще он тип один - и в приемнике такой тип тоже есть. я пробовала в ПКС этого реквизита указывать источник "документ", приемник "документ", но в приемнике получаю всеравно пусто - брала типовое правило из БП81-БП20 + добавляла ПКО для нового документа этого типа.
|
|||
23
patapum
03.04.12
✎
10:19
|
как самый топорный вариант, делаешь два правила конвертации, и соответственно, два правила выгрузки. зарубаешь ненужное, если не подошло по условиям: либо в ПВД при выгрузке - если можно определить на стороне источника (в этом случае изящнее пользоваться ВыгрузитьПоПравилу, но я пока не умею), либо в ПКО перед загрузкой - если только в приемнике.
|
|||
24
camomile
03.04.12
✎
10:26
|
(23) зарубаю ненужное я сейчас в ПКО перед выгрузкой, но пожалуй будет правильнее еще на этапе ПВД, а зачем по два правила я не поняла?
|
|||
25
Рыцарь
03.04.12
✎
10:29
|
(22) Возможно стоит попробовать так: в ПКС источник "документ", приемник "документ", и в ПриВыгрузкой что то наподобие следующего:
Если ТипЗнч(Значение) = Тип("Документ1типа") Тогда ИмяПКО = "Наименование1правила"; ИначеЕсли ТипЗнч(Значение) = Тип("Документ2типа") Тогда ИмяПКО = "Наименование2правила"; КонецЕсли; |
|||
26
camomile
03.04.12
✎
10:33
|
(22) так не получается, т.к. документ в приемнике уже есть, но его нужно найти либо среди документов "поступление.." либо среди документов "Движения.." и вставить его в в реквизит таб части "документ" пришедшедшего "Опер бух"
|
|||
27
camomile
03.04.12
✎
10:33
|
ой, (22) = (25)
|
|||
28
patapum
03.04.12
✎
10:34
|
(24) два правила - очень просто. в одном выгружаешь по одному варианту, в другом - по другому. а тот вариант, который неправильный - убиваешь. но Рыцарь вариант лучше предлагает
|
|||
29
patapum
03.04.12
✎
10:35
|
(25) правило не предполагает всегда создание нового элемента. если он по полям поиска нашелся док, то он и не будет создаваться, а подцепится найденный
|
|||
30
patapum
03.04.12
✎
10:36
|
(25) = (27) :)
|
|||
31
camomile
03.04.12
✎
10:37
|
начинаю врубаться , но тогда не понимаю как формировать правила . допустим делаю как в (25) . пусть будет правило ПКО1 кот будет искать по условиям среди докмуентов "поступление", как передать туда эти условия и как вытащить от туда найденный документ - не понимаю.
|
|||
32
camomile
03.04.12
✎
10:38
|
ок, попробую что то сделать как вы сказали , может по ходу дела пойму , но я уже 4й день с этим ковыряюсь и тоже с матами, тяжело разобраться что как куда передавать и как получать...
|
|||
33
camomile
03.04.12
✎
10:47
|
вот что, вся загвоздка в том что условия какой документ будет в приемнике - появляются только в приемнике
|
|||
34
patapum
03.04.12
✎
10:47
|
смотри, ты передаешь объект, в нем есть реквизит объекта (или строки ТЧ, неважно). для ПКС указано ПКО, по которому выгружается этот реквизит. начинается выгрузка объекта, соответствующего реквизиту. при загрузке - загружается объект. смотрит - надо реквизит загрузить. читает данные объекта, соответствующего реквизиту, из файла. смотрит по полям поиска (или ссылке, если задано) - а есть ли уже такой? если есть, берет его, подставляет в качестве реквизита. если нет, создает и подставляет.
|
|||
35
patapum
03.04.12
✎
10:51
|
если (33) тогда труднее. тогда кроме моего варианта с двумя ПКО я не знаю как сделать.
ты создаешь два ПКО для Сторно. в одном реквизит документ преобразуется в ПТиУ, в другом - в другой тип. то есть, каждое твое сторно ты выгрузишь два раза. но в приемнике ты один из этих пришедших объектов зарубишь, как неподходящий |
|||
36
camomile
03.04.12
✎
10:55
|
вот если (35), то зарубать не нужный вариант где? в обработчике конвертации - перед загрузкой объекта? перед конвертацией объекта? или еще где то?
|
|||
37
patapum
03.04.12
✎
10:57
|
в ПКО, ПередЗагрузкой, если не ошибаюсь
|
|||
38
patapum
03.04.12
✎
10:58
|
в ПКО твоего Сторно, а не реквизита
|
|||
39
camomile
03.04.12
✎
11:00
|
я поняла что сторно, т.е в перед загрузкой пишу типа Отказ = истина и он не загрузит?
|
|||
40
camomile
03.04.12
✎
11:01
|
что то начало проявляться , попробую сделать , спасибо огромное! но мне кажеться я еще вернусь :)
|
|||
41
patapum
03.04.12
✎
12:23
|
кстати то, что я тебе посоветовал, похоже работать не будет... было написано разве что с расчетом на реквизит документа, не ТЧ.
и чтобы было не так топорно, да еще и работало, надо сделать так: ПВД и ПКО на Сторно - одно. но в нем два ПКС на твой один реквизит ТЧ, одно с одним типом в приемнике, другое с другим. и одно из этих ПКС надо отключать перед его загрузкой |
|||
42
camomile
05.04.12
✎
09:41
|
с условием в (33) я наврала, нашла как выцепить какой тип будет в приемнике еще на этапе выгрузки. Решила задачу так (может кому то начинающему в КД поможет привести мозг в порядок) : в ПКС ТЧ реквизита "Документ" при выгрузке указываю в зависиомти от условия ПКО
Если ОбъектКоллекции.Документ.ВидОперации = Перечисления.ВидыОперацийДвиженияТоваров.ВозвратПоставщику Тогда ИмяПКО = "ДвиженияТоваровВозврат"; Иначе ИмяПКО = "ПоступлениеТоваровУслуг"; КонецЕсли; по сути все что мне нужно сделать это найти документ который уже есть в приемнике и подставить его в ТЧ загружаемого объекта. В первом случае документы источника и приемника идентичны а во втором случае искать нужно по такому ключу "организация, контрагент, дата, номер", где номер -это номер документа источника другого типа и в приемнике он указан в комментарии, поиск делаю след. образом: в ПКО "ПоступлениеТоваровУслуг" ставлю галки Поиск на нужных мне реквизитах, правила всех остальных реквизитах отключаю , в обработчике "поля поиска" прописываю варианты поиска нужного мне документа запросом, если ничего не нашел то ПрекратитьПоиск = истина, если нашел то также прекращаю поиск СсылкаНаОбъект = найденныйДокумент. Далее, в "после загрузки" уже в КЗР, прописываю заполнение движений. и все работает, оляля! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |