Решаем проблему импорта физ лиц как корреспондентов в Документооборот

Возврат к списку

75969_l.jpg

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

Реальный рабочий пример для одного из предприятий - в документообороте ведется учет служебных записок, в базе ДО это организовано как внутренний документ и привязанными к нему бизнес процессами. Во внутреннем документе есть реквизит "Корреспондент", это тот, на кого заведен этот документ. Но вот беда, справочник "Корреспонденты" в Документообороте - это зеркало справочника "Контрагенты" в ERP. А сотрудники у нас не создаются отдельно как Контрагенты.  Можно конечно обязать отдел кадров при приеме сотрудника, создавать запись в справочнике "Контрагенты" в ERP, но кто любит вручную дублировать информацию, мы же идем к автоматизации, а она подразумевает минимум ручного труда.

Для решения данной проблемы бала разработана процедура, которая при записи Физического лица проверяла вначале по наименованию, а потом по ИНН есть ли такой сотрудник в контрагентах, и если нет, то автоматически создавала запись. Эта процедура вешается на событие "ПриЗаписи" справочника физ. лица.

Итак, для интеграции механизма, открываем конфигуратор ERP, создаем общий модуль, я его назвал утОбщегоНазначения (в свойствах ставим галочки 'Сервер' и 'Вызов сервера'), и размещаем следующую процедуру:

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

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

Событие.png

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

>


Возврат к списку