Обновление платформы 1С — это всегда ответственный шаг, который нередко преподносит неприятные сюрпризы в виде резкого снижения производительности. Одной из наиболее частых жалоб после перехода на версию 8.3.18 стало «зависание» динамических списков, особенно в тяжелых формах, таких как списки заказов или реализации. В этой статье мы подробно разберем, почему возникают такие проблемы, как продиагностировать узкие места и какие конкретные шаги помогут вернуть системе былую скорость.
С выходом платформы 8.3.18 механизмы работы с интерфейсом «Такси» и генерация SQL-запросов претерпели значительные изменения. Разберем по шагам, что именно могло пойти не так. Во-первых, в этой версии изменились приоритеты фоновых запросов. Если раньше динамический список считывал только видимые строки, то теперь механизмы подсчета общего количества записей и автоматического обновления могут инициировать тяжелые операции в фоновом режиме. В файловом варианте базы данных это приводит к блокировкам таблиц, из-за чего интерфейс «замирает».
Рассмотрим подробнее свойство ОсновнаяТаблица. Если в вашем динамическом списке используется произвольный запрос, но не указана основная таблица, система 1С лишается возможности эффективно использовать индексы для пагинации (выборки данных порциями). Платформа 8.3.18 стала более чувствительна к таким настройкам, и отсутствие основной таблицы часто приводит к полному сканированию данных (Full Scan) при каждом открытии формы.
Проанализируем ситуацию, с которой столкнулся автор темы. Основной причиной «мертвого» зависания списка заказов оказалось наличие ЛЕВОЕ СОЕДИНЕНИЕ с таблицей ПКО (Приходных кассовых ордеров). Выясним причину: динамический список при выполнении запроса пытается применить отборы и сортировки пользователя ко всей выборке. Если в запросе присутствуют соединения с тяжелыми таблицами документов, оптимизатор запросов может построить неэффективный план выполнения.
Посмотрим на пример того, как делать не рекомендуется:
ВЫБРАТЬ
ЗаказПокупателя.Ссылка,
ЗаказПокупателя.Дата,
ЗаказПокупателя.Номер,
СуммаОплаты.СуммаДокумента КАК СуммаОплаты
ИЗ
Документ.ЗаказПокупателя КАК ЗаказПокупателя
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходныйКассовыйОрдер КАК СуммаОплаты
ПО СуммаОплаты.ДокументОснование = ЗаказПокупателя.Ссылка
Для решения проблемы в динамическом списке следует максимально упростить запрос. Если вам нужно отобразить данные из связанных таблиц, проанализируем возможность использования индексированных дополнительных реквизитов или избавления от соединений в пользу вычисляемых полей на уровне системы компоновки данных. Как только автор убрал левое соединение, работа списка мгновенно нормализовалась.
Если ваша база все еще работает в файловом режиме, а количество пользователей растет, переход на SQL становится необходимостью. Проанализируем опыт использования PostgreSQL совместно с 1С 8.3.18. Часто возникает вопрос: стоит ли переплачивать за MS SQL? Практика показывает, что для большинства задач PostgreSQL обеспечивает отличный прирост производительности, особенно если правильно настроить параметры сервера.
Разберем основные настройки PostgreSQL для стабильной работы 1С:
standard_conforming_strings: Для платформы 8.3.18 и выше рекомендуется устанавливать значение on. Это влияет на то, как сервер обрабатывает обратные косые черты в строках, и корректная настройка критична для стабильности запросов.random_page_cost: Если ваша база размещена на SSD-накопителях, обязательно снизьте этот параметр до 1.1 или 1.5. Это заставит планировщик PostgreSQL чаще отдавать предпочтение индексам, что критически важно для динамических списков с множеством фильтров.1Cv8.1CD).Иногда проблема кроется не в базе данных, а в локальных настройках на компьютере пользователя. Если под новым пользователем 1С список работает быстрее, это явный признак проблем с кэшем метаданных или настройками формы. Выполним следующие действия для очистки окружения:
Проанализируем содержимое папки %LocalAppData%\1C\1cv8. Там хранятся данные конфигурации форм и пользовательские настройки. При обновлении платформы старые закэшированные данные о структуре колонок могут конфликтовать с новыми алгоритмами отрисовки. Удаление папок с длинными буквенно-цифровыми именами (GUID) часто помогает решить проблему «фризов» при открытии списков.
Также стоит обратить внимание на аппаратное ускорение графики. Платформа 8.3.18 активно использует ресурсы видеокарты для отрисовки интерфейса. На старых рабочих станциях это может вызывать задержки. Попробуем отключить его, добавив в файл conf.cfg строку:
DisableHardwareAcceleration=1
Рассмотрим еще несколько важных настроек самого объекта ДинамическийСписок, которые могут тормозить работу на платформе 8.3.18:
SELECT COUNT(*). На больших таблицах (сотни тысяч записей) это создает огромную нагрузку. Рекомендуем отключать эту опцию для списков документов.ПериодАвтообновления. Если установлено значение менее 60 секунд, постоянные фоновые запросы в файловой базе будут приводить к постоянным микро-зависаниям.Индексировать или Индексировать с дополнительным упорядочиванием.Для исправления тормозов в динамических списках на 1С 8.3.18 мы проделали комплексную работу. В первую очередь, мы оптимизировали текст запроса, избавившись от тяжелых соединений. Во-вторых, мы рассмотрели преимущества перехода на PostgreSQL и специфические настройки сервера для работы с 1С. В-третьих, мы затронули вопросы очистки кэша и настройки свойств самого списка. Системный подход к этим параметрам позволяет добиться высокой скорости работы интерфейса даже на обновленных версиях платформы.