Конвертация данных. Остатки по взаиморасчетам выгружаются в один документ
Добрый день.
Делаю переход из 7.7 ТиС для Украины в УТ 10 для России(такая задача).
Дабы меньше изобретать велосипед, взял за основу инструкцию по переходу между 7.7 в ут 2.3 для Украины. (Суть состоит в том, что делается конвертация базы семерки в восьмерку, а там уже выполняется перенос обработкой "Универсальный обмен в формате XML. Обработка V8Exchan82.epf из конвертации)
Суть проблемы. При переносе взаиморасчетов используется произвольный алгоритм в результате которого должны формироваться документы "Корректировка долга" в УТ10. Я вижу в файле выгрузке кучу документов, но в УТ все загружается в один.
Собственно само правило:
На выходе я вижу
Если я правильно понял, в ссылку пишется организация, и в итоге все загружается в один документ. Как исправить правило выгрузки?
Делаю переход из 7.7 ТиС для Украины в УТ 10 для России(такая задача).
Дабы меньше изобретать велосипед, взял за основу инструкцию по переходу между 7.7 в ут 2.3 для Украины. (Суть состоит в том, что делается конвертация базы семерки в восьмерку, а там уже выполняется перенос обработкой "Универсальный обмен в формате XML. Обработка V8Exchan82.epf из конвертации)
Суть проблемы. При переносе взаиморасчетов используется произвольный алгоритм в результате которого должны формироваться документы "Корректировка долга" в УТ10. Я вижу в файле выгрузке кучу документов, но в УТ все загружается в один.
Собственно само правило:
<Правило>
<Код>КорректировкаДолга</Код>
<Наименование> --> ДокументСсылка.КорректировкаДолга</Наименование>
<Порядок>400</Порядок>
<ПослеЗагрузки>Объект.УстановитьНовыйНомер();</ПослеЗагрузки>
<НеЗапоминатьВыгруженные>true</НеЗапоминатьВыгруженные>
<Приемник>ДокументСсылка.КорректировкаДолга</Приемник>
<Свойства>
<Группа>
<Код>1</Код>
<Наименование>--> СуммыДолга</Наименование>
<Порядок>100</Порядок>
<Источник Имя="" Вид=""/>
<Приемник Имя="СуммыДолга" Вид="ТабличнаяЧасть"/>
<Свойство>
<Код>2</Код>
<Наименование> --> ДоговорКонтрагента</Наименование>
<Порядок>100</Порядок>
<Источник Имя="" Вид=""/>
<Приемник Имя="ДоговорКонтрагента" Вид="Реквизит" Тип="СправочникСсылка.ДоговорыКонтрагентов"/>
<КодПравилаКонвертации>ДоговорыКонтрагентов </КодПравилаКонвертации>
<ПередВыгрузкой>ВидДоговораДляКонвертации = ОбъектКоллекции.ВидДоговора;
Если ВидДоговораДляКонвертации = Перечисления.ВидыТорговли.Бартер Тогда
ВидДоговораДляКонвертации = "Бартерный"
ИначеЕсли ВидДоговораДляКонвертации = Перечисления.ВидыТорговли.Нал
ИЛИ ВидДоговораДляКонвертации = Перечисления.ВидыТорговли.Кредит
ИЛИ ВидДоговораДляКонвертации = Перечисления.ВидыТорговли.Предоплата Тогда
Если ОбъектКоллекции.ВидРегистра = "Покупатели" Тогда
ВидДоговораДляКонвертации = "СПокупателем";
Иначе
ВидДоговораДляКонвертации = "СПоставщиком";
КонецЕсли;
ИначеЕсли ВидДоговораДляКонвертации = Перечисления.ВидыТорговли.Консигнация Тогда
Если ОбъектКоллекции.ВидРегистра = "Покупатели" Тогда
ВидДоговораДляКонвертации = "СКомиссионером";
Иначе
ВидДоговораДляКонвертации = "СКомитентом";
КонецЕсли;
КонецЕсли;
ИсходящиеДанные = Новый Структура("ВидДоговора", ВидДоговораДляКонвертации);</ПередВыгрузкой>
</Свойство>
<Свойство>
<Код>4</Код>
<Наименование> --> УвеличениеДолгаКонтрагента</Наименование>
<Порядок>300</Порядок>
<Источник Имя="" Вид=""/>
<Приемник Имя="Сумма" Вид="Реквизит" Тип="Число"/>
</Свойство>
<Свойство>
<Код>6</Код>
<Наименование> --> КурсВзаиморасчетов</Наименование>
<Порядок>500</Порядок>
<Источник Имя="" Вид=""/>
<Приемник Имя="КурсВзаиморасчетов" Вид="Реквизит" Тип="Число"/>
</Свойство>
<Свойство>
<Код>7</Код>
<Наименование> --> КратностьВзаиморасчетов</Наименование>
<Порядок>600</Порядок>
<Источник Имя="" Вид=""/>
<Приемник Имя="КратностьВзаиморасчетов" Вид="Реквизит" Тип="Число"/>
</Свойство>
</Группа>
<Свойство>
<Код>8</Код>
<Наименование> --> Дата</Наименование>
<Порядок>200</Порядок>
<Источник Имя="" Вид=""/>
<Приемник Имя="Дата" Вид="Свойство" Тип="Дата"/>
<ПередВыгрузкой>Значение = РабочаяДата;</ПередВыгрузкой>
</Свойство>
<Свойство Поиск="true">
<Код>9</Код>
<Наименование> --> Контрагент</Наименование>
<Порядок>300</Порядок>
<Источник Имя="" Вид=""/>
<Приемник Имя="КонтрагентДебитор" Вид="Реквизит" Тип="СправочникСсылка.Контрагенты"/>
<КодПравилаКонвертации>Контрагенты </КодПравилаКонвертации>
</Свойство>
<Свойство>
<Код>10</Код>
<Наименование> --> Комментарий</Наименование>
<Порядок>400</Порядок>
<Источник Имя="" Вид=""/>
<Приемник Имя="Комментарий" Вид="Реквизит" Тип="Строка"/>
<ПередВыгрузкой>Значение = "Загрузка данных из Торговли + Склад для Украины 7.7";</ПередВыгрузкой>
</Свойство>
<Свойство Поиск="true">
<Код>11</Код>
<Наименование> --> Организация</Наименование>
<Порядок>500</Порядок>
<Источник Имя="" Вид=""/>
<Приемник Имя="Организация" Вид="Реквизит" Тип="СправочникСсылка.Организации"/>
<КодПравилаКонвертации>Организации </КодПравилаКонвертации>
</Свойство>
<Свойство>
<Код>12</Код>
<Наименование> --> ОтражатьВУправленческомУчете</Наименование>
<Порядок>600</Порядок>
<Источник Имя="" Вид=""/>
<Приемник Имя="ОтражатьВУправленческомУчете" Вид="Реквизит" Тип="Булево"/>
<ПередВыгрузкой>Значение = Истина;</ПередВыгрузкой>
</Свойство>
</Свойства>
<Значения/>
</Правило>
...
<ПравилаВыгрузкиДанных>
<Правило Отключить="false">
<Код>КорректировкаДолга</Код>
<Наименование>Остатки взаиморасчетов с контрагентами</Наименование>
<Порядок>200</Порядок>
<КодПравилаКонвертации>КорректировкаДолга </КодПравилаКонвертации>
<СпособОтбораДанных>ПроизвольныйАлгоритм</СпособОтбораДанных >
<ПередОбработкойПравила>Запросы.ОстаткиВзаиморасчетов.УстановитьПараметр("ДатаОстатков", РабочаяДата);
Запросы.ОстаткиВзаиморасчетов.УстановитьПараметр("ПустаяФирма", Справочники.Фирмы.ПустаяСсылка());
Запросы.ОстаткиВзаиморасчетов.УстановитьПараметр("ОрганизацияПоУмолчанию", Параметры.ФирмаПоУмолчанию);
РезультатЗапроса = Запросы.ОстаткиВзаиморасчетов.Выполнить();
ТабДок = Новый ТаблицаЗначений;
ТабДок.Колонки.Добавить("Контрагент");
ТабДок.Колонки.Добавить("Организация");
ТабДок.Колонки.Добавить("СуммыДолга");
Выборка1 = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока Выборка1.Следующий() Цикл //Контарагент
Выборка2 = Выборка1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока Выборка2.Следующий() Цикл //Организация
СтрТабДок = ТабДок.Добавить();
СтрТабДок.Контрагент = Выборка2.Контрагент;
СтрТабДок.Организация = Выборка2.Организация;
СтрТабДок.СуммыДолга = Новый ТаблицаЗначений;
СтрТабДок.СуммыДолга.Колонки.Добавить("ДоговорКонтрагента");
СтрТабДок.СуммыДолга.Колонки.Добавить("ВидДоговора");
СтрТабДок.СуммыДолга.Колонки.Добавить("Сумма");
СтрТабДок.СуммыДолга.Колонки.Добавить("КурсВзаиморасчетов");
СтрТабДок.СуммыДолга.Колонки.Добавить("КратностьВзаиморасчетов");
СтрТабДок.СуммыДолга.Колонки.Добавить("ВидРегистра");
Выборка = Выборка2.Выбрать();
Пока Выборка.Следующий() Цикл //Договора
ПодСтрТабДок = СтрТабДок.СуммыДолга.Добавить();
Если Выборка.ДоговорКонтрагента = Неопределено Тогда
ПодСтрТабДок.ДоговорКонтрагента = Новый Структура;
ПодСтрТабДок.ДоговорКонтрагента.Вставить("Номер", СокрЛП(СтрТабДок.Организация.ПрефиксНомеровДокументов) + "Вспом");
ПодСтрТабДок.ДоговорКонтрагента.Вставить("Фирма", СтрТабДок.Организация);
ПодСтрТабДок.ДоговорКонтрагента.Вставить("НомерДоговора", "Вспомогательный договор");
ПодСтрТабДок.ДоговорКонтрагента.Вставить("Контрагент", СтрТабДок.Контрагент);
ПодСтрТабДок.ДоговорКонтрагента.Вставить("Валюта", СтрТабДок.Контрагент.ВалютаВзаиморасчетов);
ПодСтрТабДок.ДоговорКонтрагента.Вставить("Дата_курса", РабочаяДата);
ПодСтрТабДок.ДоговорКонтрагента.Вставить("Курс", СтрТабДок.Контрагент.ВалютаВзаиморасчетов.Курс);
ПодСтрТабДок.ДоговорКонтрагента.Вставить("Дата", РабочаяДата);
ПодСтрТабДок.ДоговорКонтрагента.Вставить("Комментарий", "Конвертация данных. Вспомогательный договор");
ПодСтрТабДок.ДоговорКонтрагента.Вставить("Ссылка", ЗначениеВСтрокуВнутр(СтрТабДок.Контрагент) + "ВспомогательныйДоговор");
ПодСтрТабДок.ДоговорКонтрагента.Вставить("ВидДоговора", Выборка.ВидДоговора);
ПодСтрТабДок.КурсВзаиморасчетов = Выборка.КурсВзаиморасчетов;
ПодСтрТабДок.КратностьВзаиморасчетов = Выборка.КратностьВзаиморасчетов;
КоэфПересчетаДолга = 1;
Иначе
ПодСтрТабДок.ДоговорКонтрагента = Выборка.ДоговорКонтрагента;
ПодСтрТабДок.КурсВзаиморасчетов = Выборка.ДоговорКонтрагента.Валюта.Курс;
ПодСтрТабДок.КратностьВзаиморасчетов = Выборка.ДоговорКонтрагента.Валюта.Кратность;
КоэфПересчетаДолга = Выборка.КурсВзаиморасчетов / Выборка.КратностьВзаиморасчетов / ПодСтрТабДок.КурсВзаиморасчетов * ПодСтрТабДок.КратностьВзаиморасчетов;
КонецЕсли;
ПодСтрТабДок.ВидДоговора = Выборка.ВидДоговора;
ПодСтрТабДок.ВидРегистра = Выборка.ВидРегистра;
ПодСтрТабДок.Сумма = Выборка.Сумма * КоэфПересчетаДолга;
КонецЦикла;
КонецЦикла;
КонецЦикла;
ВыборкаДанных = ТабДок;</ПередОбработкойПравила>
</Правило>
ПоказатьНа выходе я вижу
</Объект>
<Объект Нпп="1" Тип="ДокументСсылка.КорректировкаДолга" ИмяПравила="КорректировкаДолга"><Ссылка><Свойство Имя="Организация" Тип="СправочникСсылка.Организации"><Ссылка Нпп="2">
<Свойство Имя="{УникальныйИдентификатор}" Тип="Строка">
<Значение>676e284d-8120-4822-bc02-de7681e91eb5</Значение>
</Свойство><Свойство Имя="Код" Тип="Строка">
<Значение>00001</Значение>
</Свойство>
Дальше документ
...
<Объект Нпп="10" Тип="ДокументСсылка.КорректировкаДолга" ИмяПравила="КорректировкаДолга"><Ссылка><Свойство Имя="Организация" Тип="СправочникСсылка.Организации"><Ссылка Нпп="2">
<Свойство Имя="{УникальныйИдентификатор}" Тип="Строка">
<Значение>676e284d-8120-4822-bc02-de7681e91eb5</Значение>
</Свойство><Свойство Имя="Код" Тип="Строка">
<Значение>00001</Значение>
</Свойство>
Дальше документ
ПоказатьЕсли я правильно понял, в ссылку пишется организация, и в итоге все загружается в один документ. Как исправить правило выгрузки?
По теме из базы знаний
- Пример правила конвертации объектов
- Перенос данных и обмен из УТ 10.3 в УТ 11 / КА 2 / ERP 2. Переносятся документы, справочники и остатки
- Перенос данных из БП 2.0 в УТ 11 / КА 2 / ERP 2. Переносятся документы, остатки и справочники
- Лайфхаки конвертации данных 2.1
- Переход с УПП на ERP с сохранением документов. Фантастика или реальность?
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Добрый день, а где сам текст запроса - "Запросы.ОстаткиВзаиморасчетов"? Посмотрите какие там группировки, добавьте поле которое будет хранить уникальный идентификатор документа из семерки. Эти данные сохранить в параметр, а затем в настройках конвертации в процедуре после загрузки данных - получить эту таблицу из параметра и потом: отобрать строки идентификатора в отдельную таблицу, свернуть и в цикле идти по этой таблице делать выборку строк из таблицы параметра и по этой выборке создавать и заполнять нужный документ.
Прикрепленные файлы:
![](/upload/forum/upload/b47/b477b28c65007e5c20f6c549edb5f3f8.png)
(2)
Не совсем понял, какой гуид брать из семерки. В базе семерке(которая после конвертации уже восьмерка) нет документа. Документы заполняются из остатков регистра взаиморасчетов
Не совсем понял, какой гуид брать из семерки. В базе семерке(которая после конвертации уже восьмерка) нет документа. Документы заполняются из остатков регистра взаиморасчетов
<Запрос Имя="ОстаткиВзаиморасчетов" ИспользуетсяПриЗагрузке="false">
<Текст>ВЫБРАТЬ "Покупатели" КАК ВидРегистра,
ВЫБОР
КОГДА Рег.Договор ССЫЛКА Документ.Договор
ТОГДА Рег.Договор.ВидТорговли
КОГДА Рег.Договор = Неопределено
ТОГДА "СПокупателем"
ИНАЧЕ
"СКомитентом"
КОНЕЦ КАК ВидДоговора,
ВЫБОР
КОГДА Рег.Договор = Неопределено
ТОГДА &ОрганизацияПоУмолчанию
ИНАЧЕ
Рег.Договор.Фирма
КОНЕЦ КАК Организация,
Рег.Контрагент КАК Контрагент,
ВЫБОР
КОГДА Рег.Договор ССЫЛКА Документ.Договор
ИЛИ Рег.Договор = Неопределено
ТОГДА Рег.Договор
ИНАЧЕ
Рег.Договор.Договор
КОНЕЦ КАК ДоговорКонтрагента,
Рег.Контрагент.ВалютаВзаиморасчетов.Курс КАК КурсВзаиморасчетов,
Рег.Контрагент.ВалютаВзаиморасчетов.Кратность КАК КратностьВзаиморасчетов,
Рег.ДолгОстаток КАК Сумма
ИЗ РегистрНакопления.ВзаиморасчетыПокупателей.Остатки(&ДатаОстатков) КАК Рег
ГДЕ Рег.Фирма = &ПустаяФирма
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ "Поставщики" КАК ВидРегистра,
ВЫБОР
КОГДА Рег.Договор ССЫЛКА Документ.Договор
ТОГДА Рег.Договор.ВидТорговли
КОГДА Рег.Договор = Неопределено
ТОГДА "СПоставщиком"
ИНАЧЕ
"СКомиссионером"
КОНЕЦ КАК ВидДоговора,
ВЫБОР
КОГДА Рег.Договор = Неопределено
ТОГДА &ОрганизацияПоУмолчанию
ИНАЧЕ
Рег.Договор.Фирма
КОНЕЦ КАК Организация,
Рег.Контрагент КАК Контрагент,
ВЫБОР
КОГДА Рег.Договор ССЫЛКА Документ.Договор
ИЛИ Рег.Договор = Неопределено
ТОГДА Рег.Договор
ИНАЧЕ
Рег.Договор.Договор
КОНЕЦ КАК ДоговорКонтрагента,
Рег.Контрагент.ВалютаВзаиморасчетов.Курс КАК КурсВзаиморасчетов,
Рег.Контрагент.ВалютаВзаиморасчетов.Кратность КАК КратностьВзаиморасчетов,
Рег.ДолгОстаток КАК Сумма
ИЗ РегистрНакопления.ВзаиморасчетыПоставщиков.Остатки(&ДатаОстатков) КАК Рег
ГДЕ Рег.Фирма = &ПустаяФирма
ИТОГИ ПО Контрагент, Организация</Текст>
</Запрос>
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот