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

19.11.20

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

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

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

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

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

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

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

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

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

   

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

См. также

Перенос данных 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 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

45650 руб.

04.08.2015    164673    379    275    

367

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

45650 руб.

15.04.2019    71295    178    148    

120

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

26280 руб.

12.06.2017    139764    774    295    

407

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

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

28000 руб.

15.12.2021    22835    152    46    

111

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

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

84000 руб.

19.08.2020    24126    22    1    

24

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

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Предлагаем качественное и проверенное временем решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных.

45650 руб.

24.04.2015    193896    147    242    

278

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

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

45650 руб.

31.10.2014    235566    97    332    

303

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

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

60000 руб.

05.10.2022    10304    11    8    

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

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


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

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

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

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

Или я чего-то не понимаю?
4. Pervuy 65 13.01.20 13:54 Сейчас в теме
(3)В ПКС прописано, что Регистратор = НомерДокумента. Потому все правильно написано
5. Cvetic 307 11.08.21 10:20 Сейчас в теме
А как сделать наоборот? Нужно настроить правила конвертации между регистрами сведений независимым и подчиненным регистратору.
При загрузке выходит "Ошибка записи! Не установлен отбор по регистратору"
Нужно каким-то образом создать новый документ-регистратор. Где его создавать и как?
6. Pervuy 65 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 65 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 416 29.02.24 10:45 Сейчас в теме
Спасибо всем за инфу.
Модифицировал до универсального кода.
Выгружает каждую запись регистратора в независимый регистр по правилу
Может кому пригодиться.
Код в обработчике "Перед выгрузкой"
// Необходимые поля отбора
ПоляОтбора=Новый Массив;
ПоляОтбора.Добавить("Период");  // У подчиненного регистратору всегда есть
МетаданныеРегистра=Метаданные.НайтиПоТипу(ТипЗнч(Объект));
Для каждого МетаИзмерение Из МетаданныеРегистра.Измерения Цикл
	ПоляОтбора.Добавить(МетаИзмерение.Имя);	
КонецЦикла;

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

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

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

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