Почему не отображаются изменения отчета, внесенные в Конфигураторе 1С 7.7?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

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

Причина 1: Несоответствие редактируемого и вызываемого отчета

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

Выясним причину и проверим, какой именно объект вызывается из пользовательского меню. Для этого выполним следующие действия:

  1. Откроем в Конфигураторе редактор интерфейсов через меню «Конфигурация — Пользовательский интерфейс».
  2. Найдем интерфейс, назначенный текущему пользователю, и раскроем дерево меню до нужного пункта.
  3. Откроем свойства пункта меню и проанализируем строку «Команда» или «Формула».
  4. Если в команде указано прямое открытие встроенного отчета, проверяем его точный идентификатор в дереве метаданных. Если же там прописан вызов внешней обработки через функцию ОткрытьФорму, например ОткрытьФорму("Отчет", , КаталогИБ() + "ExtForms\ИмяФайла.ert"), то редактировать требуется именно файл на диске через пункт «Файл — Открыть».

Причина 2: Изменения сохранены только в буфере окна, а не в метаданных

В отличие от более поздних версий платформы, архитектура 1С 7.7 разделяет сохранение открытого окна и сохранение файла структуры метаданных конфигурации (1Cv7.MD). Если нажать комбинацию клавиш Ctrl+S при активном окне модуля отчета или просто закрыть окно с подтверждением сохранения, изменения останутся во временном буфере Конфигуратора, но в файл базы данных записаны не будут.

Рассмотрим правильный порядок фиксации изменений:

  1. После завершения редактирования формы, макета или модуля перейдем в окно структуры метаданных (меню «Конфигурация — Открыть конфигурацию»).
  2. Нажмем кнопку «Сохранить» на панели инструментов или выберем пункт меню «Файл — Сохранить».
  3. Дождемся появления системного диалогового окна с вопросом: «Сохранить метаданные конфигурации?» и подтвердим действие. Если база открыта другими пользователями в монопольном режиме или файл 1Cv7.MD заблокирован, конфигуратор выдаст предупреждение о невозможности сохранения.
  4. Перезапустим сеанс «1С:Предприятие», чтобы обновленные метаданные перечитались программой.

Причина 3: Экспресс-диагностика фактического выполнения кода

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

Посмотрим на пример размещения контрольной точки в коде процедуры:


Процедура Сформировать()
    Предупреждение("Выполняется процедура Сформировать из текущего отчета!");
    
    СоздатьОбъект("Регистр.ДоговорПроект");
    СоздатьОбъект("Регистр.АктОбъемРабот");
    Таб = СоздатьОбъект("Таблица");           
    спрОбласть = СоздатьОбъект("Справочник.Области");
    ТабЗнач = СоздатьОбъект("ТаблицаЗначений");
    
    // Основной алгоритм отчета
    Запрос = СоздатьОбъект("Запрос");
    // ...
КонецПроцедуры

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

Причина 4: Ошибки при выводе секций печатной формы

Проанализируем программный код вывода печатной формы. Зачастую правки вносятся в макет таблицы (добавляются новые колонки или переименовываются строки), однако в модуле формирование таблицы жестко привязано к исходным именам секций.

Посмотрим на фрагмент кода, отвечающий за вывод данных в результирующую таблицу:


Таб.ВывестиСекцию("Заголовок"); 

ТабЗнач.ВыбратьСтроки();
Пока ТабЗнач.ПолучитьСтроку() = 1 Цикл
    Таб.ВывестиСекцию("Банк");
КонецЦикла; 

Запрос.Выполнить(ТекстЗапроса);
Пока Запрос.Группировка(1) = 1 Цикл
    Таб.ВывестиСекцию("Область");
    Пока Запрос.Группировка(2) = 1 Цикл 
        Таб.ВывестиСекцию("Заказчик");
        Таб.ВывестиСекцию("Шапка"); 
        Пока Запрос.Группировка(3) = 1 Цикл
            // Обработка данных и заполнение переменных секции
            Таб.ВывестиСекцию("Объект");
        КонецЦикла;
    КонецЦикла; 
    Таб.ВывестиСекцию("Итог");
КонецЦикла;

Таб.Опции(0);                                     
Таб.Показать();

Обратим внимание на следующие критические моменты:

  1. Метод Таб.ВывестиСекцию("ИмяСекции") обращается строго к именованным областям таблицы. Если в визуальном редакторе была создана новая область, но строка с ее выводом не добавлена в программный код, изменения на печать не попадут.
  2. Если в коде перед выводом присутствует метод Таб.ИсходнаяТаблица("ИмяФайла"), платформа 1С 7.7 полностью игнорирует встроенный макет отчета и загружает шаблон из внешнего файла формата .mxl. В таком случае визуальные правки необходимо вносить именно в указанный файл таблицы.

Рекомендация по безопасной отладке: использование внешнего отчета

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

  1. В окне свойств отчета в Конфигураторе нажмем кнопку «Сохранить как внешний...» и сохраним файл с расширением .ert в отдельную рабочую папку.
  2. Откроем этот внешний файл через меню «Файл — Открыть» в режиме «1С:Предприятие».
  3. Внесем необходимые правки в код или печатную форму в Конфигураторе, сохраним файл комбинацией Ctrl+S (сохранение всей конфигурации при этом не требуется) и сразу же проверим результат в Предприятии, просто повторно открыв или переформировав отчет.
  4. После того как отчет полностью отлажен, вернемся в дерево метаданных конфигурации, откроем нужный встроенный отчет и выполним действие «Заменить на внешний...», указав готовый файл. После этого сохраним метаданные конфигурации штатным образом.
← На главную