Ошибка создания набора данных скд

СКД. Не найден внешний набор данных.

Я
   ПодводныйТаракан

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) да не, как выносить на форму настройки — я знал. Просто думал, что можно как то вынести именно группировки по строкам и колонкам, ну к примеру как в построителе отчета. А потом не стал заморачиваться, вынес просто всю настройку, там и конструктор есть, так что думаю потянет.

Ошибка У пользователя недостаточно прав на исполнение операции над базой данных на СКД

Описание ошибки:
Система компоновки данных. Ошибка при формировании отчета:
Ошибка исполнения отчета
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных «НаборДанных1»
по причине:
Ошибка при исполнении запроса набора данных
по причине:
Ошибка выполнения запроса
по причине:
У пользователя недостаточно прав на исполнение операции над базой данных.

Найденные решения:

Ошибка возникла при попытке сформировать специально реализованный отчет под пользователем с неполными правами.

1C 8 СКД У пользователя недостаточно прав на исполнение операции над базой данных

Из конечной формулировки в описании ошибки «У пользователя недостаточно прав на исполнение операции над базой данных» в принципе понятно, что у пользователя не хватает прав на работу с каким-то объектом базы.

1С 8 У пользователя недостаточно прав на исполнение операции над базой данных СКД

Можно пытаться анализировать запрос, сверяя его с настройками прав (ролями) пользователя. Но это может затянуться. Можно воспользоваться «Журналом регистрации». В сеансе работы пользователя сразу после возникновения ошибки нажимаем «ОК» и открываем список журнала регистрации через меню «Сервис» — «Журнал регистрации». Находим строку с описанием события «Доступ.Отказ в доступе».

1C 8 Система компоновки данных, Ошибка исполнения отчета по причине: Ошибка получения данных по причине: Ошибка создания набора данных "НаборДанных1"

Открываем форму события и в поле «Метаданные» анализируем, к каким объектам базы у пользователя не хватает доступа. 

1С 8 СКД Ошибка при исполнении запроса набора данных по причине: Ошибка выполнения запроса по причине: У пользователя недостаточно прав на исполнение операции над базой данных.

Конкретно в этом случае в базе 1С: Управление торговлей ред. 10.3 была доработана типовая роль для справочника «Контрагенты» для чтения на уровне ограничения доступа к данным — не предоставлять доступ к контрагентам из папки по логике содержащей контрагентов-поставщиков. Поэтому добавление в запросе ключевого слова «РАЗРЕШЕННЫЕ». Отчет сформирован, но для контрагентов, на которые распространилось право — в отчете не выводятся данные — вместо них <Объект не найден>.

1C 8 формирование отчета на СКД, системе компоновки данных, Ошибка выполнения запроса по причине: У пользователя недостаточно прав на исполнение операции над базой данных.

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© 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»
по причине:
Ошибка при исполнении запроса набора данных
по причине:
Ошибка выполнения запроса
по причине:
У пользователя недостаточно прав на исполнение операции над базой данных.

Найденные решения:

Ошибка возникла при попытке сформировать специально реализованный отчет под пользователем с неполными правами.

1C 8 СКД У пользователя недостаточно прав на исполнение операции над базой данных

Из конечной формулировки в описании ошибки «У пользователя недостаточно прав на исполнение операции над базой данных» в принципе понятно, что у пользователя не хватает прав на работу с каким-то объектом базы.

1С 8 У пользователя недостаточно прав на исполнение операции над базой данных СКД

Можно пытаться анализировать запрос, сверяя его с настройками прав (ролями) пользователя. Но это может затянуться. Можно воспользоваться «Журналом регистрации». В сеансе работы пользователя сразу после возникновения ошибки нажимаем «ОК» и открываем список журнала регистрации через меню «Сервис» — «Журнал регистрации». Находим строку с описанием события «Доступ.Отказ в доступе».

1C 8 Система компоновки данных, Ошибка исполнения отчета по причине: Ошибка получения данных по причине: Ошибка создания набора данных "НаборДанных1"

Открываем форму события и в поле «Метаданные» анализируем, к каким объектам базы у пользователя не хватает доступа. 

1С 8 СКД Ошибка при исполнении запроса набора данных по причине: Ошибка выполнения запроса по причине: У пользователя недостаточно прав на исполнение операции над базой данных.

Конкретно в этом случае в базе 1С: Управление торговлей ред. 10.3 была доработана типовая роль для справочника «Контрагенты» для чтения на уровне ограничения доступа к данным — не предоставлять доступ к контрагентам из папки по логике содержащей контрагентов-поставщиков. Поэтому добавление в запросе ключевого слова «РАЗРЕШЕННЫЕ». Отчет сформирован, но для контрагентов, на которые распространилось право — в отчете не выводятся данные — вместо них <Объект не найден>.

1C 8 формирование отчета на СКД, системе компоновки данных, Ошибка выполнения запроса по причине: У пользователя недостаточно прав на исполнение операции над базой данных.

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© 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»);
    нс=тз.Добавить();
    нс.Поле1=»33№»;
    нс.Поле1=»44№»;
    нс.Поле1=»55№»;

    ВнешниеНаборыДанных = Новый Структура;
    ВнешниеНаборыДанных .Вставить(«ТЗ», тз);

    СхемаКомпоновкиДанных = ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
    Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;

    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);

    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);

    ДокументРезультат.Очистить();

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

    КонецПроцедуры

    При формировании возникает ошибка:
    Не найден внешний набор данных «ТЗ»

    Причем, если в ВнешниеНаборыДанных указать не правильный ключ,например:
    ВнешниеНаборыДанных .Вставить(«ТЗНЕПРАВИЛЬНО», тз);

    то ошибка вылезает сразу, а если так как написано, машина сначала думает некоторое время и только потом возникает ошибка.

    Подскажите, что я не так делаю.

    Вложения:

  2. Offline

    1с-ник
    Профессионал в 1С
    Заблокирован

    Регистрация:
    5 окт 2014
    Сообщения:
    998
    Симпатии:
    164
    Баллы:
    104
    СтандартнаяОбработка = Ложь;

Если при формировании отчета на СКД вы видите сообщение вроде этого:

Ошибка выполнения отчета
по причине:
Ошибка исполнения отчета
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных «НаборДанных1»
по причине:
Ошибка при исполнении запроса набора данных
по причине:
Ошибка выполнения запроса
по причине:
У пользователя недостаточно прав на исполнение операции над базой данных.

то вероятнее всего, у пользователя нет прав на чтение какого-либо объекта, который выводится в отчете.
Для того, чтобы устранить проблему и узнать на какой же объект у пользователя нет прав, можно воспользоватся журналом регистрации (в режиме предприятия: «Сервис» — «Журнал регистрации»). Открываем его и ищем сообщение с событием: «Дотсуп. Отказ в доступе», после чего смотрим список метаданных, а среди них уже и проверяем, на какие объекты (метаданные) у пользователя нет прав.

Возможно используется ограничение по RLS, то в этом случае нужно использовать ключевое слово «РАЗРЕШЕННЫЕ», чтобы запрос выполнялся без ошибок.

wildwilduser
02.02.2012 09:07 Прочитано: 2788

Подскажите люди добрые

Ошибка исполнения отчета
по причине:
Ошибка инициализации
по причине:
Ошибка создания набора данных «НаборДанных2»
по причине:
Ошибка при исполнении запроса набора данных
по причине:
{(1, 1)}: Ожидается выражение «ВЫБРАТЬ»

причину возникновения ошибки чтобы не наступать на эти грабли повторно
отчетик ниже
пытаюсь в СКД воспользоваться объединением
получаю ошибку
по отдельности запросы работают
что неверно, заранее признателен???

Yandex
Возможно, вас также заинтересует

Реклама на портале

E_Migachev
02.02.2012 12:44 Ответ № 1

(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, Поменял тип, в отчете нормально но теперь в форме где состав рабочего места отображался с помощью динамического списка перестал отображаться.


  • Ошибка создания набора данных начисленияудержаниядокумента
  • Ошибка создания файла системе не удается найти указанный путь
  • Ошибка создания набора данных наборданныхдинамическогосписка не задано значение параметра
  • Ошибка создания файла протокола код ошибки 13 карма
  • Ошибка создания набора данных наборданныхдинамическогосписка исправьте настройки