СКД. Не найден внешний набор данных. |
Я |
28.01.10 — 12:42
Делаю внешний отчет. В СКД выбираю набор данных — объект. Имя объекта — «Табл». Далее делаю табличную часть отчета с именем «Табл». Реквизиты табличной части соответствуют полям в СКД. При открытии отчета выполняю следующие действия:
ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить(«Табл»,Табл);
СхемаКомпоновкиДанных = ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных);
но при нажатии «Сформировать» в форме отчета выдает ошибку —
Ошибка исполнения отчета
по причине:
Ошибка инициализации
по причине:
Ошибка создания набора данных «НаборДанных1»
по причине:
Не найден внешний набор данных «Табл»
1 — 28.01.10 — 12:43
(0) в самой компоновке у тебя набор данных назвается «НаборДанных1», а должен «Табл». перименуй (это деолается в правом нижнем углу на первой вкладке в компоновке).
2 — 28.01.10 — 12:51
(1) сейчас пишет вот что —
Ошибка создания набора данных «Табл»
по причине:
Не найден внешний набор данных «Табл»
3 — 28.01.10 — 13:02
(2) Может табличную часть отчета есть не хочет? Попробуй вместо Табл поставить Табл.Выгрузить().
4 — 28.01.10 — 13:08
(3) неа, то же самое. Интерсно то, что, если я делаю на форме новую кнопку «Печать» и в нее запихиваю следующий текст, то все работает.
ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить(«Табл»,Табл);
СхемаКомпоновкиДанных = ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных);
ДокументРезультат = Новый ТабличныйДокумент;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
ДокументРезультат.ОтображатьСетку = Ложь;
ДокументРезультат.ОтображатьЗаголовки = Ложь;
ДокументРезультат.Показать();
5 — 28.01.10 — 13:12
(4) при открытии отчета — это в какой процедуре имеется ввиду?
6 — 28.01.10 — 13:15
(5) ПриОткрытии()
7 — 28.01.10 — 13:16
+(5) как вариант — просто процедуру Сформировать(Элемент) сделай свою и действие кнопки сформировать на эту кнопку переориентируй и все.
8 — 28.01.10 — 13:18
+(7) вернее процедуру.
9 — 28.01.10 — 13:25
(8) да, так сейчас и делаю, просто интересно, почему первый вариант не работает. Еще вопрос — как можно вытащить на форму отчета группировки и их порядок из СКД?
10 — 28.01.10 — 13:45
(9) скорее всего первый вариант выполняет еще раз инициализацию Процессора и внешний набор уходит в аут. По поводу вопроса не понял — Настройки СКД как на форму вытащить что ли?
11 — 28.01.10 — 13:50
+(10) вообще у формы отчета есть расширение КомпоновщикНастроек. И можно просто вытащить на форму ТабличноеПоле и связать его с КомпоновщикНастроек.Настройки (можно вроде еще глубже влезть). Но для этого в твоем коде понадобитмя ееще строка:
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию)
Вообще — почитай в СП про расширения формы отчетов.
12 — 28.01.10 — 13:53
(11) спасибо, с настройками разобрался.
13 — 28.01.10 — 13:55
не за что. А вообще быстро ты с ними )
ПодводныйТаракан
14 — 28.01.10 — 14:09
(13) да не, как выносить на форму настройки — я знал. Просто думал, что можно как то вынести именно группировки по строкам и колонкам, ну к примеру как в построителе отчета. А потом не стал заморачиваться, вынес просто всю настройку, там и конструктор есть, так что думаю потянет.
Ошибка У пользователя недостаточно прав на исполнение операции над базой данных на СКД
Описание ошибки:
Система компоновки данных. Ошибка при формировании отчета:
Ошибка исполнения отчета
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных «НаборДанных1»
по причине:
Ошибка при исполнении запроса набора данных
по причине:
Ошибка выполнения запроса
по причине:
У пользователя недостаточно прав на исполнение операции над базой данных.
Найденные решения:
Ошибка возникла при попытке сформировать специально реализованный отчет под пользователем с неполными правами.
Из конечной формулировки в описании ошибки «У пользователя недостаточно прав на исполнение операции над базой данных» в принципе понятно, что у пользователя не хватает прав на работу с каким-то объектом базы.
Можно пытаться анализировать запрос, сверяя его с настройками прав (ролями) пользователя. Но это может затянуться. Можно воспользоваться «Журналом регистрации». В сеансе работы пользователя сразу после возникновения ошибки нажимаем «ОК» и открываем список журнала регистрации через меню «Сервис» — «Журнал регистрации». Находим строку с описанием события «Доступ.Отказ в доступе».
Открываем форму события и в поле «Метаданные» анализируем, к каким объектам базы у пользователя не хватает доступа.
Конкретно в этом случае в базе 1С: Управление торговлей ред. 10.3 была доработана типовая роль для справочника «Контрагенты» для чтения на уровне ограничения доступа к данным — не предоставлять доступ к контрагентам из папки по логике содержащей контрагентов-поставщиков. Поэтому добавление в запросе ключевого слова «РАЗРЕШЕННЫЕ». Отчет сформирован, но для контрагентов, на которые распространилось право — в отчете не выводятся данные — вместо них <Объект не найден>.
Оцените, помогло ли Вам предоставленное описание решения ошибки?
© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.
30-09-2020
Журавлев А.С.
(Сайт azhur-c.ru)
СКД. Не найден внешний набор данных. |
Я |
ПодводныйТаракан
28.01.10 — 12:42
Делаю внешний отчет. В СКД выбираю набор данных — объект. Имя объекта — «Табл». Далее делаю табличную часть отчета с именем «Табл». Реквизиты табличной части соответствуют полям в СКД. При открытии отчета выполняю следующие действия:
ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить(«Табл»,Табл);
СхемаКомпоновкиДанных = ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных);
но при нажатии «Сформировать» в форме отчета выдает ошибку —
Ошибка исполнения отчета
по причине:
Ошибка инициализации
по причине:
Ошибка создания набора данных «НаборДанных1»
по причине:
Не найден внешний набор данных «Табл»
mirosh
1 — 28.01.10 — 12:43
(0) в самой компоновке у тебя набор данных назвается «НаборДанных1», а должен «Табл». перименуй (это деолается в правом нижнем углу на первой вкладке в компоновке).
ПодводныйТаракан
2 — 28.01.10 — 12:51
(1) сейчас пишет вот что —
Ошибка создания набора данных «Табл»
по причине:
Не найден внешний набор данных «Табл»
Aprobator
3 — 28.01.10 — 13:02
(2) Может табличную часть отчета есть не хочет? Попробуй вместо Табл поставить Табл.Выгрузить().
ПодводныйТаракан
4 — 28.01.10 — 13:08
(3) неа, то же самое. Интерсно то, что, если я делаю на форме новую кнопку «Печать» и в нее запихиваю следующий текст, то все работает.
ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить(«Табл»,Табл);
СхемаКомпоновкиДанных = ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных);
ДокументРезультат = Новый ТабличныйДокумент;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
ДокументРезультат.ОтображатьСетку = Ложь;
ДокументРезультат.ОтображатьЗаголовки = Ложь;
ДокументРезультат.Показать();
Aprobator
5 — 28.01.10 — 13:12
(4) при открытии отчета — это в какой процедуре имеется ввиду?
ПодводныйТаракан
6 — 28.01.10 — 13:15
(5) ПриОткрытии()
Aprobator
7 — 28.01.10 — 13:16
+(5) как вариант — просто процедуру Сформировать(Элемент) сделай свою и действие кнопки сформировать на эту кнопку переориентируй и все.
Aprobator
8 — 28.01.10 — 13:18
+(7) вернее процедуру.
ПодводныйТаракан
9 — 28.01.10 — 13:25
(8) да, так сейчас и делаю, просто интересно, почему первый вариант не работает. Еще вопрос — как можно вытащить на форму отчета группировки и их порядок из СКД?
Aprobator
10 — 28.01.10 — 13:45
(9) скорее всего первый вариант выполняет еще раз инициализацию Процессора и внешний набор уходит в аут. По поводу вопроса не понял — Настройки СКД как на форму вытащить что ли?
Aprobator
11 — 28.01.10 — 13:50
+(10) вообще у формы отчета есть расширение КомпоновщикНастроек. И можно просто вытащить на форму ТабличноеПоле и связать его с КомпоновщикНастроек.Настройки (можно вроде еще глубже влезть). Но для этого в твоем коде понадобитмя ееще строка:
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию)
Вообще — почитай в СП про расширения формы отчетов.
ПодводныйТаракан
12 — 28.01.10 — 13:53
(11) спасибо, с настройками разобрался.
Aprobator
13 — 28.01.10 — 13:55
не за что. А вообще быстро ты с ними )
ПодводныйТаракан
14 — 28.01.10 — 14:09
(13) да не, как выносить на форму настройки — я знал. Просто думал, что можно как то вынести именно группировки по строкам и колонкам, ну к примеру как в построителе отчета. А потом не стал заморачиваться, вынес просто всю настройку, там и конструктор есть, так что думаю потянет.
Настройка пользовательского отбора в отчете с использованием СКД
Автор sas_255, 02 авг 2021, 00:28
0 Пользователей и 1 гость просматривают эту тему.
Не могу настроить отбор для пользователя в отчете.
Есть отчет, работающий в котором выводятся остатки по всем рабочим местам (РМ)(складам) организации.
Нужно добавить поля отбора по конкретному рабочему месту.
То есть мне нужно, чтобы в форме отчета пользователь мог выбрать из справочника нужное рабочее место и отчет показывал бы остатки конкретно по этому РМ.
В СКД добавляю произвольный параметр отбора, везде ставлю доступность. При этом получаю пустые остатки.
Что я делаю не так и почему у меня не появляется на форме выбор параметра?
Если в параметрах ставлю тип ссылка на справочник рабочих мест то ничего особо не меняется.
Установил галочку «Включать в пользовательские настройки» стало выдавать ошибку
Ошибка создания набора данных «НаборДанных1»
по причине:
Не задано значение параметра «РабочееМесто»
по причине:
{(18, 37)}: Не задано значение параметра «РабочееМесто»
ОстатикиПоРМОстатки.РабочееМесто = <<?>>&РабочееМесто
в СКД есть раздел Параметры и Отборы
суть вроде как одна и та же, а поведение разное,
Параметры — ОБЯЗАТЕЛЬНЫ (как правило, кроме Периодов) к заполнению
Отборы — нет
вам система четко пишет что надо заполнить Параметр! (что тут не понятного?)
вы можете задать предопределенное значение, например Пустую Ссылку, тогда и отбор произойдет по пустой ссылке!
попробуйте в Консоле Запросов, что у вас отберется по Пустой Ссылке?
если помогло нажмите: Спасибо!
По пустой ссылке в консоли мне ничего не выдает, что в общем то логично.
Я знаю что такое отбор. Но вот как включить параметры отбора для пользователя отчета (да еще желательно с выбором параметра из справочники) не могу понять. Включил пользовательские настройки, поле все равно на форме не появляется.
Логично, что на скриншоте в правом значении должно что то быть, но туда лезет либо строка (не отображается на форме при запуске), либо поле компоновки данных. Или мне нужно писать какую-то программную обработку для отбора и привязывать ее к отдельному полю на форме?
При задании отбора параметр в запросе указывать не надо.
То есть вот это
ГДЕ ОстатикиПоРМОстатки.РабочееМесто = &РабочееМесто
— надо убрать (про то, что условия на выборку из виртуальной таблицы не надо накладывать в секции ГДЕ, в следующий раз поговорим )
sas_255, выкладывайте свой отчет, попробуем поправить
- 1 пользователь сказал спасибо!
если помогло нажмите: Спасибо!
Цитата: LexaK от 02 авг 2021, 13:55sas_255, выкладывайте свой отчет, попробуем поправить
Отчеты — Остатки по Рм там один отчет.
Я таки добился того чтобы отбор шел по вручную введенной строке.
Но вот как сделать чтобы оно отбирало по рабочему месту выбранному из справочника РабочиеМеста я не могу понять.
И каким образом оно должно отбирать по элементу справочника, если тип измерения РабочееМесто — строка?
antoneus, так вот я и не могу понять как туда запихать ссылку на справочник. Он не предлагает ничего кроме строки. Или там нужно переделать сам документ регистратор? В документе то РМ берется из справочника.
Переделать надо измерение регистра, чтобы его тип был СправочникСсылка.РабочиеМеста. Потом перепровести документы и все заработает.
- 1 пользователь сказал спасибо!
antoneus, Поменял тип, в отчете нормально но теперь в форме где состав рабочего места отображался с помощью динамического списка перестал отображаться.
Ошибка У пользователя недостаточно прав на исполнение операции над базой данных на СКД
Описание ошибки:
Система компоновки данных. Ошибка при формировании отчета:
Ошибка исполнения отчета
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных «НаборДанных1»
по причине:
Ошибка при исполнении запроса набора данных
по причине:
Ошибка выполнения запроса
по причине:
У пользователя недостаточно прав на исполнение операции над базой данных.
Найденные решения:
Ошибка возникла при попытке сформировать специально реализованный отчет под пользователем с неполными правами.
Из конечной формулировки в описании ошибки «У пользователя недостаточно прав на исполнение операции над базой данных» в принципе понятно, что у пользователя не хватает прав на работу с каким-то объектом базы.
Можно пытаться анализировать запрос, сверяя его с настройками прав (ролями) пользователя. Но это может затянуться. Можно воспользоваться «Журналом регистрации». В сеансе работы пользователя сразу после возникновения ошибки нажимаем «ОК» и открываем список журнала регистрации через меню «Сервис» — «Журнал регистрации». Находим строку с описанием события «Доступ.Отказ в доступе».
Открываем форму события и в поле «Метаданные» анализируем, к каким объектам базы у пользователя не хватает доступа.
Конкретно в этом случае в базе 1С: Управление торговлей ред. 10.3 была доработана типовая роль для справочника «Контрагенты» для чтения на уровне ограничения доступа к данным — не предоставлять доступ к контрагентам из папки по логике содержащей контрагентов-поставщиков. Поэтому добавление в запросе ключевого слова «РАЗРЕШЕННЫЕ». Отчет сформирован, но для контрагентов, на которые распространилось право — в отчете не выводятся данные — вместо них <Объект не найден>.
Оцените, помогло ли Вам предоставленное описание решения ошибки?
© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.
30-09-2020
Журавлев А.С.
(Сайт azhur-c.ru)
Для использования в схеме компоновки данных внешнего набора данных сначала необходимо создать набор данных объект, и указать имя объекта, содержащего данные:
Далее необходимо программно выполнить формирование отчета, заполнив внешний набор данных:
ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("ТЗ", ТЗ); СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных); ТабличныйДокумент = Новый ТабличныйДокумент; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
В данном примере ТЗ – переменная с типом таблица значений.
Очень странно, но единой схемы в интернете по работе в системе компоновки данных я не нашел и на вылетающие ошибки пришлось потратить время, а так имеем задачу соединить остатки 2 разных баз «Управленческой» и бухгалтерской. Так как синхронизация в базах выполняется регулярно имеем одинаковые уникальные идентификаторы.
Начинаем
1. Создаем внешний отчет
1.1. В «наборы данных» добавляем «Набор данных — объединение»
1.2. В созданный набор добавляем «Набор данных — запрос» И формируем необходимый нам запрос с помощью конструктора.
1.3. В набор объединение добавляем также «Набор данных — объект» и прописываем поля которые будут загружены с таблицызначений, не забываем что поля должны совпадать с полями из набора данных запрос
2. После этого переходим в модуль объекта, и добавляем стандартную процедуру «ПриКомпоновкеРезультата». 1С автоматически генерирует процедуру со всеми входящими параметрами. И начинаем формировать заполнение процедуры
Exported from Notepad++
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
// При формирование отключаем стандартную обработку, в противном случае постоянно будет выдавать следующую ошибку
// Ошибка исполнения отчета
//по причине:
//Ошибка инициализации
//по причине:
//Ошибка создания набора данных «НаборДанных»
//по причине:
//Не найден внешний набор данных «ТаблОст»
СтандартнаяОбработка = Ложь;//Формируем подключение к внешней базе 1с
Подкл = Новый COMОбъект(«V82.COMConnector»);
COMОбъект = Подкл.Connect(«Srvr=»»mws-01″»;Ref=»»GlobalBase»»;Usr=»»*****»»;Pwd=»»******»»»);//Формируем запрос во внешней базе
Запрос = COMОбъект.NewObject(«Запрос»);Запрос.Текст = «ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура,
| ТоварыНаСкладахОстатки.ВНаличииОстаток КАК КоличествоОстаток,
| ТоварыНаСкладахОстатки.ВРезервеОстаток КАК ВРезерве
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
|ГДЕ
| ТоварыНаСкладахОстатки.Склад В
| (ВЫБРАТЬ
| Склады.Ссылка
| ИЗ
| Справочник.Склады КАК Склады
| ГДЕ
| Склады.Родитель.Наименование = «»Центральные Склады»»)»;Результат = Запрос.Выполнить();
//Получаем результат и создаем и заполняем таблицу значений в текущей
ТаблОст = Новый ТаблицаЗначений;
ТаблОст.Колонки.Добавить(«Номенклатура»,новый ОписаниеТипов(«СправочникСсылка.Номенклатура»));
ТаблОст.Колонки.Добавить(«Организация»,ОбщегоНазначения.ПолучитьОписаниеТиповСтроки(10));
ТаблОст.Колонки.Добавить(«КоличествоОстаток», ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(15,3));
ТаблОст.Колонки.Добавить(«СуммаОстаток», ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(15,2));
Табл = Результат.Выгрузить();
Для х=0 по Табл.Количество()-1 Цикл
ЗначСтр = Табл.Получить(х);
НоваяСтрока = ТаблОст.Добавить();
//По уникальному идентификатору получаем значение и преобразуем в ссылку в текущей базе
НоваяСтрока.Номенклатура = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(COMОбъект.String(ЗначСтр.Номенклатура.УникальныйИдентификатор())));
НоваяСтрока.Организация = «Упр»; // формируем левое название, так как управленческой базы нет в бухгалтерии
НоваяСтрока.СуммаОстаток = 0;
НоваяСтрока.КоличествоОстаток = Число(ЗначСтр.КоличествоОстаток);
КонецЦикла;
COMОбъект = неопределено;
Подкл = неопределено;ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить(«ТаблОст»,ТаблОст); // Формируем структуру для передечи в СКД
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;НастройкиКомпоновкиДанных = КомпоновщикНастроек.ПолучитьНастройки();ТекСхема = ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);МакетКомпоновки = КомпоновщикМакета.Выполнить(
ТекСхема,
НастройкиКомпоновкиДанных,
ДанныеРасшифровки
);ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(
МакетКомпоновки,
ВнешниеНаборыДанных,
ДанныеРасшифровки
);ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.НачатьВывод();
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
ПроцессорВывода.ЗакончитьВывод();КонецПроцедуры
3. Далее, заполняем настройки, ресурсы и параметры
Как итог получаем отчет с нужными данными
ВЫБРАТЬ
КурсыВалют.Валюты,
КурсыВалют.КурсПродажи,
КурсыВалют.КурсКонвертации,
КурсыВалют.КурсПокупки,
КурсыВалют.КурсМагазинов,
КурсыВалют.КурсЦБ,
КурсыВалют.ПроцентКурсаПокупки,
КурсыВалют.ПроцентКурсаПродажи,
КурсыВалют.ПроцентКурсаКонвертации,
КурсыВалют.Период
ИЗ
РегистрСведений.Валюты КАК КурсыВалют
ГДЕ
(КурсыВалют.Период >= &НачалоПериода) И
(КурсыВалют.Период <= &ОкончаниеПериода)
ВЫБРАТЬ
КурсыВалют.Валюты,
КурсыВалют.КурсПродажи,
КурсыВалют.КурсКонвертации,
КурсыВалют.КурсПокупки,
КурсыВалют.КурсМагазинов,
КурсыВалют.КурсЦБ,
КурсыВалют.ПроцентКурсаПокупки,
КурсыВалют.ПроцентКурсаПродажи,
КурсыВалют.ПроцентКурсаКонвертации,
КурсыВалют.Период
ИЗ
РегистрСведений.Валюты КАК КурсыВалют
{ГДЕ
(КурсыВалют.Период >= &НачалоПериода),
(КурсыВалют.Период <= &ОкончаниеПериода)}
Результат:
Ошибка исполнения отчета
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных «НаборДанных1»
по причине:
Ошибка при исполнении запроса набора данных
по причине:
{(16, 23)}: Не задано значение параметра «НачалоПериода»
КурсыВалют.Период >= <<?>>&НачалоПериода
Результат:
Корректная отработка отчета
-
Помогите разобраться с внешним набором данных.
Создал простейший отчет (см в прикрепленном файле)В модуле написал
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
тз=новый таблицазначений;
тз.Колонки.Добавить(«Поле1»);
нс=тз.Добавить();
нс.Поле1=»33№»;
нс.Поле1=»44№»;
нс.Поле1=»55№»;ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных .Вставить(«ТЗ», тз);СхемаКомпоновкиДанных = ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);ДокументРезультат.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);КонецПроцедуры
При формировании возникает ошибка:
Не найден внешний набор данных «ТЗ»Причем, если в ВнешниеНаборыДанных указать не правильный ключ,например:
ВнешниеНаборыДанных .Вставить(«ТЗНЕПРАВИЛЬНО», тз);то ошибка вылезает сразу, а если так как написано, машина сначала думает некоторое время и только потом возникает ошибка.
Подскажите, что я не так делаю.
Вложения:
-
Offline
1с-ник
Профессионал в 1С
Заблокирован- Регистрация:
- 5 окт 2014
- Сообщения:
- 998
- Симпатии:
- 164
- Баллы:
- 104
СтандартнаяОбработка = Ложь;
Если при формировании отчета на СКД вы видите сообщение вроде этого:
Ошибка выполнения отчета
по причине:
Ошибка исполнения отчета
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных «НаборДанных1»
по причине:
Ошибка при исполнении запроса набора данных
по причине:
Ошибка выполнения запроса
по причине:
У пользователя недостаточно прав на исполнение операции над базой данных.
то вероятнее всего, у пользователя нет прав на чтение какого-либо объекта, который выводится в отчете.
Для того, чтобы устранить проблему и узнать на какой же объект у пользователя нет прав, можно воспользоватся журналом регистрации (в режиме предприятия: «Сервис» — «Журнал регистрации»). Открываем его и ищем сообщение с событием: «Дотсуп. Отказ в доступе», после чего смотрим список метаданных, а среди них уже и проверяем, на какие объекты (метаданные) у пользователя нет прав.
Возможно используется ограничение по RLS, то в этом случае нужно использовать ключевое слово «РАЗРЕШЕННЫЕ», чтобы запрос выполнялся без ошибок.
wildwilduser |
|
||
---|---|---|---|
Подскажите люди добрые
Ошибка исполнения отчета причину возникновения ошибки чтобы не наступать на эти грабли повторно |
Yandex |
|
||
---|---|---|---|
E_Migachev |
|
||
---|---|---|---|
(0) wildwilduser, ошибка в набореданных2, что там? |
Подсказка:Вы можете добавить любую страничку в Социальные закладки щелкнув по значку соцсетей (в вверху) |
Настройка пользовательского отбора в отчете с использованием СКД
Автор sas_255, 02 авг 2021, 00:28
0 Пользователей и 1 гость просматривают эту тему.
Не могу настроить отбор для пользователя в отчете.
Есть отчет, работающий в котором выводятся остатки по всем рабочим местам (РМ)(складам) организации.
Нужно добавить поля отбора по конкретному рабочему месту.
То есть мне нужно, чтобы в форме отчета пользователь мог выбрать из справочника нужное рабочее место и отчет показывал бы остатки конкретно по этому РМ.
В СКД добавляю произвольный параметр отбора, везде ставлю доступность. При этом получаю пустые остатки.
Что я делаю не так и почему у меня не появляется на форме выбор параметра?
Если в параметрах ставлю тип ссылка на справочник рабочих мест то ничего особо не меняется.
Установил галочку «Включать в пользовательские настройки» стало выдавать ошибку
Ошибка создания набора данных «НаборДанных1»
по причине:
Не задано значение параметра «РабочееМесто»
по причине:
{(18, 37)}: Не задано значение параметра «РабочееМесто»
ОстатикиПоРМОстатки.РабочееМесто = <<?>>&РабочееМесто
в СКД есть раздел Параметры и Отборы
суть вроде как одна и та же, а поведение разное,
Параметры — ОБЯЗАТЕЛЬНЫ (как правило, кроме Периодов) к заполнению
Отборы — нет
вам система четко пишет что надо заполнить Параметр! (что тут не понятного?)
вы можете задать предопределенное значение, например Пустую Ссылку, тогда и отбор произойдет по пустой ссылке!
попробуйте в Консоле Запросов, что у вас отберется по Пустой Ссылке?
если помогло нажмите: Спасибо!
По пустой ссылке в консоли мне ничего не выдает, что в общем то логично.
Я знаю что такое отбор. Но вот как включить параметры отбора для пользователя отчета (да еще желательно с выбором параметра из справочники) не могу понять. Включил пользовательские настройки, поле все равно на форме не появляется.
Логично, что на скриншоте в правом значении должно что то быть, но туда лезет либо строка (не отображается на форме при запуске), либо поле компоновки данных. Или мне нужно писать какую-то программную обработку для отбора и привязывать ее к отдельному полю на форме?
При задании отбора параметр в запросе указывать не надо.
То есть вот это
ГДЕ ОстатикиПоРМОстатки.РабочееМесто = &РабочееМесто
— надо убрать (про то, что условия на выборку из виртуальной таблицы не надо накладывать в секции ГДЕ, в следующий раз поговорим )
sas_255, выкладывайте свой отчет, попробуем поправить
- 1 пользователь сказал спасибо!
если помогло нажмите: Спасибо!
Цитата: LexaK от 02 авг 2021, 13:55sas_255, выкладывайте свой отчет, попробуем поправить
Отчеты — Остатки по Рм там один отчет.
Я таки добился того чтобы отбор шел по вручную введенной строке.
Но вот как сделать чтобы оно отбирало по рабочему месту выбранному из справочника РабочиеМеста я не могу понять.
И каким образом оно должно отбирать по элементу справочника, если тип измерения РабочееМесто — строка?
antoneus, так вот я и не могу понять как туда запихать ссылку на справочник. Он не предлагает ничего кроме строки. Или там нужно переделать сам документ регистратор? В документе то РМ берется из справочника.
Переделать надо измерение регистра, чтобы его тип был СправочникСсылка.РабочиеМеста. Потом перепровести документы и все заработает.
- 1 пользователь сказал спасибо!
antoneus, Поменял тип, в отчете нормально но теперь в форме где состав рабочего места отображался с помощью динамического списка перестал отображаться.