Почему в 1С:Бухгалтерия 3.0 акт сверки открывается дважды при печати и как это исправить

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

Многие пользователи и технические специалисты после обновления конфигурации 1С:Бухгалтерия предприятия 3.0 (начиная с релизов 3.0.150 и выше, включая 3.0.181) сталкиваются с досадной ошибкой: при нажатии на кнопку печати документа Акт сверки взаиморасчетов макет печатной формы открывается дважды в разных окнах. Это не только замедляет работу бухгалтера, но и свидетельствует о программном сбое в механизмах инициализации команд. Рассмотрим подробно причины этой ситуации и разберем пошаговые методы исправления.

Выясняем причину: почему происходит дублирование?

Проанализируем ситуацию с технической точки зрения. В современных типовых конфигурациях 1С используется Библиотека стандартных подсистем (БСП). Механизм формирования меню «Печать» работает через динамическое создание команд. Проблема «двойного открытия» обычно не связана с самим макетом или принтером. Она кроется в том, что в оперативной памяти формы документа одна и та же команда печати регистрируется дважды.

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

Решение 1: Анализ и корректировка расширений конфигурации

Это самая частая причина проблемы. Если в вашей базе установлены расширения, которые затрагивают документ Документ.АктСверкиВзаиморасчетов или общие модули печати, они могут конфликтовать с обновленным кодом типовой конфигурации. В новых версиях БСП изменился порядок инициализации команд.

Разберем, как проверить эту гипотезу:

  1. Запустим базу в безопасном режиме. Для этого в параметрах запуска (в списке баз) укажем параметр /SafeMode или временно отключим все расширения через меню «Администрирование» — «Печатные формы, отчеты и обработки» — «Расширения».
  2. Если в отключенном состоянии расширений проблема исчезла, значит, дело в одном из них.
  3. Проанализируем код в расширении. Скорее всего, там используется заимствованная процедура ДобавитьКомандыПечати. Если в расширении стоит аннотация &После или &Вместо, и при этом не выполняется проверка на уже существующие команды, список КомандыПечати заполняется повторно.

Пример кода, который может приводить к ошибке в расширении:


&После("ДобавитьКомандыПечати")
Процедура Расш1_ДобавитьКомандыПечати(КомандыПечати)
    // Если здесь программно вызывается стандартное заполнение 
    // или добавляется команда с тем же идентификатором,
    // она может задублироваться в интерфейсе.
КонецПроцедуры

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

Решение 2: Сброс настроек подключаемых команд печати

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

Выполним следующие шаги для очистки внутренних настроек:

  1. Перейдем в раздел Администрирование.
  2. Выберем пункт Печатные формы, отчеты и обработки.
  3. Найдем гиперссылку Подключаемые команды печати.
  4. В открывшемся списке найдем документ Акт сверки взаиморасчетов. Проанализируем записи: если вы видите две одинаковые строки для одной и той же печатной формы, одну из них необходимо удалить.
  5. Также полезно нажать кнопку Использовать стандартные настройки (если она доступна в контексте формы настройки печати самого документа).

Решение 3: Проверка внешних печатных форм и обработок

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

Проанализируем ситуацию:

  1. Зайдем в «Администрирование» — «Печатные формы, отчеты и обработки» — «Дополнительные отчеты и обработки».
  2. Проверим, нет ли там активных обработок для Акта сверки. Попробуем временно отключить их (снять галочку «Публикация»).
  3. Если двойное открытие прекратилось, необходимо изменить идентификатор во внешней обработке в функции СведенияОВнешнейОбработке().

Пример корректного описания команды во внешней обработке для избежания конфликтов:


Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
    // Используйте уникальный идентификатор, отличный от типового "АктСверки"
    НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    НоваяКоманда.Представление = НСтр("ru = 'Акт сверки (внешний)'");
    НоваяКоманда.Идентификатор = "АктСверки_Уникальный_ID"; 
    НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
    Возврат ПараметрыРегистрации;
КонецФункции

Решение 4: Диагностика через «Функции для технического специалиста»

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

  1. Откроем Функции для технического специалиста (ранее «Все функции»).
  2. Найдем регистр сведений Порядок команд или Состав печатных форм (названия могут варьироваться в зависимости от версии БСП).
  3. Выполним поиск по объекту Документ.АктСверкиВзаиморасчетов.
  4. Если обнаружены дублирующиеся записи с одинаковыми именами команд, их следует удалить. После этого при открытии формы документа система переинициализирует список команд корректно.

Резюме

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

← На главную