diamond АШ Tlg

Ловушки 1С ЗУП. Территории сотрудников

Совы не то, чем они кажутся / Твин Пикс

Как-то раз в одной сказочной стране один аналитик узнал где-то что можно включить в ЗУП КОРП учёт по территориям сотрудников и использовать их не по прямому предназначению, а как дополнительную аналитику для дальнейшего отражения в бухучёте, с минимальной доработкой конфигурации.

Давайте оставим в стороне оценку "минимальная доработка конфигурации" и вариант, когда спустя время клиенту и в самом деле потребуется вести учёт по территориям, да ещё и обособленным. (Моё кредо: то что может случиться - то непременно случается)

При проектировании решения на ЗУП КОРП программисты заглянули в конфигуратор, посмотрели настройки регистра сведений "Территории сотрудников":

Регистр сведения Территории сотрудников

Периодичность - 1 секунда. Ура! Можно записать за сутки на человка до 24*60*60=86400 территорий-аналитик, хватит по всем оценкам более чем! И попали в первую ловушку.

Здесь на самом деле разработчики ЗУП совершили злую шутку, реализовав механизм вытеснений Территории сотрудника различными видами и количествами документов, которые изменяют текущую территорию и период действия которых приходится на один и тот же день. Если в течении одного дня перемещать сотрудника по территориям несколько раз, то каждый новый документ будет создавать запись с периодом +1 секунда к предыдущей записи документа такого же типа.

Регистр сведения Территории сотрудников

Обратите внимание, что период не равен началу суток и у каждого вида документов отсчёт начинается в специально отведенную минуту и час!

Учёт территорий в ЗУП, таким образом, на логическом уровне реализован с периодичностью в сутки, а не в секунду, а типовые функции заполнения документов и выполнения расчётов будут брать только самую последнюю территорию в сутках в указанном регистре. Единственный документ, где можно заполнить две и более территории в сутки - это Табель учёта рабочего времени. И собственно само Отражение в бухучёте. Но, как понимаете, для автоматического заполнения указанных документов "первички" не будет.

Лично моя оценка этой ситуации: разработчики ЗУП нарушили стандарты разработки, используя объект конфигурации - регистр сведений - не по прямому предназначению. Это трюк-костыль, а не прозрачная разработка, и будь я на месте принимающего - развернул бы такое решение обратно, потребовав переделать регистр на периодичность в сутки и реализовать механизм вытеснений другим методом. С точки зрения ответственного сопровождения и информационной безопасности эффективность текущей реализации (если оно имеет место) значения не имеет. Если выйти за рамки 1С и заглянуть к соседям, то, к примеру, в том же C++ мало кто для критических приложений примет в продуктив выскопроизводительный алгоритм, основанный на трюках с указателями.