В этой статье мы подробно рассмотрим распространенную проблему, с которой сталкиваются разработчики и пользователи 1С при работе с внешними отчетами на системе компоновки данных (СКД). Речь идет об ошибке: "Значение не является значением объектного типа (ПолноеИмя)", которая возникает при попытке открыть настройки отчета, нажимая соответствующую кнопку — для своевременного обнаружения таких проблем поможет мониторинг и уведомление о программных ошибках 1С. Мы проанализируем причины ее появления и предложим пошаговое решение, подкрепленное практическими рекомендациями, чтобы вы могли эффективно устранить эту неполадку.
Прежде чем перейти к непосредственному решению, выясним, почему эта ошибка может возникать. Она указывает на то, что система пытается обратиться к свойству ПолноеИмя объекта, который на самом деле не является объектом или имеет неверный тип. В контексте внешних отчетов 1С, это часто связано с некорректной инициализацией или полным отсутствием объекта, описывающего настройки отчета. Рассмотрим основные факторы, приводящие к данной ситуации:
Неверное обращение к объекту или его свойству. Ошибка возникает, когда предпринимается попытка обратиться к переменной, которая либо не является объектом вообще (например, содержит значение Неопределено), либо является объектом не того типа, у которого ожидается свойство ПолноеИмя. В контексте сообщения об ошибке, это относится к объекту ОписаниеНастроекОтчета, который, по всей видимости, не был корректно инициализирован или получен — это часто связано с ограничениями прав, которые анализирует отчет по ролям и ограничениям доступа RLS.
Сохраненные пользовательские настройки. В некоторых случаях ошибка может проявиться после обновления платформы 1С или конфигурации. Старые пользовательские настройки, сохраненные для отчета, могут стать несовместимыми с новой версией системы, что приводит к некорректной загрузке объекта настроек при попытке его использования.
Ошибки в коде программы. Некорректно написанный код или неправильное использование переменных и объектов при работе с СКД в самом внешнем отчете или в общих модулях, связанных с ним, также могут стать причиной этой ошибки — для поиска причин в режиме предприятия есть инструмент для пошаговой отладки кода в 1С. Например, если программно пытаются получить доступ к настройкам, когда они еще не сформированы или не присвоены переменной.
Отсутствие передачи служебного параметра "НастройкиОтчета". При использовании типовых общих форм настроек отчета, таких как ОбщаяФорма.ФормаНастроекОтчета, критически важно убедиться, что ей передан необходимый служебный параметр НастройкиОтчета. Его отсутствие или некорректная передача может вызвать сбой, поскольку форма не сможет получить объект для своей работы.
Теперь, когда мы понимаем потенциальные причины, разберем конкретные шаги для устранения ошибки "Значение не является значением объектного типа (ПолноеИмя)". Основное решение, которое подтвердили многие пользователи, заключается в правильной настройке свойств отчета и системы компоновки данных.
Откроем конфигуратор и перейдем к свойствам вашего внешнего отчета. Для этого в дереве объектов конфигурации найдем ветку "Отчеты", затем выберем ваш внешний отчет. В окне свойств отчета найдем свойство ФормаНастроек.
Критически важно: для свойства ФормаНастроек необходимо выбрать уже существующую типовую общую форму ВспомогательнаяФормаНастроекОтчета из списка общих форм конфигурации. Не пытайтесь создавать новую форму для настроек, если у вас нет специфических требований к ее интерфейсу и логике, и не используйте другие типовые формы без глубокого понимания их работы и требований к параметрам. ВспомогательнаяФормаНастроекОтчета специально предназначена для обеспечения пользовательских настроек и корректно работает с внешними отчетами, не требуя сложной программной доработки.
Перейдем к макету системы компоновки данных (СКД) вашего отчета — для разработки и анализа компоновок удобнее консоль СКД и инструменты разработчика 1С. Откроем закладку Настройки. В этой закладке нас интересует кнопка Состав пользовательских настроек отчета. Нажмем на нее, чтобы открыть окно настройки доступности пользовательских настроек.
В открывшемся окне нам нужно активировать все необходимые пользовательские настройки, чтобы они были доступны для редактирования через форму настроек. Установим следующие галочки (V):
V Выбранные поляV ОтборV ПорядокV Условное оформлениеV ГруппировкиКроме того, для каждого выбранного элемента настроек, убедимся, что режим редактирования установлен как Обычный. Это позволит пользователям изменять эти настройки через стандартный интерфейс формы.
Для полного понимания решения и возможности адаптировать его под различные сценарии работы, рассмотрим дополнительные аспекты, касающиеся форм настроек и системы компоновки данных.
В платформе 1С существуют несколько форм, предназначенных для работы с настройками отчетов. Различия между ними определяют их область применения и требования к реализации:
<strong>ВспомогательнаяФормаНастроекОтчета</strong>: Это упрощенная форма настроек, ориентированная на конечных пользователей. Она отображает только те настройки, которые разработчик явно определил как "пользовательские" в СКД. Её интерфейс интуитивно понятен, и она идеально подходит для большинства случаев, когда требуется предоставить пользователю базовые возможности настройки (отбор, группировка, сортировка) без необходимости глубокого погружения в структуру СКД.
<strong>ФормаНастроекОтчета</strong> (общая форма): Эта форма предоставляет более широкий спектр возможностей для изменения структуры отчета, вплоть до добавления новых группировок или изменения источников данных. Её использование значительно сложнее и часто требует правильной передачи служебных параметров, таких как объект НастройкиОтчета. Внешние отчеты, не имеющие собственной формы, иногда пытаются использовать ее, что может приводить к ошибкам, если параметры переданы некорректно или вообще не переданы.
<strong>ФормаОтчета</strong> (общая форма): В типовых конфигурациях 1С, основанных на Библиотеке стандартных подсистем (БСП), часто используется эта форма как основная форма отчета. Она умеет интегрироваться с другими подсистемами, предоставлять стандартный функционал (печать, сохранение настроек, формирование) и управлять вызовом форм настроек.
Разработчик отчета играет ключевую роль в определении того, какие именно настройки будут доступны пользователям и в каком объеме. Через закладку Настройки в макете СКД мы можем тонко настроить каждый элемент структуры отчета. Для каждого элемента (например, для каждого поля, группировки или элемента отбора) мы можем указать следующие параметры:
<strong>Использование</strong>: Определяет, является ли данный элемент пользовательской настройкой. Если галочка установлена, пользователь сможет его видеть и, возможно, изменять.
<strong>Представление</strong>: Это имя, которое будет отображаться пользователю в форме настроек. Желательно использовать понятные и нетехнические названия.
<strong>Режим редактирования</strong>: Этот параметр определяет степень доступности настройки для пользователя:
Обычный: Настройка будет доступна для изменения пользователем в стандартной форме настроек.Быстрый доступ: Настройка будет доступна непосредственно на форме отчета (например, в шапке) для быстрого изменения без открытия отдельной формы настроек. Это удобно для часто изменяемых параметров, таких как период.Недоступный: Пользователь не сможет изменить эту настройку, даже если она включена в состав пользовательских. Она будет отображаться только для ознакомления.Мы рекомендуем выносить в пользовательские настройки те параметры, которые наиболее часто изменяются конечным пользователем. Это могут быть период отчета, отборы по ключевым реквизитам (организация, контрагент, склад), группировки для изменения детализации и, возможно, условное оформление для выделения важных данных.
Важно помнить, что настройки, включая пользовательские, применяются к конкретным вариантам отчета. Если ваш отчет имеет несколько предопределенных вариантов (например, "Обороты по товарам", "Остатки товаров", "Продажи по менеджерам"), каждый из них может иметь свои уникальные настройки СКД. Необходимо пройти описанные шаги по настройке свойства ФормаНастроек и состава пользовательских настроек СКД для каждого варианта отчета, чтобы обеспечить корректную работу кнопки Настройки во всех случаях.
Следует также учитывать, что пользовательские настройки, сохраненные пользователем через интерфейс 1С, имеют более высокий приоритет, чем стандартные настройки варианта, определенные в конфигураторе. Изменения, внесенные пользователем, сохраняются отдельно и применяются поверх стандартных настроек, перезаписывая их для данного пользователя.
Иногда возникает потребность предоставить пользователям более глубокие возможности по изменению структуры отчета, чем просто базовые пользовательские настройки. Если мы используем собственную форму отчета на СКД, но хотим сохранить функционал типового изменения структуры, нам необходимо предпринять определенные действия.
Доступ к редактированию структуры отчета обычно предоставляется опытным пользователям, хорошо знакомым с принципами работы СКД. Это стандартно осуществляется через команду Еще – Изменить вариант... в командной панели формы отчета. Эта команда открывает форму варианта отчета, где можно выполнять следующие действия:
При использовании собственной формы отчета, если вы хотите интегрировать типовую форму настроек (ОбщиеФормы.ФормаНастроекОтчета) или обеспечить доступ к расширенным настройкам, потребуется программная реализация. Типовая форма настроек ожидает передачи определенных служебных параметров, в частности НастройкиОтчета (объект КомпоновщикНастроек). Если эти параметры не переданы корректно, может возникнуть ошибка "Не передан служебный параметр 'НастройкиОтчета'". Вам потребуется программно вызывать эту форму и передавать ей необходимые данные.
Пример программного открытия формы настроек с передачей параметров:
&НаКлиенте
Процедура ОткрытьРасширенныеНастройки(Команда)
// Создаем структуру параметров для передачи в форму
ПараметрыФормы = Новый Структура;
// Получаем текущие настройки компоновщика (или вариант настроек, если это необходимо)
// Предполагается, что на форме есть элемент "Результат" с привязкой к "КомпоновщикНастроек"
ПараметрыФормы.Вставить("КомпоновщикНастроек", КомпоновщикНастроек);
// Если нужно передать объект настроек отчета для формы настроек, который будет сохраняться
// Если форма настроек отчета ожидает этот параметр, иначе может быть не нужен
Если ТипЗнч(ОписаниеНастроекОтчета) <> Тип("Неопределено") Тогда
ПараметрыФормы.Вставить("ОписаниеНастроекОтчета", ОписаниеНастроекОтчета);
КонецЕсли;
// Дополнительные параметры, если требуются для работы формы
// Открываем общую форму настроек отчета
ОткрытьФорму("ОбщаяФорма.ФормаНастроекОтчета", ПараметрыФормы);
КонецПроцедуры
В этом примере КомпоновщикНастроек — это элемент формы, который связан с объектом КомпоновщикНастроекКомпоновкиДанных. Объект ОписаниеНастроекОтчета должен быть предварительно инициализирован в модуле отчета или формы. Этот код демонстрирует, как можно передать необходимые данные для корректной работы типовой формы настроек.
Контроль доступности структуры: Возможность изменения структуры отчета пользователем может зависеть не только от программной реализации вызова, но и от прав доступа и настроек самого отчета — проверить их поможет анализ прав доступа и ограничений в 1С. Необходимо убедиться, что в свойствах компоновщика или формы отчета не установлена опция, скрывающая вкладку Структура или другие элементы управления, предназначенные для расширенных настроек. Например, проверьте свойство ПоказыватьРасширенныеНастройки у элемента управления типа ПолеКомпоновщикаНастроек или у самого компоновщика настроек на форме, если таковые имеются.
Надеемся, что этот подробный анализ и пошаговые инструкции помогут вам успешно решить проблему с ошибкой "Значение не является значением объектного типа (ПолноеИмя)" при работе с внешними отчетами 1С. Правильная настройка свойства ФормаНастроек на ВспомогательнаяФормаНастроекОтчета и активация необходимых пользовательских настроек в СКД являются ключевыми шагами к стабильной и удобной работе с отчетами. Мы всегда стремимся предоставить максимально полную и актуальную информацию, чтобы вы могли эффективно использовать возможности платформы 1С и успешно преодолевать возникающие технические сложности.