Ситуация, когда при попытке обновить конфигурацию базы данных (нажать «синий бочонок») происходит аварийное завершение работы Конфигуратора с системной ошибкой Windows «Программа 1cv8 не работает», является одной из самых неприятных для разработчика. Проблема часто осложняется тем, что обычное изменение программного кода проходит успешно, а критическая ошибка возникает только при манипуляциях с объектами метаданных (реквизитами, таблицами, индексами). В этой статье мы подробно разберем причины такого поведения платформы и пошагово рассмотрим способы устранения проблемы.
Прежде всего, проанализируем ситуацию: если конфигурация сохраняется (Ctrl+S), но «вылетает» именно при обновлении конфигурации базы данных (F7), значит, корень проблемы кроется в процессе реструктуризации. Реструктуризация — это процесс, при котором платформа 1С пытается изменить физическую структуру таблиц в базе данных (SQL или файловой), чтобы привести их в соответствие с новой структурой метаданных.
Выясним причину, по которой это может происходить:
Config) или нарушена логическая целостность этого объекта.Рассмотрим один из самых эффективных методов диагностики, предложенный в обсуждении. Если вы подозреваете, что проблема в реструктуризации, попробуйте выполнить следующие действия:
.cf) через меню «Конфигурация — Сохранить конфигурацию в файл»..cf файл в новую базу.Если в новой базе всё проходит успешно, значит, проблема не в самом «коде» конфигурации, а в состоянии таблиц конкретной информационной базы или в данных, которые в них содержатся.
Обычной очистки пользовательского кэша (удаление базы из списка) часто недостаточно. Разберем, какие области памяти стоит очистить дополнительно:
Кэш конфигурации (ConfigCAS): В платформе 8.3 существует кэш, который хранится на сервере (в случае клиент-серверного варианта). Рекомендуется остановить службу сервера 1С и очистить содержимое папки snccntx в каталоге описания кластера сервера. Это удалит сеансовые данные и временные состояния конфигурации.
Системная папка Temp: При реструктуризации 1С создает множество временных файлов. Если диск переполнен или есть проблемы с правами доступа, программа может упасть. Очистим папку %TEMP% в профиле пользователя перед началом обновления.
Проанализируем системную среду. Если вы работаете на Windows 7, критически важным моментом является настройка DEP (Предотвращение выполнения данных). Программа 1С выполняет интенсивные операции с оперативной памятью при перестроении индексов таблиц, что Windows может расценить как попытку атаки.
Для решения проблемы добавим исполняемый файл платформы в исключения:
1cv8.exe (обычно находится в C:\Program Files (x86)\1cv8\номер_версии\bin\).Если «вылет» происходит из-за конкретного объекта (как в примере автора темы — из-за нового регистра сведений), самым быстрым способом решения будет пересоздание объекта. Посмотрим на алгоритм действий:
Такой подход помогает устранить ситуацию, когда в системных таблицах 1С возникают «фантомные» связи или дублирующиеся идентификаторы (UUID), которые блокируют стандартную процедуру переименования полей в SQL.
Если простые методы не помогают, проанализируем ситуацию с помощью Технологического журнала. Это позволит увидеть конкретное исключение (Exception), на котором спотыкается процесс 1cv8.exe. Создадим файл logcfg.xml в папке conf со следующим содержанием:
<config xmlns="http://v8.1c.ru/v8/config/logcfg">
<log location="C:\LOGS\1C" history="2">
<event>
<eq property="Name" value="EXCP"/>
</event>
<property name="all"/>
</log>
</config>
После этого запустим Конфигуратор и воспроизведем ошибку. В логах ищем событие EXCP. Часто там можно увидеть ошибку обращения к памяти Access Violation или указание на конкретную библиотеку (например, dbeng8.dll для файловой базы или backend.dll), что даст ключ к дальнейшему поиску решения.
Поскольку в вопросе фигурирует версия с индексом (z), стоит учитывать, что это сертифицированная версия платформы. Она более чувствительна к целостности окружения. Рассмотрим дополнительные факторы:
В большинстве случаев ошибка «Программа 1cv8 не работает» при реструктуризации лечится либо очисткой кэша, либо пересозданием проблемного объекта метаданных. Если же проблема носит массовый характер и проявляется на всех объектах, следует обратить внимание на настройки DEP и наличие свободного места на диске для временных файлов СУБД.