1с документооборот не стартует процесс
При работе с 1С:Документооборот пользователи неизбежно сталкиваются с ошибками. Данная система действительно имеет ряд программных недоработок, из-за которых возникают сбои. Но эта тема обсуждалась много раз. Здесь речь пойдет о наиболее распространенных ошибках пользователей и о том, как их избежать. Эта информация позволит сэкономить время и защитить бизнес от возможных проблем.
Операторы системы ошибаются по двум причинам:
- Первая связана с недостатком опыта и невнимательностью.
- Вторая – со сложным и не очень понятным интерфейсом программы.
Поскольку мы говорим о системе 1С:Документооборот, основные дискуссии в части удобства интерфейса вызывает новейшая разработка – интерфейс «Такси». Это новая разработка с максимально дружественным интерфейсом. Новичкам он нравится. А опытные пользователи привыкли к старому варианту и не считают, что его надо было менять. Но создатели систем на платформе 1С:Предприятие учитывают опыт внедрения других решений и отзывы миллионов пользователей. Если не брать в расчет незначительные недостатки, можно сказать, что в "Такси" удобный и понятный интерфейс. Все формы были оптимизированы, а меню, команды и диалоговые окна расположены так, чтобы минимизировать пользовательские ошибки. А тот факт, что во всех программах 1С используется единый интерфейс, упрощает обучение и позволяет избежать многих ошибок.
Наиболее часто встречающейся ошибкой, которую пользователи допускают при работе в системе, является: Не завершено редактирование открытого ранее на изменение файла
Многие занимают файл для внесения каких-то изменений, а потом забывают завершить его редактирование. В итоге, он не помещается в специальное хранилище на сервере, и шрифт названия меняется на ярко-зеленый.
Если попытаться закрыть этот документ, появится окно с предупреждением. Система предложит сначала закончить редактирование файла.
Иногда документ остается занятым для редактирования из-за того, что во время работы пропало соединение с сервером. В этом случае, когда пользователь войдет в систему, он увидит на рабочем столе все файлы, которые были заняты им для редактирования.
Закончить редактирование или продолжить работу с занятыми документами можно прямо из окна виджета.
В программных продуктах 1С предусмотрены подобные ситуации. Система своевременно уведомляет пользователей об их ошибках, что позволяет свести их количество к минимуму. Чтобы обеспечить стабильную работу предприятия, руководству имеет смысл обеспечить обучение сотрудников, дать им возможность консультироваться с экспертами, предоставить актуальные и понятные инструкции. Работа с документами и системами автоматизации процессов должна подчиняться специально разработанному регламенту. Не надо забывать и о возможности контролировать исполнительскую дисциплину в самой системе.
Система имеет настройки, позволяющие исключить ошибки.
Настройка: протоколирование работы в системе
В Конфигураторе открыть меню «Администрирование», в выпадающем списке выбрать «Настройка журнала регистрации».
Откроется окно, где можно настроить события, которые будут протоколироваться в журнале.
Там же можно установить периоды разделения журнала. Система будет разбивать его на отдельные файлы, где перечислены события за заданный период времени (неделю, месяц или год). Это упрощает администрирование и хранение информации. В том же окне меняется формат данных журнала регистрации с текстового (по умолчанию) на легкий и современный SQLite.
Выбрав подходящие настройки, надо сохранить изменения. После этого все отмеченные события будут фиксироваться в журнале, и пользователь сможет быстро находить причину какой-либо ошибки.
Только надо учесть, что объем, который занимает на диске журнал регистрации, достаточно большой. Поэтому имеет смысл выделить для него специальное хранилище. В том же окне есть команда «Сократить». С ее помощью пользователь может переносить ранее зафиксированные события в архив или удалять те данные, которые уже не нужны.
Настройка: версионирование объектов
Продукты 1С сохраняют историю изменений, внесенных в информационную базу. Механизм позволяет узнать, какой пользователь и когда отредактировал тот или иной документ, какие изменения были сделаны. Чтобы настроить версионирование, надо зайти в «Общие настройки системы».
Выбрать пункт «Версионирование объектов».
Поставить галочку и перейти по ссылке «Настройки».
Там дается список всех объектов, для которых можно настроить версионирование. То есть, система будет не только фиксировать информацию об изменениях (кто и когда их внес). При необходимости пользователь сможет вернуться к более ранней версии документа.
Для каждого объекта устанавливается, когда следует создать новую версию и время ее хранения (важно знать, что это влияет на объем информационной базы). Для сохранения версий файлов настройки не нужны, это делается по умолчанию. Если для объекта установлен режим версионирования, пользователь сможет просматривать историю его изменений.
Можно не только просматривать все версии, но и сравнивать их между собой, выбирать, какую следует считать актуальной.
Возможности системы и четкое регламентирование всех бизнес-процессов позволяют избежать ошибок при работе в 1С:Документооборот.
Хотите получать подобные статьи по четвергам?
Быть в курсе изменений в законодательстве?
Подпишитесь на рассылку
В системе 1С: Документооборот существует понятие бизнес-событий (событий произошедших в программе). Для того чтобы можно было использовать этот механизм, необходимо его включить в настройках программы:
Для классификации таких событий есть специальный справочник «Виды бизнес событий» (сами же события система записывает в регистр сведений «Произошедшие бизнес-события»). Также важными частями механизма бизнес-событий являются детекторы бизнес-событий и обработчики бизнес-событий, но о них ниже.
Создадим вид для бизнес-события, которое будет формироваться при наступлении данного условия.
Теперь нужно добавить "Детектор бизнес-события". Детектор бизнес-события - это как раз та часть механизма, которая отслеживает выполнение условия и создает соответствующее событие в системе.
Добавим новый детектор в справочнике «Детекторы бизнес-событий». В его карточке укажем вид бизнес-события, который создали ранее. В поле «Выражение на встроенном языке» необходимо написать код, который проверяет, есть ли хотя бы один объект, для которого условие истинно. Если есть, то переменной «Результат» нужно присвоить значение Истина. В этом случае система создаст бизнес-событие с указанным видом.
ВАЖНО: Если не установлен флаг «Детектор включен», код детектора исполняться не будет!
В нашем случае нужен запрос, который проверяет, что есть документы с выполненным условием (к документу приложен файл, подписанный электронной подписью и по этому документу нет процессов обработки). Если такие документы есть — значит наше событие произошло. Таким образом событие будет сгенерировано, когда в системе есть один или несколько документов, для которых все условия выполнились, и по ним нужно стартовать процесс.
Код детектора:
ВидыДокументов = Новый Массив;
ВидыДокументов.Добавить(Справочники.ВидыВнутреннихДокументов.НайтиПоНаименованию("Служебная записка", Истина));
Запрос = Новый Запрос;
"ВЫБРАТЬ ПЕРВЫЕ 1
| Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Файлы КАК Файлы
| ПО ВнутренниеДокументы.Ссылка = Файлы.ВладелецФайла
| ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.КомплексныйПроцесс.Предметы КАК КомплексныйПроцессПредметы
| ПО ВнутренниеДокументы.Ссылка = КомплексныйПроцессПредметы.Предмет
| КомплексныйПроцессПредметы.Предмет ЕСТЬ NULL
| И ВнутренниеДокументы.ВидДокумента В(&ВидыДокументов)
| И НЕ ВнутренниеДокументы.ПометкаУдаления
| И Файлы.ПодписанЭП = ИСТИНА
| И НЕ Файлы.ПометкаУдаления";
Если Не РезультатЗапроса.Пустой() Тогда
Далее необходимо выполнить обработку сформированных бизнес-событий. В нашем случае это запуск процессов по документам. Для обработки бизнес-события в программе используется справочник "Дополнительные обработчики-бизнес событий".
В нем также необходимо написать код на встроенном языке, который будет выполнять необходимые действия. В нашем случае фрагмент кода должен находить конкретные документы, для которых выполнились условия, и создавать для них процессы.
ВидыДокументов.Добавить(Справочники.ВидыВнутреннихДокументов.НайтиПоНаименованию("Служебная записка", Истина));
Запрос = Новый Запрос;
| Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Файлы КАК Файлы
| ПО ВнутренниеДокументы.Ссылка = Файлы.ВладелецФайла
| ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.КомплексныйПроцесс.Предметы КАК КомплексныйПроцессПредметы
| ПО ВнутренниеДокументы.Ссылка = КомплексныйПроцессПредметы.Предмет
| КомплексныйПроцессПредметы.Предмет ЕСТЬ NULL
| И ВнутренниеДокументы.ВидДокумента В(&ВидыДокументов)
| И НЕ ВнутренниеДокументы.ПометкаУдаления
| И Файлы.ПодписанЭП = ИСТИНА
| И НЕ Файлы.ПометкаУдаления";
Если Не РезультатЗапроса.Пустой() Тогда
ШаблонПроцесса = Справочники.ШаблоныКомплексныхБизнесПроцессов.НайтиПоНаименованию("Обработка записок", Истина);
Пока Выборка.Следующий() Цикл
БизнесПроцессОбъект.ЗаполнитьПоШаблонуИПредмету(ШаблонПроцесса, Документ, Документ.Подготовил);
Если ПолучитьФункциональнуюОпцию("ИспользоватьФоновыйСтартПроцессов") Тогда
Обработчик бизнес-события и бизнес-событие необходимо связать между собой при помощи команды Подписки в панели навигации обработчика. В открывшемся списке нужно нажать Создать и указать ссылку на созданный ранее вид бизнес-события.
После этого необходимо проверить работу детектора и обработчика, если код написан без ошибок - новые события будут появляться и обрабатываться встроенным механизмом.
Отлаживать же механизм можно частями - проконтролировать появление новых событий можно, открыв регистр сведений «Произошедшие бизнес события» (все события механизм запишет сюда), срабатывание обработчика можно увидеть тут-же по появлению флага «Обработано», а саму правильность кода обработчика — по появлению запланированного результата (в нашем примерe - создан процесс по документу).
Для тестирования программы 1С:Документооборот вам достаточно заполнить форму, нажав на кнопку ниже.
Очень часто при согласовании документов возникает необходимость приложить к бумажному документу лист его согласования. Это актуально, когда в параллельном согласовании документа участвует большое количество должностных лиц и лист согласования должен содержать последние результаты или лист согласования должен быть с историей при нескольких циклах согласования. Особенно, когда количество циклов согласования документа для разных согласующих лиц разное.
Процесс согласования документа организуется с использованием типового функционала. После завершения процесса согласования автор процесса получает задачу «Ознакомиться с результатами». Результат согласования может содержать как положительные, так и отрицательные результаты.
- Требуется повторить согласование или нет;
- Требуется повторить согласование со всеми согласующими или с теми, кто не согласовал документ;
- Требуется ли печатать лист согласования;
Лист согласования должен содержать результаты только последнего цикла согласования или последнего, плюс все положительные результаты предыдущих циклов.
Пользователю при организации процесса согласования документа необходимо четко понимать, что он должен получить в результате электронного согласования документа.
В задаче на ознакомление с результатом согласования нажать на кнопку «Завершить согласование».
При необходимости распечатать лист согласования.
2. Повторить согласование со всеми согласующими. Лист согласования должен содержать результат только последнего цикла согласования.
Внести изменения в предмет согласования согласно комментариям согласующих лиц.
В задаче ознакомления с результатом согласования нажать на кнопку «Повторить согласование».
После запуска процесса все результаты предыдущего цикла согласования автоматически перейдут в историю. На закладке «Визы», а, следовательно, и в листе согласования останутся согласующие из последнего (текущего) цикла согласования.
3. Повторить согласование с согласующими лицами, которые на предыдущем цикле не согласовали документ. Лист согласования должен содержать результат только последнего цикла согласования.
В задаче ознакомления с результатом согласования нажать на кнопку «Повторить согласование».
После запуска процесса все результаты предыдущего цикла согласования автоматически перейдут в историю. На закладке Визы, следовательно, и в листе согласования останутся согласующие из последнего (текущего) цикла согласования.
4. Повторить согласование с согласующими лицами, которые на предыдущем цикле не согласовали документ. Лист согласования должен содержать как положительный результат предыдущего цикла согласования, так и последнего (текущего).
В задаче ознакомления с результатом согласования нажать на кнопку «Закончить согласование».
Внести изменения в предмет согласования согласно комментариям согласующих лиц.
Из закладки «Визы», предмета согласования, удалить тех согласующих, с которыми необходимо повторить согласование.
В процессе «Согласование» выбрать тех согласующих лиц, с которыми необходимо повторить согласование и запустить процесс нажатием на кнопку «Стартовать и закрыть».
Ответить на вопрос системы «В согласуемом документе уже присутствуют результаты согласования других сотрудников. Поместить их в историю или оставить актуальными?», нажав на кнопку «Оставить актуальными».
После запуска процесса на закладке Визы останутся все результаты предыдущего и последнего (текущего) циклов согласования, а, следовательно, и в листе согласования.
При необходимости можно распечатать лист согласования или лист согласования с историей.
Если бизнес-процесс, уже запущенный на выполнение, потерял актуальность, его можно остановить. В таком случае все задачи этого процесса, а также все задачи подчиненных процессов, будут сняты с выполнения.
Функциональность остановки доступна только в версии КОРП, и только при наличии у пользователя роли Управление бизнес процессами:
Остановить ставит процесс на паузу, Прервать - полностью останавливает и откатывает все изменения.
При этом причину, автора, время прерывания можно аккуратно заполнить, и тогда это будет отслеживаться из карточки процесса:
- все идущие по нему работы временно приостановлены
- все идущие по нему работы завершены
- все идущие по нему работы выполнены
Правильный ответ - первый. В случае завершения / выполнения работ процесс также планомерно завершается.
- все идущие по нему работы завершены
- все идущие по нему работы временно приостановлены
- отмены всех изменений в предмете, внесенных процессом
- верны варианты 1, 3
- верны варианты 2, 3
Правильный ответ четвертый. Все изменения откатываются, как если бы процесс не запускался вообще.
- Прерваны все невыполненные задачи этого процесса, все подчиненные и вложенные процессы, и их невыполненные задачи
- Прерваны все невыполненные задачи этого процесса, кроме всех подчиненных и вложенных процессов и их невыполненных задач
- Автоматически отменены все связанные с ним изменения предмета процесса
- Верны варианты 1, 3
- Верны варианты 2, 3
Правильный ответ четвертый.
- Команду "Прервать" в карточке процесса
- В списке процессов команду контекстного меню "Прервать"
- В списке процессов команду "Прервать" из меню "Еще"
- Карточки процесса
- Карточки задачи
- Из карточки предмета процесса
- Списка процессов по колонке Прервал
- Верный варианты 1, 2
- Верны варианты 1, 2 и 3
Вопрос 12.39 экзамена 1С:Профессионал по Документообороту. При остановке процесса будут ли остановлены все невыполненные задачи этого бизнес-процесса в том числе все подчиненные и вложенные бизнес-процессы и их невыполненные задачи?
- Да
- Нет
- Будут остановлены все задачи этого бизнес-процесса, кроме всех подчиненных и вложенных бизнес-процессов и их невыполненных задач
Вопрос 12.01 экзамена 1С:Профессионал по Документообороту. Будут ли видеть участники процесса свои задачи в списке "Мои задачи" или "Задачи подчиненных" если тот остановлен?
- Да
- Нет
- Да, задачи будут выделены серым цветом
- Выбрать состояние "Прерванные" в настройках режимов просмотра
- Снять флаг "Показывать только активные процессы"
- Любое из перечисленных действий
(неактуально) Вопрос 5.11 экзамена 1С:Профессионал по Документообороту. Будут ли выводиться в отчет "Задачи" задачи остановленных процессов?
Мы в фирме 1С широко используем собственные разработки для организации работы компании. В частности, «1С:Документооборот 8». Помимо управления документами (как следует из названия) это ещё и современная ECM-система (Enterprise Content Management — управление корпоративным контентом) с широким набором функциональных возможностей – почта, рабочие календари сотрудников, организация совместного доступа к ресурсам (например, бронирование переговорных), учёт рабочего времени, корпоративный форум и многое другое.
В фирме 1С документооборотом пользуется более тысячи сотрудников. База данных стала уже внушительной (11 млрд. записей), а это значит, что она требует более тщательного ухода и более мощного оборудования.
Как устроена работа нашей системы, с какими сложностями при обслуживании базы мы сталкиваемся и как их решаем (в качестве СУБД мы используем MS SQL Server) – расскажем в статье.
Для тех, кто впервые читает про продукты 1С.
1С:Документооборот — это прикладное решение (конфигурация), реализованное на базе фреймворка для разработки бизнес-приложений — платформе 1С:Предприятие.
«1С:Документооборот 8» (сокращённо – ДО) позволяет автоматизировать работу с документами на предприятии. Один из основных инструментов взаимодействия сотрудников – электронная почта. Помимо почты ДО также решает и другие задачи:
А ещё благодаря подключенному к Документообороту другому нашему продукту – Системе взаимодействия – мы непосредственно в Документообороте получаем функциональность мессенджера – чаты, аудио и видеозвонки (включая групповые, что сейчас стало особенно актуально, в том числе и с мобильного клиента), быстрый обмен файлами плюс возможность написания чат-ботов, упрощающих работу с системой. Ещё один плюс от использования Системы Взаимодействия (по сравнению с другими мессенджерами) – возможность вести контекстные обсуждения, привязанные к конкретным объектам Документооборота – документам, мероприятиям и т.п. То есть Система взаимодействия глубоко интегрируется с целевым приложением, а не выступает просто «отдельной кнопкой».
Число писем в нашем ДО уже перевалило за 100 млн., а вообще в СУБД – более 11 млрд. записей. Суммарно система использует почти 30 Тб хранилища: объём базы – 7,5 Тб, файлы для коллективной работы лежат отдельно и занимают ещё 21 Тб.
Если говорить о более конкретных цифрах, то вот количество писем и файлов на данный момент:
На каком оборудовании мы всё это обрабатываем?
Эти цифры говорят о внушительном объёме задач, так что перед нами встала необходимость выделить под нужды внутреннего ДО довольно производительное оборудование. На текущий день его характеристики следующие: 38 ядер, 240 Гб ОЗУ, 26 Тб дисков. Приводим таблицу серверов:
В будущем мы планируем наращивать мощность оборудования.
Как обстоят дела с загрузкой серверов?
Сетевая активность никогда не была проблемой ни у нас, ни у наших заказчиков. Как правило, слабое место – это процессор и диски, потому что с нехваткой памяти все уже бороться умеют. Приведём скриншоты наших серверов из Resource Monitor, на которых видно, что у нас никакой страшной нагрузки нет, она весьма скромная.
Например, на скриншоте ниже мы видим SQL-сервер, где ЦПУ загружен на 23%. И это очень хороший показатель (для сравнения: если загрузка будет приближаться к 70%, то, скорее всего, сотрудники будут наблюдать довольно существенные замедления работы).
На втором скриншоте показан сервер приложений, на котором работает платформа 1С:Предприятие – он обслуживает только пользовательские сеансы. Здесь нагрузка процессора несколько больше – 38%, она ровная и спокойная. Загрузка диска есть, но она приемлемая.
Третий скриншот показывает ещё один сервер 1С:Предприятия (он второй, у нас их два в кластере). Только предыдущий обслуживает пользователей, а на этом работают роботы. Например, принимают почту, маршрутизируют документы, выполняют обмен данными, считают права и т.п. Все эти фоновые активности выполняют примерно 90-100 фоновых заданий. И вот этот сервер загружен очень сильно – на 88%. Но на людях это не сказывается, и он реализует как раз всю ту автоматику, которую должен делать Документооборот.
Какие есть метрики для определения эффективности работы?
У нас в ДО встроена серьёзная подсистема замеров показателей производительности и вычислений различных метрик. Это нужно для того, чтобы и в текущий момент времени, и в исторической перспективе понимать, что в системе происходит, что становится хуже, что становится лучше. Средства мониторинга – метрики и замеры времени – входят в типовую поставку «1С:Документооборот 8». Метрики требуют настройки на внедрении, но сам механизм типовой.
Метрики – это замеры различных бизнес-показателей в те или иные моменты времени (например, среднее время доставки почты в моменте 10 минут).
Одна из метрик показывает количество активных пользователей в базе. В среднем их 1000-1400 в течение дня. На графике видно, что на момент скриншота в базе было 2144 активных пользователя.
Таких действий больше 30, список под катом.
На позапрошлой неделе у нас средняя активность пользователей увеличилась в полтора раза (на графике показана красным) – это связано с переходом большинства сотрудников на удалённую работу (в связи с известными событиями). Также число активных пользователей увеличилось в 3 раза (на скрине показаны синим), так как сотрудники стали активно пользоваться мобильными: каждый мобильный клиент создаёт подключение к серверу. Сейчас в среднем на каждого нашего сотрудника приходится 2 подключения к серверу.
Для нас, как для администраторов, это сигнал, что нужно внимательнее относиться к вопросам быстродействия, смотреть, не стало ли хуже. А смотрим мы это по другим параметрам. Например, как меняется время доставки почты по внутренней маршрутизации (на скриншоте ниже показано синим). Мы видим, что оно до этого года скакало, а сейчас стабильное – для нас это показатель, что с системой всё в порядке.
Ещё одна прикладная метрика для нас – среднее время ожидания загрузки писем с почтового сервера (на скриншоте показана красным). Грубо говоря, сколько будет письмо гулять по Интернету, прежде чем оно окажется у нашего сотрудника. На скриншоте видно, что это время тоже никак не изменилось за последнее время. Есть отдельные всплески – но они связаны не с задержками, а с тем, что время сбивается на почтовых серверах.
Или, например, ещё метрика (на скриншоте показана синим) – обновление писем в папке. Открытие папки писем – очень частая операция, и нужно, чтобы она выполнялась быстро. Мы замеряем, с какой скоростью она выполняется. Этот показатель измеряется для каждого клиента. Можно посмотреть как общую картину по фирме, так и динамику, например, по отдельному сотруднику. По скриншоту видно, что до этого года метрика была неуравновешенна, потом мы сделали ряд улучшений, и сейчас она не становится хуже – практически ровный график.
Метрики – это, в основном, инструмент администратора для мониторинга системы, для быстрого реагирования на какие-то изменения в поведении системы. На скриншоте – метрики внутреннего ДО за год. Скачок на графиках обусловлен тем, что перед нами поставили задачи по развитию внутреннего ДО.
Вот перечень еще некоторых метрик (под катом).
- Активность пользователей
- Активные пользователи
- Активные процессы
- Количество файлов
- Размер файлов (Мб)
- Количество документов
- Количество объектов к отправке адресатам
- Количество контрагентов
- Невыполненные задачи
- Среднее время ожидания загрузки писем с почтового сервера за последние 10 минут
- Внешний буфер данных: количество файлов
- Отставание границы от текущей даты
- Долгая очередь
- Оперативная очередь
- Возраст необработанной учётной записи по внешней маршрутизации
- Размер очереди приемки по внутренней маршрутизации (долгая очередь)
- Размер очереди приемки по внутренней маршрутизации (быстрая очередь)
- Время доставки почты по внутренней маршрутизации (долгая очередь)
- Время доставки почты по внутренней маршрутизации (быстрая очередь)
- Время доставки почты по внешней маршрутизации (среднее)
- Число документов Бронирование
- Число документов Отсутствие
- Число документов «Запись о работе с контрагентом»
- Почта Обновление писем в папке
- Почта Открытие карточки письма
- Почта Перенос письма в папку
- Почта Переход по папкам
Наша система круглосуточно делает замеры более 150 показателей, но не все из них можно оперативно отслеживать. Они могут пригодиться потом, в какой-нибудь исторической перспективе, а сосредоточиться можно на самых важных для бизнеса.
На одном из внедрений было выбрано, например, только 5 показателей. Заказчик поставил перед собой цель сделать минимальный набор показателей, но в то же время такой, чтобы он покрывал основные сценарии работы. Включать в акт приёма 150 показателей было бы неоправданно, потому что даже внутри предприятия сложно согласовать, какие показатели считать приемлемыми. А про эти 5 показателей они знали и уже предъявляли их к системе до начала проекта внедрения, включив в конкурсную документацию: время открытия карточки не более 3 секунд, время исполнения задачи с файлом не больше 5 секунд и т.д. У нас в ДО как раз и были метрики, которые очень чётко отражали исходный запрос из ТЗ заказчика.
А ещё у нас есть профильный анализ замеров производительности. Показатели производительности – это фиксация длительности каждой выполняющейся операции (запись письма в базу, отправка письма на почтовый сервер и т.д.). Это используется исключительно техническими специалистами. Показателей производительности у нас в программе копится очень много. Сейчас мы измеряем примерно 1500 ключевых операций, которые разбиты по профилям.
Один из наиболее важных для нас профилей – «Список ключевых показателей почты с точки зрения потребителей». Этот профиль включает в себя, например, следующие показатели:
- Выполнение команды: Отбор по тегу
- Открытие формы: Форма списка
- Выполнение команды: Отбор по папке
- Отображение письма в области чтения
- Сохранение письма в любимую папку
- Поиск писем по реквизитам
- Cоздание письма
Как мы обслуживаем такую большую базу данных?
Наш внутренний ДО – пример реально работающего высоконагруженного проекта. Расскажем о технических особенностях его базы данных.
Сколько времени идёт реструктуризация больших таблиц базы данных?
SQL-сервер требует периодического обслуживания, наведения порядка в таблицах. По-хорошему это нужно делать минимум раз в сутки, а для высоковостребованных таблиц – ещё чаще. Но если база большая (а у нас число записей уже перевалило за 11 млрд.), то ухаживать за ней непросто.
Мы делали реструктуризацию таблиц 6 лет назад, но потом она стала занимать столько времени, что мы уже не вписывались в ночные интервалы. А так как эти операции сильно нагружают SQL-сервер, он не может качественно обслуживать других пользователей.
Поэтому сейчас нам приходится применять различные ухищрения. Например, мы не можем выполнять эти процедуры на полных наборах данных. Приходится прибегать к процедуре Update Sample 500000 rows – это занимает 14 минут. Она выполняет обновление статистики не по всем данным таблицы, а отбирает полмиллиона строк, и по ним рассчитывает статистику, которую использует для всей таблицы. Это некоторое допущение, но мы вынуждены на него идти, потому что для конкретной таблицы сбор статистики по всему миллиарду записей будет выполнятся неприемлемо долгое время.
Другие операции обслуживания мы тоже оптимизировали, сделав их частичными.
Обслуживание СУБД – это вообще сложная задача. В случае активного взаимодействия сотрудников, база быстро разрастается, администраторам становится всё тяжелее обслуживать её – делать обновления статистики, дефрагментацию, индексацию. Здесь надо применять разные стратегии, мы хорошо знаем, как это делать, у нас есть опыт, мы можем им делиться.
Как реализован бэкап при таких объёмах?
Полный бэкап СУБД производится раз в день ночью, инкрементальный – каждый час. Также каждый день создаётся каталог файлов, и он является порцией инкрементального бэкапа файлового хранилища.
Сколько времени выполняется полный бэкап?
На жёсткий диск полный бэкап выполняется за три часа, частичный – за час. На ленту пишется дольше (спецустройство, которое делает резервную копию на специальную кассету, хранящуюся вне офиса; на ленту делают отчуждаемую копию, которая сохранится, если, например, серверная сгорит). Бэкап делается ровно на том же сервере, параметры которого были выше – SQL-сервер с 20% загрузки процессора. На момент бэкапа, конечно же, системе становится значительно хуже, но она всё равно работоспособна.
Есть ли дедупликация?
Дедупликация файлов есть, обкатываем её на себе, и скоро она войдёт в новую версию Документооборота. Также обкатываем на себе механизм дедупликации контрагентов. Дедупликации записей на уровне СУБД нет, так как в этом нет необходимости. Платформа 1С:Предприятие хранит в СУБД объекты, и только платформа может отвечать за их согласованность.
Есть ноды только для чтения?
А помеченные на удаление письма совсем не удаляются?
Пока нет. Задачи облегчить базу у нас нет. Было несколько довольно серьёзных случаев, когда приходилось обращаться к помеченным на удаление письмам, в том числе и 2009 года. Поэтому пока решили хранить всё. А вот когда стоимость этого станет неоправданной, будем думать про удаление. Но, если нужно какое-то отдельное письмо удалить из базы с концами, чтобы не было никаких следов, то такое можно сделать по спецзапросу.
А зачем это хранить? Есть статистика обращений к старым документам?
Именно статистики нет. Точнее, она есть в виде протокола работы пользователей, но он хранится недолго. Записи старее года стираются из протокола.
Ситуации, когда надо было поднять старую переписку пятилетней и даже десятилетней давности, были. И это всегда делалось не из праздного любопытства, а для принятия сложных бизнес-решений. Был случай, когда без истории переписки было бы принято неправильное бизнес-решение.
Как проводится экспертиза ценности и уничтожение документов согласно срокам хранения?
Для бумажных документов это делается обычным традиционным способом, как и у всех. Для электронных не делаем – пусть себе хранятся. Место есть. Польза есть. Всем хорошо.
Какие перспективы развития есть?
Сейчас наш ДО решает примерно 30 внутренних задач, часть которых мы перечисляли в начале статьи. Также ДО используется для подготовки конференций, которые мы дважды в год проводим для наших партнёров: вся программа, все доклады, все параллельные секции, залы – всё это верстается в ДО, а потом выгружается из него, и делается печатная программа.
На подходе для ДО ещё несколько задач, помимо тех, что он уже решает. Есть общефирменные задачи, а есть уникальные и редкие, нужные только какому-то конкретному подразделению. Необходимо им помогать, а значит, расширять «географию» использования системы внутри 1С – расширять область применения, решать задачи всех подразделений. Это стало бы лучшим тестом на производительность и надёжность. Хотелось бы увидеть работу системы на триллионах записей, петабайтах информации.
Читайте также: