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

Содержание:


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С:CRM ПРОФ" в ООО «Торговый Дом Факел»
ООО «Торговый Дом Факел»

Отрасль:
Производство

Внедренное типовое решение:
1С:CRM ПРОФ

- Управление отношениями с клиентами (CRM) ...

Оптимизация производительности системы
ЗАО ИД «Комсомольская правда»

Отрасль:
Медиа

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

- Оптимизация производительности системы, в том числе сервера Postgre. ...

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

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

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

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

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

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

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

Бухгалтерский учет;
Расчет зарплаты и кадровый учет;...

Автоматизация кадрового учета на базе «1С:ERP Управление предприятием 2.0»
Автопредприятие ПАО «Газпром»

Отрасль:
Транспорт

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

- Настройка подсистемы кадрового учета;
- Перенос персональных данных;
- З...

Внедрение системы финансового учета БИТ:Финанс
ООО «Алькор и Ко» (Л’Этуаль)

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

Внедренное типовое решение:
БИТ.Финанс

- Финансовый учет;
- Поддержка проекта внедрения МСФО;
- Регламентные рабо...

ООО "НЦКТ"
ООО "НЦКТ"

Отрасль:
Профессиональные услуги

Внедренное типовое решение:
1С:Управление нашей фирмой 8 ПРОФ

Взаиморасчеты с покупателями
Автоматизация бизнес-процессов...

ООО "РУКАРД-АУРА"
ООО "РУКАРД-АУРА"

Отрасль:
Профессиональные услуги

Внедренное типовое решение:
1С:Комплексная автоматизация

- Налоговый учет;...

Внедрение 1С:Управление торговлей
ООО «Амперсенд»

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

Внедренное типовое решение:
1С:Управление торговлей

- Оформление заказов поставщикам;
- Управление отношениями с поставщиками;...

Фирма 1С
Фирма 1С

Отрасль:

Внедренное типовое решение:
1С:Документооборот

- Подготовка функциональной модели прикладного решения «1С:Документооборот...

ООО «Солви Пак»
ООО «Солви Пак»

Отрасль:
Торговля. Производство печати на рулонных материалах

Внедренное типовое решение:
1С:CRM+1С:Комплексная автоматизация

Управление отношениями с клиентами (CRM) ...

ПЭК
ПЭК

Отрасль:
Грузоперевозки

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

- Перевод зарплатных баз с версии ЗУП 2.5 на версию ЗУП 3.1.
- Сопровождение в п...

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

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

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

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