Каждый разработчик 1С рано или поздно сталкивается с мистической на первый взгляд ситуацией: в Конфигураторе в схему компоновки данных (СКД) добавляются новые поля, ресурсы или меняются группировки, но при запуске базы в режиме «1С:Предприятие» отчет упорно выводится в старом виде. Новых полей нет ни на форме, ни в настройках изменения варианта.
В этой статье мы подробно разберем, почему платформа «игнорирует» ваши доработки, и рассмотрим пошаговые инструкции по устранению этой проблемы.
Это самая частая причина описываемого поведения. Когда пользователь открывает отчет и изменяет его структуру или просто сохраняет настройки, платформа 1С записывает эти параметры в базу данных. При последующих запусках система берет структуру настроек из информационной базы, а не из измененного вами макета СКД в конфигурации.
Как решить эту проблему:
НастройкиВариантовОтчетов и удалите записи, связанные с вашим проблемным отчетом.ВариантыОтчетов. Найдите там ваш отчет и удалите или обновите его элемент.Если вы ведете разработку внешнего отчета через «Файл — Открыть», платформа 1С может вести себя непредсказуемо из-за кэширования файлов сеансом сервера или операционной системой.
Часто разработчики попадают в ловушку, когда старая версия отчета уже загружена в базу через справочник Дополнительные отчеты и обработки. В этом случае при открытии локального файла .erf система может неявно обращаться к зарегистрированной в справочнике копии.
Как решить эту проблему:
Очень часто визуальные изменения в Конфигураторе перекрываются программным кодом, который переопределяет СКД в момент компоновки результата. Если в модуле объекта вашего отчета прописана программная инициализация, любые ручные правки макета будут проигнорированы.
Проанализируем классический пример кода в модуле объекта:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
// Если разработчик явно отключает стандартную обработку
СтандартнаяОбработка = Ложь;
// И загружает схему программно из определенного макета
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
// Или инициализирует настройки вручную
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
КонецПроцедуры
Если в коде присутствует подобная логика, убедитесь, что вы правите именно тот макет, который загружается программно. Также обратите внимание на то, не перестраивается ли коллекция полей КомпоновщикНастроек.Настройки.Выбор динамически в коде общего модуля.
В конфигурациях, использующих БСП (например, УТ, ERP, КА, ЗУП), метаданные отчетов кэшируются в специальных служебных таблицах для оптимизации быстродействия. При обновлении отчета в Конфигураторе эти таблицы не всегда обновляются автоматически.
Для принудительного обновления кэша БСП выполните следующие действия:
/C ЗапуститьОбновлениеИнформационнойБазы.Платформа 1С осуществляет жесткий контроль прав и бизнес-логики на уровне СКД. Если вы добавили поле в схему, но оно не отображается в режиме предприятия, причина может крыться в правах или настройках системы:
Если для отчета ранее был создан и сохранен индивидуальный макет оформления непосредственно в режиме «1С:Предприятие», то система будет ориентироваться на сохраненную визуальную структуру макета. В этом случае изменения метаданных в конфигураторе могут не пробиться сквозь «пользовательский слой» оформления. Проверьте настройки отчета и отключите использование измененных макетов оформления.