Как отличить сервер 1С:Предприятия от технологической платформы при удалении программ и решить проблему с печатью PDF417

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

При администрировании систем на базе 1С:Предприятие специалисты часто сталкиваются с ситуацией, когда в панели управления Windows в списке установленных программ отображается множество записей с абсолютно одинаковыми названиями вида «1С:Предприятие 8...». При этом они могут относиться к одной и той же версии (например, 8.3.12.1469), но иметь разное назначение: одна запись отвечает за 64-битный сервер, другая — за 32-битную технологическую платформу (клиентскую часть). Такая путаница усложняет обслуживание системы, особенно когда требуется точечно настроить окружение для работы конкретной конфигурации — например, 1С:Зарплата и Управление Персоналом (ЗУП).

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

Как гарантированно отличить сервер от технологической платформы в списке программ

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

  1. Использование стандартного механизма изменения состава компонентов. Это самый надежный и простой способ. Выберем сомнительную строку в списке «Программы и компоненты» и нажмем кнопку «Изменить» (в некоторых версиях Windows потребуется нажать «Удалить/Изменить» и в стартовом окне инсталлятора выбрать пункт «Изменить»). После запуска официального установщика 1С:Предприятия перед нами откроется дерево установленных компонентов.
    • Если в дереве активен компонент «Сервер 1С:Предприятия» (а также, возможно, «Модули расширения веб-сервера» и «Администрирование сервера»), то данная запись отвечает за серверную часть.
    • Если активны компоненты «Толстый клиент» или «Тонкий клиент», перед нами клиентское приложение (технологическая платформа).
  2. Анализ путей установки и разрядности через системный реестр. Системные администраторы могут автоматизировать этот процесс или проверить данные вручную через реестр Windows. Каждая установленная программа имеет свой уникальный идентификатор GUID. Перейдем по следующему пути в редакторе реестра (regedit):
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
    Для 32-битных приложений, установленных на 64-битную операционную систему, ветка будет отличаться:
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
    Найдем в этих ветках разделы, соответствующие 1С. В параметре InstallLocation будет четко указан целевой каталог:
    • Путь C:\Program Files (x86)\1cv8\ однозначно указывает на то, что установлена 32-битная (x86) версия клиента.
    • Путь C:\Program Files\1cv8\ говорит о том, что установлена 64-битная (x64) версия платформы или сервера.
  3. Оценка размера приложения. Хотя этот способ ориентировочный, он также помогает составить первичное представление. Серверные компоненты со средствами администрирования весят значительно меньше, чем полная технологическая платформа, включающая в себя все интерфейсные библиотеки, справочные материалы и языковые пакеты локализации.

Риски и опасности при удалении старых версий 1С

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

Для минимизации этих рисков, начиная с версии платформы 8.3.24, разработчики фирмы 1С внедрили механизм автоматического фонового удаления неиспользуемых версий. Теперь система самостоятельно отслеживает версии тонких и толстых клиентов, которые не запускались долгое время, и безопасно деинсталлирует их без вмешательства пользователя и без риска повреждения серверных данных. Настроить данное поведение можно в окне запуска 1С (кнопка «Настройка» -> установить флаг «Удалять неиспользуемые версии»).

Проблема печати налоговых деклараций с PDF417 на платформе x64

Выясним причину, почему пользователям ЗУП или Бухгалтерии предприятия иногда жизненно необходимо использовать именно 32-битную платформу 1С. Основная проблема кроется в технологии формирования двухмерного штрихкода PDF417 при печати налоговых деклараций.

Исторически единый модуль печати двухмерных штрихкодов, разработанный ГНИВЦ ФНС РФ (библиотека TAXDOCPrt.dll), создавался исключительно как 32-разрядный COM-компонент. Архитектура операционных систем Windows налагает жесткое ограничение: 64-битное приложение (в нашем случае 64-битный клиент 1С:Предприятия) физически не может напрямую загрузить в свое адресное пространство 32-битную динамическую библиотеку (DLL). По этой причине при попытке напечатать декларацию на 64-битной платформе пользователи сталкивались с системной ошибкой: «Печать бланка поддерживается только в 32-разрядной версии...».

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

Вариант 1. Установка параллельного 32-битного клиента 1С (самый простой способ)

Для того чтобы обойти ограничение без сложных технических манипуляций с операционной системой, достаточно установить на рабочую станцию 32-битного клиента той же самой версии, что и основная платформа. Проанализируем алгоритм настройки:

  1. Скачиваем и устанавливаем дистрибутив «Клиент 1С:Предприятия для Windows» соответствующей разрядности (x86).
  2. Запускаем общий стартер 1cestart.exe.
  3. Выбираем нужную базу данных (например, ЗУП) и нажимаем кнопку «Изменить».
  4. Переходим на последнюю вкладку параметров («Настройка запуска»).
  5. В поле «Разрядность» принудительно устанавливаем значение «32 (x86)» вместо значения «Автоматически» или «64 (x64)».

В результате при запуске именно этой информационной базы система автоматически вызовет 32-битный исполняемый файл клиента, который успешно загрузит библиотеку TAXDOCPrt.dll и сформирует печатную форму со штрихкодом.

Вариант 2. Использование технологии DllSurrogate (COM+) для работы x86-компонента в x64-процессе

Если мы хотим принципиально использовать только 64-битную платформу 1С и не желаем захламлять систему разными версиями клиентов, можно настроить запуск 32-битной библиотеки печати в режиме Out-of-Process с помощью системного суррогата Windows dllhost.exe.

Разберем по шагам, как зарегистрировать библиотеку через DllSurrogate:

  1. Откроем редактор реестра regedit от имени администратора.
  2. Найдем ветку, соответствующую идентификатору класса (CLSID) компонента печати ГНИВЦ. Обычно это класс, связанный с TAXDOCPrt. Путь в реестре:
    HKEY_CLASSES_ROOT\CLSID\{ИДЕНТИФИКАТОР_КЛАССА_КОМПОНЕНТА}
  3. Внутри этого раздела создадим строковый параметр (REG_SZ) с именем AppID и в качестве его значения укажем тот же самый GUID (идентификатор класса) в фигурных скобках.
  4. Перейдем в раздел реестра:
    HKEY_CLASSES_ROOT\AppID
  5. Создадим там новый раздел, имя которого будет в точности совпадать с GUID нашего компонента (включая фигурные скобки).
  6. Внутри созданного раздела создадим пустой строковый параметр с именем DllSurrogate (тип REG_SZ, значение оставляем пустым). Это укажет операционной системе, что для запуска данной библиотеки необходимо использовать стандартный системный суррогат dllhost.exe.
  7. В ветке HKEY_CLASSES_ROOT\CLSID\{ИДЕНТИФИКАТОР_КЛАССА_КОМПОНЕНТА}\InprocServer32 убедимся, что пути к DLL указаны корректно.

После проведения этих манипуляций 64-битный процесс 1С при попытке инициализировать объект печати не будет пытаться загрузить его напрямую. Вместо этого Windows запустит отдельный 32-битный процесс dllhost.exe, загрузит библиотеку туда и организует межпроцессное взаимодействие (IPC) между 1С и суррогатом. Печать выполнится успешно.

Вариант 3. Современное решение от разработчиков 1С

Стоит отметить, что в современных конфигурациях (выпущенных начиная со второй половины 2020 года) разработчики фирмы 1С существенно переработали механизм формирования двухмерных штрихкодов. Они внедрили кроссплатформенную альтернативу, использующую запуск JS-скриптов во внешнем изолированном процессе. Это позволило полностью отказаться от жесткой привязки к устаревшему COM-объекту ГНИВЦ на стороне клиента. Поэтому лучшим и самым стабильным решением на сегодняшний день является своевременное обновление конфигураций (ЗУП, Бухгалтерия предприятия) и платформы до актуальных релизов.

← На главную