Программный продукт 1С:Документооборот (1С:ДО) является мощным инструментом для автоматизации бизнес-процессов, однако его внедрение часто сопровождается рядом технических сложностей. В рамках данной статьи мы проанализируем основные недостатки системы, выявленные практикующими специалистами, и рассмотрим способы их минимизации или решения. Мы разберем архитектурные особенности, проблемы производительности и нюансы настройки прав доступа.
Одной из самых обсуждаемых проблем 1С:ДО является механизм ограничения доступа на уровне записей (RLS). Рассмотрим подробнее, как это устроено. В системе используется сложная логика дескрипторов доступа. При изменении прав пользователя или его включении в новую группу система запускает пересчет прав по всем связанным объектам. Выясним причину, почему это вызывает "тормоза":
ОтложенноеОбновлениеПрав, очередь может достигать десятков тысяч объектов, и пока права не обновятся, пользователь не увидит свои новые задачи или документы.Проанализируем методы ускорения: в современных редакциях (начиная с 2.1 и особенно в 3.0) разработчики внедрили механизмы, оптимизирующие расчет прав. Тем не менее, для администратора важно следить за регламентными заданиями ОбновлениеПравДоступаОперативное и ОбновлениеПравДоступаДолгое. Если права "слетают" или не назначаются, иногда помогает полная очистка и пересчет прав через консоль администратора, хотя это и ресурсоемкая процедура.
Многие пользователи жалуются на то, что механизмы замещения реализованы недостаточно прозрачно. Рассмотрим ситуацию: сотрудник уходит в отпуск, и на него назначается ДелегированиеПрав. Однако задачи, которые уже были направлены пользователю, не всегда автоматически "перелетают" к его заместителю в список "Мои задачи". Они остаются висеть на отсутствующем сотруднике, и заместитель должен искать их через специализированные списки или отчеты.
Для решения этой проблемы на уровне кода программисты часто используют подписку на событие ПередЗаписьюЗадачи. Рассмотрим пример концептуальной реализации перехвата исполнителя:
Процедура ПередЗаписьюЗадачи(Источник, Отказ, Замещение) Экспорт
// Проверяем наличие активного заместителя в регистре сведений
ТекДата = ТекущаяДата();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СведенияОЗамещении.Заместитель
|ИЗ
| РегистрСведений.СведенияОЗамещении КАК СведенияОЗамещении
|ГДЕ
| СведенияОЗамещении.Сотрудник = &Исполнитель
| И &ТекДата МЕЖДУ СведенияОЗамещении.ДатаНачала И СведенияОЗамещении.ДатаОкончания";
Запрос.УстановитьПараметр("Исполнитель", Источник.Исполнитель);
Запрос.УстановитьПараметр("ТекДата", ТекДата);
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Выборка.Следующий();
Источник.Исполнитель = Выборка.Заместитель;
КонецЕсли;
КонецПроцедуры
Также стоит обратить внимание на настройки ролевой адресации. Если в шаблоне процесса указана роль (например, ГлавныйБухгалтер), но исполнитель на эту роль не назначен, бизнес-процесс может просто "зависнуть" на этапе выполнения, не выдавая явной ошибки инициатору.
В 1С:ДО реализован универсальный механизм связей, но он имеет свои недостатки в плане юзабилити. Посмотрим на пример: при попытке связать документ с другим документом пользователю часто предлагается список без удобных фильтров по контрагентам или видам документов. Это затрудняет работу в базах с большим объемом данных.
Что касается кадрового учета, 1С:ДО не является полноценной HRM-системой. Попытка вести в нем учет кадровых приказов сталкивается с отсутствием штатных полей для выбора ФизическоеЛицо или Сотрудник в списках входящих/исходящих документов. Для полноценной реализации этого функционала приходится использовать Дополнительные реквизиты, однако настроить для них обязательность заполнения в старых версиях системы без доработки кода было проблематично.
При активной работе с файлами база данных начинает стремительно расти. Выясним, как с этим бороться. Оптимальным решением является использование Томов хранения файлов на диске, а не внутри самой базы SQL. Это упрощает бэкапы и ускоряет работу с конфигурацией.
Проанализируем проблему с автозаполнением шаблонов MS Word. Часто специалисты сталкиваются с тем, что повторное автозаполнение файла не срабатывает корректно или требует специфических настроек на стороне клиента. В ряде случаев приходится лезть в программный код общего модуля, отвечающего за интеграцию с COMОбъект("Word.Application"), чтобы поправить логику передачи параметров из 1С в закладки документа.
Удаление помеченных объектов в 1С:ДО — это настоящий "квест". Из-за высокой связанности данных (задачи, процессы, версии файлов, записи в регистрах сведений) типовая обработка УдалениеПомеченныхОбъектов может выдавать сотни ссылок, мешающих удалению. Например, невозможно удалить документ, пока не остановлены и не удалены все связанные с ним бизнес-процессы. При этом процессы часто нельзя просто пометить на удаление из общего списка, их нужно предварительно прерывать в специализированном рабочем месте администратора.
Рассмотрим, как эволюционировал продукт. В версии 3.0 разработчики радикально пересмотрели многие спорные моменты:
Резюмируя наш анализ: 1С:Документооборот — это система, требующая квалифицированного внедрения. Основные "подводные камни" сосредоточены в области прав доступа и производительности RLS. При планировании внедрения обязательно закладывайте бюджет на производительный сервер с SSD и квалифицированного специалиста для тонкой настройки регламентных заданий и механизмов адресации задач.