Пример правила конвертации объектов

03.12.20

Интеграция - Обмен между базами 1C

В данной публикации приведен пример создания простого правила переноса/конвертации объектов. Пример демонстрирует один из вариантов переноса хозрасчетного регистра из бухгалтерии 2 в управление торговлей 11 с созданием в последней документов "Ввод остатков" по каждому виду операции с разбивкой по счетам.

Скачать файлы

Наименование Файл Версия Размер
Правило.xml
.xml 106,28Kb
133
.xml 106,28Kb 133 Скачать

Задача этого правила обмена перенести остатки по взаиморасчетам из БП 2 в УТ11.

Поэтапное создание правила обмена с помощью конфигурации "Конвертация данных"(метаданные должны быть загружены ):

1) Создаем правило выгрузки объекта для этого переходим на закладку "Правила выгрузки данных", жмем добавить. В появившемся окне выбираем объект выборки у нас это будет хозрасчетный регистр. Способ выборки меняем на произвольный алгоритм.

Создание правила выгрузки

2) Переходим к написанию самого кода т.к. в УТ нет хозрасчетного регистра то мы должны его преобразовать. Сначала нам нужен запрос который по нашим параметрам будет возвращать остатки по взаиморасчетам. В обработчике события "Перед обработкой" пишем следующий запрос:

ТекстЗапроса =  "    ВЫБРАТЬ
|    ХозрасчетныйОстатки.Счет,
|    ХозрасчетныйОстатки.Субконто1 КАК Субконто1,
|    ЕСТЬNULL(СУММА(ХозрасчетныйОстатки.СуммаОстатокДт),0) КАК СуммаОстатокДт,
|    ЕСТЬNULL(СУММА(ХозрасчетныйОстатки.СуммаОстатокКт),0) КАК СуммаОстатокКт,
|    МАКСИМУМ(ХозрасчетныйОстатки.Субконто2.Дата) КАК ДатаРасчетногоДокумента,
|    МАКСИМУМ(ХозрасчетныйОстатки.Субконто2.Номер) КАК НомерРасчетногоДокумента
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.Остатки(&НаДату, Счет = &счет, ,) КАК ХозрасчетныйОстатки
|ГДЕ
|    ХозрасчетныйОстатки.Субконто1.Родитель <> &группа и
|    ХозрасчетныйОстатки.Субконто1.Родитель <> &группа1
|СГРУППИРОВАТЬ ПО
|    ХозрасчетныйОстатки.Счет,
|    ХозрасчетныйОстатки.Субконто1,
|    ХозрасчетныйОстатки.Субконто2
|УПОРЯДОЧИТЬ ПО
|    Субконто1
|АВТОУПОРЯДОЧИВАНИЕ";

В моей задача стояли ограничения на группы контрагентов по которым выгружаются взаиморасчеты.

Определяем значения переменных которые будут использоваться в дальнейшем.

 НаДату = дата('20130101');
 ТД = ТекущаяДата();
 группа = Справочники.Контрагенты.НайтиПоНаименованию("Покупатели");
 группа1 = Справочники.Контрагенты.НайтиПоНаименованию("Возвраты от ФИЗЛИЦ");

Создаем таблицу которую в последствии будем передавать в правило конвертации значений.

ТЗ = Новый ТаблицаЗначений();
 ТЗ.Колонки.Добавить("Контрагент");
 ТЗ.Колонки.Добавить("Сумма");
 ТЗ.Колонки.Добавить("СуммаРЕГЛ");
 ТЗ.Колонки.Добавить("РасчетныйДокумент");
 ТЗ.Колонки.Добавить("ДатаРасчетногоДокумента");
 ТЗ.Колонки.Добавить("НомерРасчетногоДокумента");
 ТЗ.Колонки.Добавить("Партнер");
 ТЗ.Колонки.Добавить("ВалютаВзаиморасчетов");
 ТЗ.Колонки.Добавить("ДатаПлатежа");

Устанавливаем параметры, вызываем запрос, заполняем таблицу вызываем правило конвертации.

запрос = новый запрос(ТекстЗапроса);
 запрос.УстановитьПараметр("группа",группа);запрос.УстановитьПараметр("группа1",группа1);
 запрос.УстановитьПараметр("НаДату",НаДату);
 запрос.УстановитьПараметр("Счет",ПланыСчетов.Хозрасчетный.РасчетыСПрочимиПоставщикамиИПодрядчиками);//76.05
 Выборка = запрос.Выполнить().Выбрать();
 ТЗ.очистить();
 Пока Выборка.Следующий() Цикл
     если Выборка.СуммаОстатокКТ = 0 или Выборка.СуммаОстатокКТ = "" тогда
        продолжить;    
    конецесли;
    если Выборка.СуммаОстатокКТ < 0тогда
        сообщить(""+Выборка.Субконто1+" отрицательное значение "+Выборка.СуммаОстатокКТ);    
    конецесли;
    СтрокаТЗ = ТЗ.Добавить();
    СтрокаТЗ.Контрагент = Выборка.Субконто1;
    СтрокаТЗ.сумма = Выборка.СуммаОстатокКТ;//Выборка.СуммаОстатокКт;
    СтрокаТЗ.суммаРегл = Выборка.СуммаОстатокКТ;//Выборка.СуммаОстатокКт;
    СтрокаТЗ.ДатаРасчетногоДокумента =Выборка.ДатаРасчетногоДокумента;
    СтрокаТЗ.НомерРасчетногоДокумента =  Выборка.НомерРасчетногоДокумента;
    СтрокаТЗ.ДатаПлатежа = ТД;
КонецЦикла;
 ИсходящиеДанные = Новый Структура;
 ИсходящиеДанные.Вставить("Дата", ТекущаяДата());
 ИсходящиеДанные.Вставить("РасчетыСПартнерами", ТЗ);
 ИсходящиеДанные.Вставить("ТипОперации", "ОстаткиЗадолженностиПередПоставщиками");
 ИсходящиеДанные.Вставить("Комментарий", "Сформировано по кредиту счета 76.05");
 сообщить("76.05 КРЕДИТ начало");
 ВыгрузитьПоПравилу(, , ИсходящиеДанные, , "ВводОстатковПоВзаиморасчетам_7605Кредит");

Аналогично проделываем ту же операцию и для остальных необходимых счетов(их описание как и готовое правило имеется во вложении).

3) Переходим к созданию правил конвертации объектов, для этого открываем закладку "Правила конвертации объектов". Добавим туда новое правило с именем "ВводОстатковПоВзаиморасчетам_7605Кредит" , объект источник оставим пустым, объект приемник установим документ "Ввод остатков", на вкладке настройки уберем флаг "Искать объект приемника по внутреннему идентификатору объекта источника".

 Конвертация объекта

 Правило конвертации

В обработчике события "Перед загрузкой" напишем следующий код:

ГенерироватьНовыйНомерИлиКодЕслиНеУказан = истина;

В обработчике события "После загрузки" напишем:

выполнить(алгоритмы.ПослеЗагрузкиВводаОстатков);

он выполнит алгоритм со следующим содержанием:

валюта = Константы.ВалютаРегламентированногоУчета.Получить();
объект.Ответственный = ПараметрыСеанса.ТекущийПользователь;
объект.организация=параметры.порганизация;
для каждого стр из объект.расчетыспартнерами цикл
Стр.РасчетныйДокумент = Справочники.ДоговорыКонтрагентов.пустаяссылка();
Стр.ВалютаВзаиморасчетов = валюта;
если ЗначениеЗаполнено(стр.контрагент.партнер) тогда
    стр.партнер = стр.контрагент.партнер;
иначе
    парт = Справочники.Партнеры.НайтиПоНаименованию(стр.контрагент.Наименование);
    если парт <> Неопределено и парт <> Справочники.Партнеры.пустаяссылка() тогда
        стр.партнер = парт;
    контрагент = Справочники.Контрагенты.НайтиПоНаименованию(стр.контрагент.Наименование);
    объект2 =  контрагент.ПолучитьОбъект();
    объект2.Партнер = парт;
    объект2.Записать();    
иначе
    выполнить(алгоритмы.ДобавитьПартнера);
    конецесли;    

конецесли;

конеццикла;

Этот алгоритм будет исполнен на стороне приемника(БП). Кроме переноса остатков по взаиморасчетам стоит задача переноса контрагентов, но в УТ используются партнеры поэтому после формирования документа мы проверяем все ли контрагенты и партнеры имеются в базе приемнике, если по какой то причине их нет то мы их добавляем.

 Алгоритм после загрузки

Добавление контрагентов осуществит правило конвертации справочника "Контрагенты" его можно создать точно также как и предыдущее правило, но разрешить системе самой сопоставить необходимые поля.

Для партнеров был создан алгоритм который выполняется на стороне приемника.

 Добавить партнера

Для того чтобы выполнить алгоритм на стороне приемника, надо в правом верхнем углу окна алгоритма(при его редактировании) проставить флаг "Используется при загрузке".

Ниже приведен код алгоритма "Добавить партнера":

        нПартнер = Справочники.Партнеры.СоздатьЭлемент();
        нПартнер.Наименование =стр.контрагент.наименование;
        нПартнер.Комментарий = "Создан при загрузке из БП";
        нПартнер.НаименованиеПолное =стр.контрагент.НаименованиеПолное;
        нПартнер.Поставщик = ?(найти(стр.контрагент.ДополнительнаяИнформация,"Поставщик")>0,истина,ложь);
        нПартнер.Клиент = ?(найти(стр.контрагент.ДополнительнаяИнформация,"Клиент")>0,истина,ложь);
        ПрочиеОтношения = ?(найти(стр.контрагент.ДополнительнаяИнформация,"Прочее")>0,истина,ложь);
        нпартнер.Записать();
        стр.партнер = нпартнер.ссылка;
        контрагент = Справочники.Контрагенты.НайтиПоНаименованию(стр.контрагент.Наименование);
    объект2 =  контрагент.ПолучитьОбъект();
    объект2.Партнер = нпартнер.ссылка;
    объект2.Записать();

Возвращаемся обратно к правилу конвертации объекта. Теперь нам надо установить соответствия полей источника и приемника, это можно было сделать непосредственно перед написанием кода. Для того чтобы сопоставить поля в нижней табличной части имеется кнопка вызова мастера "Синхронизация свойств". В этом мастере мы можем либо сопоставить поля, либо оставить как без источника, так и без приемника. В нашем случае все поля и ТЧ мы оставляем без источника.

После того как необходимы поля были выбраны в нижней ТЧ для каждого поля выставляем флаг в колонке "Получить из входящих данных". Этот флаг говорит о том, что система будет искать это поле во входящих данных. Важно чтобы имя поля совпадало с именем во входящих данных, иначе будет выведено сообщение о том, что поле не найдено.

Текстом описаны не все нюансы процесса.

См. также

SALE! 20%

Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки

Обмен между базами 1C Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) в продаже с 2015 года, постоянно работаем над их развитием | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

45650 36520 руб.

04.08.2015    159689    363    267    

345

SALE! 15%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 22572 руб.

12.06.2017    134940    723    291    

388

SALE! 20%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

34650 27720 руб.

15.04.2019    68420    178    138    

111

SALE! 20%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Предлагаем приобрести готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

43450 34760 руб.

03.12.2020    34169    80    58    

78

SALE! 10%

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 25200 руб.

23.07.2020    46301    196    64    

158

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2. Переносятся начальные остатки, документы и справочники

Обмен между базами 1C Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

В продаже с 2014г. | Воспользовались более 122 предприятий! | Перенос данных из БП 3.0 в УТ 11 | из БП 3.0 в КА 2 | из БП 3.0 в ERP | Сэкономьте свое время - используйте готовое решение для перехода! | Постоянно работаем над развитием переноса данных | Обновляем на новые релизы 1С | Есть фильтр выгрузки по организациям | Переносятся начальные остатки на выбранную дату, документы за период времени и вся возможная справочная информация | Перенос сделан на технологии КД 2 (правила конвертации данных)

50722 45650 руб.

31.10.2014    231412    124    327    

296

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9208    9    8    

10

SALE! 10%

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.223.x) и БП 3.0 (3.0.149.x). Правила подходят для версии ПРОФ и КОРП.

28000 25200 руб.

15.12.2021    20252    132    38    

90
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Famza 84 25.01.13 09:22 Сейчас в теме
(0), к сожалению оформление убило желание читать.
denis_aka_wolf; +1 Ответить
2. Zhilyakovdr 142 26.01.13 20:15 Сейчас в теме
(1) поправил оформление.
3. DoctorRoza 27.01.13 17:17 Сейчас в теме
Норм информация, пригодится!:)
4. Meson 30.01.13 09:50 Сейчас в теме
Добротная статья для начинающих.
5. Crush 30.01.13 10:50 Сейчас в теме
Согласен. Хороший пример для начинающих. Мне б такой в своё время:)
6. ivanov660 4330 13.03.13 10:03 Сейчас в теме
Для начинающих предлагаю добавить больше пояснений. А то получается, что много моментов опущено (хотя бы станет ясно что искать).
7. Zhilyakovdr 142 13.03.13 10:34 Сейчас в теме
Если есть предложения по дополнению статьи, пишите, дополню)))
8. iov 406 24.03.13 12:56 Сейчас в теме
(7)Конвертация данных, редакция 2.1 (2.1.7.1) правила не загружаются.
9. Zhilyakovdr 142 24.03.13 20:08 Сейчас в теме
10. V_K 05.04.13 16:09 Сейчас в теме
Автор, какой у вас релиз КД. У меня после загрузки в названии правил конвертации <Объект не найден> (10:8ca6cc49fd47b1ac11e29de93834ea8d)
и правила пустые
11. Zhilyakovdr 142 05.04.13 17:18 Сейчас в теме
Если правила не грузятся снимите флаг загрузки в транзакции. Эта ошибка происходит из-за правила сопоставления "ТипыОперациВводаОстатков", после загрузки вам вручную придется их снова сопоставить.
12. sumixam 13.02.14 11:29 Сейчас в теме
День добрый, может кто подскажет что не так делаю в конверташке, замаялся уже. Выгружаю субконто Район по 68. счетам, из узла риб, в центр не грузится, в документах где учествует данный счет, в субконто Дт и субконто Кт, в обработчиках свойств, хозрасчетный, дописываю ПКС при выгрузке. Не загружает в центр.

МассивСчетов = Новый Массив;
МассивСчетов.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("68.01"));
МассивСчетов.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("68.10.7"));

Если МассивСчетов.Найти(ОбъектКоллекции.СчетДт) <> Неопределено И
Строка(ВидСубконто) = "Район" Тогда
ИмяПКОВидСубконто = "ВидыСубконтоХозрасчетныеНеПредопределенный";
Иначе
ИмяПКОВидСубконто = "ВидыСубконтоХозрасчетные";
КонецЕсли;
13. Zhilyakovdr 142 13.02.14 17:02 Сейчас в теме
(12) sumixam, Добрый день, я отправил вам в личку свою почту, скиньте ваши правила, постараюсь помочь
14. natarezn 29.12.15 00:45 Сейчас в теме
15. DedMoroz1983 2 13.10.16 10:53 Сейчас в теме
Спасибо за статью и "Правило"
16. Zhilyakovdr 142 14.10.16 10:09 Сейчас в теме
Если у кого то есть вопросы по КД или предложения для статей, темы, пишите в комменты, есть мысль описать неявные возможности КД, но нет конкретного понимания того что будет полезно и интересно другим.
17. Forest 04.06.18 16:43 Сейчас в теме
Спасибо тебе добрый человек. Помогло.
Оставьте свое сообщение