Каталог решений - Советы разработчику : стоит ли добавлять свои ресурсы в типовые регистры сведений?

Советы разработчику : стоит ли добавлять свои ресурсы в типовые регистры сведений?

Советы разработчику : стоит ли добавлять свои ресурсы в типовые регистры сведений?

В наличии

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

Категория:

Описание

До недавних пор я считал, что добавление «своих» ресурсов в типовой регистр сведений (при совпадении измерений и при логической совместимости добавляемого ресурса и регистра сведений) является правилом хорошего тона. По крайней мере, так меня учили в Учебном Центре 3 при фирме 1С.

Но недавно жизнь заставила внести коррективы в эту точку зрения.

Всё началось после обновления 1С Зарплаты и управления персоналом, кажется, версии 2.5.16 на версию 2.5.19.

Неприятным сюрпризом стало то, что пользователи на следующий день не смогли отправить платёжные ведомости в банк : в учётной политике по персоналу организации стёрся шаблон выгрузки в банк, который был добавленным мной ресурсом этого регистра сведений.

Нет, сами шаблоны не пропали — была только очищена ссылка на шаблон. Равно как и было очищено число выплаты аванса (которое также было мной добавлено в регистр сведений Учётная политика по персоналу организации в качестве ресурса).

Я засомневался. Полез в код, и в обработке обновления информационной базы обнаружил там следующее, что повергло меня в лёгкий шок :

 

// Процедура заполняет порядок списания фактических отпусков в учетной политике по персоналу
//
Процедура ЗаполнитьПорядокСписанияФактическихОтпусков() Экспорт

    Запрос = Новый Запрос;
   
Запрос.Текст =
   
«ВЫБРАТЬ
    |    УчетнаяПолитикаПоПерсоналуОрганизаций.Организация КАК Организация,
    |    УчетнаяПолитикаПоПерсоналуОрганизаций.ПроверкаШтатногоРасписания,
    |    УчетнаяПолитикаПоПерсоналуОрганизаций.ЕдиныйНумераторКадровыхДокументов,
    |    УчетнаяПолитикаПоПерсоналуОрганизаций.ПоказыватьТабельныеНомераВДокументах,
    |    УчетнаяПолитикаПоПерсоналуОрганизаций.ПроставлятьАвтоматическиДатуОзнакомленияВКадровыхПриказах
    |ПОМЕСТИТЬ ВТ_Организации
    |ИЗ
    |    РегистрСведений.УчетнаяПолитикаПоПерсоналуОрганизаций КАК УчетнаяПолитикаПоПерсоналуОрганизаций
    |ГДЕ
    |    УчетнаяПолитикаПоПерсоналуОрганизаций.ПорядокСписанияФактическихОтпусков = ЗНАЧЕНИЕ(Перечисление.ПорядокСписанияФактическихОтпусков.ПустаяСсылка)
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    Организация
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    ВЫБОР
    |        КОГДА Док.Организация.ГоловнаяОрганизация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
    |            ТОГДА Док.Организация
    |        ИНАЧЕ Док.Организация.ГоловнаяОрганизация
    |    КОНЕЦ КАК Организация
    |ПОМЕСТИТЬ ВТ_Документы
    |ИЗ
    |    Документ.НачислениеОтпускаРаботникамОрганизаций КАК Док
    |ГДЕ
    |    Док.Проведен
    |    И Док.Организация В
    |            (ВЫБРАТЬ РАЗЛИЧНЫЕ
    |                ВТОрганизации.Организация
    |            ИЗ
    |                ВТ_Организации КАК ВТОрганизации)
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    Организация
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ВТ_Организации.Организация,
    |    ВЫБОР
    |        КОГДА ВТ_Документы.Организация ЕСТЬ NULL
    |            ТОГДА ЗНАЧЕНИЕ(Перечисление.ПорядокСписанияФактическихОтпусков.КадровымиПриказами)
    |        ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ПорядокСписанияФактическихОтпусков.РасчетнымиДокументами)
    |    КОНЕЦ КАК ПорядокСписанияФактическихОтпусков,
    |    ВТ_Организации.ПроверкаШтатногоРасписания,
    |    ВТ_Организации.ЕдиныйНумераторКадровыхДокументов,
    |    ВТ_Организации.ПоказыватьТабельныеНомераВДокументах,
    |    ВТ_Организации.ПроставлятьАвтоматическиДатуОзнакомленияВКадровыхПриказах
    |ИЗ
    |    ВТ_Организации КАК ВТ_Организации
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Документы КАК ВТ_Документы
    |        ПО ВТ_Организации.Организация = ВТ_Документы.Организация»
;

    НаборЗаписей = РегистрыСведений.УчетнаяПолитикаПоПерсоналуОрганизаций.СоздатьНаборЗаписей();
   
НаборЗаписей.ОбменДанными.Загрузка = Истина;

    Выборка = Запрос.Выполнить().Выбрать();
    Пока
Выборка.Следующий() Цикл
       
НаборЗаписей.Отбор.Организация.Установить(Выборка.Организация);
       
ЗаполнитьЗначенияСвойств(НаборЗаписей.Добавить(), Выборка);
       
НаборЗаписей.Записать();
       
НаборЗаписей.Очистить();
    КонецЦикла;

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

 

Несколько необычно для процедуры ЗаполнитьПорядокСписанияФактическихОтпусков() наличие у неё побочного эффекта : очистка всех ресурсов регистра сведений, которые явно не поименованы в запросе.

Но мои сомнения окончательно развеялись, когда я понял, что при изменении учётной политики по персоналу (Обработка.НастройкаПараметровУчета.Модуль объекта) снова происходит очистка всех ресурсов регистра сведений, добавленных сторонним разработчиком :

 

НаборЗаписей = РегистрыСведений.УчетнаяПолитикаПоПерсоналуОрганизаций.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Организация.Установить(Организация);
НоваяЗапись = НаборЗаписей.Добавить();
ЗаполнитьЗначенияСвойств(НоваяЗапись, ФормаОбработки.мУчетнаяПолитикаПоПерсоналуОрганизаций);
НоваяЗапись.Организация = Организация;

 

В форме обработки явно создавалась структура мУчетнаяПолитикаПоПерсоналуОрганизаций, куда добавлялись только типовые ресурсы из регистра сведений.

Я не стал более сомневаться и создал свой регистр сведений, куда и поместил «свои» многострадальные ресурсы.

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