Реализация обмена по организации в УТ

05.06.14

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

В связи с открытием филиала в другом городе возникла необходимость организации учета в конфигурации "Управление торговлей для Казахстана, ред. 3" (адаптированный аналог "Управление торговлей, ред. 11"). Как оказалось встроенного обмена по организации не оказалось, есть только "Полный". Пришлось реализовывать самому. Конечно был вариант работы через терминальное подключение и тонкий клиент, но в связи во-первых неустойчивыми каналами связи и с заделкой на будущее (большие объемы данных) решил сделать РИБ. И вот об этом моя первая статья, может поможет кому нибудь.

Имеем следующее: Работающая информационная база на основе конфигурации "Управление торговлей для Казахстана, ред. 3", в основном используемая для торговых операций в городе А. Решили открыть филиал в городе Б. Выбирали между 3 вариантами:

1. работа в режиме управляемого приложения (тонкий клиент) (отпал из-за неустойчивого канала связи)

2. работа в терминальном режиме (отпал из-за возможного постоянного конфликта блокировок, проблемы с обновлением)

3. РИБ

Выбрали РИБ (по нашему мнению самый отлаженный и надёжный способ работы при больших нагрузках). Реализацию возложили на меня.

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

Описываю алгоритм:

1) Работа в режиме конфигуратор. Скопировал план обмена "Полный" (так как есть объекты которые должны быть только в региональных базах). Переименовал в "План обмена". Добавил реквизит "организация" с типом справочникссылка. организация

2) Откорректировал состав обмениваемых данных. В общих объектах (справочники, константы, планы видов характеристик) поставил авторегистрация=разрешить. В остальных поставил авторегистрация=запретить.

3) В общих модулях создал глобальный общий модуль "ОбменПоОрганизации" . Текст модуля в файле "Общий модуль".  Для выкладывания текст большой.

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

Функция обОтправлятьОбъектВУзел(Объект, ПланОбмена)
	Если Метаданные.Справочники.Найти(Метаданные.НайтиПОТипу(ТипЗнч(Объект)).Имя) <> Неопределено Тогда
		// Это справочник. Поэтому отправляем.
		Возврат Истина;
	ИначеЕсли Метаданные.РегистрыНакопления.Найти(Метаданные.НайтиПоТипу(ТипЗнч(Объект)).Имя) <> Неопределено Тогда
		// Это регистр накопления. Посмотрим какая организация у него в регистраторе. И есть ли она вообще.
		Рег = Объект.Отбор.Регистратор.Значение.ПолучитьОбъект();
		Если Рег = Неопределено Тогда
			//Если регистратор неопределен, то не отправляем никуда
			Возврат ложь
		КонецЕсли;	
		Если Метаданные.НайтиПоТипу(ТипЗнч(Объект)).Имя =  "ТоварыВПути" Тогда
			Если ТипЗнч(Рег) = Тип("ДокументОбъект.Транзит") Тогда
				Если Рег.ОрганизацияПолучатель = ПланОбмена.Организация или планыобмена.ГлавныйУзел()=ПланОбмена  Тогда
					Возврат Истина;
				Иначе
					Возврат Ложь;
				КонецЕсли;
			Иначе
				Если Рег.Организация = ПланОбмена.Организация или планыобмена.ГлавныйУзел()=ПланОбмена Тогда
					Возврат Истина;
				Иначе
					Возврат Ложь;
				КонецЕсли;
			КонецЕсли;
		Иначе	
			Если ЕстьРеквизитДокумента("Организация", Объект) Тогда
				Если Рег.Организация = ПланОбмена.Организация Тогда
					Возврат Истина;
				Иначе
					Возврат Ложь;
				КонецЕсли;
			Иначе
				// Нет реквизита организация значит уходит однозначно.
				Возврат Истина;
			КонецЕсли;
		КонецЕсли;	
	ИначеЕсли Метаданные.РегистрыСведений.Найти(Метаданные.НайтиПоТипу(ТипЗнч(Объект)).Имя) <> Неопределено Тогда
		// Это регистр сведений. Посмотрим какая организация у него в регистраторе. И есть ли она вообще.
		Попытка
			Рег = Объект.Отбор.Регистратор.Значение.ПолучитьОбъект();
		Исключение
		Конецпопытки;
		
		Если Рег = Неопределено Тогда
			//Если регистратор неопределен, то не отправляем никуда
			Если ЕстьРеквизитДокумента("Организация", Объект) Тогда
				Если Объект.Отбор.Организация.Значение = ПланОбмена.Организация Тогда
					Возврат Истина;
				Иначе
					Возврат Ложь;
				КонецЕсли;
			Иначе
				// Нет реквизита организация значит уходит однозначно.
				Возврат Истина;
			КонецЕсли;
		Иначе 
			Если ЕстьРеквизитДокумента("Организация", Объект) Тогда
				Если Рег.Организация = ПланОбмена.Организация Тогда
					Возврат Истина;
				Иначе
					Возврат Ложь;
				КонецЕсли;
			Иначе
				// Нет реквизита организация значит уходит однозначно.
				Возврат Истина;
			КонецЕсли;
			
			
		КонецЕсли;	
		
		
	Иначе
		// Это документ. Его мы проверяем на организацию.
		Если ЕстьРеквизитДокумента("Организация", Объект) тогда
			Если Объект.Организация = ПланОбмена.Организация или планыобмена.ГлавныйУзел()=ПланОбмена Тогда
				Возврат Истина;
			Иначе
				Если ЕстьРеквизитДокумента("ОрганизацияПолучатель", Объект) Тогда
					Если Объект.ОрганизацияПолучатель = ПланОбмена.Организация или планыобмена.ГлавныйУзел()=ПланОбмена Тогда
						Возврат Истина;
					Иначе
						Возврат Ложь;	
					КонецЕсли;
				Иначе	
					Возврат Ложь;
				КонецЕсли;	
			КонецЕсли;
		Иначе
			// Нет реквизита организация значит уходит однозначно.
			Возврат Истина;
		КонецЕсли;
		
	КонецЕсли;
	
КонецФункции

// Позволяет определить есть ли среди реквизитов шапки документа
// реквизит с переданным именем.
//
// Параметры: 
//  ИмяРеквизита - строковое имя искомого реквизита, 
//  МетаданныеДокумента - объект описания метаданных документа, среди реквизитов которого производится поиск.
//
// Возвращаемое значение:
//  Истина - нашли реквизит с таким именем, Ложь - не нашли.
//
Функция ЕстьРеквизитДокумента(ИмяРеквизита, Объект) Экспорт
	
	ТипОбъекта = ОпределитьТипОбъекта(Объект);
	МетаданныеДокумента = Объект.Метаданные();
	
	Если ТипОбъекта="Документ" тогда
		Если МетаданныеДокумента.Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда
			Возврат Ложь;
		Иначе
			Возврат Истина;
		КонецЕсли; 
	ИначеЕсли ТипОбъекта="РегистрСведений" тогда
		Если МетаданныеДокумента.Измерения.Найти(ИмяРеквизита) = Неопределено Тогда
			Если МетаданныеДокумента.Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда
				Возврат Ложь;
			Иначе
				Возврат Истина;
			КонецЕсли; 
		Иначе
			Возврат Истина;
		КонецЕсли; 
		
	ИначеЕсли ТипОбъекта="РегистрНакопления" тогда
		Если МетаданныеДокумента.Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда
			Возврат Ложь;
		Иначе
			Возврат Истина;
		КонецЕсли; 
		
	Иначе
		Возврат Ложь;
		
	КонецЕсли;
	
	
КонецФункции // ЕстьРеквизитДокумента()

Функция ОпределитьТипОбъекта(Объект)
	
	Класс = Объект.Метаданные().ПолноеИмя();
	Класс = Лев(Класс, Найти(Класс, ".")-1);	
	
	Возврат Класс;
	
КонецФункции

4) Затем в объектах, где данные нужно фильтровать и объект включен в состав обмена (документы, регистры) необходимо в модулях объектов в процедуре приЗаписи добавить вызов процедуры обРегистрацияИзменений().

Если ЭтотОбъект.ОбменДанными.Получатели.АвтоЗаполнение и не ЭтотОбъект.ОбменДанными.Загрузка Тогда
        обРегистрацияИзменений(ЭтотОбъект) ;
КонецЕсли;

5) Подчиненный узел создал копированием оригинала и удалением документов, юзеров. Затем сделал рокировку планов обмена (подмена кодов узла). Установил главный узел.
6) Почистил регистрацию изменений на всякий случай. Нужно учитывать если объект хоть где-то удаляется, то он удаляется и в остальных узлах!!!
7) Затем при первоначальном начале работы подчиненного узла убрал вызов помощника настройки обмена.

И все в принципе. Думаю можно это можно использовать в любых конфигурациях, надо немного дописать для регистров бухгалтерии и расчетов. А так для торговых уже готово.

Вступайте в нашу телеграмм-группу Инфостарт

обмен обмен по организации ут управление торговлей

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

50050 руб.

25.02.2015    190784    372    294    

429

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

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

58000 руб.

04.08.2015    192311    462    308    

462

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27633 24870 руб.

12.06.2017    163195    992    329    

487

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

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

58000 руб.

15.04.2019    86125    231    181    

168

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

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

50200 руб.

24.04.2015    209459    179    253    

298

SALE! 10%

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

Переносите справочную информацию, остатки и документы из УПП 1.3 в Бухгалтерию 3.0 с помощью готовых правил. Переносится более 50 видов документов. Простой интерфейс и понятные настройки.

42000 37800 руб.

15.12.2021    35673    263    68    

200

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

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

55200 руб.

03.12.2020    46356    132    83    

122

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

Обработка не только формирует начальные остатки по всем счетам на нужную дату (экономя время на свёртке базы БП 3), но и полностью переносит справочные данные и документы за заданный период. Гибкая настройка включает фильтр по организациям и множество параметров выгрузки. Работайте в удобном формате: выполните однократный полный переход или настройте регулярную догрузку только новых документов из БП 3 в БП 3.0. Интеграция правил конвертации в план обмена гарантирует точную выгрузку исключительно зарегистрированных объектов.

70760 руб.

10.04.2026    1020    3    8    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Bor_ka 103 28.08.14 14:55 Сейчас в теме
Понравился подход, можно подробнее о пунктах 5,6,7?
2. Bajo 88 29.08.14 06:51 Сейчас в теме
(1) Bor_ka, по пункту 5. В оригинале базы создал подчиненные узлы. Сделал копию выгрузив базу в *.DT. Загрузил в чистую базу. В планах обмена в новой базе удалил лишние узлы осталось только 2. Поменял коды узлов местами. Откорректировал реквизит "Организация" в соответствии с реальностью.
пункт 6. Все объекты имеют уникальный идентификатор. Если в филиале №1 в справочнике контрагенты произойдет непосредственное удаление элемента, то после обмена с центром этот объект удалится в центральной базе. Затем когда центральная база сделает обмен с филиалом №2, то объект удалится и в этой базе.
пункт 7. при развертке РИБ в типовой конфигурации при первом запуске базы автоматически запускается помощник настройки обмена. он работает косячно. я не стал разбираться, просто отключил его.

базы работают уже полгода никаких проблем с обменом.
3. kumga99 26 18.06.15 14:59 Сейчас в теме
Калайсын,Айтуар? красавчик, буны сен енгизип един эпл ситиде?
4. Bajo 88 30.06.15 14:39 Сейчас в теме
(3) kumga99, Жаксы. Сам как? Да эпл март кой. Кайда жумыс истеп журсин?
Для отправки сообщения требуется регистрация/авторизация