Почему дописанный функционал в 1С:БИТ.Красота зависает или перестает работать после переноса на другой компьютер?

Программист 1С v8.3 (Управляемые формы) Управленческий учет Сфера услуг, туризм и социальный сектор
← На главную

Перенос информационной базы 1С с одного рабочего места на другое — стандартная процедура, которая, однако, может преподнести неприятные сюрпризы при использовании отраслевых решений от сторонних разработчиков (например, компании «Первый БИТ»). Часто возникают ситуации, когда типовой функционал программы работает корректно, а дописанные модули или отчеты приводят к зависанию системы или просто не выполняют свою задачу. Разберем детально, почему это происходит и как исправить ситуацию.

Анализ влияния версии платформы и битности системы

Первое, на что мы должны обратить внимание при возникновении проблем после переноса — это соответствие окружения. В нашем случае мы видим разницу в версиях платформы (8.3.15 и 8.3.16) и, что более критично, разницу в битности (32-битная и 64-битная системы). Проанализируем, как это влияет на работу кода.

Отраслевые решения часто используют внешние компоненты (библиотеки .dll) для реализации специфических функций: интеграции с торговым оборудованием, работы с защитой или сторонними сервисами. Большинство таких компонент, особенно в старых релизах, разработаны строго под 32-битную архитектуру. Если вы запускаете 64-битную платформу 1С, она не сможет инициализировать 32-битный COM-объект, что часто приводит к «тихому» зависанию интерфейса, пока система ожидает ответа от несуществующего или недоступного процесса.

Что нужно сделать:

  1. Установим на новый компьютер точно такую же версию платформы, которая использовалась на исходном сервере (в данном примере — 8.3.15).
  2. Обязательно установим 32-битный клиент 1С (x86), даже если операционная система 64-битная. Это обеспечит совместимость со всеми внешними компонентами защиты и интеграции.

Проверка системы лицензирования «БИТ» и защищенных модулей

Решения линейки «БИТ» используют собственную систему защиты, которая работает независимо от ключей защиты 1С (HASP). Особенность этой защиты в том, что часть программного кода выносится в так называемые «защищенные модули». Этот код зашифрован и дешифруется «на лету» только при наличии валидной лицензии от разработчика.

Выясним причину, по которой типовой функционал работает, а дописанный — нет. Дописанный код часто обращается к экспортным переменным, функциям или процедурам, расположенным внутри защищенных модулей. Если на новом компьютере используется «тестовая лицензия» или лицензия не была активирована должным образом, обращение к такому модулю может вызвать бесконечный цикл ожидания или ошибку доступа, которую платформа не всегда может корректно отобразить пользователю. В результате мы видим «зависание» при нажатии на кнопку.

Рассмотрим порядок действий для проверки лицензии:

  1. Проверим наличие и активность ключа в консоли «БИТ.Лицензирование».
  2. Убедимся, что служба лицензирования запущена и доступна по локальной сети, если ключ сетевой.
  3. Проанализируем, не истек ли срок действия тестовой лицензии. Часто демо-лицензии имеют ограничения на количество вызовов определенных функций в защищенных модулях.

Регистрация внешних компонент и зависимостей

Если дописанный функционал включает в себя работу с внешними файлами, отчеты на базе Excel или специфические драйверы, простого копирования базы или выгрузки .dt недостаточно. Внешние компоненты должны быть зарегистрированы в реестре операционной системы.

Посмотрим на пример ситуации: дописанная кнопка формирует отчет, используя COM-соединение с Excel. Если на новом ПК Excel не установлен или установлена версия другой разрядности, вызов Новый COMОбъект("Excel.Application") может вызвать длительное подвисание системы.

Для регистрации библиотек вручную используем командную строку от имени администратора:

regsvr32 "C:\PathToComponent\BitComponent.dll"

Также важно проверить пути к внешним обработкам. Если доработки были реализованы не через расширения, а как дополнительные обработки (БСП), убедимся, что файлы .epf или .erf перенесены по тем же путям, которые прописаны в базе, либо заново загружены в справочник «Дополнительные отчеты и обработки».

Очистка кэша и проверка прав доступа

Не стоит забывать и про стандартные процедуры обслуживания 1С. Кэш конфигурации на новом месте может содержать некорректные ссылки на метаданные, особенно если версии платформы менялись «в процессе». Очистка кэша помогает исключить ошибки динамического обновления, которые часто имитируют поломку программного кода.

Проанализируем также права доступа. Дописанный функционал может пытаться записать временный файл в папку, к которой у текущего пользователя Windows на новом компьютере нет прав (например, корень диска C:\ или папка Program Files). В этом случае программа может «задуматься», пытаясь получить доступ к ресурсу.

Использование отладчика для поиска проблемного участка

Если вышеуказанные шаги не помогли, перейдем к самому надежному методу — отладке. Запустим конфигуратор под той же учетной записью, под которой возникает проблема, и установим точку останова в процедуре нажатия кнопки, которая вызывает зависание.

Шагая по коду (клавиша F10), мы сможем точно определить строку, на которой выполнение прерывается или уходит в ожидание. Рассмотрим пример типичного кода, который может вызывать проблемы:


// В модуле формы при нажатии на кнопку
&НаКлиенте
Процедура ВыполнитьДописанныйФункционал(Команда)
    
    // Если здесь происходит обращение к защищенному модулю БИТ:
    Результат = МодульБИТ_Защищенный.ПолучитьДанные(); 
    
    // Если лицензия не подхвачена, выполнение может зависнуть на этой строке
    ОтработатьРезультат(Результат);
    
КонецПроцедуры

Если отладчик «замирает» на вызове функции из отраслевого модуля, значит, проблема однозначно в системе защиты или разрядности платформы, не позволяющей инициализировать защищенный компонент.

Итоговые рекомендации

Для успешного запуска базы «БИТ.Красота» с доработками на новом месте, мы рекомендуем придерживаться следующего алгоритма:

Следуя этим шагам, мы сможем восстановить работоспособность всех доработок и обеспечить стабильную работу системы на новом оборудовании.

← На главную