|
Менеджер обмена через универсальный формат - вопросы , ZaOS
| ☑ | ||
---|---|---|---|---|
0
Темный
03.10.22
✎
12:11
|
Добрый день! Пытаюсь сделать выгрузку счетов из УТ в БП. Ут 11.5, БП тоже новая.
В расширение добавил модуль "МенеджерОбменаЧерезУниверсальныйФормат". Переписал процедуру "ДобавитьПКО_Документ_СчетНаОплату_Отправка" Переписал процедуру "ПКО_Документ_СчетНаОплату_Отправка_ПриОтправкеДанных" И вот, не проваливается отладчик в процедуру "при отправке". Ни в расширении, ни в основной конфигурации, хотя вроде бы должен? Идея была в том, что бы подставить данные из ТЧ "ЗаказПокупателя" в счет. Вот модуль "ДобавитьПКО_Документ_СчетНаОплату_Отправка": ПравилоКонвертации = ОбменДаннымиXDTOСервер.ИнициализироватьПравилоКонвертацииОбъекта(ПравилаКонвертации); ПравилоКонвертации.ИмяПКО = "Документ_СчетНаОплату_Отправка"; ПравилоКонвертации.ОбъектДанных = Метаданные.Документы.СчетНаОплатуКлиенту; ПравилоКонвертации.ПриОтправкеДанных = "ПКО_Документ_СчетНаОплату_Отправка_ПриОтправкеДанных"; ПравилоКонвертации.ОбъектФормата = "Документ.СчетПокупателю"; //@NON-NLS-1 СвойстваШапки = ПравилоКонвертации.Свойства; ДобавитьПКС(СвойстваШапки, "Автор", "Ответственный", , "Справочник_Пользователи"); ... СвойстваТЧ = ДобавитьПКТЧ(ПравилоКонвертации, "", "Товары"); ДобавитьПКС(СвойстваТЧ, "", "ЕдиницаИзмерения", 1, "Справочник_ЕдиницыИзмерения"); ... СвойстваТЧ = ДобавитьПКТЧ(ПравилоКонвертации, "", "Услуги"); ДобавитьПКС(СвойстваТЧ, "", "Количество", 1); ... |
|||
1
План счетов
03.10.22
✎
12:19
|
вроде в фоновом задании запускается обмен и эти процедуры.
поставь галку Отладка - Подключение - Автоматическое подключение - фоновые задания |
|||
2
Темный
03.10.22
✎
12:22
|
Это я знаю, сделал. В процедуру "ДобавитьПКО" проваливается, и дальше отладчиком хожу. Но вот до второй процедуры дело не доходит. Разумеется, отбор при выгрузке по счетам стоит.
|
|||
3
Smallrat
03.10.22
✎
12:47
|
если речь о переписывании процедуры, то хз, а если о добавлении - то надо прописывать каждый обработчик в отдельную процедуру-маршрутизатор
|
|||
4
Темный
03.10.22
✎
12:49
|
Ну вообще да, идея была при отправке подставить значения из документа-основания (заказ клиента). А что за процедура-маршрутизатор? Гляну там, может увижу что
|
|||
5
Smallrat
03.10.22
✎
12:52
|
(4) ВыполнитьПроцедуруМодуляМенеджера
|
|||
6
Темный
03.10.22
✎
13:21
|
Ну да, прописана она там, эта процедура. Самое интересное, что в случае с реализацией все отлично получилось - я там подставлял реквизиты договора из соглашения.
|
|||
7
Smallrat
03.10.22
✎
13:24
|
(6) Значит где-то напутано - там не может не заходить, в процессе выгрузки объекта оно проверяет, указана ли процедура в поле "ПриОтправкеДанных", потом вызывает процедуру маршрутизатор и передает название процедуры, процедура-маршрутизатор запускает эту процедуру. Надо поставить точку останова в процедуру ОбменДаннымиXDTOСервер.ПриОтправкеДанных() и посмотреть.
|
|||
8
Smallrat
03.10.22
✎
13:25
|
Или даже в процедуру ОбменДаннымиXDTOСервер.ДанныеXDTOИзДанныхИБ() на строку "Если ПравилоКонвертации.ЕстьОбработчикПриОтправкеДанных Тогда"
|
|||
9
Темный
05.10.22
✎
15:28
|
(7) (8) Не доходит туда вызов
|
|||
10
Smallrat
05.10.22
✎
16:11
|
(9) Значит документ СчетНаОплату не выгружается, либо это не тот модуль (раньше точно их было несколько в конфе - типа версии 1.1, 1.2, 1.3 и тд, а сейчас хз)
|
|||
11
Темный
10.10.22
✎
16:50
|
Я, кажется, самого простого чего-то не знаю. А вообще, счета покупателю из УТ 11 возможно выгрузить? Я сейчас отключил расширение - счета не выгружаются. Принудительно ставлю в отборе при выгрузке, отчет о составе отправляемых данных пишет "25 шт", в файле ноль. Если что, без расширения - конфа на поддержке.
|
|||
12
Eiffil123
10.10.22
✎
16:57
|
(11) со стороны получателя должна прийти информация, что он готов получать счет. иначе он не будет выгружаться. посмотри обратный пакет (xml) из Бухгалтерии, там в заголовке файла должны перечисляться объекты, которые получатель (БП) готов получать
|
|||
13
Темный
10.10.22
✎
17:07
|
(12) НЕТУ! Наконец-то... Это где править? В бухгалтерии в плане обмена? В обмене через универсальный формат включен счет на оплату, в плане обмена "ОбменУправлениеТорговлейБухгалтерияПредприятия30" - нет. Там включать? Через расширение заработает?
|
|||
14
Eiffil123
10.10.22
✎
17:12
|
(13) точно не знаю, где список хранится, но знаю где его можно посмотреть. Процедура ОбменДаннымиXDTOСервер.ЗаполнитьПоддерживаемыеОбъектыXDTO. Она удаляет объект из выгрузки если он не поддерживается базой корреспондентом. Можно отладкой посмотреть, откуда в этой процедуре берется состав объектов для выгрузки
|
|||
15
Eiffil123
10.10.22
✎
17:13
|
(13) на копии базы попробуйте включить в план обмена "ОбменУправлениеТорговлейБухгалтерияПредприятия30" этот объект.
|
|||
16
Garykom
гуру
10.10.22
✎
17:17
|
(0) Очень рекомендую между УТ11 и БП не использовать типовую синхронизацию
Взять готовую или написать свою на JSON Если очень хочется то много копаться, от галочки в настройках Заказ = Счет до обработки Выгрузка загрузка EnterpriseData |
|||
17
Темный
10.10.22
✎
17:21
|
(16) Это надо было раньше думать. А про галочку в настройках Заказ = Счет видел в интернете, но в программе так и не нашел. Да и не подойдет она. Номер-то заказа будет
|
|||
18
Eiffil123
10.10.22
✎
17:34
|
(16) это сколько нужно иметь свободного времени, чтобы переписать типовой обмен с нуля на json
|
|||
19
Темный
10.10.22
✎
17:42
|
(15) нет, не помогло. Надо где-то что-то еще править
|
|||
20
alarm2020
10.10.22
✎
17:44
|
(18) Я несколько раз нечто подобное проделывал. Могу сказать, что времени на это уходит не много. Всяко меньше, чем на попытки "вылечить" типовой обмен. А главное, тут ты можешь быть уверен, что начнешь и закончишь
|
|||
21
Eiffil123
10.10.22
✎
18:14
|
(19) можно прямо в обозначенной процедуре поправить хардкодом, что-то типа такого:
Если ТаблицаОбъектыБазыКорреспондентаПоВерсии.Найти(СтрокаОбъектыБазыПоВерсии.Объект, "Объект") = Неопределено Тогда // добавить такое условие Если СтрокаОбъектыБазыПоВерсии.Объект = "СчетНаОплату" Тогда // отправляем документ в любом случае Иначе Продолжить; КонецЕсли; |
|||
22
Eiffil123
10.10.22
✎
18:19
|
(20) ну если на то пошло, почему нельзя взять конвертацию 3.0 и сделать полностью под себя? на самом деле это не так много времени займет, как написание с нуля.
|
|||
23
Темный
10.10.22
✎
18:34
|
||||
24
Eiffil123
10.10.22
✎
18:41
|
(23) только там будет ровно та же самая проблема - нужно в процедуре из (21) каким-то образом пропихнуть ваш нетиповой документ.
|
|||
25
Темный
12.10.22
✎
14:56
|
Продолжаем разговор. В xml-файл счета на оплату из УТ выгружаются. Теперь не могу загрузить их в БП.
В БП обработчиков загрузки счетов нет. Попробовал добавить в расширении: 1. Процедуру ДобавитьПКО_Документ_СчетПокупателю(ПравилаКонвертации) Переделал из Реализации товаров и услуг. Вот такой заголовок: ПравилоКонвертации.ИмяПКО = "Документ_СчетПокупателю"; ПравилоКонвертации.ОбъектДанных = Метаданные.Документы.СчетНаОплатуПокупателю; ПравилоКонвертации.ОбъектФормата = "Документ.СчетПокупателю"; ПравилоКонвертации.ПриКонвертацииДанныхXDTO = "ПКО_Документ_СчетПокупателю_ПриКонвертацииДанныхXDTO"; ПравилоКонвертации.ПередЗаписьюПолученныхДанных = "ПКО_Документ_СчетПокупателю_ПередЗаписьюПолученныхДанных"; ПравилоКонвертации.ПослеЗагрузкиВсехДанных = "ОтложеннаяОбработка_РТиУ"; ПравилоКонвертации.ВариантИдентификации = "СначалаПоУникальномуИдентификаторуПотомПоПолямПоиска"; Процедура отрабатывает; 2. Добавил в расширении процедуры ПКО_Документ_СчетПокупателю_ПриКонвертацииДанныхXDTO и ПКО_Документ_СчетПокупателю_ПередЗаписьюПолученныхДанных 3. Добавил в расширение процедуру: &После("ВыполнитьПроцедуруМодуляМенеджера") Процедура кубик_адаптация_ВыполнитьПроцедуруМодуляМенеджера(ИмяПроцедуры, Параметры) Если ИмяПроцедуры = "ПКО_Документ_СчетПокупателю_ПриКонвертацииДанныхXDTO" Тогда ПКО_Документ_СчетПокупателю_ПриКонвертацииДанныхXDTO(Параметры.ДанныеXDTO, Параметры.ПолученныеДанные, Параметры.КомпонентыОбмена); ИначеЕсли ИмяПроцедуры = "ПКО_Документ_СчетПокупателю_ПередЗаписьюПолученныхДанных" Тогда ПКО_Документ_СчетПокупателю_ПередЗаписьюПолученныхДанных( Параметры.ПолученныеДанные, Параметры.ДанныеИБ, Параметры.КонвертацияСвойств, Параметры.КомпонентыОбмена); КонецЕсли; КонецПроцедуры А эта процедура не отрабатывает. Не выполняется условие. Думаю, где-то еще надо эти процедуры обработки загрузки прописать? |
|||
26
Smallrat
12.10.22
✎
14:57
|
(25) ПОД еще надо добавить (и идентификатор ПОД добавить в соответствующую процедуру)
|
|||
27
Smallrat
12.10.22
✎
14:58
|
+(25) Вообще прежде чем вносить в расширение я бы на тестовой все сделал в коде конфигурации и когда все заработает - вынести в расширение.
|
|||
28
Темный
12.10.22
✎
15:33
|
(26) О, провалилось в обработчики. Спасибо. Чую, напишу еще
|
|||
29
Темный
18.10.22
✎
15:18
|
Так, ну в общем я все сделал. Счета из УТ в БП ходят, доп. реквизиты тоже выгружаются. Технология, в принципе, понравилась. Да - надо разобраться поначалу. Но потом все гораздо быстрее получается. Из плюсов, по сравнению с любым обменом "с нуля" - большое количество уже готовых обработчиков, которые, причем, еще и с конфой будут обновляться. Все можно сделать в расширении.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |