Имя: Пароль:
1C
 
КД 3.0 обмен Справочник_БанковскиеСчета не тянет валюту при обмене документов.
0 spiller26
 
04.02.20
15:26
КД 3.0
Обмен между БП 3.0 и КА 2.4 самописный, взята стандартные правила отправки и приёма "Справочник_БанковскиеСчета" и "Справочник_Валюта".
Версия формата 1.6.
При обмене "Отправить все документы" за период, при создании Банковских счетов в приемнике не тянет "Валюту" и "Текст назначения", только "Владелец", "Ссылка" и "Номер счета".
Если же сам банковский счет "зарегистрировать", то тянет недостающие данные "Валюту" и "Текст назначения"
Не пойму как передать/принять правильно эти недостающие данные.

------------------------------------------------------------------------------------------
БП 3.0
------------------------------------------------------------------------------------------

#Область Справочник_БанковскиеСчета_Отправка
Процедура ДобавитьПКО_Справочник_БанковскиеСчета_Отправка(ПравилаКонвертации)

    ПравилоКонвертации = ОбменДаннымиXDTOСервер.ИнициализироватьПравилоКонвертацииОбъекта(ПравилаКонвертации);
    ПравилоКонвертации.ИмяПКО            = "Справочник_БанковскиеСчета_Отправка";
    ПравилоКонвертации.ОбъектДанных      = Метаданные.Справочники.БанковскиеСчета;
    ПравилоКонвертации.ОбъектФормата     = "Справочник.БанковскиеСчета";
    ПравилоКонвертации.ПриОтправкеДанных = "ПКО_Справочник_БанковскиеСчета_Отправка_ПриОтправкеДанных";
    
    СвойстваШапки = ПравилоКонвертации.Свойства;
    ДобавитьПКС(СвойстваШапки, "Банк",                  "Банк", , "Справочник_Банки");
    ДобавитьПКС(СвойстваШапки, "БанкДляРасчетов",       "БанкДляРасчетов", , "Справочник_Банки");
    ДобавитьПКС(СвойстваШапки, "ВалютаДенежныхСредств", "ВалютаДенежныхСредств", , "Справочник_Валюты");
    ДобавитьПКС(СвойстваШапки, "Наименование",          "Наименование");
    ДобавитьПКС(СвойстваШапки, "НомерСчета",            "НомерСчета");
    ДобавитьПКС(СвойстваШапки, "ТекстКорреспондента",   "ТекстКорреспондента");
    ДобавитьПКС(СвойстваШапки, "ТекстНазначения",       "ТекстНазначения");
    ДобавитьПКС(СвойстваШапки, "",                      "Владелец", 1);
    
    СвойстваТЧ = ДобавитьПКТЧ(ПравилоКонвертации, "", "ДополнительныеРеквизиты");
    ДобавитьПКС(СвойстваТЧ, "", "ЗначениеСвойства", 1);
    ДобавитьПКС(СвойстваТЧ, "", "Свойство", 1,"Справочник_ДополнительныеРеквизиты");

КонецПроцедуры

Процедура ПКО_Справочник_БанковскиеСчета_Отправка_ПриОтправкеДанных(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена, СтекВыгрузки)
    // Владелец
    
    Инструкция = Новый Структура("Значение, ИмяПКО");
    Инструкция.Значение = ДанныеИБ.Владелец;
    Если ТипЗнч(ДанныеИБ.Владелец) = Тип("СправочникСсылка.Контрагенты") Тогда
        Инструкция.ИмяПКО = "Справочник_Контрагенты_Отправка";
    ИначеЕсли ТипЗнч(ДанныеИБ.Владелец) = Тип("СправочникСсылка.Организации") Тогда
        Инструкция.ИмяПКО = "Справочник_Организации_Отправка";
    ИначеЕсли ТипЗнч(ДанныеИБ.Владелец) = Тип("СправочникСсылка.ФизическиеЛица") Тогда
        Инструкция.ИмяПКО = "Справочник_ФизическиеЛица_Отправка";
    КонецЕсли;
    ДанныеXDTO.КлючевыеСвойства.Вставить("Владелец", Инструкция);
    
    ВыгрузитьДополнительныеРеквизитыИСведения(КомпонентыОбмена, ДанныеИБ, ДанныеXDTO);
КонецПроцедуры
#КонецОбласти

#Область Справочник_Валюты
Процедура ДобавитьПКО_Справочник_Валюты(ПравилаКонвертации)

    ПравилоКонвертации = ОбменДаннымиXDTOСервер.ИнициализироватьПравилоКонвертацииОбъекта(ПравилаКонвертации);
    ПравилоКонвертации.ИмяПКО                       = "Справочник_Валюты";
    ПравилоКонвертации.ОбъектДанных                 = Метаданные.Справочники.Валюты;
    ПравилоКонвертации.ОбъектФормата                = "Справочник.Валюты";
    ПравилоКонвертации.ПриКонвертацииДанныхXDTO     = "ПКО_Справочник_Валюты_ПриКонвертацииДанныхXDTO";
    ПравилоКонвертации.ПередЗаписьюПолученныхДанных = "ПКО_Справочник_Валюты_ПередЗаписьюПолученныхДанных";
    ПравилоКонвертации.ВариантИдентификации         = "СначалаПоУникальномуИдентификаторуПотомПоПолямПоиска";
    
    СвойстваШапки = ПравилоКонвертации.Свойства;
    ДобавитьПКС(СвойстваШапки, "Код",                    "Код");
    ДобавитьПКС(СвойстваШапки, "Наименование",           "Наименование");
    ДобавитьПКС(СвойстваШапки, "НаименованиеПолное",     "НаименованиеПолное");
    ДобавитьПКС(СвойстваШапки, "Наценка",                "Наценка");
    ДобавитьПКС(СвойстваШапки, "ПараметрыПрописи",       "ПараметрыПрописи");
    ДобавитьПКС(СвойстваШапки, "СпособУстановкиКурса",   "", 1);
    ДобавитьПКС(СвойстваШапки, "ЗагружаетсяИзИнтернета", "ЗагружаетсяИзИнтернета");

    ПравилоКонвертации.ПоляПоиска.Добавить("Код");
    ПравилоКонвертации.ПоляПоиска.Добавить("Наименование");
КонецПроцедуры

Процедура ПКО_Справочник_Валюты_ПриКонвертацииДанныхXDTO(ДанныеXDTO, ПолученныеДанные, КомпонентыОбмена)
    ПолученныеДанные.СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.РучнойВвод;
КонецПроцедуры

Процедура ПКО_Справочник_Валюты_ПередЗаписьюПолученныхДанных(ПолученныеДанные, ДанныеИБ, КонвертацияСвойств, КомпонентыОбмена)
    Если ДанныеИБ <> Неопределено Тогда
        // Если валюта уже существует в базе,
        // то не перезатираем ее данные.
        ПолученныеДанные = Неопределено;
    КонецЕсли;
КонецПроцедуры
#КонецОбласти

----------------------------------------------------------------------------------------------
КА 2.4
----------------------------------------------------------------------------------------------

#Область Справочник_БанковскиеСчетаКонтрагентов_Получение
Процедура ДобавитьПКО_Справочник_БанковскиеСчетаКонтрагентов_Получение(ПравилаКонвертации)

    ПравилоКонвертации = ОбменДаннымиXDTOСервер.ИнициализироватьПравилоКонвертацииОбъекта(ПравилаКонвертации);
    ПравилоКонвертации.ИмяПКО                       = "Справочник_БанковскиеСчетаКонтрагентов_Получение";
    ПравилоКонвертации.ОбъектДанных                 = Метаданные.Справочники.БанковскиеСчетаКонтрагентов;
    ПравилоКонвертации.ОбъектФормата                = "Справочник.БанковскиеСчета";
    ПравилоКонвертации.ПриКонвертацииДанныхXDTO     = "ПКО_Справочник_БанковскиеСчетаКонтрагентов_Получение_ПриКонвертацииДанныхXDTO";
    ПравилоКонвертации.ПередЗаписьюПолученныхДанных = "ПКО_Справочник_БанковскиеСчетаКонтрагентов_Получение_ПередЗаписьюПолученныхДанных";
    ПравилоКонвертации.ВариантИдентификации         = "СначалаПоУникальномуИдентификаторуПотомПоПолямПоиска";
    
    СвойстваШапки = ПравилоКонвертации.Свойства;
    ДобавитьПКС(СвойстваШапки, "Банк",                  "Банк", , "Справочник_Банки");
    ДобавитьПКС(СвойстваШапки, "БанкДляРасчетов",       "БанкДляРасчетов", , "Справочник_Банки");
    ДобавитьПКС(СвойстваШапки, "ВалютаДенежныхСредств", "", 1);
    ДобавитьПКС(СвойстваШапки, "Наименование",          "Наименование");
    ДобавитьПКС(СвойстваШапки, "НомерСчета",            "НомерСчета");
    ДобавитьПКС(СвойстваШапки, "ТекстКорреспондента",   "ТекстКорреспондента");
    ДобавитьПКС(СвойстваШапки, "ТекстНазначения",       "ТекстНазначения");
    ДобавитьПКС(СвойстваШапки, "Владелец",              "", 1);

    ПравилоКонвертации.ПоляПоиска.Добавить("Владелец,НомерСчета");
КонецПроцедуры

Процедура ПКО_Справочник_БанковскиеСчетаКонтрагентов_Получение_ПриКонвертацииДанныхXDTO(ДанныеXDTO, ПолученныеДанные, КомпонентыОбмена)
    // Владелец
    // Выбираем ПКО в зависимости от типа владельца.
    Если ДанныеXDTO.КлючевыеСвойства.Свойство("Владелец") Тогда
        
        Владелец = ДанныеXDTO.КлючевыеСвойства.Владелец;
        ИмяПКО = "Справочник_Контрагенты_Получение";
        Если Найти(Владелец.ТипЗначения, "ФизическоеЛицо") > 0 Тогда
            ИмяПКО = "Справочник_ФизическиеЛица_Получение";
        КонецЕсли;    
        ПолученныеДанные.ДополнительныеСвойства.Вставить(
            "Владелец", Новый Структура("Значение,ИмяПКО", Владелец, ИмяПКО));
        
    КонецЕсли;
    ДобавитьВалютуВДопСвойства(ПолученныеДанные, ДанныеXDTO, "ВалютаДенежныхСредств", "ВалютаДенежныхСредств");

    ЗагрузитьДополнительныеРеквизиты(ПолученныеДанные, ДанныеXDTO, КомпонентыОбмена);
КонецПроцедуры

Процедура ПКО_Справочник_БанковскиеСчетаКонтрагентов_Получение_ПередЗаписьюПолученныхДанных(ПолученныеДанные, ДанныеИБ, КонвертацияСвойств, КомпонентыОбмена)
    Если НЕ ЗначениеЗаполнено(ПолученныеДанные.Наименование) Тогда
        ПрисвоитьНаименованиеБанковскогоСчета(ПолученныеДанные, ДанныеИБ);
    КонецЕсли;
    ЗагрузитьДополнительныеСведения(?(ДанныеИБ = Неопределено, ПолученныеДанные.ПолучитьСсылкуНового(), ДанныеИБ.Ссылка),
                                ПолученныеДанные.ДополнительныеСвойства, КомпонентыОбмена);
КонецПроцедуры
#КонецОбласти

#Область Справочник_Валюты
Процедура ДобавитьПКО_Справочник_Валюты(ПравилаКонвертации)

    ПравилоКонвертации = ОбменДаннымиXDTOСервер.ИнициализироватьПравилоКонвертацииОбъекта(ПравилаКонвертации);
    ПравилоКонвертации.ИмяПКО                       = "Справочник_Валюты";
    ПравилоКонвертации.ОбъектДанных                 = Метаданные.Справочники.Валюты;
    ПравилоКонвертации.ОбъектФормата                = "Справочник.Валюты";
    ПравилоКонвертации.ПриКонвертацииДанныхXDTO     = "ПКО_Справочник_Валюты_ПриКонвертацииДанныхXDTO";
    ПравилоКонвертации.ПередЗаписьюПолученныхДанных = "ПКО_Справочник_Валюты_ПередЗаписьюПолученныхДанных";
    ПравилоКонвертации.ПослеЗагрузкиВсехДанных      = "ОтложеннаяОбработка_Валюты";
    ПравилоКонвертации.ВариантИдентификации         = "СначалаПоУникальномуИдентификаторуПотомПоПолямПоиска";
    
    СвойстваШапки = ПравилоКонвертации.Свойства;
    ДобавитьПКС(СвойстваШапки, "Код",                "Код");
    ДобавитьПКС(СвойстваШапки, "Наименование",       "Наименование");
    ДобавитьПКС(СвойстваШапки, "НаименованиеПолное", "НаименованиеПолное");
    ДобавитьПКС(СвойстваШапки, "ПараметрыПрописи",   "ПараметрыПрописи");

    ПравилоКонвертации.ПоляПоиска.Добавить("Код");
КонецПроцедуры

Процедура ПКО_Справочник_Валюты_ПриКонвертацииДанныхXDTO(ДанныеXDTO, ПолученныеДанные, КомпонентыОбмена)
    ПолученныеДанные.СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.РучнойВвод;
КонецПроцедуры

Процедура ПКО_Справочник_Валюты_ПередЗаписьюПолученныхДанных(ПолученныеДанные, ДанныеИБ, КонвертацияСвойств, КомпонентыОбмена)
    Если ДанныеИБ <> Неопределено
        И ЗначениеЗаполнено(ДанныеИБ.СпособУстановкиКурса) Тогда
        ПолученныеДанные.СпособУстановкиКурса = ДанныеИБ.СпособУстановкиКурса;
    КонецЕсли;
КонецПроцедуры
#КонецОбласти
1 spiller26
 
05.02.20
09:52
Может кому пригодиться.
Цитата:
"Следует иметь в виду, что в обмене через ED объекты по ссылке не выгружаются полностью, как это было в обмене по правилам КД 2.0. По ссылке выгружаются только ключевые реквизиты объекта, которые необходимы для поиска в базе-приемнике." Так что без регистрации будут только ссылки.
2 gae
 
05.02.20
10:37
(1) То есть, если сам банковский счет не зарегистрирован к выгрузке, но зарегистрирован документ с этим счетом, то счет все-таки в приемнике создастся, но только с заполнением ключевых реквизитов?