Представим ситуацию: вы работаете над сложной задачей в конфигураторе 1С, загрузили чистую конфигурацию, внесли пару правок и отошли на перерыв. Вернувшись, вы обнаруживаете, что в дереве метаданных появились новые изменения (например, изменены синонимы перечислений), которых вы не вносили. При этом Хранилище конфигурации не используется, а доступ к серверу по RDP ограничен. Разберем, как это возможно с технической точки зрения, и проанализируем скрытые механизмы платформы 1С и операционной системы Windows.
Первое, что мы должны проанализировать, — это возможность прямого вмешательства в ваш рабочий стол. В современных версиях Windows Server существует механизм теневого подключения (RDP Shadowing). Он позволяет администратору или пользователю с соответствующими правами подключиться к вашей активной сессии.
Рассмотрим режимы работы этого механизма. Даже если у вас есть права администратора, настройки групповых политик могут разрешать «полный контроль без разрешения пользователя». В этом случае кто-то может зайти в вашу сессию, пока вы на обеде, внести правки в открытом конфигураторе и выйти, не оставляя следов в журнале регистрации 1С (так как сеанс пользователя не прерывался).
Для проверки этой гипотезы посмотрим на настройки реестра или групповых политик сервера по пути: Computer Configuration \ Administrative Templates \ Windows Components \ Remote Desktop Services \ Remote Desktop Session Host \ Connections. Параметр «Установить правила удаленного управления для сеансов пользователей служб удаленных рабочих столов» может принимать значения:
0 — Удаленное управление запрещено.1 — Полный контроль с разрешения пользователя.2 — Полный контроль без разрешения пользователя (самый опасный вариант для разработчика).3 — Наблюдение с разрешения.4 — Наблюдение без разрешения.Выясним причину, связанную с тем, как 1С хранит временные данные. При работе в терминальном режиме часто возникает ситуация, когда несколько разработчиков работают под одной учетной записью или когда профили пользователей настроены на общие сетевые папки. Платформа 1С активно использует локальный кэш, расположенный в папке %LOCALAPPDATA%\1C\1cv8.
Разберем по шагам механизм возникновения ошибки:
Config и ConfigSave в базе данных и кэширует их локально для ускорения работы.Это объясняет, почему изменения кажутся «логичными» — их мог внести коллега в параллельной сессии, а кэш 1С «склеил» ваши рабочие пространства.
Проанализируем ситуацию с использованием расширений. В платформе 8.3 изменения могут вноситься не только в основную конфигурацию, но и через расширения. Если кто-то добавил расширение, которое переопределяет синонимы объектов, и применил его (даже без динамического обновления основной базы), ваш конфигуратор при определенных операциях сравнения может начать учитывать эти метаданные.
Особенно это актуально, если вы выполняете команду «Сравнить, объединить с конфигурацией из файла». В окне сравнения 1С сопоставляет текущее состояние (которое может быть модифицировано расширением в памяти сеанса) с эталонным файлом .cf.
Современная разработка на 1С часто включает инструменты автоматизации. Посмотрим на пример использования OneScript или встроенных команд пакетного обновления конфигурации. Если к вашей тестовой базе подключен какой-либо скрипт автоматической сборки или загрузки изменений из репозитория (Git/SVN), он может выполнить команду загрузки конфигурации в фоновом режиме:
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /S "Server\Base" /LoadConfigFromFiles "C:\Repo\src" /UpdateDBCfg
Если такая команда выполняется, когда у вас открыт Конфигуратор, поведение системы становится непредсказуемым. Платформа не всегда блокирует базу целиком при пакетной загрузке метаданных, что может привести к тому, что в вашем дереве объектов появятся изменения «на лету» после обновления таблиц Config на сервере.
Рассмотрим подробнее возможность программного управления самим приложением «Конфигуратор». Платформа 1С позволяет подключаться к запущенному экземпляру через COM-интерфейс. Внешний скрипт может получить доступ к объекту V83.Application и имитировать действия пользователя или выполнять команды встроенного языка, которые косвенно влияют на состояние открытых окон.
Хотя программное изменение структуры метаданных через COM в режиме предприятия ограничено, скрипт может инициировать команды меню или управлять окнами сравнения. Если в компании есть «шутники» или автоматизированные системы мониторинга состояния конфигураций, они могли сработать именно таким образом.
Чтобы исключить подобные инциденты в будущем, рекомендуем придерживаться следующих правил:
Config.Выяснение причины подобных «мистических» правок обычно сводится к человеческому фактору, усиленному особенностями кэширования метаданных 1С и механизмами удаленного администрирования Windows.