При работе в современных конфигурациях, таких как 1С:Управление торговлей 11, ERP 2 или Комплексная автоматизация, разработчики и аналитики часто сталкиваются с необходимостью настройки произвольных запросов в схемах компоновки данных (СКД). Одной из наиболее раздражающих проблем является ситуация, когда при попытке отредактировать схему (например, в справочнике Виды цен) система выдает предупреждение: «Для того, чтобы редактировать схему компоновки, необходимо запустить конфигурацию в режиме толстого клиента». Самое странное в этой ситуации то, что пользователь уже запустил программу в режиме толстого клиента, и в окне «О программе» это подтверждается, но редактор все равно не открывается.
В этой статье мы подробно разберем, почему возникает этот «парадокс», проанализируем причины программного сбоя и рассмотрим несколько способов решения проблемы: от временных «костылей» до системных исправлений.
Проанализируем механизм проверки, который заложен в типовых конфигурациях. При нажатии на кнопку редактирования схемы срабатывает код, который проверяет текущий контекст исполнения. В типовых решениях это выглядит примерно так:
#Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
// Открытие формы конструктора СКД
#Иначе
ПоказатьПредупреждение(Неопределено, НСтр("ru='Для того, чтобы редактировать схему компоновки, необходимо запустить конфигурацию в режиме толстого клиента.'"));
#КонецЕсли
Проблема заключается в том, что в определенных версиях платформы 1С (особенно часто это замечали в релизах 8.3.14.х — 8.3.16.х) наблюдается баг препроцессора. Несмотря на то что приложение запущено как Толстый клиент, инструкции препроцессора внутри кода могут ошибочно возвращать Ложь. Это происходит из-за некорректной самоидентификации клиента в момент выполнения конкретного серверного или клиентского вызова. Платформа «забывает», в каком режиме она работает, и переходит в ветку #Иначе.
Если вам нужно срочно настроить схему и нет времени на переустановку платформы или очистку кэшей, самым быстрым способом будет временное отключение проверки в конфигураторе. Проанализируем, как это сделать:
#Если ТолстыйКлиент....Пример модифицированного кода:
// #Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
// Процедура открытия редактора
ОткрытьФормуРедактированияСхемы();
// #Иначе
// ПоказатьПредупреждение(...);
// #КонецЕсли
Как показывает практика, после такого «вмешательства» редактор СКД открывается без проблем, так как само приложение физически является толстым клиентом и обладает всеми необходимыми библиотеками для работы конструктора.
Выясним, на каких версиях этот баг проявляется чаще всего. Опытным путем пользователи установили, что релиз 8.3.15.1656 часто страдает этой проблемой, в то время как на более старых (например, 8.3.12.1790) или значительно более новых (начиная с 8.3.18 и выше) ошибка встречается крайне редко.
Если вы столкнулись с этой ситуацией, попробуйте сменить версию платформы для запуска базы. В настройках списка баз в поле «Версия платформы» можно указать конкретный номер сборки, если у вас установлено несколько вариантов.
Иногда причиной некорректного поведения препроцессора становится «замусоренный» кэш клиент-серверных вызовов. Рассмотрим, как правильно выполнить очистку:
%AppData%\1C\1Cv8\./ClearCache. Это заставит систему обновить метаданные при старте.Важно помнить, что если вы подключаетесь к базе через веб-сервер (http/https), то даже запуск исполняемого файла толстого клиента не всегда дает нужный результат. Многие графические редакторы 1С требуют прямого соединения с сервером приложений по протоколу TCP/IP (порт 1541 и др.).
Проанализируем ситуацию: если в строке соединения указан адрес вида http://myserver/mybase, попробуйте изменить его на прямое подключение (указав имя сервера и имя базы), если это позволяет сетевая инфраструктура. Это обеспечит полнофункциональную работу толстого клиента и доступ к ActiveX-компонентам, которые используются в редакторе СКД.
Если ни один из вышеперечисленных способов не помогает, обратите внимание на следующие нюансы:
Консоль системы компоновки данных (которая корректно открывается в вашем окружении) и загрузить обратно.Подведем итог: проблема чаще всего носит платформенный характер. Мы рекомендуем начать с очистки кэша и проверки прямого подключения к серверу, а если это не помогает — обновить платформу или временно закомментировать проверку в коде конфигурации.