|
Сложная ситуация при создании правил обмена | ☑ | ||
---|---|---|---|---|
0
Rollam
27.01.15
✎
13:06
|
Возникла необходимость написания правил обмена БП3.0->УТ11.
Столкнулся с моментом, при котором Объект-Источник имеет табличную часть, на основании которой нужно создать документы в Базе-Приемнике, чтобы потом ссылками на эти документы заполнить табличную часть в Объекте-Приемнике. Выгружаю реквизиты табличной части Объекта-Приемника в параметры, но не совсем представляю себе, можно ли из них при загрузке в Базу-Приемник составить ТаблицуЗначений, на основании которой можно формировать документы, или есть другой способ. Например, создать ТаблицуЗначений перед выгрузкой и работать уже с ней при загрузке, а если так, то как ее передать в обработчик загрузки? В голове возник так же вариант создать дополнительные правила для этих двух документов, но в Конвертации, вроде, нельзя создать правила "ТабличнаяЧастьОбъекта->Объект". В Конвертации и правилах обмена я вообще полный нуб, поэтому даже не знаю, каким методом вообще реально воспользоваться. |
|||
1
Godofsin
27.01.15
✎
13:09
|
Не могу понять, в чем проблема-то?
|
|||
2
Godofsin
27.01.15
✎
13:10
|
Ну и сопоставь ТЧ документов и укажи нужное тебе ПКО для ссылок, делов-то...
|
|||
3
Godofsin
27.01.15
✎
13:10
|
Зачем параметры...
|
|||
4
Rollam
27.01.15
✎
13:12
|
(2) ТЧ Объекта-Источника содержит кучу реквизитов, а ТЧ Объекта-Приемника всего два: Документ и Сумма. Получается, нужно на основании ТЧ Объекта-Источника создать документы и указать их в ТЧ Объекта-Приемника.
|
|||
5
Godofsin
27.01.15
✎
13:13
|
(4) В сопоставлении оставляешь приемник пустым, а в при выгрузке пишешь какой хочешь алгоритм. Твои реквизиты будут доступны тебе через ОбъектКоллекции
|
|||
6
Godofsin
27.01.15
✎
13:13
|
Тьфу, не приемник, а источник
|
|||
7
Godofsin
27.01.15
✎
13:14
|
Для ПКО создания документа можно воспользоваться таблицейЗначений
|
|||
8
Rollam
27.01.15
✎
13:16
|
(6) Приемник и должен пустовать вроде. Я его потом программно ссылками буду заполнять.
|
|||
9
Rollam
27.01.15
✎
13:17
|
(5) ОбъектКоллекции доступен ПриЗагрузке или ПослеЗагрузки?
|
|||
10
Godofsin
27.01.15
✎
13:21
|
Реквизитов ТЧ источника хватает для создания документа?
|
|||
11
Rollam
27.01.15
✎
13:23
|
(10) Да.
|
|||
12
Godofsin
27.01.15
✎
13:28
|
(11) ОбъектКоллекции доступен и в ПередВыгрузкой. В ПередВыгрузкой пишешь что-то вроде:
ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Дата"); ТЗ,Колонки.Добавить("Номер"); ..... ..... СтрокаТз = ТЗ.Добавить(); СтрокаТЗ.Дата = ОбъектКоллекции.Дата; СтрокаТЗ.Номер = ОбъектКоллекции.Номер; .... .... .... Значение = ТЗ; Для это реквизита определяешь тип приемника и ПКО, которое, ессесно, должно иметь в себя свойства созданной тобой ТЗ. Вместо ТЗ можно структуру использовать. |
|||
13
Rollam
27.01.15
✎
13:33
|
(12) Ок. Это должно срабатывать в ПередВыгрузкой Объекта-Источника, или нужно в свойствах Объекта добавить свойство для ТЧ-Источника (без ТЧ-Приемника), где это будет происходить. Я вот этого чего-то не понял(
|
|||
14
Godofsin
27.01.15
✎
13:39
|
(13) Да, для ПКО объекта источника ты создаешь ПКС ТЧ источника, которая будет содержать в себе 2 строки: документ и сумма. Откуда там сумма берется, я не в курсе, если она есть в ТЧ источника, значит просто сопоставляешь реквизит источника и реквизит приемника. Для строки "Документ" источник оставляешь пустой, в ПередВыгрузкой этого свойства пишешь (12), приемник указываешь тип документов, которые должны создаться и указываешь ПКО для этого типа документов.
|
|||
15
Godofsin
27.01.15
✎
13:43
|
(14) "указываешь тип документов, которые должны создаться"
Поправочка, не тип, а реквизит ТЧ приемника. |
|||
16
Rollam
27.01.15
✎
13:54
|
(14) Это сумма созданного документа.
|
|||
17
Rollam
27.01.15
✎
13:54
|
(15) Сейчас попробуем.
|
|||
18
Rollam
27.01.15
✎
14:05
|
(15) Вышло как-то так:
Объект-Источник = ТабличнаяЧасть "Товары". Объект-Приемник = ТабличнаяЧасть "ЗакупкаЗаНаличныйРасчет". Никакие свойства у них не синхронизированы. Текст ПередВыгрузкой: ТаблицаТоваров = Новый ТаблицаЗначений; ТаблицаТоваров.Колонки.Добавить("ПредъявленСФ"); ТаблицаТоваров.Колонки.Добавить("НомерСФ"); ТаблицаТоваров.Колонки.Добавить("ДатаСФ"); ТаблицаТоваров.Колонки.Добавить("НомерВходящегоДокумента"); ТаблицаТоваров.Колонки.Добавить("ДатаВхоящегоДокумента"); ТаблицаТоваров.Колонки.Добавить("Поставщик"); ТаблицаТоваров.Колонки.Добавить("Номенклатура"); ТаблицаТоваров.Колонки.Добавить("Количество"); ТаблицаТоваров.Колонки.Добавить("НомерГТД"); ТаблицаТоваров.Колонки.Добавить("Сумма"); ТаблицаТоваров.Колонки.Добавить("СтавкаНДС"); ТаблицаТоваров.Колонки.Добавить("СуммаНДС"); ТаблицаТоваров.Колонки.Добавить("Склад"); Для каждого Строка из Источник.Товары Цикл НоваяСтрока = ТаблицаТоваров.Добавить(); НоваяСтрока.ПредъявленСФ = Строка.ПредъявленСФ; НоваяСтрока.НомерСФ = Строка.НомерСФ; НоваяСтрока.ДатаСФ = Строка.ДатаСФ; НоваяСтрока.НомерВходящегоДокумента = Строка.НомерВходящегоДокумента; НоваяСтрока.ДатаВхоящегоДокумента = Строка.ДатаВхоящегоДокумента; НоваяСтрока.Поставщик = ПСтрока.Поставщик; НоваяСтрока.Номенклатура = Строка.Номенклатура; НоваяСтрока.Количество = Строка.Количество; НоваяСтрока.НомерГТД = Строка.НомерГТД; НоваяСтрока.Сумма = Строка.Сумма; НоваяСтрока.СтавкаНДС = Строка.СтавкаНДС; НоваяСтрока.СуммаНДС = Строка.СуммаНДС; НоваяСтрока.Склад = Строка.Склад; КонецЦикла; Значение = ТаблицаТоваров; |
|||
19
SleepyHead
гуру
27.01.15
✎
14:08
|
(0) Не вижу ничего сложного. Опиши ПКО без источника, но с приемником. в ПВД установи произвольный алгоритм и заполни коллекцию ВыборкаДанных, каждый элемент которой будет иметь такую же структуру, как приемник. Наслаждайся.
|
|||
20
SleepyHead
гуру
27.01.15
✎
14:20
|
(18) открой для себя ЗаполнитьЗначенияСвойств()
:) Для каждого Строка из Источник.Товары Цикл НоваяСтрока = ТаблицаТоваров.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка); КонецЦикла; |
|||
21
Rollam
27.01.15
✎
14:58
|
(20) ОООУ... :)
|
|||
22
Rollam
27.01.15
✎
15:02
|
(15) А как теперь обратиться к таблице При/После Загрузки?
|
|||
23
SleepyHead
гуру
27.01.15
✎
15:09
|
(22) А нафига тебе к ним обращаться? Ты главное структуру приемника опиши и в ПВД заполни коллекцию ВыборкаДанных.
|
|||
24
Rollam
27.01.15
✎
15:12
|
(23) ТабличнаяЧасть Объекта-Приемника не имеет этих реквизитов, мне нужно создать документы по данным, введеным в созданную ТаблицуЗначений.
|
|||
25
SleepyHead
гуру
27.01.15
✎
15:17
|
(24) Пока ты не поймешь, что такое ПВД с произвольным алгоритмом, не видать тебе удачи.
|
|||
26
Rollam
27.01.15
✎
15:20
|
(25) При выгрузке я могу указать любое значение, да. Или имеется в виду нечто иное?
|
|||
27
Rollam
27.01.15
✎
16:58
|
(25) Если я создам правила для табличной части Объекта-Приемника , не указывая в соответствии табличную часть Объекта-Источника, и заброшу сформированную программно таблицу в переменную КоллекцияЗначений или ВыборкаДанных, я все равно не смогу обратиться к этой переменной при загрузке.
Я пытался закинуть всю табличную часть в параметр разом, но при загрузке этот параметр не определяется, хотя ошибок нет. |
|||
28
Rollam
27.01.15
✎
17:23
|
(25) Я создал произвольный алгоритм. ТабличнаяЧасть-Источник не указана. Структуру приемника я описал параметрами, где каждый параметр заполняется перед выгрузкой:
Значение = ОбъектКоллекции."ИмаРеквизитаТЗ"; |
|||
29
Rollam
27.01.15
✎
17:57
|
Короче, передать табличную часть, не имея Приемник, невозможно?
|
|||
30
SUA
27.01.15
✎
18:02
|
ТЧ в параметр прекрасно передается
а при загрузке параметр разворачивается кодом в документы как угодно |
|||
31
Rollam
27.01.15
✎
18:04
|
(30) Я пытался. У объекта после загрузки вообще параметры не определены. Может, нужно сделать что-то особое?
|
|||
32
hhhh
27.01.15
✎
18:07
|
(31) после загрузки обращаешься к переменной Объект. Не надо никаких параметров
|
|||
33
SUA
27.01.15
✎
18:11
|
(31) ПараметрыОбъекта что? - RTFM
Обработчики "Правила конвертации объектов" После загрузки Условия возникновения события Только для платформы V8. Событие выполняется после прочтения и установки атрибутов объекта из файла, но до его записи в информационную базу. Возможна модификация загруженного объекта. Параметры: Отказ - Булево - Если Истина, то объект загружен не будет. Объект - Произвольный - загруженный объект. Ссылка – Произвольный – ссылка на найденный объект в информационной базе. ОбъектНайден - Булево. Если значение параметра равно Ложь, то объект не идентифицирован, то есть не найден в информационной базе ПараметрыОбъекта - либо Неопределено либо Соответствие, в котором хранятся дополнительные параметры переденные для данного объекта из источника в приемник. Если параметров передано не было, то ПараметрыОбъекта = Неопределено. |
|||
34
Rollam
28.01.15
✎
09:06
|
(33) При попытке передать ТЧ как параметр ПараметрыОбъекта = Неопределено.
|
|||
35
Alex S D
28.01.15
✎
09:21
|
тч как параметр , содержащую ссылочные значения ты не передаешь. Передавать нужно в виде ХранилищаЗначений
|
|||
36
Alex S D
28.01.15
✎
09:22
|
ну и опять же. Нужно передавать уиды вместо ссылок
|
|||
37
Godofsin
28.01.15
✎
09:33
|
А что типа мой вариант не сработал? Вроде самый простой...
|
|||
38
Rollam
28.01.15
✎
09:35
|
(37) Я создал таблицу значений и передал реквизиты строк в параметры (если я правильно все понял, ибо куда их кидать еще неясно, ведь таких полей в приемнике не существует), но получить значения в приемнике все так же не смог.
|
|||
39
hhhh
28.01.15
✎
09:45
|
(38) так только примитивные типы можно передать: строки, числа. ПРавильней делать ак SleepyHead сказал, в (19)
|
|||
40
Rollam
28.01.15
✎
09:50
|
(39) Я плохо понял, зачем мне ВыборкаДанных со структурой Приемника, если структура Приемника мне изначально не подходит.
|
|||
41
Godofsin
28.01.15
✎
10:05
|
(38) Покажи скрины где ты что там прописал.
|
|||
42
hhhh
28.01.15
✎
10:05
|
(40) как не подходит структура приемника? Вы ведь в нее грузите. И другой структуры нет.
|
|||
43
Rollam
28.01.15
✎
10:16
|
||||
44
hhhh
28.01.15
✎
10:19
|
(43) ну, ставите галочку "Получить из входящих данных"?
|
|||
45
Rollam
28.01.15
✎
10:20
|
(42) Если бы в ТабличнойЧасти Приемника были необходимые поля, которых нет в Источнике, проблем бы у меня не возникло. Ситуация же обратная. ТабличнаяЧасть источника имеет кучу реквизитов, а у ТЧ Приемника их всего два. В данном случае мне нужно на основании данных ТЧ Источника создать документ (или несколько, все зависит от данных ТЧ).
|
|||
46
Godofsin
28.01.15
✎
10:22
|
(43) Не там ты пишешь
|
|||
47
Godofsin
28.01.15
✎
10:22
|
Не у самой ТЧ писать надо, а у РЕКВИЗИТА ТЧ
|
|||
48
Godofsin
28.01.15
✎
10:23
|
+(47) Правило конвертации не указал
|
|||
49
Rollam
28.01.15
✎
10:33
|
(47) Тоже пробовал. Сек.
|
|||
50
Rollam
28.01.15
✎
10:36
|
||||
51
Godofsin
28.01.15
✎
10:38
|
(50) рукалицо*
|
|||
52
Rollam
28.01.15
✎
10:40
|
(51) Я понял слишком буквально фразу "реквизит ТЧ"? =(
|
|||
53
Godofsin
28.01.15
✎
10:43
|
(52) Ща...
|
|||
54
hhhh
28.01.15
✎
10:46
|
(52) вообще-то вам говорили выборку данных делать в ПВД. Это Правило выборки данных. А вы куда зафигачили? В ПКС?
|
|||
55
hhhh
28.01.15
✎
10:47
|
Правило выгрузки данных
|
|||
56
Godofsin
28.01.15
✎
10:48
|
||||
57
Godofsin
28.01.15
✎
10:48
|
А теперь внимательно сравнивай свои скрины и мои
|
|||
58
Godofsin
28.01.15
✎
10:49
|
Внимание на ПКС "ТипЦенРозничнойТорговли"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |