Правила конвертации между регистрами сведений подчиненным регистратору и независимым

19.11.20

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

Принцип настройки правил обмена в БСП между регистрами сведений, когда один из них подчинен регистратору, а второй независимый.

1. Структура регистров

2. Основной отбор 

   Основной отбор - это свойство измерений регистра сведений. Если это свойство установлено в измерениях, то когда формируется таблица регистрации она имеет структуру только из полей основного отбора. Если РС независимый и периодический, то основной отбор можно поставить на любое измерение и на измерение Период это галочка "Основной отбор по периоду". Если РС подчиненный регистратору, то у него Регистратор и является полем основного отбора. Соответственно в таблице регистрации есть только документы регистраторы наборов данных. 

3. Проблемы возникшие при написании правил конвертации

   Изначально я не учел этого принципа регистрации, что был описан выше. Сделал все по пунктам: 

  1. Добавил РС (подчиненный регистратору) в план обмена, отключил авторегистрацию в нем.
  2. Добавил в подписку, которая регистрирует наборы данных.
  3. Написал обычные правила для двух идентичных РС. Регистратор в эти правила не включал вообще решил он не нужен в другой базе ж нету такого документа.
  4. Создал правила выгрузки.

   В итоге данные начали ходить не корректно. Как решение подумал сделать так как на рисунку ниже. В итоге данные перегрузились но если было в моем регистре 2 записи в одну секунду то они друг друга перетирали в базе приемнике. 

   

4. Решение проблемы

Пишем обычные ПКО тут нету никаких хитростей

А вот самые основные манипуляции происходят в ПВД. Добавляем в обработчик ПередВыгрузкой необходимый код.

Листинг кода:

Отбор = Новый ТаблицаЗначений;
Отбор.Колонки.Добавить ("Имя");
Отбор.Колонки.Добавить ("Значение");
Отбор.Колонки.Добавить ("Использование");
// В таблицу отбора добавляем поля, по которым в базе приемнике будем искать уникальность наборов записей
// в базе приемнике

// Когда в Регистраторе меняют дату, то в другую базу приходят
// записи РС как новые, а со старой датой подвисают.
// также переменные участвующие в отборах лучше один раз инициализировать и потом использовать
// речь идет про ПериодОтбор и НомерОтбор 
//ПериодОтбор = Объект.Отбор.Регистратор.Значение.Дата;

ДатаДокумента = Объект.Отбор.Регистратор.Значение.Дата;
Если ТипЗнч(Объект.Отбор.Регистратор) = Тип("ДокументСсылка.ЧекККМ") Тогда
	ПериодОтбор = НачалоДня(ДатаДокумента);	
Иначе
	ПериодОтбор = НачалоГода(ДатаДокумента);	
КонецЕсли;
НомерОтбор = Объект.Отбор.Регистратор.Значение.Номер;

СтрокаОтбора = Отбор.Добавить ();
СтрокаОтбора.Имя	 		= 	"Период";
СтрокаОтбора.Значение 		= 	ПериодОтбор;
СтрокаОтбора.Использование	= 	Истина;

СтрокаОтбора = Отбор.Добавить ();
СтрокаОтбора.Имя	 		= 	"Регистратор";
СтрокаОтбора.Значение 		= 	НомерОтбор;
СтрокаОтбора.Использование	= 	Истина;

Строки = Новый ТаблицаЗначений;
Строки.Колонки.Добавить("Период");
Строки.Колонки.Добавить("Регистратор");
Строки.Колонки.Добавить("Номенклатура");
Строки.Колонки.Добавить("Характеристика");
Строки.Колонки.Добавить("Количество");

// Объект - набор записей из базы источника
// формируем таблицу строк 
Для каждого Запись Из Объект Цикл	
	
	Строка = Строки.Добавить();
	Строка.Период				= 	ПериодОтбор;
	Строка.Регистратор			= 	НомерОтбор;
	Строка.Номенклатура			= 	Запись.Номенклатура;
	Строка.Характеристика		= 	Запись.Характеристика;
	Строка.Количество			= 	Запись.Количество;
	
КонецЦикла;

НаборЗаписей = Новый Структура("Отбор, Строки");
НаборЗаписей.Отбор 	= Отбор;
НаборЗаписей.Строки = Строки;

ВыгрузитьРегистр(НаборЗаписей,,,,"ПродажиЗаДень");

Отказ = Истина;

Спасибо за внимание! 

 

правила обмена конвертация данных основной отбор ВыгрузитьРегистр

См. также

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    159662    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    134915    722    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    68410    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    34166    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    46281    196    64    

157

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    231386    124    327    

295

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

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

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

60000 руб.

05.10.2022    9204    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    20232    132    38    

90
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Serge_ASB 06.08.19 16:30 Сейчас в теме
А "ВыгрузитьРегистр" - это что за процедура?
2. Altez 256 27.08.19 13:12 Сейчас в теме
(1)ИЗ БСП. В Документообороте делал через

Обработки.КонвертацияОбъектовИнформационныхБаз.Создать().ВыгрузитьРегистр(НаборЗаписей) - вышла ошибка, вернулся к проверенному временем


Пока Выборка.Следующий () Цикл

          ВыгрузитьПоПравилу(Выборка,,,,"ДвоичныеДанныеФайлов");

КонецЦикла;
3. vk_ustilim 11.01.20 17:04 Сейчас в теме
Я понимаю так, что это поиск в базе приемника - тогда должно быть так:

СтрокаОтбора = Отбор.Добавить ();
СтрокаОтбора.Имя = "НомерДокумента";
СтрокаОтбора.Значение = Объект.Отбор.Регистратор.Значение.Номер;
СтрокаОтбора.Использование = Истина;

Или я чего-то не понимаю?
4. Pervuy 62 13.01.20 13:54 Сейчас в теме
(3)В ПКС прописано, что Регистратор = НомерДокумента. Потому все правильно написано
5. Cvetic 307 11.08.21 10:20 Сейчас в теме
А как сделать наоборот? Нужно настроить правила конвертации между регистрами сведений независимым и подчиненным регистратору.
При загрузке выходит "Ошибка записи! Не установлен отбор по регистратору"
Нужно каким-то образом создать новый документ-регистратор. Где его создавать и как?
6. Pervuy 62 17.08.21 16:02 Сейчас в теме
(5) По идее надо с записи РС создавать документ, а документ при проведении уже сделает записи в этот регистр. Но в документе явно больше данных надо заполнять чем в самом регистре будет.
Задача очень индивидуальная, не могу подсказать.
7. user1740139 08.02.22 02:44 Сейчас в теме
(6)Здравствуйте! Можно с Вами связаться??? Интересует интеграция POS-терминала с 1С. Увидел что вы синхронизировали 140 магазинов у нас 26 магазинов просьба дать обратную связь... Если что мы с Украины
8. sergant500 06.05.22 12:21 Сейчас в теме
Благодарю! Код помог в моей ситуации, когда нужно было перенести регистр "Цены номенклатуры" подчиненный регистратору в независимый регистр сведений "Цены номенклатуры"
9. Amara 02.06.22 11:03 Сейчас в теме
Спасибо что поделились! долго мучалась с аналогичной проблемой, вылетал обмен на регистре Кадровая история.
Но т.к. в приемнике не было измерения аналога Регистратору, вносить в конфу изменения не планировалось, модернизировала Ваш код, перенесла формирование Отбора и Набора записей в цикл.
может кому пригодится:
Отбор = Новый ТаблицаЗначений;
Отбор.Колонки.Добавить ("Имя");
Отбор.Колонки.Добавить ("Значение");
Отбор.Колонки.Добавить ("Использование");

Строки = Новый ТаблицаЗначений;
Строки.Колонки.Добавить("Период");
Строки.Колонки.Добавить("Сотрудник");
Строки.Колонки.Добавить("ФизическоеЛицо");
Строки.Колонки.Добавить("Организация");
Строки.Колонки.Добавить("Подразделение");
Строки.Колонки.Добавить("ВидСобытия");
Строки.Колонки.Добавить("ДолжностьПоШтатномуРасписанию");
Строки.Колонки.Добавить("Должность");
Строки.Колонки.Добавить("ВидЗанятости");
Строки.Колонки.Добавить("ВидДоговора");
	
Для каждого Запись Из Объект Цикл
	Отбор.Очистить();
	Строки.Очистить();
	
	СтрокаОтбора = Отбор.Добавить();
	СтрокаОтбора.Имя	 		= 	"Период";
	СтрокаОтбора.Значение 		= 	Объект.Отбор.Регистратор.Значение.Дата;
	СтрокаОтбора.Использование	= 	Истина;

	СтрокаОтбора = Отбор.Добавить();
	СтрокаОтбора.Имя	 		= 	"Сотрудник";
	СтрокаОтбора.Значение 		= 	Запись.Сотрудник;
	СтрокаОтбора.Использование	= 	Истина;

	СтрокаОтбора = Отбор.Добавить();
	СтрокаОтбора.Имя	 		= 	"Организация";
	СтрокаОтбора.Значение 		= 	Запись.Организация;
	СтрокаОтбора.Использование	= 	Истина;

	Строка = Строки.Добавить();
	Строка.Период		= ПериодОтбор;
	Строка.Сотрудник	= Запись.Сотрудник;
	Строка.Организация	= Запись.Организация;
	Строка.Подразделение= Запись.Подразделение;
	Строка.ВидСобытия	= Запись.ВидСобытия;
	Строка.Должность	= Запись.Должность;
	Строка.ВидЗанятости	= Запись.ВидЗанятости;
	Строка.ВидДоговора	= Запись.ВидДоговора;
	Строка.ДолжностьПоШтатномуРасписанию = Запись.ДолжностьПоШтатномуРасписанию;
	
	НаборЗаписей = Новый Структура("Отбор, Строки");
	НаборЗаписей.Отбор 	= Отбор;
	НаборЗаписей.Строки = Строки;

	ВыгрузитьРегистр(НаборЗаписей,,,,"КадроваяИсторияСотрудников");
КонецЦикла;

Отказ = Истина;
Показать
10. user1337687 10.09.22 15:04 Сейчас в теме
А что запишется, если регистратор пометили на удаление или отменили проведение?
Пустые номенклатура, хар-ка и кол-во?
11. Pervuy 62 12.09.22 17:06 Сейчас в теме
(10) Пойдет по обмену пустой набор записей и просто затрет запись.
12. user619560 13.09.22 18:58 Сейчас в теме
А у меня "Объект" это одна запись, такое может быть?
13. user1337687 17.09.22 15:37 Сейчас в теме
Использую обработку "Универсальный обмен данными в формате XML 2,1,8"
"ВыгрузитьРегистр" в ней нет
14. Gmix 412 29.02.24 10:45 Сейчас в теме
Спасибо всем за инфу.
Модифицировал до универсального кода.
Выгружает каждую запись регистратора в независимый регистр по правилу
Может кому пригодиться.
Код в обработчике "Перед выгрузкой"
// Необходимые поля отбора
ПоляОтбора=Новый Массив;
ПоляОтбора.Добавить("Период");  // У подчиненного регистратору всегда есть
МетаданныеРегистра=Метаданные.НайтиПоТипу(ТипЗнч(Объект));
Для каждого МетаИзмерение Из МетаданныеРегистра.Измерения Цикл
	ПоляОтбора.Добавить(МетаИзмерение.Имя);	
КонецЦикла;

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

Строки=Объект.ВыгрузитьКолонки();

Для каждого Запись Из Объект Цикл
	Отбор.Очистить();
	Строки.Очистить();
	
	Для каждого ИмяПоля Из ПоляОтбора Цикл
		СтрокаОтбора = Отбор.Добавить();
		СтрокаОтбора.Имя              =     ИмяПоля;
		СтрокаОтбора.Значение         =     Запись[ИмяПоля];
		СтрокаОтбора.Использование    =     Истина;
	КонецЦикла;
	
	ЗаполнитьЗначенияСвойств(Строки.Добавить(),Запись);
	
	НаборЗаписей = Новый Структура("Отбор, Строки");
	НаборЗаписей.Отбор     = Отбор;
	НаборЗаписей.Строки = Строки;
	
	ВыгрузитьРегистр(НаборЗаписей,,,,ИмяПКО);
КонецЦикла;
Отказ=Истина;
Показать
15. Pervuy 62 19.03.24 11:38 Сейчас в теме
(14)Этот вариант нормальный, если измерения в Источнике и Приемнике совпадают.

Если в источника измерения одни, а в приемнике другие, то Отборы продеться руками прописывать.
Оставьте свое сообщение