Многие пользователи и технические специалисты после обновления конфигурации 1С:Бухгалтерия предприятия 3.0 (начиная с релизов 3.0.150 и выше, включая 3.0.181) сталкиваются с досадной ошибкой: при нажатии на кнопку печати документа Акт сверки взаиморасчетов макет печатной формы открывается дважды в разных окнах. Это не только замедляет работу бухгалтера, но и свидетельствует о программном сбое в механизмах инициализации команд. Рассмотрим подробно причины этой ситуации и разберем пошаговые методы исправления.
Проанализируем ситуацию с технической точки зрения. В современных типовых конфигурациях 1С используется Библиотека стандартных подсистем (БСП). Механизм формирования меню «Печать» работает через динамическое создание команд. Проблема «двойного открытия» обычно не связана с самим макетом или принтером. Она кроется в том, что в оперативной памяти формы документа одна и та же команда печати регистрируется дважды.
Когда вы нажимаете на кнопку, система видит две идентичные команды, привязанные к одному обработчику, и выполняет их последовательно. Основными факторами здесь выступают некорректная работа расширений конфигурации, сбои в регистре сведений с настройками печати или особенности вызова серверных процедур при чтении данных формы.
Это самая частая причина проблемы. Если в вашей базе установлены расширения, которые затрагивают документ Документ.АктСверкиВзаиморасчетов или общие модули печати, они могут конфликтовать с обновленным кодом типовой конфигурации. В новых версиях БСП изменился порядок инициализации команд.
Разберем, как проверить эту гипотезу:
/SafeMode или временно отключим все расширения через меню «Администрирование» — «Печатные формы, отчеты и обработки» — «Расширения».ДобавитьКомандыПечати. Если в расширении стоит аннотация &После или &Вместо, и при этом не выполняется проверка на уже существующие команды, список КомандыПечати заполняется повторно.Пример кода, который может приводить к ошибке в расширении:
&После("ДобавитьКомандыПечати")
Процедура Расш1_ДобавитьКомандыПечати(КомандыПечати)
// Если здесь программно вызывается стандартное заполнение
// или добавляется команда с тем же идентификатором,
// она может задублироваться в интерфейсе.
КонецПроцедуры
Для исправления необходимо убедиться, что расширение не инициирует повторный вызов регистрации тех же самых команд, которые уже были добавлены в основной конфигурации.
В 1С существует специальный механизм хранения настроек видимости и расположения команд. Иногда после обновления кэш этих настроек в информационной базе «залипает». Обычная очистка кэша файлов на компьютере пользователя здесь не поможет.
Выполним следующие шаги для очистки внутренних настроек:
Акт сверки взаиморасчетов. Проанализируем записи: если вы видите две одинаковые строки для одной и той же печатной формы, одну из них необходимо удалить.Иногда к документу подключается внешняя печатная форма через справочник «Дополнительные отчеты и обработки». Если внешняя форма была создана на базе типовой и имеет тот же Идентификатор, что и встроенная, система может вызвать обе формы одновременно.
Проанализируем ситуацию:
СведенияОВнешнейОбработке().Пример корректного описания команды во внешней обработке для избежания конфликтов:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
// Используйте уникальный идентификатор, отличный от типового "АктСверки"
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = НСтр("ru = 'Акт сверки (внешний)'");
НоваяКоманда.Идентификатор = "АктСверки_Уникальный_ID";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Возврат ПараметрыРегистрации;
КонецФункции
Если вышеуказанные способы не помогли, нам придется углубиться в данные, которые хранит платформа. Проверим регистр сведений, отвечающий за команды.
Порядок команд или Состав печатных форм (названия могут варьироваться в зависимости от версии БСП).Документ.АктСверкиВзаиморасчетов.Подводя итог, можно сказать, что двойное открытие акта сверки — это не «тремор рук бухгалтера», а следствие конфликта между старыми настройками (или расширениями) и новым механизмом печати в БП 3.0. В большинстве случаев проблема решается либо отключением/корректировкой расширения, либо сбросом настроек в справочнике подключаемых команд. Рекомендуем всегда начинать диагностику с запуска в безопасном режиме, чтобы локализовать источник проблемы.