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

08.09.10

Разработка - Математика и алгоритмы

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

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

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

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

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

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

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

 

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

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

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

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

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

 

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

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

 

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

 

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

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

См. также

Метод Дугласа-Пойкера для эффективного хранения метрик

Математика и алгоритмы Платформа 1C v8.2 Конфигурации 1cv8 Россия Абонемент ($m)

На написание данной работы меня вдохновила работа @glassman «Переход на ClickHouse для анализа метрик». Автор анализирует большой объем данных, много миллионов строк, и убедительно доказывает, что ClickHouse справляется лучше PostgreSQL. Я же покажу как можно сократить объем данных в 49.9 раз при этом: 1. Сохранить значения локальных экстремумов 2. Отклонения от реальных значений имеют наперед заданную допустимую погрешность.

1 стартмани

30.01.2024    1757    stopa85    12    

33

Алгоритм симплекс-метода для решения задачи раскроя

Математика и алгоритмы Бесплатно (free)

Разработка алгоритма, построенного на модели симплекс-метода, для нахождения оптимального раскроя.

19.10.2023    4432    user1959478    50    

34

Регулярные выражения на 1С

Математика и алгоритмы Инструментарий разработчика Платформа 1С v8.3 Мобильная платформа Россия Абонемент ($m)

Что ж... лучше поздно, чем никогда. Подсистема 1С для работы с регулярными выражениями: разбор выражения, проверка на соответствие шаблону, поиск вхождений в тексте.

1 стартмани

09.06.2023    7473    4    SpaceOfMyHead    17    

56

Модель распределения суммы по базе

Математика и алгоритмы Платформа 1С v8.3 Россия Абонемент ($m)

Обычно под распределением понимают определение сумм пропорционально коэффициентам. Предлагаю включить сюда также распределение по порядку (FIFO, LIFO) и повысить уровень размерности до 2-х. 1-ое означает, что распределение может быть не только пропорциональным, но и по порядку, а 2-ое - это вариант реализации матричного распределения: по строкам и столбцам. Возможно вас заинтересует также необычное решение этой задачи через создание DSL на базе реализации текучего интерфейса

1 стартмани

21.03.2022    7859    7    kalyaka    11    

44

Изменения формата файлов конфигурации (CF) в 8.3.16

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Дополнение по формату файлов конфигурации (*.cf) в версии 8.3.16.

16.12.2021    4451    fishca    13    

36

Интересная задача на Yandex cup 2021

Математика и алгоритмы Бесплатно (free)

Мое решение задачи на Yandex cup 2021 (frontend). Лабиринт. JavaScript.

12.10.2021    8848    John_d    73    

46

Механизм анализа данных. Кластеризация.

Математика и алгоритмы Анализ учета Платформа 1С v8.3 Анализ и прогнозирование Бесплатно (free)

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

31.08.2021    7814    dusha0020    8    

70
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. alexk-is 6533 08.09.10 17:52 Сейчас в теме
(0) Программный код в статье можно раскрасить
megatrend; +1 Ответить
5. megatrend 128 09.09.10 10:05 Сейчас в теме
(1)
> Программный код в статье можно раскрасить
Спасибо, не знал о такой вещи.
2. Alav 13 08.09.10 20:17 Сейчас в теме
В очередной раз писатели типовых показали что их код далеко не универсальный. И проще прикрутить свое сбоку, чем использовать типовые механизмы
3. Поручик 4670 08.09.10 22:41 Сейчас в теме
4. WKBAPKA 214 09.09.10 08:52 Сейчас в теме
тю...логично... я бы делал также... и ничего они не очищают, а просто перезаписывают регистр... и откуда им знать, что кто то добавит свои ресурсы... ;)))
6. пользователь 09.09.10 11:52
Сообщение было скрыто модератором.
...
7. KapasMordorov 428 09.09.10 14:07 Сейчас в теме
А счастье было так возможно ,
Так близко!.. Но судьба моя
Уж решена

Тестировать надо свои поделки, а не только пункт "Проверка конфигурации" жмакать.
8. megatrend 128 09.09.10 14:20 Сейчас в теме
(7) О каких "своих поделках" речь?
9. KapasMordorov 428 09.09.10 14:31 Сейчас в теме
Типовые конфигурации 1С объективно являются черными ящиками, т.к. ни к одной нет описания логической модели конфигурации.
Доступ к данным осуществляется непосредственно, а не через методы, поэтому изменения данных могуть быть в любом месте. Вывод: нужно тщательно отслеживать.

Логическая совместимость?
Хранить настройки обмена с банком в учетной политике по персоналу? Хм...
А почему не в учетной политике по НДФЛ? Состав измерений одинаковый.
10. megatrend 128 09.09.10 19:10 Сейчас в теме
(9) А что отслеживать-то? И как?
11. KapasMordorov 428 09.09.10 23:24 Сейчас в теме
Ааа
Извините, я ошибся.
12. СергейКа 669 13.09.10 09:24 Сейчас в теме
(0) Пришел в эту статью с форума поддержки :)
Мне не совсем понятно, на каких курсах учили добавлять собственные реквизиты в типовые объекты... Был на разных, ни разу не встречал...
А вообще, считаю что лучше добавить полностью свой объект, чем изменять типовой. И поддерживать работоспособность потом легче и проблем с пропажей данных не будет.
Делаю так еще с 7.5 и даже не спотыкался о такие "грабли". Мне в голову не приходило что кто-то может делать по другому...
13. leguza 20.09.10 21:25 Сейчас в теме
Кстати, на одном из курсов мне сказали, что сами разработчики утверждают, что ЗУП нельзя конфигурировать, а если очень хочется, то надо добавлять свои объекты
14. megatrend 128 20.09.10 22:13 Сейчас в теме
(13) И что это был за курс? Кто там был лектор? 8-)
Кстати, на форуме партнёров 1С прозвучал определённый ответ разработчиков ЗУП-а...
15. leguza 20.09.10 22:37 Сейчас в теме
"Конфигурирование платформы 8" Белоусов П.С.
16. kod_ura 29.10.10 18:56 Сейчас в теме
Такая же проблема в УПП, при записи контрагента стираются все "свои" данные из регистра контактная информация :|
megatrend; +1 Ответить
17. voofka 05.11.15 11:41 Сейчас в теме
Огромное спасибо. Полезная информация.
megatrend; +1 Ответить
Оставьте свое сообщение