Почему закрывается Конфигуратор 1С 7.7 SQL при добавлении реквизита и как решить эту проблему?

Системный администратор 1С v7.7 IT и автоматизация бизнеса
← На главную

При администрировании и сопровождении устаревших систем на платформе 1С:Предприятие 7.7 в связке с MS SQL Server технические специалисты регулярно сталкиваются со специфическими сбоями совместимости. Один из самых распространенных и критических сбоев — внезапное закрытие (вылет) Конфигуратора при попытке добавить новый реквизит в справочник или документ и сохранить изменения. Процесс реструктуризации обрывается без вывода предупреждений или ошибок, оставляя в журнале регистрации лишь запись «Статус реструктуризации».

Дополнительно к этому администраторы часто фиксируют сопутствующую проблему — моментальный вылет программы в режиме «1С:Предприятие» при попытке вызвать диалоговое окно открытия или сохранения файла через меню «Файл — Открыть» или по горячим клавишам Ctrl+O.

В рамках этой статьи мы подробно разберем природу обеих этих проблем, выясним истинные причины их возникновения на современных операционных системах (таких как Windows 7, Windows 10, Windows Server 2008/2012/2016) и рассмотрим проверенные практические методы борьбы с ними.

Часть 1. Почему Конфигуратор вылетает при реструктуризации SQL-базы?

Давайте проанализируем ситуацию. Платформа 1С 7.7 разрабатывалась во времена Windows XP и Windows Server 2003. Процесс реструктуризации таблиц базы данных при изменении метаданных (например, при добавлении реквизита в шапку документа) опирается на утилиту массового копирования данных BCP (Bulk Copy Program), которая тесно взаимодействует с системными драйверами ODBC. В современных операционных системах библиотеки ODBC были существенно обновлены разработчиками Microsoft ради безопасности и производительности.

Когда 1С 7.7 пытается выполнить реструктуризацию через обновленный драйвер sqlsrv32.dll, возникает критическая ошибка памяти (Access Violation) внутри исполняемого файла платформы, что и приводит к моментальному закрытию процесса 1cv7s.exe без каких-либо предупреждающих сообщений.

Рассмотрим подробнее три основных способа обхода и устранения этой несовместимости.

Метод №1. Замена системных библиотек ODBC на старые версии

Этот способ является классическим и наиболее надежным, если у вас есть права администратора на сервере или рабочей станции, где выполняются работы в Конфигураторе. Суть метода заключается в подмене современных библиотек ODBC на их проверенные временем версии из Windows XP или Windows Server 2003.

Разберем по шагам алгоритм действий для 64-разрядных систем (Windows 10 x64, Windows Server 2012/2016/2019):

  1. Подготовим рабочие файлы библиотек из дистрибутива Windows XP (или Windows Server 2003). Нам понадобятся три файла: sqlsrv32.dll, sqlsrv32.rll и odbcbcp.dll.
  2. Поскольку 1С 7.7 является 32-разрядным приложением, в 64-битных ОС замена должна производиться в системной папке C:\Windows\SysWOW64, а не в System32.
  3. Операционная система по умолчанию блокирует изменение файлов в этой директории, защищая их службой TrustedInstaller. Чтобы получить возможность перезаписи, откроем свойства файла sqlsrv32.dll в папке SysWOW64, перейдем на вкладку «Безопасность», нажмем кнопку «Дополнительно» и сменим владельца с «TrustedInstaller» на группу «Администраторы».
  4. После смены владельца предоставим группе «Администраторы» полные права на чтение, запись и изменение этого файла. Повторим данную процедуру для файлов sqlsrv32.rll и odbcbcp.dll.
  5. Сделаем резервные копии оригинальных (новых) системных файлов, переименовав их, например, в sqlsrv32.dll.bak.
  6. Скопируем ранее подготовленные старые версии файлов из Windows XP в каталог C:\Windows\SysWOW64.
  7. Перезапустим Конфигуратор 1С 7.7 и попробуем добавить реквизит. Теперь реструктуризация пройдет успешно и без вылетов.

Метод №2. Ручное изменение структуры таблиц на MS SQL Server

Что делать, если у нас нет прав на замену системных библиотек в Windows, или база данных настолько велика, что стандартный механизм реструктуризации 1С (который полностью пересоздает таблицы и построчно копирует данные) работает слишком медленно? Мы можем выполнить изменение структуры таблиц напрямую в СУБД, минуя штатный механизм копирования 1С.

Посмотрим на пример решения этой задачи:

  1. Создадим резервную копию конфигурации базы данных — файл 1cv7.md.
  2. Создадим на локальном компьютере пустую файловую (DBF) базу данных и скопируем в её каталог наш рабочий файл 1cv7.md.
  3. Откроем эту пустую базу в Конфигураторе, добавим необходимый реквизит в нужный справочник или документ, сохраним изменения. При сохранении Конфигуратор сформирует обновленный файл метаданных 1cv7.md и файл словаря базы данных 1cv7.dds.
  4. Откроем полученный файл 1cv7.dds с помощью любого текстового редактора. Выясним имя SQL-таблицы и физическое имя нового поля. Например, если мы добавляли реквизит в шапку документа «Реализация», мы найдем в файле описание таблицы шапки (допустим, DH1234) и описание нового поля (допустим, SP12355).
  5. Запустим утилиту MS SQL Server Management Studio (SSMS) и подключимся к нашей рабочей базе данных SQL.
  6. Откроем редактор SQL-запросов и выполним ALTER-запрос к нужной таблице для добавления новой колонки. Проанализируем пример такого запроса:

-- Пример добавления строкового реквизита длиной 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;
  1. После успешного выполнения SQL-запроса заменим старые файлы 1cv7.md и 1cv7.dds в каталоге рабочей базы SQL-версии на новые файлы, которые мы получили в файловой базе на шаге 3.
  2. Поскольку физическая структура таблиц в SQL теперь полностью совпадает с описанием в метаданных 1cv7.md и словаре 1cv7.dds, при запуске Конфигуратор не инициирует процесс реструктуризации таблиц через ODBC, и запуск пройдет штатно.

Метод №3. Сброс отборов, сортировок и пересоздание файла DDS

Иногда сбой реструктуризации может быть вызван логическими несоответствиями или повреждениями индексов, связанных с отборами и сортировками по реквизитам. Чтобы исключить эту причину, проанализируем следующую последовательность действий:

  1. Снимем со всех реквизитов изменяемого справочника или документа признаки «Сортировка» и «Отбор по реквизиту» в свойствах метаданных.
  2. Удалим файл словаря базы данных (1cv7.dd или 1cv7.dds) из каталога базы данных. Перед этим обязательно убедимся в наличии актуальной резервной копии!
  3. Откроем базу в Конфигураторе, добавим наш новый реквизит и сохраним изменения. Файл словаря пересоздастся заново, очищенный от возможных ошибок.
  4. Вернем обратно необходимые признаки сортировки и отборов для реквизитов и выполним повторное сохранение.

Часть 2. Почему 1С вылетает при нажатии Ctrl+O или «Файл — Открыть»?

Теперь выясним причину второй частой проблемы, упомянутой в обсуждении: мгновенного закрытия программы в режиме Предприятия при попытке открыть файл. Это поведение также связано с особенностями работы 1С 7.7 на новых операционных системах.

Для вывода диалогового окна выбора файлов 1С использует стандартный системный интерфейс Windows. В момент инициализации этого окна операционная система производит опрос дисковых накопителей и считывает историю ранее открывавшихся путей из реестра пользователя.

Если в системе присутствуют сетевые диски, которые в данный момент отключены или недоступны (например, ноутбук отключен от офисной сети), либо в истории путей осталась ссылка на флеш-накопитель, который уже извлечен, процесс проводника Windows зависает в ожидании ответа (таймаута). Для устаревшего однопоточного приложения 1С 7.7 это зависание становится критическим, и операционная система принудительно закрывает зависший процесс без вывода ошибок.

Пошаговые способы решения проблемы открытия файлов

Рассмотрим подробнее три простых шага для устранения этой неполадки:

Шаг 1. Очистка истории путей в системном реестре

1С сохраняет индивидуальные настройки и пути диалогов для каждого пользователя операционной системы. Чтобы очистить «залипшие» некорректные пути, выполним следующие действия:

  1. Закроем 1С:Предприятие.
  2. Нажмем комбинацию клавиш Win+R, введем команду regedit и нажмем Enter для запуска редактора реестра.
  3. Перейдем по следующему пути:
  4. HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\<Имя_Вашей_Базы>\V7\<Имя_Пользователя>\
  5. Найдем внутри этой ветки подраздел History и полностью удалим его. Также рекомендуется удалить ветку настроек положения окон Profile.
  6. При следующем запуске 1С сбросит пути по умолчанию в локальный каталог пользователя, и диалог открытия файлов успешно отобразится.

Шаг 2. Отключение неактивных сетевых ресурсов

Проверим состояние сетевых подключений на компьютере:

  1. Откроем «Этот компьютер» и посмотрим на список сетевых дисков. Если на каких-то из них отображается красный крестик (диск недоступен), нажмем по ним правой кнопкой мыши и выберем пункт «Отключить».
  2. Для гарантированной очистки кэша сетевых подключений можно открыть командную строку от имени администратора и выполнить команду:
  3. net use * /delete /y

Шаг 3. Проверка перенаправленных папок пользователя

В доменных корпоративных сетях часто применяется политика перенаправления папок «Мои документы» и «Рабочий стол» на выделенный файловый сервер. Если этот сервер работает с перебоями, то при открытии диалогового окна 1С, пытающегося обратиться к папке «Мои документы», произойдет сбой. В таком случае системному администратору необходимо скорректировать групповые политики или восстановить стабильный доступ к сетевому хранилищу профилей пользователей.

Совместное применение предложенных методов администрирования позволяет полностью нейтрализовать нестабильность работы платформы 1С 7.7 в среде современных операционных систем, обеспечивая надежную работу как разработчикам в Конфигураторе, так и конечным пользователям в режиме Предприятия.

← На главную