|   |   | 
| 
 | Конвертация данных 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) По всей видимости галку поиска сперва не снял, всё работает.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |