Как добавить ученую степень Ph.D. в справочник "Ученые степени" ЗУП 3.1 (ЗКГУ 3.1)?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом Сфера услуг, туризм и социальный сектор
← На главную

При работе с конфигурациями 1С:ЗУП 3.1 или 1С:ЗКГУ 3.1 мы часто сталкиваемся с необходимостью адаптировать систему под специфические требования нашей организации. Одной из таких задач может быть добавление нестандартных ученых степеней, например, Ph.D., которые не предусмотрены типовой конфигурацией. Давайте разберем, почему такая задача возникает и как ее эффективно решить.

Пользователи 1С:ЗУП (или ЗКГУ) часто обнаруживают, что справочник УченыеСтепени содержит только "Кандидат наук" и "Доктор наук" с детализацией по отраслям. Попытки добавить новую позицию, такую как Ph.D., интерактивно через режим "Предприятие" оказываются безуспешными, так как справочник не предоставляет такой возможности. Это связано с особым механизмом его заполнения, который мы рассмотрим подробнее.

Понимание механизма заполнения справочника "Ученые степени"

Прежде чем пытаться добавить новую ученую степень, нам необходимо разобраться, как работает справочник УченыеСтепени в типовых конфигурациях 1С. Мы выясним, почему он отличается от обычных справочников, в которые пользователи могут свободно добавлять элементы.

Справочник УченыеСтепени в 1С:ЗУП и 1С:ЗКГУ не предназначен для интерактивного создания новых элементов пользователями. Его содержимое формируется не вручную, а из предопределенных данных, которые загружаются из специальных источников. Мы можем выделить несколько ключевых аспектов этого механизма:

  1. Заполнение из макета конфигурации: Основным источником предопределенных значений для многих справочников, включая УченыеСтепени, являются макеты конфигурации. Макет представляет собой таблицу или текстовый документ, встроенный в конфигурацию, который содержит начальные данные. В нашем случае, существует макет с именем УченыеСтепени, где определены основные степени.
  2. Процедура заполнения из макета: Для считывания данных из макета и создания соответствующих элементов в справочнике используется специальная процедура. В модуле менеджера справочника (или другом общем модуле) мы найдем метод, например, Процедура ЗаполнитьИзМакета. Эта процедура вызывается при первом запуске информационной базы, после обновления конфигурации или по требованию для инициализации предопределенных данных. Она читает строки из макета и, если элементов с такими наименованиями/кодами еще нет в справочнике, создает их.
  3. Связь с классификаторами: Важной особенностью данного справочника является его привязка к общероссийским классификаторам. В частности, данные об ученых степенях в России регламентируются Общероссийским классификатором информации о населении (ОКИН). ОКИН содержит только степени "Кандидат наук" и "Доктор наук". Именно поэтому типовой справочник УченыеСтепени изначально включает только эти позиции, и степень Ph.D., являющаяся иностранной, в нем отсутствует.

Таким образом, простое добавление записи в макет конфигурации УченыеСтепени (как предлагалось в обсуждении) не приведет к автоматическому появлению Ph.D. в справочнике в режиме "Предприятие". Для этого необходимо либо вызвать процедуру заполнения из макета (если она реализована таким образом, что перечитывает все элементы, а не только отсутствующие), либо, что более надежно, программно создать элемент справочника. Более того, понимание того, что Ph.D. отсутствует в ОКИН, объясняет изначальное отсутствие этой степени в типовой конфигурации.

Методы добавления иностранной ученой степени (Ph.D.)

После того как мы разобрались с механизмом заполнения справочника, мы можем приступить к выбору подходящего метода для добавления степени Ph.D. Поскольку интерактивное создание элементов заблокировано, нам потребуется использовать программные средства. Рассмотрим несколько подходов:

1. Использование расширения конфигурации (рекомендуемый подход)

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

  1. Почему расширение? Расширение позволяет нам вносить изменения, не затрагивая типовую конфигурацию. Это критически важно для сохранения возможности обновлений конфигурации в будущем без потери доработок.
  2. Программное создание элемента справочника: В рамках расширения мы можем написать код, который программно создает новый элемент в справочнике УченыеСтепени. Этот код может быть выполнен один раз (например, при первом запуске системы после установки расширения) или при необходимости.
  3. Переопределение форм/модулей (при необходимости): В некоторых случаях, если нам нужно изменить поведение форм или добавить новую логику при работе со степенями, мы также можем переопределить соответствующие объекты в расширении. Однако для простого добавления элемента справочника это может не потребоваться.

2. Прямая модификация конфигурации (не рекомендуется)

Этот подход предполагает снятие конфигурации с поддержки и непосредственное внесение изменений в типовые объекты. Мы крайне не рекомендуем использовать этот метод, поскольку он значительно усложняет процесс обновления конфигурации и обслуживания системы в целом.

Если все же по каким-то причинам вы решились на этот путь, шаги будут аналогичны тем, что описаны для расширения, но все изменения будут вноситься непосредственно в объекты основной конфигурации.

3. Вызов процедуры заполнения из макета (с модификацией макета)

Этот подход чуть более сложен и может потребовать понимания внутренней логики процедуры ЗаполнитьИзМакета. Если мы добавляем новую запись непосредственно в макет УченыеСтепени в конфигураторе (что само по себе уже является изменением конфигурации или расширения), то для ее появления в справочнике необходимо вызвать эту процедуру.

Однако есть нюансы:

Мы предлагаем сосредоточиться на программном добавлении элемента справочника через расширение, как наиболее гибком и безопасном способе. Это позволит нам полностью контролировать процесс и обеспечить корректное добавление Ph.D. без конфликтов с существующей логикой.

Программное добавление элемента справочника через расширение

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

  1. Создание расширения.

    Откройте конфигуратор 1С. В меню выберите "Конфигурация" -> "Расширения конфигурации" -> "Добавить". Присвойте расширению понятное имя, например, "УченыеСтепени_Доработка". Убедитесь, что для расширения установлен флаг "Активно".

  2. Добавление справочника УченыеСтепени в расширение.

    В дереве объектов конфигурации найдите справочник УченыеСтепени. Перетащите его в ваше новое расширение. После этого откройте свойства справочника в расширении и убедитесь, что свойство "Режим использования по умолчанию" установлено в "Измененный". Это позволит расширению работать с этим справочником.

  3. Создание общего модуля в расширении.

    В расширении создайте новый общий модуль (например, "ДоработкаУченыхСтепенейРасширение"). Важно, чтобы модуль имел свойства "Сервер" и "Клиент (обычное приложение)" или "Клиент (управляемое приложение)" в зависимости от того, откуда вы планируете его вызывать. Для простоты, мы можем использовать серверный модуль.

  4. Написание процедуры для программного добавления элемента.

    В созданном общем модуле напишите процедуру, которая будет проверять наличие степени Ph.D. и, при ее отсутствии, создавать новый элемент справочника. Мы рассмотрим пример кода:

    
    Процедура ДобавитьУченуюСтепеньPhDKD() Экспорт
        // Получаем ссылку на менеджер справочника "Ученые степени"
        МенеджерСправочникаУченыеСтепени = Справочники.УченыеСтепени;
    
        // Определяем наименование и полное наименование для новой степени
        НаименованиеPhd = "Ph.D.";
        ПолноеНаименованиеPhd = "Doctor of Philosophy (Ph.D.)";
    
        // Проверяем, существует ли уже элемент с таким наименованием
        // Это важно, чтобы избежать дублирования при повторном вызове процедуры
        ЭлементPhd = МенеджерСправочникаУченыеСтепени.НайтиПоНаименованию(НаименованиеPhd);
    
        Если ЭлементPhd.Пустая() Тогда
            // Если элемент с наименованием "Ph.D." не найден, создаем новый
            НовыйЭлемент = МенеджерСправочникаУченыеСтепени.СоздатьЭлемент();
                    
            НовыйЭлемент.Наименование = НаименованиеPhd;
            НовыйЭлемент.ПолноеНаименование = ПолноеНаименованиеPhd;
                    
            // Присваиваем код. Код должен быть уникальным.
            // В типовой конфигурации Кандидат наук - "000000001", Доктор наук - "000000002".
            // Мы можем выбрать следующий свободный код или специальный код,
            // чтобы избежать конфликтов с будущими обновлениями типовых данных.
            // Например, использовать код, начинающийся с нестандартных цифр.
            // Для примера, используем простой последовательный код "000000003".
            // В реальных проектах можно использовать генерацию кода или зарезервированный диапазон.
            НовыйЭлемент.Код = "000000003"; 
                    
            Попытка
                // Записываем новый элемент справочника
                НовыйЭлемент.Записать();
                Сообщить("Ученая степень '" + НаименованиеPhd + "' успешно добавлена в справочник.");
            Исключение
                // Обработка возможной ошибки при записи (например, если код не уникален)
                Сообщить("Ошибка при добавлении ученой степени '" + НаименованиеPhd + "': " + ОписаниеОшибки());
            КонецПопытки;
        Иначе
            // Если элемент уже существует, сообщаем об этом
            Сообщить("Ученая степень '" + НаименованиеPhd + "' уже существует в справочнике.");
        КонецЕсли;
    КонецПроцедуры
    

    Мы обращаем ваше внимание, что при выборе кода необходимо проявлять осторожность. Если в типовой конфигурации в будущем появятся новые степени, их коды могут пересечься с тем, что мы зададим вручную. Рекомендуется использовать коды из диапазона, который заведомо не будет задействован типовой конфигурацией, или проверять уникальность кода перед записью.

  5. Вызов процедуры.

    Написанную процедуру необходимо вызвать. Существует несколько способов:

    1. При начале работы системы: Если мы хотим, чтобы степень добавлялась автоматически при каждом запуске системы (или хотя бы при первом запуске после установки расширения), мы можем поместить вызов этой процедуры в обработчик события ПриНачалеРаботыСистемы модуля приложения вашего расширения. Это гарантирует, что элемент будет создан, если он отсутствует.
    2. Вручную через обработку: Для более контролируемого добавления, мы можем создать простую внешнюю обработку или обработку в расширении, которая будет содержать кнопку для вызова этой процедуры. Это удобно для администраторов, которые хотят выполнить действие один раз.
    3. Через консоль запросов/кода: В крайнем случае, можно вызвать процедуру через консоль кода или запросов в режиме отладки или предприятия, если у вас есть соответствующие права.

    Пример вызова в модуле приложения расширения (ПриНачалеРаботыСистемы):

    
    #Область СлужебныеПроцедурыИФункции
    // Процедуры и функции, вызываемые платформой, или предназначенные
    // для вызова из других модулей, но не имеющие отношения к логике прикладного решения.
    
    Процедура ПриНачалеРаботыСистемы()
        // Вызываем процедуру добавления ученой степени Ph.D.
        ДоработкаУченыхСтепенейРасширение.ДобавитьУченуюСтепеньPhDKD();
    КонецПроцедуры
    
    #КонецОбласти
    

    После реализации и вызова процедуры, степень "Ph.D." появится в справочнике УченыеСтепени и будет доступна для выбора при заполнении данных о сотруднике.

Альтернативные подходы и важные нюансы

При принятии решения о добавлении иностранной ученой степени, такой как Ph.D., в систему, мы также должны рассмотреть некоторые альтернативные подходы и важные нюансы, которые могут повлиять на учет и отчетность.

Учет как "дополнительное образование" или "квалификация"

Некоторые специалисты рекомендуют не добавлять Ph.D. непосредственно в справочник "Ученые степени", если нет жесткой необходимости интегрировать ее в систему, основанную на ОКИН. Вместо этого, мы можем рассмотреть возможность ее учета как:

  1. Дополнительное образование: В карточке сотрудника в 1С:ЗУП есть раздел для дополнительного образования. Мы можем создать новый вид образования "Доктор философии (Ph.D.)" и указать его там. Это позволяет зафиксировать факт наличия степени без изменения структуры ученых степеней.
  2. Квалификация: Если степень влияет на квалификацию или допуск к определенным видам работ, ее можно указать в полях, предназначенных для квалификации, или создать соответствующий элемент в справочнике Квалификации (если он используется в вашей конфигурации).

Этот подход полезен, если основная цель — просто зафиксировать наличие степени у сотрудника, а не интегрировать ее в официальную российскую систему учета ученых степеней, для которой предназначены стандартные поля и справочники.

Влияние на отчетность и печатные формы

После добавления Ph.D. в справочник УченыеСтепени, мы должны учитывать, как это повлияет на различные отчеты и печатные формы.

  1. Печатная форма Т-2 (Личная карточка сотрудника): Стандартная форма Т-2 имеет поле для ученой степени. Если мы добавили Ph.D. в справочник, то она будет корректно выводиться в этом поле при печати личной карточки. Однако, если у вас есть специфические требования к оформлению иностранной степени в этом поле, возможно, потребуется доработка макета печатной формы Т-2.
  2. Другие отчеты: Любые отчеты, которые используют данные из справочника УченыеСтепени, будут включать и Ph.D. Если это нежелательно для каких-либо специфических отчетов (например, для государственной статистики, где учитываются только российские степени), потребуется их доработка для исключения Ph.D. из выборки.

Согласование с методологией учета HR в организации

Мы рекомендуем всегда согласовывать такие доработки с методологией учета персонала и кадровой политики вашей организации. Важно понимать, как именно Ph.D. будет восприниматься и использоваться:

Ответы на эти вопросы помогут нам определить оптимальный способ учета Ph.D. в системе 1С.

Примечание об ОКИН и отсутствии Ph.D.

Мы уже упоминали, что Ph.D. отсутствует в ОКИН. Это критический момент, поскольку 1С:ЗУП/ЗКГУ во многом ориентируются на российские стандарты. Добавляя Ph.D. программно, мы по сути расширяем этот стандарт внутри нашей информационной базы для внутренних нужд. Мы должны быть готовы объяснить это при аудитах или при формировании отчетов для внешних органов, которые строго следуют ОКИН.

В заключение, добавление ученой степени Ph.D. в справочник "Ученые степени" ЗУП 3.1 или ЗКГУ 3.1 — это задача, которая требует понимания внутренних механизмов платформы 1С и использования программных доработок, предпочтительно через расширения. Такой подход обеспечивает гибкость, управляемость и возможность дальнейшего обновления типовой конфигурации без потери внесенных изменений. Мы рассмотрели все основные шаги и нюансы, которые помогут вам успешно реализовать эту задачу.

← На главную