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

03.12.20

Интеграция - Перенос данных 1C

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Правило.xml
.xml 106,28Kb
133
133 Скачать (1 SM) Купить за 1 850 руб.

Задача этого правила обмена перенести остатки по взаиморасчетам из БП 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! 10%

Перенос данных 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27660 руб.

12.06.2017    145721    849    299    

439

SALE! 10%

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

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

35000 31500 руб.

23.07.2020    56185    257    73    

212

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

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

55778 руб.

04.08.2015    170712    360    282    

391

Перенос данных 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 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

55778 руб.

15.04.2019    74274    199    155    

137

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

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

53111 руб.

03.12.2020    38351    108    70    

102

SALE! 10%

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

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

35000 31500 руб.

15.12.2021    26125    187    56    

143

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

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

16260 руб.

18.02.2016    189178    616    534    

537

SALE! 10%

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:ERP Управление предприятием 2.5 и 1С:Комплексную автоматизацию 2.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.244.x), ERP 2.5 (2.5.21.x), КА 2.5 (2.5.21.x).

35000 31500 руб.

24.06.2020    64916    81    28    

94
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Famza 85 25.01.13 09:22 Сейчас в теме
(0), к сожалению оформление убило желание читать.
denis_aka_wolf; +1 Ответить
2. Zhilyakovdr 147 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 4717 13.03.13 10:03 Сейчас в теме
Для начинающих предлагаю добавить больше пояснений. А то получается, что много моментов опущено (хотя бы станет ясно что искать).
7. Zhilyakovdr 147 13.03.13 10:34 Сейчас в теме
Если есть предложения по дополнению статьи, пишите, дополню)))
8. iov 407 24.03.13 12:56 Сейчас в теме
(7)Конвертация данных, редакция 2.1 (2.1.7.1) правила не загружаются.
9. Zhilyakovdr 147 24.03.13 20:08 Сейчас в теме
10. V_K 05.04.13 16:09 Сейчас в теме
Автор, какой у вас релиз КД. У меня после загрузки в названии правил конвертации <Объект не найден> (10:8ca6cc49fd47b1ac11e29de93834ea8d)
и правила пустые
11. Zhilyakovdr 147 05.04.13 17:18 Сейчас в теме
Если правила не грузятся снимите флаг загрузки в транзакции. Эта ошибка происходит из-за правила сопоставления "ТипыОперациВводаОстатков", после загрузки вам вручную придется их снова сопоставить.
12. sumixam 13.02.14 11:29 Сейчас в теме
День добрый, может кто подскажет что не так делаю в конверташке, замаялся уже. Выгружаю субконто Район по 68. счетам, из узла риб, в центр не грузится, в документах где учествует данный счет, в субконто Дт и субконто Кт, в обработчиках свойств, хозрасчетный, дописываю ПКС при выгрузке. Не загружает в центр.

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

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