Разберем распространенную проблему, с которой сталкиваются разработчики при доработке типовых конфигураций (например, Управление торговлей, ERP Управление предприятием или Комплексная автоматизация) с использованием механизма расширений. При попытке заимствовать форму списка документов, добавить в расширение основной реквизит — ДинамическийСписок — и открыть окно «Настройка списка» для редактирования текста запроса, Конфигуратор намертво зависает, переставая отвечать на действия пользователя.
Проанализируем природу этой ошибки, выясним, почему стандартная очистка кэша в каталоге AppData/Roaming не приносит результата, и подробно рассмотрим надежные способы решения задачи.
Чтобы понять, почему платформа уходит в бесконечное ожидание или глухую блокировку потока интерфейса, рассмотрим внутреннюю механику работы Конфигуратора:
8.3.27.1936 поведение приводит к полному зависанию, тогда как на сборке 8.3.27.1786 окно настроек открывается корректно).Интерактивное изменение запроса динамического списка через форму расширения создает лишние зависимости и существенно усложняет последующее обновление типовой конфигурации. Наиболее надежный и стандартизированный способ решения задачи — программное переопределение текста запроса в модуле формы.
Рассмотрим по шагам реализацию этого подхода:
Список в расширение не требуется).ПриСозданииНаСервере.&После или &Вместо.Посмотрим на пример кода в модуле формы:
&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
// Получаем текущий текст запроса или задаем полностью новый
ТекстЗапросаМодифицированный =
"ВЫБРАТЬ
| ДокументПКО.Ссылка КАК Ссылка,
| ДокументПКО.ПометкаУдаления КАК ПометкаУдаления,
| ДокументПКО.Номер КАК Номер,
| ДокументПКО.Дата КАК Дата,
| ДокументПКО.Проведен КАК Проведен,
| ДокументПКО.Организация КАК Организация,
| ДокументПКО.СуммаДокумента КАК СуммаДокумента,
| ДокументПКО.Валюта КАК Валюта,
| ДокументПКО.Комментарий КАК Комментарий
|ИЗ
| Документ.ПриходныйКассовыйОрдер КАК ДокументПКО";
Список.ТекстЗапроса = ТекстЗапросаМодифицированный;
КонецПроцедуры
Если для динамического списка включен режим произвольного запроса, обращение к свойству Список.ТекстЗапроса подменяет выборку «на лету» без открытия проблемного конструктора в Конфигураторе. Если в форму требуется вывести новые добавленные поля, создадим их программно с помощью метода Элементы.Добавить().
Если проект жестко требует именно интерактивной настройки динамического списка через форму расширения, устраним причину зацикливания резолвера метаданных:
Важно: Учитывайте, что добавление большого числа объектов в расширение увеличивает трудозатраты при контроле изменений во время обновлений основной конфигурации.
Нередко разработчики удаляют кэш только по пути %APPDATA%\1C\1cv8\ (каталог Roaming). Однако параметры диалоговых окон, интерфейсные схемы и временные структуры Конфигуратора сохраняются также в локальном профиле.
Разберем правильный порядок действий для полной очистки:
1cv8.exe и 1cv8c.exe.%LOCALAPPDATA%\1C\1cv8\ (каталог Local).%APPDATA%\1C\1cv8\.Если предыдущие методы не дали результата, выясним технические свойства самой среды разработки:
РежимСовместимости строго идентично режиму совместимости основной конфигурации.8.3.27.1936), выполним даунгрейд или обновление на стабильный релиз (например, 8.3.27.1786), где данная ошибка парсера не воспроизводится.