При работе в устаревших, но всё еще актуальных для многих организаций версиях программы 1С:Предприятие 7.7, пользователи часто сталкиваются с критической ошибкой при попытке напечатать или сформировать машиночитаемую форму регламентированного отчета. Программа внезапно закрывается, выдавая системное сообщение: «Инструкция по адресу ... обратилась к памяти по адресу ... Память не может быть read». Характерной особенностью этой проблемы является то, что под учетной записью администратора всё работает корректно, а под обычным пользователем происходит вылет.
В этой статье мы подробно разберем, почему возникает данная ошибка и как настроить систему, чтобы отчетность формировалась без сбоев.
Разберем ситуацию: современная отчетность требует наличия двухмерного штрих-кода (стандарт PDF417). Для его генерации 1С 7.7 использует внешнюю компоненту (ActiveX-объект), которая обычно разрабатывается ГНИВЦ ФНС. Эта компонента является отдельной библиотекой, которая должна быть зарегистрирована в системе и иметь доступ к определенным папкам и веткам реестра.
Когда пользователь без прав администратора запускает процесс формирования формы, система безопасности Windows или механизмы защиты памяти блокируют выполнение кода внешней библиотеки, что и приводит к ошибке read. Рассмотрим основные шаги по исправлению ситуации.
Одной из наиболее частых причин вылета 1С 7.7 в современных ОС (Windows 7, 10, 11) является технология DEP (Data Execution Prevention). Она блокирует запуск кода из областей памяти, помеченных как «только для данных», что часто случается при работе старых ActiveX-компонент.
Проанализируем шаги для добавления 1С в исключения:
1cv7.exe или 1cv7s.exe в папке C:\Program Files (x86)\1Cv77\bin\).Внешний модуль печати часто устанавливается в системные директории. Если у пользователя нет прав на чтение и выполнение файлов в этих папках, 1С аварийно завершается. Проанализируем, какие права необходимо предоставить:
C:\Program Files (x86)\Common Files\1C или папка, указанная в настройках регламентированной отчетности.TEMP и TMP указывают на пути, к которым у пользователя есть полный доступ (например, C:\TEMP), и эти пути не слишком длинные.Иногда проблема решается разовым повышением прав, как было предложено в одном из сообщений форума. Если дать пользователю права администратора, сформировать отчет один раз и забрать права, система успевает зарегистрировать необходимые OLE-объекты в контексте этого пользователя.
Однако более правильным подходом будет ручная проверка прав в реестре Windows. Пользователю требуются права на чтение веток в разделе HKEY_CLASSES_ROOT, которые относятся к программному идентификатору (ProgID) печатного модуля (например, классы, связанные с PDF417 или TaxReport). Если регистрация библиотеки была произведена некорректно, можно попробовать перерегистрировать её вручную под администратором командой:
regsvr32 "путь_к_библиотеке\имя_файла.dll"
Посмотрим на версию установленного модуля печати. Ошибка «Память не может быть read» может быть следствием багов в старых версиях самого модуля ГНИВЦ. Рекомендуется скачать актуальную версию «Единого модуля печати налоговых деклараций» с официального сайта ФНС или специализированных ресурсов поддержки 1С и установить её под учетной записью администратора системы.
Если вышеперечисленные действия не помогают, проанализируем настройки антивирусного ПО. Некоторые антивирусы блокируют создание OLE-объектов неизвестными или старыми библиотеками. Попробуйте временно отключить мониторинг или добавить папку с 1С и папку с компонентой печати в исключения антивируса.
Также стоит рассмотреть вариант переключения вида печатной формы. В некоторых отчетах предусмотрена возможность печати без двухмерного штрих-кода (если это разрешено вашей налоговой инспекцией). Это позволит избежать вызова проблемной компоненты и успешно распечатать документ.