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

Содержание:


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С:Управление торговлей

Управление цепочками поставок Оптовая торговля ...

ООО “РТИТС”
ООО “РТИТС”

Отрасль:
Транспортные системы

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

Блок регламентированного кадрового учета и расчета заработной платы в 1С:ERP;...

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

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

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

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

Филиал ГлавУпДК при МИД России фирма «Инпредкадры»
Филиал ГлавУпДК при МИД России фирма «Инпредкадры»

Отрасль:
Государственное управление

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

- Расчеты с контрагентами;
- Управленческий учет;
- Формирование отраслев...

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

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

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

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

ООО «ПЛЮСПЭЙ»
ООО «ПЛЮСПЭЙ»

Отрасль:
Организацией расчетов посредством электронных средств платежа

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

- Разработка подсистемы оперативного учета транзакций...

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

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

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

Финансы, управленческий учет, мониторинг показателей:
- Налоговый учет...

Автоматизация складских операций на базе «1С:Предприятие 8. WMS Логистика. Управление складом»
ОАО «Фрейт Линк»

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

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

Реализовали разработку уникального модуля «Интернет-магазины» на базе прог...

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

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

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

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

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

Отрасль:
Производство промышленных газов

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

- Расчеты с контрагентами;
- Производственные операции;
- Управление скла...

Внедрение ПП "1С:Корпоративный инструментальный пакет 8" в ООО «Торговый Дом Факел»
ООО «Торговый Дом Факел»

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

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

Различная отраслевая специфика:
- Переработка давальческого сырья
- Уче...

Внедрение 1С:Управление торговлей в оптово-розничной компании «Много Плитки»
ООО «Много Плитки»

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

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

Закупки (снабжение) и управление отношениями с поставщиками:
- Оформление ...

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

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

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

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