Рано или поздно любая компания, использующая высоконагруженные базы данных на платформе 1С, сталкивается с проблемой падения производительности. Особенно критично это проявляется в конфигурации «1С:Управление торговлей» (УТ 11.4), где менеджеры оформляют сотни заказов в день, а фоновые расчеты себестоимости и интеграции с сайтами создают колоссальную нагрузку на серверную инфраструктуру.
Когда база начинает «тормозить», перед руководством встает дилемма: нанять дорогостоящих внешних аудиторов (стоимость услуг которых начинается от 100 000 рублей за базовый анализ одной СУБД), рискнуть и довериться фрилансерам без гарантий результата или попытаться локализовать проблему своими силами. В этой статье мы подробно разберем, как устроен рынок профессионального ИТ-аудита 1С, как правильно выбрать надежного подрядчика и какие шаги можно предпринять самостоятельно для ускорения вашей УТ 11.4.
Поиск надежного ИТ-партнера на открытом рынке часто похож на лотерею. Чтобы обезопасить крупных заказчиков, фирма «1С» создала официальный реестр — Центры корпоративной технологической поддержки (ЦКТП). Это сертифицированные компании-партнеры, которые доказали свою квалификацию в решении сложнейших технологических проблем на крупных внедрениях.
Обращение к списку ЦКТП гарантирует, что решать ваши проблемы будут сертифицированные 1С:Эксперты по технологическим вопросам. Среди наиболее авторитетных игроков на рынке оптимизации производительности выделим следующие компании:
1С:Предприятие 8.Многие заказчики удивляются начальной стоимости аудита в 100 000 – 200 000 рублей, считая эту цену завышенной. Однако разберем по шагам, что входит в эту стоимость и почему качественная диагностика не может стоить дешево:
Перед тем как приступать к любым работам по оптимизации, необходимо зафиксировать текущую скорость работы. Субъективные оценки пользователей типа «вчера база летала, а сегодня всё зависло» не подходят для технического анализа. Рассмотрим международный стандарт Apdex (Application Performance Index), который активно применяется в экосистеме 1С для объективной оценки производительности.
Методика строится по следующему алгоритму:
РеализацияТоваровУслуг, формирование отчета ВедомостьПоТоварамНаСкладах).
Индекс_Apdex = (Количество_Успешных + (Количество_Приемлемых / 2)) / Общее_Количество_Замеров
Где:
Полученный индекс находится в диапазоне от 0 (крайне низкая производительность) до 1 (идеальная скорость). Проведение замеров по методике Apdex до начала работ и после их завершения позволяет наглядно оценить эффективность оптимизации.
Проанализируем архитектурные особенности конфигурации УТ 11.4, которые чаще всего приводят к замедлению работы системы:
Очень часто причиной медленной работы доработанных конфигураций являются ошибки начинающих программистов. Посмотрим на классический пример неоптимального обращения к виртуальным таблицам внутри цикла:
// НЕПРАВИЛЬНО: Вызов запроса внутри цикла приводит к лавинообразному росту обращений к СУБД
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.ВНаличииОстаток КАК Остаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки";
Запрос.УстановитьПараметр("Номенклатура", СтрокаТовара.Номенклатура);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
// Обработка результата
КонецЕсли;
КонецЦикла;
Этот код будет выполнять отдельный запрос к базе данных для каждой строки табличной части. Если в документе 100 строк, СУБД выполнит 100 запросов. Перепишем этот алгоритм правильно, используя передачу всей таблицы товаров в качестве параметра и соединение во временной таблице:
// ПРАВИЛЬНО: Запрос выполняется один раз, данные обрабатываются пакетом
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаТоваров.Номенклатура КАК Номенклатура
|ПОМЕСТИТЬ ВТ_Товары
|ИЗ
| &ТаблицаТоваров КАК ТаблицаТоваров
|;
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
| ТоварыНаСкладахОстатки.ВНаличииОстаток КАК Остаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура В (ВЫБРАТЬ ВТ_Товары.Номенклатура ИЗ ВТ_Товары)) КАК ТоварыНаСкладахОстатки";
Запрос.УстановитьПараметр("ТаблицаТоваров", ТаблицаТоваров);
РезультатЗапроса = Запрос.Выполнить();
// Далее обрабатываем полученный массив данных в один заход
Выбор и настройка сервера баз данных оказывает решающее влияние на скорость работы всей ИТ-архитектуры предприятия. Рассмотрим основные особенности эксплуатации популярных систем управления базами данных:
Если вы приняли решение использовать PostgreSQL, обязательно настройте следующие ключевые параметры в конфигурационном файле postgresql.conf:
shared_buffers — установите значение в размере 25% от общего объема оперативной памяти сервера (RAM).effective_cache_size — установите в размере 50–75% от объема RAM.work_mem — выделите от 64MB до 256MB на каждое активное соединение для быстрой сортировки данных в памяти СУБД.autovacuum — настройте агрессивный режим очистки таблиц от устаревших версий строк, так как специфика работы временных таблиц 1С генерирует огромный объем неиспользуемых данных.Если вы хотите локализовать техническую проблему собственными силами без привлечения сторонних компаний, выполните следующие последовательные шаги:
TempDB для MS SQL) на быстрые NVMe SSD-накопители. Низкая скорость дисков на запись — это частая причина долгого проведения транзакций в 1С.Помните, что грамотно проведенная экспресс-диагностика поможет вам точнее сформулировать техническое задание для внешних подрядчиков, что позволит сэкономить значительную часть бюджета на аудит и быстрее вернуть вашей системе былую скорость работы.