При настройке подключения терминалов Сбербанка к 1С технические специалисты часто сталкиваются со странным поведением системы: на одних компьютерах интеграция из «родного» каталога sc552 работает отлично, а на других — тест связи проходит успешно, но сама 1С наотрез отказывается видеть библиотеки. Единственным спасением в таком случае кажется копирование всего содержимого папки sc552 в каталог bin установленной платформы 1С. Однако это крайне неудобный подход, ведь при первом же обновлении платформы процедуру «шаманства» придется повторять.
В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем внутренние механизмы операционной системы Windows и научимся настраивать работу оборудования правильно — без захламления системных каталогов 1С.
Давайте разберем, как операционная система Windows загружает динамические библиотеки. Компонент интеграции Сбербанка — это не один изолированный файл. Основная библиотека, которую мы регистрируем в системе через утилиту regsvr32 (например, SBRFCOM.dll), является лишь COM-оберткой. Для выполнения реальных банковских транзакций она вызывает другие зависимые низкоуровневые библиотеки, такие как gate.dll, sb_kernel.dll или pilot_nt.dll.
Когда платформа 1С (процесс 1cv8.exe) обращается к зарегистрированному COM-объекту, Windows пытается загрузить все связанные с ним DLL. Поиск зависимостей выполняется в строго определенном порядке:
bin конкретной версии платформы).System32 и SysWOW64).PATH.Поскольку папки C:\sc552 по умолчанию нет в путях системного поиска, Windows просто «не видит» лежащие рядом файлы зависимостей при вызове COM-объекта из 1С. Помещение файлов в каталог bin решает проблему искусственно, так как все зависимости оказываются в папке запуска процесса.
Драйверу Сбербанка для корректной работы жизненно необходим файл настроек pinpad.ini, а также папка для создания временных файлов ответов (файлы типа e и p). В коде библиотек Сбербанка прописано обращение к конфигурационному файлу в так называемом «текущем рабочем каталоге» запустившего их процесса.
Для запущенной программы 1С рабочим каталогом по умолчанию выступает именно папка bin. Если pinpad.ini остается в папке C:\sc552, библиотека не может прочитать параметры COM-порта или IP-адрес пин-пада, из-за чего терминал не реагирует на команды из 1С. Копирование конфигурационных файлов в bin устраняет эту ошибку, но засоряет рабочую директорию платформы.
Рассмотрим еще один важный аспект, о котором часто забывают. Начиная с Windows 7, в операционной системе работает контроль учетных записей (UAC). Если папка sc552 расположена в корне диска C:\, а 1С запущена без прав администратора, Windows защищает системный диск от изменений.
Когда библиотека Сбербанка пытается записать логи или файлы авторизации в защищенный каталог C:\sc552, операционная система незаметно перенаправляет эти запросы на запись в виртуальное хранилище пользователя — каталог VirtualStore, расположенный по пути %LocalAppData%\VirtualStore\sc552. В итоге возникает конфликт: драйвер ищет файлы в одном месте, 1С — в другом, а реальные файлы настроек модифицируются в третьем. Это приводит к полной неработоспособности оборудования.
Для того чтобы раз и навсегда решить проблему корректного подключения терминала и не зависеть от обновлений платформы 1С, выполним последовательную настройку системы по шагам.
Шаг 1. Настройка прав доступа к каталогу
Прежде всего, нам необходимо предоставить полные права на папку с драйвером эквайринга. Нажмите правой кнопкой мыши по папке C:\sc552, перейдите в «Свойства» -> вкладка «Безопасность». Нажмите «Изменить» и добавьте пользователя (или группу «Все»), предоставив ему права «Полный доступ» и «Изменение». Это исключит влияние механизмов UAC Virtualization.
Шаг 2. Явное указание путей в pinpad.ini
Откроем файл pinpad.ini в папке C:\sc552 с помощью любого текстового редактора (например, Блокнота) и явно укажем рабочие пути. Это заставит драйвер Сбербанка обращаться к своей родной папке, игнорируя рабочий каталог 1С. Приведем секцию параметров к следующему виду:
[SBRF]
WorkingDir=C:\sc552
TlvDir=C:\sc552
Шаг 3. Добавление пути в переменную окружения PATH
Чтобы операционная система Windows могла находить зависимые библиотеки (gate.dll и др.) при вызове COM-объекта, добавим папку с драйвером в системный поиск:
Path (или PATH) и нажмите «Изменить».C:\sc552 (в старых версиях Windows пути разделяются точкой с запятой ;).Шаг 4. Регистрация библиотеки от имени Администратора
Теперь выполним корректную регистрацию библиотеки в реестре Windows. Откройте командную строку строго от имени Администратора и выполните регистрацию COM-сервера с указанием полного пути к файлу:
regsvr32.exe C:\sc552\sbrfcom.dll
После успешной регистрации вы увидите сообщение системы об успешном выполнении операции.
Проанализировав эти несложные шаги, мы видим, что правильная настройка окружения ОС Windows позволяет полностью отказаться от хаотичного копирования файлов в каталог bin платформы 1С. Терминал Сбербанка будет стабильно работать непосредственно из своего выделенного каталога при любых обновлениях программных продуктов.