Каталог решений - Перенос физического лица из ЗУП в БП

Перенос физического лица из ЗУП в БП

Перенос физического лица из ЗУП в БП

В наличии

Когда регламентированная зарплата переносится из ЗУП в БП без разреза по сотрудникам, то в БП приходится вручную повторять ввод физического лица, ранее уже введенного в ЗУПе. Я немного дописал ЗУП и нужных людей (подотчётники, водители и проч.) можно переносить из ЗУПа в БП. Названия переменных и функций объясняются тем, что в организации, для которой это написано, бухгалтерский учет ведется в отраслевой конфигурации Подрядчик строительства на базе БП.

Категория:

Описание

 1. Добавляем константу ПоПуть, тип строка.

2. Создаем общую форму ПоПуть, для ввода значения константы ПоПуть.

3. У справочника ФизическиеЛица, копированеим формы ФормаСписка, создаем форму ФормаСписка1, делаем ее основной формой списка.

    Создание новой формы обусловлено желанием не усложнять обновление релизов ЗУПа. 

4. В ФормаСписка1:

       — объявляем две пересенные: Перем Подрядчик, Подразделение;

       — добавляем две кнопки с процедурами:

Процедура УстановитьПоПуть(Кнопка)
 ОткрытьФорму("ОбщаяФорма.ПоПуть");
КонецПроцедуры

     и

Процедура ПодСинхронизация(Кнопка)
 
 Попытка V82 = Новый COMОбъект("V82.ComConnector");
 Исключение Предупреждение("Нет V8"); Возврат;
 КонецПопытки;
 
 СтрокаПодключения = "file='"+Константы.ПоПуть.Получить()+
 "'; usr='Обменник'; pwd='19096019';";
 Подрядчик = V82.Connect(СтрокаПодключения);
 
 Фли = ЭтаФорма.ТекущийЭлемент.ТекущаяСтрока;
 Если Фли.ЭтоГруппа Тогда Возврат; КонецЕсли;
 
 Запрос = Подрядчик.NewObject("Запрос"); 
 Запрос.Текст = 
 "ВЫБРАТЬ
 | ФизическиеЛица.ИНН
 |ИЗ
 | Справочник.ФизическиеЛица КАК ФизическиеЛица
 |ГДЕ
 | ФизическиеЛица.Наименование = &Наименование
 | И ФизическиеЛица.ИНН = &ИНН";
 Запрос.УстановитьПараметр("Наименование", Фли.Наименование);
 Запрос.УстановитьПараметр("ИНН", Фли.ИНН);
 Таб = Запрос.Выполнить().Выгрузить();
 Если Таб.Количество() > 0 Тогда
  Предупреждение("Физлицо: "+Фли.Наименование+", ИНН: "+Фли.ИНН+" уже существует в Подрядчике");
  Возврат;
 КонецЕсли; 
 ЗаполнитьПодразд(Фли);
 
 Фпо = Подрядчик.Справочники.ФизическиеЛица.СоздатьЭлемент(); 
 Фпо.Наименование  = Фли.Наименование;
 Фпо.ДатаРождения  = Фли.ДатаРождения;
 Фпо.ИНН     = Фли.ИНН;
 Фпо.КодИМНС    = Фли.КодИМНС;
 Фпо.Комментарий   = Фли.Комментарий;
 Фпо.СтраховойНомерПФР = Фли.СтраховойНомерПФР;
 Если Не Фли.Пол.Пустая() Тогда
 Фпо.Пол     = Подрядчик.Перечисления.ПолФизическихЛиц.Получить(Перечисления.ПолФизическихЛиц.Индекс(Фли.Пол));
 КонецЕсли; 
 Фпо.МестоРождения  = Фли.МестоРождения;
 Фпо.Подразделение  = Подразделение;
 Фпо.Записать();
 
 Запрос = Новый Запрос( 
 "ВЫБРАТЬ
 | ФИОФизЛицСрезПоследних.Фамилия,
 | ФИОФизЛицСрезПоследних.Имя,
 | ФИОФизЛицСрезПоследних.Отчество
 |ИЗ
 | РегистрСведений.ФИОФизЛиц.СрезПоследних КАК ФИОФизЛицСрезПоследних
 |ГДЕ
 | ФИОФизЛицСрезПоследних.ФизЛицо = &ФизЛицо"
 );
 Запрос.УстановитьПараметр("ФизЛицо", Фли);
 Таб = Запрос.Выполнить().Выгрузить();
 Если Таб.Количество() > 0 Тогда
 
  НаборЗаписей = Подрядчик.РегистрыСведений.ФИОФизЛиц.СоздатьНаборЗаписей();
  НаборЗаписей.Отбор.ФизЛицо.Установить(Фпо.Ссылка);

  НовЗапись = НаборЗаписей.Добавить();
  НовЗапись.ФизЛицо = Фпо.Ссылка;
  НовЗапись.Период = ТекущаяДата();
  НовЗапись.Фамилия = Таб[0].Фамилия;
  НовЗапись.Имя  = Таб[0].Имя; 
  НовЗапись.Отчество = Таб[0].Отчество;
  
  НаборЗаписей.Записать(Истина);
 
 КонецЕсли;
 
КонецПроцедуры

       — добавляем процедуру ЗаполнитьПодразд (вызывается из процедуры ПодСинхронизация):

Процедура ЗаполнитьПодразд(Физлицо)
 ПодрОрг = Подрядчик.Справочники.ПодразделенияОрганизаций;
 Подразделение = ПодрОрг.ПустаяСсылка();
 Запрос = Новый Запрос( 
 "ВЫБРАТЬ
 | СотрудникиОрганизаций.ТекущееПодразделениеОрганизации КАК Подразделение,
 | СотрудникиОрганизаций.ДатаУвольнения
 |ИЗ
 | Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
 |ГДЕ
 | СотрудникиОрганизаций.Физлицо = &Физлицо"
 ); 
 Запрос.УстановитьПараметр("Физлицо", Физлицо);
 Таб = Запрос.Выполнить().Выгрузить();
 Для каждого Та Из Таб Цикл
  Если Та.ДатаУвольнения = Дата(1,1,1) Тогда
   Если Не Та.Подразделение.Пустая() Тогда
    Подразделение = ПодрОрг.НайтиПоКоду(Та.Подразделение.Код);
   КонецЕсли; 
  КонецЕсли; 
 КонецЦикла; 
КонецПроцедуры

 

           Порядок работы:

       — по кнопке «Путь расположения ЗУП» определяем место расположение ЗУП

      

       — по кнопке «Синхронизация с Подрядчиком» текущее физлицо создается в Подрядчике. В приведенном

         примере копируется Бабенко

       

 

       — при попытке перенести физлицо, уже существующее в Подрядчике, выдается предупреждение и перенос не осуществляется

 

 

has been added to your cart:
Оформление заказа