Имя: Пароль:
1C
1С v8
Менеджер обмена через универсальный формат - вопросы
, , 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
Так, ну в общем я все сделал. Счета из УТ в БП ходят, доп. реквизиты тоже выгружаются. Технология, в принципе, понравилась. Да - надо разобраться поначалу. Но потом все гораздо быстрее получается. Из плюсов, по сравнению с любым обменом "с нуля" - большое количество уже готовых обработчиков, которые, причем, еще и с конфой будут обновляться. Все можно сделать в расширении.