Привет, Хабр (и просто случайные читатели, зашедшие сюда в поисках истины или интересной статейки на пару минут)!

Сегодня я расскажу вам историю о том, как я провёл полгода в тесных объятиях «1С: Кабинет сотрудника» на новой технологии 1С:Элемент — системы, которая обещала сделать кадровый документооборот простым, как бутерброд с колбасой. Но, как выяснилось, бутерброд этот оказался с сюрпризом… то ли огурцом, то ли гвоздём.

Изображение сгенерировано ChatGPT
Изображение сгенерировано ChatGPT

Впрочем, не будем забегать вперёд. Пристегните ремни, мы взлетаем!

P.S. В этой статье будет разобрана лишь сторона WEB приложения разработанная на 1С:Элемент: её клиентские процессы и серверные, стороны 1С:Предприятия не будет, ей я не занимался.

Что за фрукт этот «Кабинет сотрудника»?

Официально:

«1С:Кабинет сотрудника – это решение для организации кадрового электронного документооборота (КЭДО), которое ускоряет обмен документами, сокращает трудозатраты и делает сотрудников чуть счастливее».

Неофициально (Моё объяснение):

Это веб-приложение, где сотрудники могут подавать заявления на отпуск, больничные и прочие радости жизни и подписывать их электронной подписью прямо с мобилки или с ПК, а кадровики — подписывать их электронной подписью, не вставая с кресла (в идеале).

Звучит здорово, правда? Но, как говорится, «дьявол в деталях», а точнее — в коде, дизайне и логике работы.

Чего реально стоит бояться
Чего реально стоит бояться

Предыстория: как я стал «кабинетным» разработчиком

Мой путь начался с проекта по доработке Личного кабинета сотрудника на новой технологии для разработки 1С:Элемент (об этом можно почитать в этой статье) для крупной компании (3000+ пользователей). Задача — сделать так, чтобы всё работало не только в вебе, но и в мобильном приложении, которое уже вовсю использовалось у заказчика.

Вклейка продукта из коробки прошла гладко (спасибо iframe), но дальше началось самое интересное.

Что было «из коробки»:

  • Главное — типа «новостная лента», но без мемов.

  • Зарплата — цифры, от которых либо радуешься, либо плачешь.

  • Документы — тут кадровики шлют вам бумажки.

  • Отпуск — можно запросить отпуск и помечтать о море.

  • Отсутствия — можно посмотреть, кто сегодня «заболел» (спойлер: не все болеют).

  • Справки — заказываем, ждём, получаем.

Пользовательский интерфейс сервиса 1С:Кабинет сотрудника.Источник: welcome.1c-cabinet.
Пользовательский интерфейс сервиса 1С:Кабинет сотрудника.Источник: welcome.1c-cabinet.

Визуально — ничего так, но функционально… Есть свои приколы.

Реализовано за полгода многое, я бы сказал, что от изначального продукта осталось совсем немного. Цели ставились такие:

  • Реализовать новые процессы (Кадровый перевод, Целевой отпуск, Справка об окладе, Командировки, Продление/перенос отпуска в связи с больничным, Перенос отпуска (график отпусков), Отсутствие с сохранением оплаты: диспансеризация, донору крови, гос.обязанности, единовременная выплата по отпуску)

  • Доработка интерфейса

  • Исправление ошибок, подаренных продуктом, и недодуманных решений

А теперь переходим к самому интересному — к страданиям…

Создание новых процессов

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

Проблема №1:

В моей версии системы глобальный поиск работал так же эффективно, как попытка найти смысл в "Игре престолов" после 6 сезона. Приходилось вручную открывать все файлы, которые хоть как-то могли относиться к процессу, и искать нужное, как археолог с кисточкой.

Результат? Мой компьютер начал взлетать, как ракета Илона Маска, а оперативка в браузере спокойно съедала 12 ГБ. Для сравнения:

  • Chrome с одной вкладкой — 500 МБ.

  • Chrome с моей системой — достаточно, чтобы запустить виртуальную машину с Windows 98.

Проблема №2:

Интеграция с 1С:ЗУП, согласования заявлений и ещё многое-многое другое сделана по принципу:

«Давайте напишем одинаковую логику пять раз, но чуть‑чуть по‑разному, чтобы потом никто не смог это поддерживать!»

Хочешь добавить новый тип заявления? Поздравляю, ты только что получил десять часов копипаста с риском что-то случайно сломать. Видимо, разработчикам платили за количество строк кода, и они решили, что DRY (Don’t Repeat Yourself - Не Повторяйся) — это просто совет, а не правило. Вот скажите мне, может я чего-то не понимаю, переиспользование функций стало не модным?

Доработка интерфейса

Логотип 1С:Кабинет сотрудника
Логотип 1С:Кабинет сотрудника

Конечно, я понимаю, что дизайнеры старались. Рисовали, вклеивали логотип 1С:Кабинет сотрудника с душой. Но вот вопрос: а какое отношение этот логотип имеет к продукту, который используется внутри других предприятий, где пользователи в лучшем случае думают: «1С — это та штука, из-за которой бухгалтерия ругается»?

Представьте: 

Слесарь Толян заходит в приложение, чтобы прикрепить заявление на отпуск (мечтает о Геленджике, море и шашлыках). А вместо понятного интерфейса его встречает загадочный логотип, который не вызывает у него никаких ассоциаций, кроме: «Туда ли я вошёл? Может, это вирус?»

Круто, конечно, что место под логотип есть. Но вот, как его вклеить в коробочный продукт без помощи разработчика, который постиг весь дзен разработки на 1С:Элементе? Ответ прост: никак.

И в этом весь прикол 1С: купить и использовать «из коробки» без допиливания — невозможно. Да, это даёт нам, разработчикам, работу и востребованность. Но если вдуматься… за что вы так с пользователями?

Шаг влево, шаг вправо — расстрел.

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

Что делать? Костылить!

Результат редизайна главной страницы
Результат редизайна главной страницы
Было (Скрин из ТЗ - другого не нашёл)
Было (Скрин из ТЗ - другого не нашёл)
Стало
Стало

Написал JS-код (спасибо 1С:Элемент, что подарил мне такую возможность), который в реальном времени перекрашивает интерфейс, нарисовал свои кнопки, прикрутил стили… и вуаля — красота (ну, или хотя бы что-то, что не вызывает у Толяна желания бежать к айтишникам с криком «У меня всё сломалось!»).

Исправление ошибок, подаренных продуктом и недодуманных решений

Кейс 1: «Быстро — не значит грамотно»

Кабинет сотрудника, судя по всему, разрабатывался с девизом «Главное — выпустить, а там разберёмся». Орфографические ошибки плодились как грибы после дождя — и в админке, и в интерфейсе. Видимо, проверка орфографии считалась «премиум‑функцией». У меня и у самого проблемы с орфографией проскакивают, но, когда ты делаешь такой продукт, ну проверь, пожалуйста.

Кейс 2: «Большой брат следит за тобой (и шлёт SMS)»

«Вася в отпуске из-за утраты близкого? О, грустно… А Петя в Таиланде? Вот везунчик!»

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

Мы подумали: «А может, не стоит светить личные данные перед всеми?» И оставили просмотр отпусков и отсутствий только руководителям. Хотя, конечно, лишили коллектив поводов для сплетен — простите.

Кейс 3: «Квест: получи ЭЦП или потеряй рассудок»

Новый сотрудник заходит в систему. Может ли он сразу подать заявление? Конечно, нет! Сначала нужно:

  • Найти раздел «Документы».

  • Распечатать бумажку о переходе на ЭДО.

  • Отнести её в кадры (желательно бегом).

  • Вернуться, пролистать профиль до упора.

  • Нажать кнопку создания ЭЦП.

И вуаля — через пару часов можно работать!

Мы решили: «А давайте просто попросим пользователя придумать ЭЦП при первом входе?» Остальное сделается само. Гениально? Да. Почему так не сделали сразу? Видимо, хотели добавить сотрудникам экшена.

Кейс 4: «Согласование заявлений: игра в рулетку»

Разработчики 1С:Кабинета сотрудника постарались на славу хочу отдать им должное: механика согласований получилась сложной и интересной, как квест в Dark Souls. Но не без проблем…

Проблема 1: Если ваш руководитель не захотел переходить на КЭДО (а у нас в стране это дело добровольное), то и вы не сможете ничего согласовать, так как всё привязано к нему, конечно, есть свои варианты в админке поиграться, но на гигантскую организацию невозможно настраивать и следить за кадровыми перестановками постоянно.

Проблема 2: Руководитель уехал в отпуск, заместителя не назначил, а ваша срочная командировка зависла в цифровом чистилище.

Решение после суммарного месяца доработок получилось таким: Теперь сотрудник сам выбирает, кто будет согласовывать его заявление. Риски — на нём. Спорно? Возможно. Зато теперь не нужно молиться, чтобы начальник внезапно не улетел на Бали без интернета.

На самом деле в согласования было супер много всего переделано, здесь не было настройки по видам отсутствий и по видам отпусков, то есть таким согласующим заявление уходит при Отпуске вне графика, а таким согласующим уходит при Целевом, из коробки эта технология позволяла разделять лишь на отпуск, отсутствия и документы.

Так же добавлен новый тип для ситуаций непредсказуемого согласующего это Позиция — то есть мы выбираем позицию и тот, кто указан в ней тот и согласует заявление.

Кейс 5: «Майские праздники: серверы тоже хотят отдыхать»

На майских заявления стали отправляться по 40 секунд, а то и по две минуты. Смотрим в код — а там... массив ссылок на сервисы проверки ЭЦП, причём первый в списке лежит, а система терпеливо ждёт ответа, как преданный пёс. Интересная задумка у разработчиков. Ооо… ТЕХНОЛОДЖИЯ!

Кстати с данной проблемой столкнулись не только мы, но и вообще все компании которые купили себе ЛК.

Мы добавили тайминг: теперь система ищет самый быстрый сервис. А ещё сделали фоновую обработку заявлений, чтобы пользователи не пялились в экран, гадая, «Это оно грузится или я опять нажал не туда?»

В очередной раз задумываюсь… для людей ли разрабатывался данный продукт…

Кейс 6: «Логин: когда ФИО — это не уникально»

Логин в системе — это фамилия и инициалы (например, ИвановИИ), он генерируется автоматически после заведения пользователя в 1С:ЗУП на стороне 1С:Элемент. Должен ли он быть уникальным? Ну, в теории — да.

Но в организации на 3000+ человек нашлись два полных тёзки. Кто бы мог подумать?

Вроде такая вещь, которая должна продумываться в самом начале, но что-то все на неё забили.

Было
Было
Стало
Стало

В итоге был переделан алгоритм формирования логина и теперь логин — это СНИЛС. Теперь уникально и безопасно.

Вывод: стоит ли игра свеч?

Несмотря на все костыли, результат того стоил:

  • Упростили процессы для сотрудников.

  • Сделали интерфейс удобнее.

  • Исправили критические косяки.

1С: Кабинет сотрудника — как IKEA-мебель: вроде всё есть, но без отвертки и мата не собрать.

Но если допилить, то получается реально удобный инструмент. Главное — не бояться костылей и помнить, что идеальных систем не бывает.

Отдельное спасибо Компании 1С за то, что она не побоялась всё-таки зайти на новое поприще приложений для обычных смертных пользователей.

Подробнее почитать про 1С:Элемент можно по ссылке.

А если у вас тоже был опыт «дружбы» с 1С и вообще в целом, что вы думаете о 1С — делитесь в комментариях! Будет весело. ?

Комментарии (14)


  1. reallord
    28.05.2025 05:43

    Очень похоже на наш кейс. Только у нас чуть меньше изменений и кое-где удалось недостатки решить через ручной труд и инструкции.
    Но с согласованием тоже беда.


    1. MrSotnik Автор
      28.05.2025 05:43

      Так что вы меня надеюсь понимаете)))


    1. IsyanovDV
      28.05.2025 05:43

      С согласованием много где беда в КЭДО, особенно если процессы сложные. Я внедрял EasyDOCS в казино (в официальном, в игорной зоне) там пришлось и разработчику и нам переписать почти полностью блок согласований и на стороне Web кабинета и на стороне расширения 1С.


  1. Isiirk
    28.05.2025 05:43

    Хотелось бы примеров, а так написать о любом продукте можно, всё таки технический портал, а не поплакать яжмамке


    1. MrSotnik Автор
      28.05.2025 05:43

      Предоставлять куски кода в рамках проекта не могу по понятным причинам) А это лишь информирование тех кто может связаться с данным продуктом о косяках


      1. Isiirk
        28.05.2025 05:43

        Почему тогда этот продукт а не hrlink например? Суля по объёму доработок дешевле выбрать другой продукт было


        1. MrSotnik Автор
          28.05.2025 05:43

          Это не наш продукт, мы лишь его дорабатывали для другой организации


        1. IsyanovDV
          28.05.2025 05:43

          Не знаю как в 2025-м, когда в предыдущей компании выбирали КЭДО (в 2022-м) в HR-Link вообще не было автоматических маршрутов, маршрут должен был выбирать вручную сотрудник, что нас совершенно не устраивало. Ну и в целом были свои приколы, хотя в целом решение было интересное.

          В описанном топспикером кейсе возможно HR-Link бы и зашел с ручными маршрутами, но это не точно.


        1. reallord
          28.05.2025 05:43

          Все достаточно просто к сожалению. Если в компании уже стоит уже 1С ЗУП то запуск КЭДО с кабинетом сотрудника стоит 330 рублей на человека в год.
          Все другие решения дороже. Плюс обычно под 1С ЗУП так или иначе уже есть разработчик или подрядчик и некоторые изменения достаточно просто сделать.

          А вот если большая компания, много сложных процессов, то стоит подумать еще раз.
          У нас основные задачи по КЭДО были для удаленных сотрудников с которыми сложно вовремя подписать бумажные документы.
          Водители и торговые представители в регионах РФ, айтишники и т.д.

          Кейс был тоже простой:
          1. Заявление на отпуск + сколько дней отпуска + предварительная заявка на отпуск (чтобы одновременно не уходили два сотрудника отвечающих за одно направление)
          2. Акт выдачи/сдачи техники для тех кто получал ИТ оборудование через транспортную компанию
          3. Расчетный листок по ЗП
          4. Заявление на увольнение


        1. Alex65rus
          28.05.2025 05:43

          Hr link тоже не серебряная пуля. Он был хорош в 22 году. Сейчас это один из многих, не самый дешевый и функциональный


  1. dissable
    28.05.2025 05:43

    Вот бы ещё помимо всего этого, кто-то там о безопасности подумал приложения, да остального сервиса что за ним стоит конечно..


  1. BBush
    28.05.2025 05:43

    Когда работал в компании, что пилит свой "аналог" 1С: КС, проблему с сложными согласованиями решили интеграцией с 1С: ДО. Как правило, в больших компаниях ДО и так есть.

    А аутентификация по СНИЛС... Почему не SSO? 1С: КС не поддерживает SSO?


  1. DonAlPAtino
    28.05.2025 05:43

    Может ламерский вопрос - оно для подписания требует полноценный ЭЦП физлица с ГосУслуг/госключ или есть простые варианты типа ПЭП?


    1. MrSotnik Автор
      28.05.2025 05:43

      Тут всё проще, работодатель получает УКЭП с помощью 1С:Подпись или других сторонних сервисов, а на основе него бесплатно генерируется усиленная неквалифицированная электронная подпись для сотрудника. Я думаю кто-то сможет ещё лучше объяснить)