13.05.2025 Марс Айзатуллов 1629
Как разработать методику обработки данных для...

Содержание:


1.    Реализация присвоения категорий "Participant" и "Exit" в конфигурации ЗУП 3.1

 

Требуется разработать обработку для изменения категории URSA для принятых сотрудников.

При проведении документа кадрового приема (при синхронизации с базами источниками) необходимо присваивать новым сотруднику категорию "Participant".

При повторном приеме сотрудника также присваивается категория "Participant".

Если у документа ПриемНаРаботу установлен булевый признак NOE_ТехническийПрием то процедуру присваивания не производим.

Требуется разработать обработку для изменения категории URSA для уволенных сотрудников.

При проведении документа кадрового увольнения (при синхронизации с базами источниками) базы Консолидации необходимо присваивать уволенным сотрудникам категорию "Exit"

Если у документа Увольнение установлен булевый признак NOE_ТехническоеУвольнение то процедуру присваивания не производим.

Конфигурация ЗУП 3.1 КОРП  


2.    Решение задачи с использованием расширения 1С NAC_Доработки

 

Задачу решаем с использования расширения NAC_Доработки.

Для документа ПриемНаРаботу:

1.    Создаем подписку на событие NAC_УстановкаУровниURSA_участник для

ДокументОбъект.ПриемНаРаботу на событие ОбработкаПроведения

обработчик NAC_УстановкаУровниURSA_участникОбработкаПроведения

 

2.    Создаем для подписки на событие NAC_УстановкаУровниURSA_участник общий модуль NAC_УстановкаУровниURSA

 

3.    В общем модуле создаем экспортную процедуру NAC_УстановкаУровниURSA_участникОбработкаПроведения

 

Для документа Увольнение:

1.    Создаем подписку на событие NAC_УстановкаУровниURSA_уволен для

ДокументОбъект. Увольнение на событие ОбработкаПроведения

обработчик NAC_УстановкаУровниURSA_уволенОбработкаПроведения

 

2.    В общем модуле NAC_УстановкаУровниURSA создаем экспортную процедуру

            NAC_УстановкаУровниURSA_уволенОбработкаПроведения

 

Процедуры и функции общего модуля расширения:

Процедура NAC_УстановкаУровниURSA_участникОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт

   

    Если Источник.NOE_ТехническийПрием Тогда

       

        Возврат;

       

    КонецЕсли;

   

    ЭтоБазаКонсолидации = ПолучитьПризнакЭтоБазаКонсолидации();  

   

    //Сообщить("ЭтоБазаКонсолидации = " + ЭтоБазаКонсолидации);

   

    Если ЭтоБазаКонсолидации = Истина Тогда

       

        Возврат;

       

    КонецЕсли;

   

    ФизическоеЛицо = Источник.ФизическоеЛицо;

   

    НаборЗаписей = РегистрыСведений.NOE_СтатусЧленстваВURSA.СоздатьНаборЗаписей();

   

    УровеньURSA = Справочники.УровниURSA.НайтиПоНаименованию("Участник", Истина);

   

    НаборЗаписей.Отбор.ФизическоеЛицо.Установить(ФизическоеЛицо);

    НаборЗаписей.Прочитать();

   

    Если НаборЗаписей.Количество() = 0 Тогда

       

        МаксимальныйНомер = ПолучитьМаксимальныйНомер();

       

        МаксимальныйНомер = Формат(Число(МаксимальныйНомер), "ЧГ=0");

       

        Номер = Число(МаксимальныйНомер) + 1;

       

        Номер = Формат(Номер, "ЧГ=0");

       

    Иначе

       

        СтараяЗапись = НаборЗаписей[0];

       

        Номер = СтараяЗапись.Номер;

       

        МаксимальныйНомер = Номер;

       

    КонецЕсли;

   

    НоваяЗапись = Неопределено;

   

    ВидОперацииВступил = Перечисления.NOE_ВидДвиженияURSA.Вступил;

   

    Для каждого Запись Из НаборЗаписей Цикл

   

        Если Запись.Период = Источник.ДатаПриема и Запись.ВидОперации = ВидОперацииВступил Тогда

       

             НоваяЗапись = Запись;   

            

             Прервать;

       

        КонецЕсли;

   

   КонецЦикла;

   

    Если НоваяЗапись = Неопределено Тогда

   

        НоваяЗапись = НаборЗаписей.Добавить();

   

    КонецЕсли;

   

    URSABage = "P" + Номер;

   

    //Сообщить("МаксимальныйНомер = " + МаксимальныйНомер);

    //Сообщить("Номер = " + Номер);

   

    НоваяЗапись.УровеньURSA    = УровеньURSA;

    НоваяЗапись.Период         = Источник.ДатаПриема;

    НоваяЗапись.ФизическоеЛицо = ФизическоеЛицо;

    НоваяЗапись.ВидОперации    = ВидОперацииВступил;

    НоваяЗапись.Номер          = Номер;

    НоваяЗапись.URSABage       = URSABage;

   

    НаборЗаписей.Записать();

   

КонецПроцедуры

 

Процедура NAC_УстановкаУровниURSA_уволенОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт

   

    Если Источник.NOE_ТехническоеУвольнение Тогда

       

        Возврат;

       

    КонецЕсли;

   

    ЭтоБазаКонсолидации = ПолучитьПризнакЭтоБазаКонсолидации();  

   

    //Сообщить("ЭтоБазаКонсолидации = " + ЭтоБазаКонсолидации);

   

    Если ЭтоБазаКонсолидации = Истина Тогда

       

        Возврат;

       

    КонецЕсли;

   

    ФизическоеЛицо = Источник.ФизическоеЛицо;

   

    НаборЗаписей = РегистрыСведений.NOE_СтатусЧленстваВURSA.СоздатьНаборЗаписей();

   

    УровеньURSA = Справочники.УровниURSA.НайтиПоНаименованию("Уволен", Истина);

   

    НаборЗаписей.Отбор.ФизическоеЛицо.Установить(ФизическоеЛицо);

    НаборЗаписей.Прочитать();  

   

    Если НаборЗаписей.Количество() > 0 Тогда

       

        Запись = НаборЗаписей[0];

       

        Номер = Запись.Номер;

       

        URSABage = "E" + Номер;

       

        НоваяЗапись = Неопределено;

       

        ВидОперацииВышел = Перечисления.NOE_ВидДвиженияURSA.Вышел;

       

        Для каждого Запись Из НаборЗаписей Цикл

           

            Если Запись.Период = Источник.ДатаУвольнения и Запись.ВидОперации = ВидОперацииВышел Тогда

               

                НоваяЗапись = Запись;   

               

                Прервать;

               

            КонецЕсли;

           

        КонецЦикла;

       

        Если НоваяЗапись = Неопределено Тогда

           

            НоваяЗапись = НаборЗаписей.Добавить();

           

        КонецЕсли;

       

        НоваяЗапись.УровеньURSA    = УровеньURSA;

        НоваяЗапись.Период         = Источник.ДатаУвольнения;

        НоваяЗапись.ФизическоеЛицо = ФизическоеЛицо;

        НоваяЗапись.ВидОперации    = ВидОперацииВышел;

        НоваяЗапись.Номер          = Номер;

        НоваяЗапись.URSABage       = URSABage;

       

        НаборЗаписей.Записать();

       

    КонецЕсли;

   

КонецПроцедуры

 

Функция ПолучитьМаксимальныйНомер() Экспорт

   

    МаксимальныйНомер = 0;

   

    Запрос = Новый Запрос;

    Запрос.Текст =

    "ВЫБРАТЬ ПЕРВЫЕ 1

    |    NOE_СтатусЧленстваВURSA.Номер КАК МаксимальныйНомер

    |ИЗ

    |    РегистрСведений.NOE_СтатусЧленстваВURSA КАК NOE_СтатусЧленстваВURSA

    |

    |УПОРЯДОЧИТЬ ПО

    |    Номер УБЫВ";

   

    РезультатЗапроса = Запрос.Выполнить();

   

    Выборка = РезультатЗапроса.Выбрать();

   

    Если Выборка.Следующий() Тогда

       

        МаксимальныйНомер = Выборка.МаксимальныйНомер;   

       

    КонецЕсли;  

   

    Возврат МаксимальныйНомер;

   

КонецФункции  

 

Функция ПолучитьПризнакЭтоБазаКонсолидации() Экспорт

   

    ЭтоБазаКонсолидации = Ложь;

   

    Запрос = Новый Запрос;

    Запрос.Текст = "ВЫБРАТЬ

    |    NAC_Константы.Значение КАК ЭтоБазаКонсолидации

    |ИЗ

    |    ПланВидовХарактеристик.NAC_Константы КАК NAC_Константы

    |ГДЕ

    |    NAC_Константы.Ссылка = ЗНАЧЕНИЕ(ПланВидовХарактеристик.NAC_Константы.NOE_ЭтоБазаКонсолидации)";

   

    РезультатЗапроса = Запрос.Выполнить();

   

    Выборка = РезультатЗапроса.Выбрать();

   

    Если Выборка.Следующий() Тогда

       

        ЭтоБазаКонсолидации = Выборка.ЭтоБазаКонсолидации;   

       

    КонецЕсли;  

   

    Возврат ЭтоБазаКонсолидации;

   

КонецФункции

 

Функция ПолучитьПризнакЭтоМембер(УровеньURSA) Экспорт

   

    ЭтоМембер = Ложь;

   

    СпрУровниURSA = Справочники.УровниURSA;

   

    Массив = Новый Массив;

    Массив.Добавить(СпрУровниURSA.НайтиПоНаименованию("Главный Руководящий Член Сообщества (CECM)", Истина));

    Массив.Добавить(СпрУровниURSA.НайтиПоНаименованию("Руководящий Член Сообщества (ECM)", Истина));

    Массив.Добавить(СпрУровниURSA.НайтиПоНаименованию("Специальный Член Сообщества (SCM)", Истина));

    Массив.Добавить(СпрУровниURSA.НайтиПоНаименованию("Член Сообщества (CM)", Истина));

   

    Для каждого стр Из Массив Цикл

       

        Если стр = УровеньURSA Тогда

           

            ЭтоМембер = Истина;

           

            Прервать;

           

        КонецЕсли;

       

    КонецЦикла;    

   

    Возврат ЭтоМембер;

   

КонецФункции

 

 

Специалист компании ООО "Кодерлайн"

Марс Айзатуллов

Наши проекты

Автоматизация контроля исполнительской дисциплины на базе ПП «1С:Документооборот 8 ПРОФ»
ООО «ФСК Лидер»

Отрасль:
Строительство и девелопмент

Внедренное типовое решение:
1С:Документооборот 8 ПРОФ

- Делопроизводство;
- Учет и хранение документов;
- Учет и контроль исполне...

Внедрение «1С:Бухгалтерия 8 ПРОФ» в компании «Мостехника»
ООО «Мостехника»

Отрасль:
Торговля

Внедренное типовое решение:
1С:Бухгалтерия ПРОФ

Документооборот (ECM):
- Учет рабочего времени;
Управление персоналом и ка...

ОАО «Фаберлик»
ОАО «Фаберлик»

Отрасль:

Внедренное типовое решение:
1С:ERP. Управление производственным предприятием 2

- Регламентированный учет;
- Кадровый учет;...

АО «РЭП Холдинг»
АО «РЭП Холдинг»

Отрасль:
Энергомашиностроительный холдинг

Внедренное типовое решение:
«1С: Управление производственным предприятием» и «1С:Консолидация ПРОФ»

- Функциональный блок «Консолидированная отчетность РСБУ» - разработка час...

ООО «Лаборатория успеха»
ООО «Лаборатория успеха»

Отрасль:
Общественное и плановое питание, гостиничный бизнес, туризм

Внедренное типовое решение:
1С:Зарплата и управление персоналом 8. КОРП

Кадровый учет;
Расчет зарплаты;...

Автоматизация кадрового учета на базе ПП "1С:Зарплата и управление персоналом" в ТД НМК
ООО «Торговый дом Нальчикский молочный комбинат»

Отрасль:
Торговля

Внедренное типовое решение:
1С:Зарплата и управление персоналом

- Кадровый учет;
- Расчет зарплаты;
- Регламентированная отчетность;
- А...

Апгрейд 1С:Бухгалтерия 8 ПРОФ (USB) до версии 1С:Бухгалтерия 8 КОРП (USB)
ООО «Ява Строй»

Отрасль:
Строительство

Внедренное типовое решение:
1С:Бухгалтерия 8 КОРП (USB)

- Создание чистых конфигураций. Внесение изменений в БД ЗУП и новая расчетна...

Внедрение ПП «1С:Предприятие 8. Аренда и управление недвижимостью на базе "1С:Бухгалтерия 8"» в компании «Бутово Молл»
ООО «Бутово Молл»

Отрасль:
Недвижимость

Внедренное типовое решение:
1С:Аренда и управление недвижимостью на базе «1С:Бухгалтерия 8»

Управление продажами, логистикой и транспортом (SFM, WMS, TMS):
- Оформление зак...

Госкорпорация «Ростех»
Госкорпорация «Ростех»

Отрасль:
Производство, ТЭК >> Машиностроение, приборостроение

Внедренное типовое решение:
1С:Управление холдингом 1.3.

Специалисты «Кодерлайн» помогли разработать и внедрить автоматизированную...

ХИТЕК-ГРУП
ХИТЕК-ГРУП

Отрасль:
Продажа парикмахерского инструмента и аксессуаров

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Документооборот (ECM)
• Делопроизводство
Управление бизнес-процессами и И...

МИР ХОББИ
МИР ХОББИ

Отрасль:
Торговля. Интернет магазин

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Оформление заказов поставщикам
Взаиморасчеты с покупателями
Оформление...

ООО ХДМ Рус
ООО ХДМ Рус

Отрасль:
Торговля

Внедренное типовое решение:
1С:Бухгалтерия ПРОФ

Бухгалтерский учет Банк и касса Расчеты с контрагентами Торговые операции ...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение