Добрый день уважаемые коллеги. Столкнулся с такой проблемой, что необходимо было настроить синхронизацию между базами Управление Нашей Строительной Фирмой 1.6 (УНСФ) и Бухгалтерия Строительной Организации 3.1(БСО). Насколько я понял синхронизация у них происходит через универсальный формат, который в свою очередь сделан с помощью Конвертации Данных 3(КД 3). Вроде бы ничего такого с одной стороны так как все выгружается, но когда понадобилось выгрузить документ ОтчетПереработчика из УНСФ, оказалось что в типовых правилах обмена в XDTO пакете ED 1.6 и позднее не предусмотрены правила для табличной части Отходы. Поэтому по статье с ИС решил сделать перенос ТЧ через AdditionalInfo, и тут передо мной встала проблема, а как правильно описать структуру ТЧ. На данный момент насколько я смог разобраться то я просто помещаю ТЧ в AdditionalInfo, и он как-то не понимает мои данные ТЧ, кроме числовых значений. Подскажите как правильней передавать ТЧ через AdditionalInfo? И как ее описать? Модуль менеджера обмена приложу в файле.
(12) Как вариант - там это есть для любой представленной конфигурации в полнофункциональных правилах https://infostart.ru/public/632263/ - в расширении модули с правилами для типовых форматов и для доработанного формата. Там же в расширении доработанный формат обмена.
Сделать копию типового формата оказалось не так просто Пришлось выгрузить конфигурацию в файлы, сделать копию формата, исправить пространство имен и загрузить обратно. Потом скопировать новый пакет в расширение.
На всякий случай информирую. формат обмена 1.601 и 1.701 мной уже использовался, Если будете создавать свой, используйте другие номера.
(3)Вместо AdditionalInfo можно попробовать воспользоватся ДополнительныеРеквизиты или использовать флаг Используется алгоритм конвертации, и описать заполнения вручную
(9)Нет, так как эту структуру сложно будет вставить ПолученныеДанные.ДополнительныеСвойства.Вставить("Отходы".........);
Надо по другому пробовать. В этом ПКО все табличные части задействованы, может стоить использовать их
УстановитьПользовательскийПрефиксНомера(ПолученныеДанные, ДанныеXDTO, "О");
Если ЭтоЗагрузкаКлючевыхСвойств(ДанныеXDTO) Тогда
Возврат;
КонецЕсли;
ДобавитьДоговорВДопСвойства(ПолученныеДанные, ДанныеXDTO);
ДобавитьВалютуВДопСвойства(ПолученныеДанные, ДанныеXDTO);
ДобавитьПодразделениеВДопСвойства(ПолученныеДанные, ДанныеXDTO);
ДобавитьПодразделениеВДопСвойства(ПолученныеДанные, ДанныеXDTO, "ПодразделениеЗатрат", "ПодразделениеЗатрат");
МассивСтрокПродукция = Новый Массив;
Если ДанныеXDTO.Свойство("Продукция")
И ЗначениеЗаполнено(ДанныеXDTO.Продукция) Тогда
ПравилаЗаполнения = Новый Соответствие;
ПравилаЗаполнения.Вставить("Номенклатура", "Номенклатура");
ПравилаЗаполнения.Вставить("Количество", "Количество");
Для Каждого Строка Из ДанныеXDTO.Продукция Цикл
СтруктураДанныхСтроки = ДанныеКоллекцииВВидеСтруктуры(Строка, ПравилаЗаполнения);
МассивСтрокПродукция.Добавить(СтруктураДанныхСтроки);
КонецЦикла;
Если МассивСтрокПродукция.Количество() > 0 Тогда
ПолученныеДанные.ДополнительныеСвойства.Вставить("Продукция", МассивСтрокПродукция);
КонецЕсли;
КонецЕсли;
МассивСтрокУслуги = Новый Массив;
Если ДанныеXDTO.Свойство("Услуги")
И ЗначениеЗаполнено(ДанныеXDTO.Услуги) Тогда
ПравилаЗаполнения = Новый Соответствие;
ПравилаЗаполнения.Вставить("Номенклатура", "Номенклатура");
ПравилаЗаполнения.Вставить("Количество", "Количество");
ПравилаЗаполнения.Вставить("Содержание", "Содержание");
ПравилаЗаполнения.Вставить("СтавкаНДС", "СтавкаНДС");
ПравилаЗаполнения.Вставить("Сумма", "Сумма");
ПравилаЗаполнения.Вставить("СуммаНДС", "СуммаНДС");
ПравилаЗаполнения.Вставить("Цена", "Цена");
Для Каждого Строка Из ДанныеXDTO.Услуги Цикл
СтруктураДанныхСтроки = ДанныеКоллекцииВВидеСтруктуры(Строка, ПравилаЗаполнения);
МассивСтрокУслуги.Добавить(СтруктураДанныхСтроки);
КонецЦикла;
Если МассивСтрокУслуги.Количество() > 0 Тогда
ПолученныеДанные.ДополнительныеСвойства.Вставить("Услуги", МассивСтрокУслуги);
КонецЕсли;
КонецЕсли;
МассивСтрокМатериалы = Новый Массив;
Если ДанныеXDTO.Свойство("Материалы")
И ЗначениеЗаполнено(ДанныеXDTO.Материалы) Тогда
ПравилаЗаполнения = Новый Соответствие;
ПравилаЗаполнения.Вставить("Номенклатура", "Номенклатура");
ПравилаЗаполнения.Вставить("Количество", "Количество");
Для Каждого Строка Из ДанныеXDTO.Материалы Цикл
СтруктураДанныхСтроки = ДанныеКоллекцииВВидеСтруктуры(Строка, ПравилаЗаполнения);
МассивСтрокМатериалы.Добавить(СтруктураДанныхСтроки);
КонецЦикла;
Если МассивСтрокМатериалы.Количество() > 0 Тогда
ПолученныеДанные.ДополнительныеСвойства.Вставить("ИспользованныеМатериалы", МассивСтрокМатериалы);
КонецЕсли;
КонецЕсли;
Показать
Пока там как то так, но видимо придется приспосабливать, я ошибся сказав что есть на получение правила, перепутал с другим документом
Я так понимаю что править пакет ED не вариант? Так как это уже будет не универсально? А можно пакет добавить в расширение и модуль менеджера обмена тоже в туда же чтобы просто там правки вносить?
(12) Как вариант - там это есть для любой представленной конфигурации в полнофункциональных правилах https://infostart.ru/public/632263/ - в расширении модули с правилами для типовых форматов и для доработанного формата. Там же в расширении доработанный формат обмена.
Сделать копию типового формата оказалось не так просто Пришлось выгрузить конфигурацию в файлы, сделать копию формата, исправить пространство имен и загрузить обратно. Потом скопировать новый пакет в расширение.
На всякий случай информирую. формат обмена 1.601 и 1.701 мной уже использовался, Если будете создавать свой, используйте другие номера.