Имя: Пароль:
1C
 
БП 3.0.105.45: выгрузка реализаций в УПД-XML-файл ЭДО выгружает только первую
0 Гений 1С
 
гуру
16.12.21
11:25
Обновился сдуру на 3.0.105.45, теперь приходится выгружать в файл по одной реализации, потому что во всех УПД файлах одна и та же реализация.
Помню, когда я ковырял ЖДО, находил там подобную проблему. Доколе?
1 Гений 1С
 
гуру
16.12.21
11:34
Гм, похоже моя заплатка слетела, была такая ИнтерфейсДокументовЭДО:

&ИзменениеИКонтроль("ПодготовитьДанныеДляЗаполненияДокументов")
Процедура оэдо_ПодготовитьДанныеДляЗаполненияДокументов(Параметры, АдресХранилища)

    ТаблицаЭД = Новый ТаблицаЗначений;
    ТаблицаЭД.Колонки.Добавить("ПолноеИмяФайла");
    ТаблицаЭД.Колонки.Добавить("ИмяФайла");
    ТаблицаЭД.Колонки.Добавить("НаправлениеЭД");
    ТаблицаЭД.Колонки.Добавить("Контрагент");
    ТаблицаЭД.Колонки.Добавить("ДвоичныеДанныеПакета");
    ТаблицаЭД.Колонки.Добавить("ДвоичныеДанныеФайла");

    ОписанияОбъектовУчета = ИнтеграцияЭДО.ОписанияОбъектовУчета(Параметры.МассивСсылокНаОбъект);

    ДанныеДокументов = ЭлектронныеДокументыЭДО.СформироватьДанныеДокументовДляВыгрузки(ОписанияОбъектовУчета);

    Для Каждого ДанныеДокумента Из ДанныеДокументов Цикл
        НоваяСтрока = ТаблицаЭД.Добавить();
        НоваяСтрока.НаправлениеЭД = Перечисления.НаправленияЭДО.Исходящий;
        НоваяСтрока.ДвоичныеДанныеФайла = ДанныеДокумента.ОписаниеДанных.ДвоичныеДанные;
        НоваяСтрока.Контрагент = ДанныеДокумента.Контрагент;

        ДанныеПакета = СинхронизацияЭДО.ДвоичныеДанныеТранспортногоКонтейнера(ДанныеДокументов[0]);
#Вставка
        ДанныеДокумента.ИдентификаторСтроки = 0;
        ДанныеПакета = СинхронизацияЭДО.ДвоичныеДанныеТранспортногоКонтейнера(ДанныеДокумента);
#КонецВставки

        НоваяСтрока.ДвоичныеДанныеПакета = ДанныеПакета;
        НоваяСтрока.ПолноеИмяФайла = ДанныеДокумента.ОписаниеДанных.ИмяФайла;
        НоваяСтрока.ИмяФайла = ДанныеДокумента.ОписаниеДанных.ИмяФайла;            
    КонецЦикла;

    Если ЗначениеЗаполнено(ТаблицаЭД) Тогда
        ПоместитьВоВременноеХранилище(ТаблицаЭД, АдресХранилища);
    Иначе
        АдресХранилища = "";
    КонецЕсли;

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



Хорошо, поменяю текст процедуры на новый, потом отчитаюсь.
2 Гений 1С
 
гуру
16.12.21
11:37
Да, этот способ решает проблему, если кому надо. вот текст свежей заплатки:

&ИзменениеИКонтроль("ПодготовитьДанныеДляЗаполненияДокументов")
Функция оэдо_ПодготовитьДанныеДляЗаполненияДокументов(Параметры)

    ТаблицаЭД = Новый ТаблицаЗначений;
    ТаблицаЭД.Колонки.Добавить("ПолноеИмяФайла");
    ТаблицаЭД.Колонки.Добавить("ИмяФайла");
    ТаблицаЭД.Колонки.Добавить("НаправлениеЭД");
    ТаблицаЭД.Колонки.Добавить("Контрагент");
    ТаблицаЭД.Колонки.Добавить("ДвоичныеДанныеПакета");
    ТаблицаЭД.Колонки.Добавить("ДвоичныеДанныеФайла");

    ОписанияОбъектовУчета = ИнтеграцияЭДО.ОписанияОбъектовУчета(Параметры.МассивСсылокНаОбъект);

    РезультатФормирования = ЭлектронныеДокументыЭДО.СформироватьДанныеДокументовДляВыгрузки(ОписанияОбъектовУчета);
    ДанныеДокументов = РезультатФормирования.ДанныеДокументов;
    ТекстОшибки = РезультатФормирования.ТекстОшибки;

    Для Каждого ДанныеДокумента Из ДанныеДокументов Цикл
        НоваяСтрока = ТаблицаЭД.Добавить();
        НоваяСтрока.НаправлениеЭД = Перечисления.НаправленияЭДО.Исходящий;
        НоваяСтрока.ДвоичныеДанныеФайла = ДанныеДокумента.ОписаниеДанных.ДвоичныеДанные;
        НоваяСтрока.Контрагент = ДанныеДокумента.Контрагент;

        ДанныеПакета = СинхронизацияЭДО.ДвоичныеДанныеТранспортногоКонтейнера(ДанныеДокументов[0]);
#Вставка
        ДанныеДокумента.ИдентификаторСтроки = 0;
        ДанныеПакета = СинхронизацияЭДО.ДвоичныеДанныеТранспортногоКонтейнера(ДанныеДокумента);
#КонецВставки

        НоваяСтрока.ДвоичныеДанныеПакета = ДанныеПакета;
        НоваяСтрока.ПолноеИмяФайла = ДанныеДокумента.ОписаниеДанных.ИмяФайла;
        НоваяСтрока.ИмяФайла = ДанныеДокумента.ОписаниеДанных.ИмяФайла;            
    КонецЦикла;

    РезультатФормирования = Новый Структура("ТаблицаЭД, ТекстОшибки", ТаблицаЭД, ТекстОшибки);
    Возврат РезультатФормирования;

КонецФункции
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший