Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Конвертация данных 2.1

Конвертация данных 2.1
Я
   ilyayakimets
 
25.03.19 - 17:31
Добрый день!
Есть две конфигурации, между которыми необходимо настроить обмен (ERP 2 для Беларуси и Моя Бухгалтерия 8 для Беларуси)
В общем, пишу правила обмена для данных конфигураций и столкнулся со следующей проблемой:
Необходимо из ERP в Бухгалтерию выгрузить справочник номенклатура. В ERP в данный справочник добавлены дополнительные реквизиты через "Дополнительные реквизиты и свойства" (В КД их видит как ТЧ справочника номенклатура).
В бухгалтерии аналогичные реквизиты уже присутствуют как обычные реквизиты.
Вопрос - Как выгрузить значение дополнительного реквизита ERP в обычный реквизит справочника Бухгалтерии?
 
 
   mikecool
 
1 - 25.03.19 - 17:33
добавить пкс , описать заполнение входящих данных
и это - разве не кд3 уже в ерп надо использовать?
   Ёпрст
 
2 - 25.03.19 - 17:33
Добавляешь реквизит в ПКС, в источнике пусто в приёмнике твой реквизит из бухни, в ПередВыгрузкой Значение = <тут значение из доп свойства> 
усё
   ilyayakimets
 
3 - 25.03.19 - 17:37
(1) если бы Бухгалтерия для Беларуси не была таким старьём, использовал бы КД3, да и такой проблемы бы не возникло.
(2) Спасибо, сейчас попробую.
   ilyayakimets
 
4 - 25.03.19 - 17:42
(2) Может подскажете, как правильно будет обратить к значению из доп. свойств? КД только начинаю изучать..
   МимохожийОднако
 
5 - 25.03.19 - 17:46
   ilyayakimets
 
6 - 26.03.19 - 09:00
Ап
   ilyayakimets
 
7 - 26.03.19 - 09:06
(5) Не совсем то, что мне нужно.
   ilyayakimets
 
8 - 26.03.19 - 15:17
Может быть есть какие примеры кода?
   hhhh
 
9 - 26.03.19 - 15:43
(8) ну а какие могут быть нахрен примеры, перебираете циклом табчасть, находите нужную строчку, и выбираете из нее значение.
   ilyayakimets
 
10 - 26.03.19 - 16:56
(9) Например, так:

ТЧ = Источник.ДополнительныеРеквизиты;
Если ЗначениеЗаполнено(ТЧ) Тогда
    Для Каждого СтрокаТЧ Из ТЧ Цикл 
        Значение =  ТЧ[0].Свойство;
    КонецЦикла
КонецЕсли

?
   ilyayakimets
 
11 - 26.03.19 - 17:08
Дело в том, что физически на форме это не ТабЧасть, а несколько дополнительных реквизитов, наверное поэтому просто обойти ТЧ и получить значение не получается.
Вот и спрашиваю, как грамотно поступить?
   mistеr
 
12 - 26.03.19 - 17:23
(11) КД оперирует со структурой хранения данных, а не с реквизитами на формах. Поэтому обращайся к ТЧ.

И лучше наверное это делать в ПередВыгрузкой в ПКО, т.к. нужно получить несколько реквизитов. И передавать через ВходящиеДанные.
   hhhh
 
13 - 26.03.19 - 17:39
(11) в КД вообще нет форм. А физически это как раз самая обыкновенная табчасть, а никакая не форма. Форма это всегда мираж, она никогда не бывает физически.
   ilyayakimets
 
14 - 27.03.19 - 09:06
(12) (13) Я понимаю, к ТЧ и обращаюсь, однако что-то не выходит..
   ilyayakimets
 
15 - 27.03.19 - 09:14
   mistеr
 
16 - 27.03.19 - 10:22
(15) Значит, ВходящиеДанные не заполнены.
   ilyayakimets
 
17 - 27.03.19 - 10:31
(16) В ПКО Номенклатура код:
Если ЗначениеЗаполнено(Источник.ДополнительныеРеквизиты) Тогда
    ТЧ = Источник.ДополнительныеРеквизиты;
    ВходящиеДанные = Новый Структура;
    ВходящиеДанные.Вставить("КодВоВнешнейИБ", ТЧ[0].ТекстоваяСтрока);    
КонецЕсли

Надо ли что-то в ПКС писать для обработки данного кода?
   mistеr
 
18 - 27.03.19 - 10:36
(17) Убери Если. ВходящиеДанные должны быть всегда инициализированы, только могут быть пустые значения.
   Ёпрст
 
19 - 27.03.19 - 10:36
(17)

в ПКС добавляешь новое свойство, источник - пусто, приемник - нужный реквизит шапки документа.
в ПприВыгрузки пишешь Значение = <тут получение значения из доп свойства, хоть перебором, хоть запросом>
усё.
   Ёпрст
 
20 - 27.03.19 - 10:38
* реквизит справочника (не шапки дока)
   ilyayakimets
 
21 - 27.03.19 - 10:44
(18) Когда убираю "Если", то:
http://prntscr.com/n3hq1g
"Табачные изделия" это Вид номенклатуры, у него не может быть ТЧ, поэтому нужно делать проверку на существование ТЧ. (Если я правильно понял)
   Йохохо
 
22 - 27.03.19 - 10:50
(21) напиши уже код во внешней обработке!!11 а потом перенеси как (19)
тч это метаданные, а не данные
   mistеr
 
23 - 27.03.19 - 10:50
(21) На скрине ясно написано, что "Табачные изделия" это Номенклатура
   ilyayakimets
 
24 - 27.03.19 - 11:01
   Йохохо
 
25 - 27.03.19 - 11:02
в своей, файл - новый
   ilyayakimets
 
26 - 27.03.19 - 11:09
(25) Запросом получает значения доп.реквизитов:
http://prntscr.com/n3i2hc
   ilyayakimets
 
27 - 27.03.19 - 11:11
(26) Вопрос - как мне получить необходимое значение в КД?
   Йохохо
 
28 - 27.03.19 - 11:12
(27) так же, запихни в запрос источник.ссылка
   Ёпрст
 
29 - 27.03.19 - 11:13
(27) поставить условие в запрос только на нужное свойство
   ilyayakimets
 
30 - 27.03.19 - 11:17
(28) Т.е. вот так?

ВЫБРАТЬ
                          НоменклатураДополнительныеРеквизиты.Ссылка КАК Ссылка,
                          НоменклатураДополнительныеРеквизиты.НомерСтроки КАК НомерСтроки,
                          НоменклатураДополнительныеРеквизиты.Свойство КАК Свойство,
                          НоменклатураДополнительныеРеквизиты.Значение КАК Значение,
                          НоменклатураДополнительныеРеквизиты.ТекстоваяСтрока КАК ТекстоваяСтрока
                    ИЗ
                          Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
                    ГДЕ Ссылка = &Ссылка

И в параметр передавать Источник.Ссылка ?
 
 
   Йохохо
 
31 - 27.03.19 - 11:25
(30) еще (29) по красоте
   famnam
 
32 - 27.03.19 - 11:31
както так:

-----ПередВыгрузкойОбъекта
ИсходящиеДанные = Новый структура;
Для каждого текСтрока из Источник.ДополнительныеРеквизиты  Цикл
 ИсходящиеДанные.Вставить(Строка(текСтрока.Свойство), текСтрока.Значение;
КонецЦикла

-----ПередВыгрузкойСвойства
Если ВходящиеДанные <> Неопределено Тогда
 ВходящиеДанные.Свойство("<ИмяСвойства>", Значение);
КонецЕсли;
   ilyayakimets
 
33 - 27.03.19 - 11:32
(31) Как-то так:
http://prntscr.com/n3ie1b

Осталось понять, как этот результат вставить в реквизит)
   Ёпрст
 
34 - 27.03.19 - 11:41
(33) как в (19)


на выходе будет
 Выборка = Запрос.Выполнить().Выбрать();
 Если Выборка.Следующий() Тогда
      Значение = Выборка.Значение;
 КонецЕсли;
   Ёпрст
 
35 - 27.03.19 - 11:42
в параметры запроса запихнешь Источник.ССылка и своё свойство
   Ёпрст
 
36 - 27.03.19 - 11:42
усё
   ilyayakimets
 
37 - 27.03.19 - 11:56
(36) Вроде бы сделал, но:

http://prntscr.com/n3ir3w
   ilyayakimets
 
38 - 27.03.19 - 12:05
(37) Во внешней обработке всё как надо отрабатывает..
   Ёпрст
 
39 - 27.03.19 - 12:28
(37) нам отсюда не видно, что сделал и где
   ilyayakimets
 
40 - 27.03.19 - 12:31
   hhhh
 
41 - 27.03.19 - 12:35
(40) а почему правило стоит Номенклатура?
   ilyayakimets
 
42 - 27.03.19 - 12:39
(41) А не должно? Это я когда-то что-то пытался..
   ilyayakimets
 
43 - 27.03.19 - 12:43
(41) Действительно: убрал - выгрузило, что надо!
Ну и намучился я с этим..
Спасибо всем огромное!
   ilyayakimets
 
44 - 27.03.19 - 13:37
Ещё вопрос:
Делаю то же самое, но для другого реквизита - ФорматСигарет. В Источнике это строка, в Приемнике - СправочникСсылка.КлассТМЦ .
Собственно ничего не передаётся, как тут можно поступить?
http://prntscr.com/n3kdu3
   Ёпрст
 
45 - 27.03.19 - 14:49
(44) делаешь ПКО  - ФорматСигарет, источник - пусто, приёмник твой СправочникСсылка.КлассТМЦ
в ПКС добавляешь новый реквизит Наименование, источник пусто, приёмник Наименование, втыкаешь галку поиск, в настройках ПКО сымаешь галку поиска по внутр. идентификатору и оставляешь искать по полям поиска.

в ПКС Наименование втыкаешь ПередВыгрузкой Значение = Источник;

в ПКО номенклатура в нужном ПКС всё тоже самое что и в (19) только правило для реквизита ставишь созданное выше пко ФорматСигарет.

Или.. можешь создать ПКО и юзать галку - получить из входящих данных, а в ПКО номенклатура , в ПКС реквизита в Значение = пихать структуру с данными
   ilyayakimets
 
46 - 27.03.19 - 15:01
(45) Так и сделал, однако когда подвязываю реквизиту правило - ошибка при выгрузке:
https://prnt.sc/n3ir3w
   МимохожийОднако
 
47 - 27.03.19 - 15:04
(46) Покажи код, который прописал в ПКС и ПКО с указанной строкой из сообщения об ошибке.
   ilyayakimets
 
48 - 27.03.19 - 15:11
   ilyayakimets
 
49 - 27.03.19 - 15:15
(47) По всей видимости галку поиска сперва не снял, всё работает.


Список тем форума
Рекламное место пустует  Рекламное место пустует
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки - вот настоящая работа.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.