1с скд отчет не сформирован поле не найдено
Немного про СКД. Характеристики и проверка пустого отчета
Совместим несовместимое
Сегодня мы рассмотрим две простые темы из мира разработки отчетов на СКД. Статья больше ориентирована на новичков, а также тех, для кого СКД все еще черный ящик (если такие еще остались). Для опытных гуру СКД здесь вряд ли можно будет найти что-то новое.
Сначала мы рассмотрим простой способ проверки наличия данных в результате сформированного отчета, а после обратимся к примеру работы с характеристиками в СКД, а также программной работе с ними.
Все не просто, а очень просто! Поехали!
Отчет пустой?
Решая задачи, в которых нужно выполнять формирование отчета программно, бывает необходимым проверить наличие результата в отчете. То есть, узнать пустой он или нет. Сегодня мы рассмотрим небольшой пример реализации такой проверки при программном формировании отчета на системе компоновки данных (СКД). Далее Вы можете видеть результат.
Отчет формирует все возможные комбинации 6 цифр, диапазон, который указывается в шапке. При оказании диапазона от 1 до 3 отчет показывает сформированные комбинации, если же указать диапазон от 1 до 0, то отчет будет пустым, т.к. такой диапазон ошибочный.
Вы можете сделать такой отчет самостоятельно, использовав такой запрос.
Думаю, сделать дальше настройки варианта отчета будет не сложно.
При этом в шапке отчета изменяется значение поля «Отчет пустой».
Реализация проверки
Как уже говорилось выше, отчет построен на базе СКД. В модуле объекта отчета используется событие «ПриКомпоновкеРезультата», в котором программно формируется результат отчета. Листинг события приведен ниже:
В данном случае, проверка выполняется в событии «ПриКомпоновкеРезультата», но подобный подход может использоваться при любой программной работе с СКД.
Все просто, не правда ли?
Добавлять в отчет реквизит «ОтчетПустой» не обязательно. Здесь это сделано лишь для примера. Использовать этот подход можно практически для любого отчета на СКД.
Пример использования
Сделаем регламентное задание, которое будет запускать формирование отчета, и, если он не пустой, отправлять результат по почте. Обработчик регламентного задания будет выглядеть примерно так:
Здесь мы сначала компонуем результат, а после проверяем параметр «ОтчетПустой» в настройках компоновщика. Если отчет не пустой, то отправляем сформированный табличный документ на электронную почту.
Листинг процедуры отправки на электронную почту выкладывать не вижу смысла. Проблем с отправкой быть не должно, ведь все уже есть в БСП (или на крайний случай в синтаксис-помощнике).
Все очень просто
Должен признаться, что подобный метод проверки отчетов на заполненность в свое время подглядел в конфигурации 1С:Документооборот, поэтому некоторый плагиат в статье конечно есть =) Но я думаю, что разработчики из фирмы «1С» не обидятся, а кто-нибудь из читателей узнает для себя что-нибудь новое. В БСП есть отдельные функции общих модулей, которые таким же способом позволяют проверить заполненность результата отчета.
Используйте БСП, живите правильно! 🙂
Особенность использования механизма характеристик
Что у нас есть?
Пример будем приводить на конфигурации «Управление производственным предприятием» версии 1.3. Хоть она и не самая свежая, но для примера это не имеет никакого значения. Все информация может быть использована и в современных решениях на базе платформы 1С.
В информационной базе для всех элементов справочника «Организации» добавлены свойства «Основной склад», «Связанный контрагент» и «Страна размещения». Нам нужно создать отчет в системе компоновки данных (СКД), в котором мы сможем накладывать отбор по дополнительным характеристиками организаций.
Создаем отчет и настраиваем характеристики
Создадим простой отчет. В нем будет один набор данных со следующим запросом:
Структура отчета будет иметь вывод только по детальным записям со всеми полями, выбираемыми в запросе. В конструкторе настройка структуры отчета будет выглядит следующим образом:

Отлично. Теперь перейдем к настройке характеристик, но перед этим напомню в общих чертах работу механизма характеристик в большинстве типовых конфигураций, в том числе и УПП. Для этого используются несколько объектов конфигурации.
Графически связь между объектом информационной базы и его характеристиками можно изобразить по такой схеме:
Опишем схему подробнее. В регистре сведений «ЗначенияСвойствОбъектов» в измерении «Объект» содержится ссылка на элемент информационной базы, для которого сохраняется свойство. В нашем примере это ссылка на элемент справочника «Организации». Все возможные свойства объекта определяются в плане видов характеристик (ПВХ) «СвойстваОбъектов». Значение характеристики, сохраняемое в регистре сведений, зависит от доступных типов данных для элемента плана видов характеристик, записанного в измерение «Свойство». Это описание должно дать лишь общее представление о механизме доп. свойств. На практике он сложнее, но при при необходимости разобраться будет не сложно.
Теперь перейдем к настройке характеристик в схеме компоновки данных. Для этого запустим конструктор запроса и перейдем на вкладку «Характеристики». Здесь нужно добавить поле связи объекта информационной базы с таблицами свойств и значений свойств. Ранее мы рассматривали схему связи между объектами конфигурации для хранения доп. свойств/характеристик. В соответствии с этой информацией настройка будет следующей:

На этом все. Функционал отчета теперь позволяет выбрать поля дополнительных характеристик в отчете (поля вывода, отборы и т.д.). Но есть одно НО. Использовать эти поля в настройках отчета мы можем только в режиме 1С:Предприятия. В конфигураторе мы не можем увидеть поля характеристик, что логично, ведь характеристики вводятся пользователем и хранятся в информационной базе.
Но если есть необходимость, мы можем добавить поля характеристик, например, в отбор перед его открытием или сделать настройку отчета в режиме 1С:Предприятие, а настройки перенести в конфигуратор через XML-файл (выгружается стандартными средствами СКД). Рассмотрим небольшой пример.
Программная работа с характеристиками
При открытии формы отчета выполним следующим программный код:
Тогда если мы посмотрим в отбор отчета в режиме 1С:Предприятие, то увидим следующую картину:

а именно на текст «[Связанный контрагент]». Если мы напишем вот так:
то при запуске отчета СКД неправильно определит поля компоновки. В настройках поля отбора будут выделены как некорректные:

Теперь мы можем устанавливать настройки отчета, даже если поля недоступны в конструкторе СКД.
А Вы используете характеристики?
Использование настройки характеристик в СКД позволяет значительно упростить разработку сложных отчетов. Несмотря на некоторые недостатки в работе, такие как отсутствие возможности настройки отбора по доп. свойствам в конструкторе и т.д., механизм характеристик можно считать значительным шагом в упрощении разработки отчетов на платформе 1С.
В статье мы рассмотрели далеко не все возможности характеристик в СКД. За рамками статьи остались такие возможности как: произвольное определение источников данных, как для свойств, так и для значений характеристик, а также отбор по владельцу для всех доступных характеристик в информационной базе и многое другое. Тема большая, есть куда расширять круг своих знаний.
Продолжим позже
На этом все, спасибо что дочитали до конца! СКД наше все!
В СКД отображаются не все поля
Суть проблемы: есть отчет на скд, под полными правами он работает так как мне надо. Если запускаю его не под полными правами, то пропадают некоторые поля. Права на чтение/просмотр у пользователя с неполными правами есть на регистры и на документы используемые в запросе.
пробовал запускать под пользователем с неполными правами запрос из отчета в консоли запросов, всё работает правильно. Но в скд почему то поля просто теряются. их нет в выбранных полях.
пробовал выгружать настройку скд под полными и загружать не под полными правами. поля не появляются.
куда копать? помогите)
выше текст запроса.
нету вот этих полей :
то есть это реквизит документов «сумма документа»
Действительно если у пользователя есть право «Чтение», но нет права «Просмотр» регистра сведений, поле из него не попадает в список доступных полей.
Удивительно, но факт.
Результат НУЛЕВОЙ!
Поля видны только тем пользователям, у которых есть роль «Полные права».
Конфигурация: Управление торговлей, редакция 11.1 (11.1.9.61)
Платформа: 1С:Предприятие 8.3 (8.3.5.1517)
Нужно смотреть не только права на регистратор, но и на все объекты
отчета, где этот объект как таковой может использоваться в качестве
реквизита.
В моем случае использовалось измерение «АналитикаУчетаПопартнерам» в измерении
регистра «РасчетыСПоставщиками». Вот из-за того, что на сам справочник права
были только для роли «ПолныкеПрава» отбор по его реквизитам «Организация», «Партнер»
и «Контрагент» был невозможен. Не смотря на то, что на сами эти объекты у пользователей
разрешения были.
(19) valerasv,
Еще один вариант решения проблемы:
Делается соединения с таблицами объектов.
А уже эти таблицы используются дальше.
Пример.
Текст запроса для КД:
ВЫБРАТЬ
КлючиАналитикиУчетаПоПартнерам.Организация КАК Организация_КлючАналитики
ИЗ
Справочник.КлючиАналитикиУчетаПоПартнерам КАК КлючиАналитикиУчетаПоПартнерам
Для пользователя, у которого не полные права, из-за того, что на справочник КлючиАналитикиУчетаПоПартнерам
установлено разрешение только на чтение, мы ни где не увидим поле «Организация».
Изменив же запрос, можно получить желаемое.
Как пример:
ВЫБРАТЬ
Организации.Ссылка КАК Организация_КлючАналитики
ИЗ
Справочник.КлючиАналитикиУчетаПоПартнерам КАК КлючиАналитикиУчетаПоПартнерам
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
ПО КлючиАналитикиУчетаПоПартнерам.Организация = Организации.Ссылка
v8: Отчет СКД не все поля видит если нет права на док-т
Ой. не могу понять что делать. Есть в конфигурации один документ. Если на него для роли установлено право «чтение», то при запуске отчета, написанного в СКД, пользователь не видит поля «Номенклатура». Если же поставить права доступа «Чтение, Просмотр», то в отчете появляется это поле и группировка по этому полю появляется. Выкладываю прув линки:
http://i017.radikal.ru/1311/a3/7319859c5aff.jpg
http://s020.radikal.ru/i721/1311/70/ebbec2de5085.jpg
http://s019.radikal.ru/i619/1311/93/f2163a9dbb04.jpg
ВЫБРАТЬ
ХарактеристикиНоменклатуры.Владелец,
ХарактеристикиНоменклатуры.Ссылка,
ВЫБОР
КОГДА ЗначенияСвойствОбъектов.Значение.Наименование = «»
ТОГДА 0
КОГДА ЗначенияСвойствОбъектов.Значение.Наименование = «НОВЫЙ»
ТОГДА 0
ИНАЧЕ ЗначенияСвойствОбъектов.Значение.Наименование
КОНЕЦ КАК Вес
ПОМЕСТИТЬ СВесом
ИЗ
Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
ПО ХарактеристикиНоменклатуры.Ссылка = ЗначенияСвойствОбъектов.Объект
ГДЕ
ЗначенияСвойствОбъектов.Свойство = &Вес1ТЗР
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
УчестьКоэффВеса.Объект.Владелец КАК Номенклатура,
УчестьКоэффВеса.Объект КАК ХарактеристикаНоменклатуры,
ЕСТЬNULL(НулевойВес.Вес, 0) КАК Вес
ПОМЕСТИТЬ Предпоследняя
ИЗ
УчестьКоэффВеса КАК УчестьКоэффВеса
ЛЕВОЕ СОЕДИНЕНИЕ НулевойВес КАК НулевойВес
ПО УчестьКоэффВеса.Объект = НулевойВес.Ссылка
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Предпоследняя.Номенклатура,
Предпоследняя.ХарактеристикаНоменклатуры,
Предпоследняя.Вес
ИЗ
Предпоследняя КАК Предпоследняя
ГДЕ
Предпоследняя.Вес = 0



