|
Конвертация данных 2.1 | ☑ | ||
---|---|---|---|---|
0
ilyayakimets
25.03.19
✎
17:31
|
Добрый день!
Есть две конфигурации, между которыми необходимо настроить обмен (ERP 2 для Беларуси и Моя Бухгалтерия 8 для Беларуси) В общем, пишу правила обмена для данных конфигураций и столкнулся со следующей проблемой: Необходимо из ERP в Бухгалтерию выгрузить справочник номенклатура. В ERP в данный справочник добавлены дополнительные реквизиты через "Дополнительные реквизиты и свойства" (В КД их видит как ТЧ справочника номенклатура). В бухгалтерии аналогичные реквизиты уже присутствуют как обычные реквизиты. Вопрос - Как выгрузить значение дополнительного реквизита ERP в обычный реквизит справочника Бухгалтерии? |
|||
1
mikecool
25.03.19
✎
17:33
|
добавить пкс , описать заполнение входящих данных
и это - разве не кд3 уже в ерп надо использовать? |
|||
2
Ёпрст
25.03.19
✎
17:33
|
Добавляешь реквизит в ПКС, в источнике пусто в приёмнике твой реквизит из бухни, в ПередВыгрузкой Значение = <тут значение из доп свойства>
усё |
|||
3
ilyayakimets
25.03.19
✎
17:37
|
(1) если бы Бухгалтерия для Беларуси не была таким старьём, использовал бы КД3, да и такой проблемы бы не возникло.
(2) Спасибо, сейчас попробую. |
|||
4
ilyayakimets
25.03.19
✎
17:42
|
(2) Может подскажете, как правильно будет обратить к значению из доп. свойств? КД только начинаю изучать..
|
|||
5
Мимохожий Однако
25.03.19
✎
17:46
|
||||
6
ilyayakimets
26.03.19
✎
09:00
|
Ап
|
|||
7
ilyayakimets
26.03.19
✎
09:06
|
(5) Не совсем то, что мне нужно.
|
|||
8
ilyayakimets
26.03.19
✎
15:17
|
Может быть есть какие примеры кода?
|
|||
9
hhhh
26.03.19
✎
15:43
|
(8) ну а какие могут быть нахрен примеры, перебираете циклом табчасть, находите нужную строчку, и выбираете из нее значение.
|
|||
10
ilyayakimets
26.03.19
✎
16:56
|
(9) Например, так:
ТЧ = Источник.ДополнительныеРеквизиты; Если ЗначениеЗаполнено(ТЧ) Тогда Для Каждого СтрокаТЧ Из ТЧ Цикл Значение = ТЧ[0].Свойство; КонецЦикла КонецЕсли ? |
|||
11
ilyayakimets
26.03.19
✎
17:08
|
Дело в том, что физически на форме это не ТабЧасть, а несколько дополнительных реквизитов, наверное поэтому просто обойти ТЧ и получить значение не получается.
Вот и спрашиваю, как грамотно поступить? |
|||
12
mistеr
26.03.19
✎
17:23
|
(11) КД оперирует со структурой хранения данных, а не с реквизитами на формах. Поэтому обращайся к ТЧ.
И лучше наверное это делать в ПередВыгрузкой в ПКО, т.к. нужно получить несколько реквизитов. И передавать через ВходящиеДанные. |
|||
13
hhhh
26.03.19
✎
17:39
|
(11) в КД вообще нет форм. А физически это как раз самая обыкновенная табчасть, а никакая не форма. Форма это всегда мираж, она никогда не бывает физически.
|
|||
14
ilyayakimets
27.03.19
✎
09:06
|
(12) (13) Я понимаю, к ТЧ и обращаюсь, однако что-то не выходит..
|
|||
15
ilyayakimets
27.03.19
✎
09:14
|
||||
16
mistеr
27.03.19
✎
10:22
|
(15) Значит, ВходящиеДанные не заполнены.
|
|||
17
ilyayakimets
27.03.19
✎
10:31
|
(16) В ПКО Номенклатура код:
Если ЗначениеЗаполнено(Источник.ДополнительныеРеквизиты) Тогда ТЧ = Источник.ДополнительныеРеквизиты; ВходящиеДанные = Новый Структура; ВходящиеДанные.Вставить("КодВоВнешнейИБ", ТЧ[0].ТекстоваяСтрока); КонецЕсли Надо ли что-то в ПКС писать для обработки данного кода? |
|||
18
mistеr
27.03.19
✎
10:36
|
(17) Убери Если. ВходящиеДанные должны быть всегда инициализированы, только могут быть пустые значения.
|
|||
19
Ёпрст
27.03.19
✎
10:36
|
(17)
в ПКС добавляешь новое свойство, источник - пусто, приемник - нужный реквизит шапки документа. в ПприВыгрузки пишешь Значение = <тут получение значения из доп свойства, хоть перебором, хоть запросом> усё. |
|||
20
Ёпрст
27.03.19
✎
10:38
|
* реквизит справочника (не шапки дока)
|
|||
21
ilyayakimets
27.03.19
✎
10:44
|
(18) Когда убираю "Если", то:
http://prntscr.com/n3hq1g "Табачные изделия" это Вид номенклатуры, у него не может быть ТЧ, поэтому нужно делать проверку на существование ТЧ. (Если я правильно понял) |
|||
22
Йохохо
27.03.19
✎
10:50
|
(21) напиши уже код во внешней обработке!!11 а потом перенеси как (19)
тч это метаданные, а не данные |
|||
23
mistеr
27.03.19
✎
10:50
|
(21) На скрине ясно написано, что "Табачные изделия" это Номенклатура
|
|||
24
ilyayakimets
27.03.19
✎
11:01
|
||||
25
Йохохо
27.03.19
✎
11:02
|
в своей, файл - новый
|
|||
26
ilyayakimets
27.03.19
✎
11:09
|
(25) Запросом получает значения доп.реквизитов:
http://prntscr.com/n3i2hc |
|||
27
ilyayakimets
27.03.19
✎
11:11
|
(26) Вопрос - как мне получить необходимое значение в КД?
|
|||
28
Йохохо
27.03.19
✎
11:12
|
(27) так же, запихни в запрос источник.ссылка
|
|||
29
Ёпрст
27.03.19
✎
11:13
|
(27) поставить условие в запрос только на нужное свойство
|
|||
30
ilyayakimets
27.03.19
✎
11:17
|
(28) Т.е. вот так?
ВЫБРАТЬ НоменклатураДополнительныеРеквизиты.Ссылка КАК Ссылка, НоменклатураДополнительныеРеквизиты.НомерСтроки КАК НомерСтроки, НоменклатураДополнительныеРеквизиты.Свойство КАК Свойство, НоменклатураДополнительныеРеквизиты.Значение КАК Значение, НоменклатураДополнительныеРеквизиты.ТекстоваяСтрока КАК ТекстоваяСтрока ИЗ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты ГДЕ Ссылка = &Ссылка И в параметр передавать Источник.Ссылка ? |
|||
31
Йохохо
27.03.19
✎
11:25
|
(30) еще (29) по красоте
|
|||
32
famnam
27.03.19
✎
11:31
|
както так:
-----ПередВыгрузкойОбъекта ИсходящиеДанные = Новый структура; Для каждого текСтрока из Источник.ДополнительныеРеквизиты Цикл ИсходящиеДанные.Вставить(Строка(текСтрока.Свойство), текСтрока.Значение; КонецЦикла -----ПередВыгрузкойСвойства Если ВходящиеДанные <> Неопределено Тогда ВходящиеДанные.Свойство("<ИмяСвойства>", Значение); КонецЕсли; |
|||
33
ilyayakimets
27.03.19
✎
11:32
|
||||
34
Ёпрст
27.03.19
✎
11:41
|
(33) как в (19)
на выходе будет Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Значение = Выборка.Значение; КонецЕсли; |
|||
35
Ёпрст
27.03.19
✎
11:42
|
в параметры запроса запихнешь Источник.ССылка и своё свойство
|
|||
36
Ёпрст
27.03.19
✎
11:42
|
усё
|
|||
37
ilyayakimets
27.03.19
✎
11:56
|
||||
38
ilyayakimets
27.03.19
✎
12:05
|
(37) Во внешней обработке всё как надо отрабатывает..
|
|||
39
Ёпрст
27.03.19
✎
12:28
|
(37) нам отсюда не видно, что сделал и где
|
|||
40
ilyayakimets
27.03.19
✎
12:31
|
(39) Вот:
http://prntscr.com/n3jb4b |
|||
41
hhhh
27.03.19
✎
12:35
|
(40) а почему правило стоит Номенклатура?
|
|||
42
ilyayakimets
27.03.19
✎
12:39
|
(41) А не должно? Это я когда-то что-то пытался..
|
|||
43
ilyayakimets
27.03.19
✎
12:43
|
(41) Действительно: убрал - выгрузило, что надо!
Ну и намучился я с этим.. Спасибо всем огромное! |
|||
44
ilyayakimets
27.03.19
✎
13:37
|
Ещё вопрос:
Делаю то же самое, но для другого реквизита - ФорматСигарет. В Источнике это строка, в Приемнике - СправочникСсылка.КлассТМЦ . Собственно ничего не передаётся, как тут можно поступить? http://prntscr.com/n3kdu3 |
|||
45
Ёпрст
27.03.19
✎
14:49
|
(44) делаешь ПКО - ФорматСигарет, источник - пусто, приёмник твой СправочникСсылка.КлассТМЦ
в ПКС добавляешь новый реквизит Наименование, источник пусто, приёмник Наименование, втыкаешь галку поиск, в настройках ПКО сымаешь галку поиска по внутр. идентификатору и оставляешь искать по полям поиска. в ПКС Наименование втыкаешь ПередВыгрузкой Значение = Источник; в ПКО номенклатура в нужном ПКС всё тоже самое что и в (19) только правило для реквизита ставишь созданное выше пко ФорматСигарет. Или.. можешь создать ПКО и юзать галку - получить из входящих данных, а в ПКО номенклатура , в ПКС реквизита в Значение = пихать структуру с данными |
|||
46
ilyayakimets
27.03.19
✎
15:01
|
(45) Так и сделал, однако когда подвязываю реквизиту правило - ошибка при выгрузке:
https://prnt.sc/n3ir3w |
|||
47
Мимохожий Однако
27.03.19
✎
15:04
|
(46) Покажи код, который прописал в ПКС и ПКО с указанной строкой из сообщения об ошибке.
|
|||
48
ilyayakimets
27.03.19
✎
15:11
|
||||
49
ilyayakimets
27.03.19
✎
15:15
|
(47) По всей видимости галку поиска сперва не снял, всё работает.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |