При администрировании и сопровождении устаревших систем на платформе 1С:Предприятие 7.7 в связке с MS SQL Server технические специалисты регулярно сталкиваются со специфическими сбоями совместимости. Один из самых распространенных и критических сбоев — внезапное закрытие (вылет) Конфигуратора при попытке добавить новый реквизит в справочник или документ и сохранить изменения. Процесс реструктуризации обрывается без вывода предупреждений или ошибок, оставляя в журнале регистрации лишь запись «Статус реструктуризации».
Дополнительно к этому администраторы часто фиксируют сопутствующую проблему — моментальный вылет программы в режиме «1С:Предприятие» при попытке вызвать диалоговое окно открытия или сохранения файла через меню «Файл — Открыть» или по горячим клавишам Ctrl+O.
В рамках этой статьи мы подробно разберем природу обеих этих проблем, выясним истинные причины их возникновения на современных операционных системах (таких как Windows 7, Windows 10, Windows Server 2008/2012/2016) и рассмотрим проверенные практические методы борьбы с ними.
Давайте проанализируем ситуацию. Платформа 1С 7.7 разрабатывалась во времена Windows XP и Windows Server 2003. Процесс реструктуризации таблиц базы данных при изменении метаданных (например, при добавлении реквизита в шапку документа) опирается на утилиту массового копирования данных BCP (Bulk Copy Program), которая тесно взаимодействует с системными драйверами ODBC. В современных операционных системах библиотеки ODBC были существенно обновлены разработчиками Microsoft ради безопасности и производительности.
Когда 1С 7.7 пытается выполнить реструктуризацию через обновленный драйвер sqlsrv32.dll, возникает критическая ошибка памяти (Access Violation) внутри исполняемого файла платформы, что и приводит к моментальному закрытию процесса 1cv7s.exe без каких-либо предупреждающих сообщений.
Рассмотрим подробнее три основных способа обхода и устранения этой несовместимости.
Этот способ является классическим и наиболее надежным, если у вас есть права администратора на сервере или рабочей станции, где выполняются работы в Конфигураторе. Суть метода заключается в подмене современных библиотек ODBC на их проверенные временем версии из Windows XP или Windows Server 2003.
Разберем по шагам алгоритм действий для 64-разрядных систем (Windows 10 x64, Windows Server 2012/2016/2019):
sqlsrv32.dll, sqlsrv32.rll и odbcbcp.dll.C:\Windows\SysWOW64, а не в System32.sqlsrv32.dll в папке SysWOW64, перейдем на вкладку «Безопасность», нажмем кнопку «Дополнительно» и сменим владельца с «TrustedInstaller» на группу «Администраторы».sqlsrv32.rll и odbcbcp.dll.sqlsrv32.dll.bak.C:\Windows\SysWOW64.Что делать, если у нас нет прав на замену системных библиотек в Windows, или база данных настолько велика, что стандартный механизм реструктуризации 1С (который полностью пересоздает таблицы и построчно копирует данные) работает слишком медленно? Мы можем выполнить изменение структуры таблиц напрямую в СУБД, минуя штатный механизм копирования 1С.
Посмотрим на пример решения этой задачи:
1cv7.md.1cv7.md.1cv7.md и файл словаря базы данных 1cv7.dds.1cv7.dds с помощью любого текстового редактора. Выясним имя SQL-таблицы и физическое имя нового поля. Например, если мы добавляли реквизит в шапку документа «Реализация», мы найдем в файле описание таблицы шапки (допустим, DH1234) и описание нового поля (допустим, SP12355).
-- Пример добавления строкового реквизита длиной 10 символов в таблицу шапки документа
ALTER TABLE [dbo].[DH1234] ADD [SP12355] CHAR(10) NOT NULL DEFAULT '';
Если реквизит должен быть числовым, запрос примет следующий вид:
-- Пример добавления числового реквизита
ALTER TABLE [dbo].[DH1234] ADD [SP12355] NUMERIC(10, 2) NOT NULL DEFAULT 0;
1cv7.md и 1cv7.dds в каталоге рабочей базы SQL-версии на новые файлы, которые мы получили в файловой базе на шаге 3.1cv7.md и словаре 1cv7.dds, при запуске Конфигуратор не инициирует процесс реструктуризации таблиц через ODBC, и запуск пройдет штатно.Иногда сбой реструктуризации может быть вызван логическими несоответствиями или повреждениями индексов, связанных с отборами и сортировками по реквизитам. Чтобы исключить эту причину, проанализируем следующую последовательность действий:
1cv7.dd или 1cv7.dds) из каталога базы данных. Перед этим обязательно убедимся в наличии актуальной резервной копии!Теперь выясним причину второй частой проблемы, упомянутой в обсуждении: мгновенного закрытия программы в режиме Предприятия при попытке открыть файл. Это поведение также связано с особенностями работы 1С 7.7 на новых операционных системах.
Для вывода диалогового окна выбора файлов 1С использует стандартный системный интерфейс Windows. В момент инициализации этого окна операционная система производит опрос дисковых накопителей и считывает историю ранее открывавшихся путей из реестра пользователя.
Если в системе присутствуют сетевые диски, которые в данный момент отключены или недоступны (например, ноутбук отключен от офисной сети), либо в истории путей осталась ссылка на флеш-накопитель, который уже извлечен, процесс проводника Windows зависает в ожидании ответа (таймаута). Для устаревшего однопоточного приложения 1С 7.7 это зависание становится критическим, и операционная система принудительно закрывает зависший процесс без вывода ошибок.
Рассмотрим подробнее три простых шага для устранения этой неполадки:
Шаг 1. Очистка истории путей в системном реестре
1С сохраняет индивидуальные настройки и пути диалогов для каждого пользователя операционной системы. Чтобы очистить «залипшие» некорректные пути, выполним следующие действия:
Win+R, введем команду regedit и нажмем Enter для запуска редактора реестра.HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\<Имя_Вашей_Базы>\V7\<Имя_Пользователя>\
History и полностью удалим его. Также рекомендуется удалить ветку настроек положения окон Profile.Шаг 2. Отключение неактивных сетевых ресурсов
Проверим состояние сетевых подключений на компьютере:
net use * /delete /y
Шаг 3. Проверка перенаправленных папок пользователя
В доменных корпоративных сетях часто применяется политика перенаправления папок «Мои документы» и «Рабочий стол» на выделенный файловый сервер. Если этот сервер работает с перебоями, то при открытии диалогового окна 1С, пытающегося обратиться к папке «Мои документы», произойдет сбой. В таком случае системному администратору необходимо скорректировать групповые политики или восстановить стабильный доступ к сетевому хранилищу профилей пользователей.
Совместное применение предложенных методов администрирования позволяет полностью нейтрализовать нестабильность работы платформы 1С 7.7 в среде современных операционных систем, обеспечивая надежную работу как разработчикам в Конфигураторе, так и конечным пользователям в режиме Предприятия.