Осторожно, 1С! 13-я серия
Поговорим о разработке отчетов на СКД: особенность использования параметров виртуальных таблиц.
К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь. Если Вы оплачивали курс, у Вас активирован токен доступа, Вы залогинены, но Вы видите эту запись — напишите нам на e-mail поддержки.
Возникла у меня недавно следующая проблемка:
сделан отчет с помощью СКД, в файловой базе он выполняется либо почти мгновенно, либо за 2-3 секунды, в этой же базе но в клиент-серверном варианте он подвисает и никак не может выполнится.
Особенности отчета:
отчет построен на пакетном запросе состоящем из нескольких запросов, которые помещаются во временные таблицы, основного запроса использующего данные заготовленных таблиц и запросов удаляющих временные таблицы.
Может подскажете в чем может заключаться проблема.
Здесь нужно провести расследование: кто виноват.
Попробуйте выполнять этот же запрос в консоли отчетов. Если не выполняется, нужно понять на каком запросе пакета ошибка.
Если выполняется, то значит дело в СКД. Тогда тоже можно поочередно вычислить в какой таблице проблема.
Вообще ситуация похожа на ошибку платформы. Попробуйте обновиться до последнего релиза.
1. вариант: Если у тебя используется какое-то ограничение по правам(пользователь с не полными правами) В запросе попробуй использовать “Выбрать Разрешенные”
2.вариант я обычно разбиваю пакетный запрос на несколько запросов и последовательно выполняю, и смотрю где именно (или на чём виснет)
3. выношу иногда во внешнюю обработку выполнения запросов, бывают места куда дебаггером не достучатся и если консоль не помогает.
Попробуй может что путное подойдёт. Если не запрос может тогда и СКД
Большое спасибо, а я так и не победил это )))
:)
СКД хорошая штука. Я не знаю в эту ли тему, но вот возникла задача когда-то: в одном внешнем отчете есть несколько макетов (например у меня 4 там), а форма одна. Из этой одной формы выбираю какой отчет надо сформировать. Так вот остались вопросы открытыми, которые связаны с тем, как пользователи могут сохранять настройки каждого отчета. На форме кнопка выбора отчета делает такую штуку:
Процедура ДействияФормыВыбратьОтчет(Кнопка)
// Вставить содержимое обработчика.
Список = Новый СписокЗначений;
Список.Добавить(“ОсновнаяСхемаКомпоновкиДанныхПоКонтрагенту”, “01 По поставщикам (основной)”);
Список.Добавить(“СхемаКомпоновкиДанныхПоНоменклатуре”, “02 По номенклатуре”);
Список.Добавить(“СхемаКомпоновкиДанныхПоНоменклатуреПоГруппам”, “03 По группам номенклатуры”);
ВыбЭлемент = Список.ВыбратьЭлемент();
Если ВыбЭлемент <> Неопределено Тогда
СхемаКомпоновкиДанных = ПолучитьМакет(ВыбЭлемент.Значение);
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
Если ВыбЭлемент.Значение=”СхемаКомпоновкиДанныхПоНоменклатуре” Тогда
ЭтотОбъект.ПолучитьФорму(“ФормаОтчета”).Заголовок = “Отчет департамента закупок по номенклатуре”;
//СхемаКомпоновкиДанных = ЭтотОбъект.ПолучитьМакет(“СхемаКомпоновкиДанныхПоНоменклатуре”);
КонецЕсли;
Если ВыбЭлемент.Значение=”ОсновнаяСхемаКомпоновкиДанныхПоКонтрагенту” Тогда
ЭтотОбъект.ПолучитьФорму(“ФормаОтчета”).Заголовок = “Отчет департамента закупок по поставщикам”;
КонецЕсли;
Если ВыбЭлемент.Значение=”СхемаКомпоновкиДанныхПоНоменклатуреПоГруппам” Тогда
ЭтотОбъект.ПолучитьФорму(“ФормаОтчета”).Заголовок = “Отчет департамента закупок по группам номенклатуры”;
КонецЕсли;
КонецЕсли;
//Из схемы возьмем настройки по умолчанию
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
//Помещаем в переменную данные о расшифровке данных
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
//Формируем макет, с помощью компоновщика макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
//Передаем в макет компоновки схему, настройки и данные расшифровки
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
Настройки, ДанныеРасшифровки);
//Выполним компоновку с помощью процессора компоновки
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,
ДанныеРасшифровки);
//Очищаем поле табличного документа
Результат = ЭлементыФормы.Результат;
Результат.Очистить();
//Выводим результат в табличный документ
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
КонецПроцедуры
Видимо сохранять настройки только ручками, ведь по умолчанию они привязываются к форме.
Но все же раз отчеты разные, почему бы не создать 4 формы?
Все отчеты по их смыслу из “одного” магазина
Почему б их не держать в одной форме?
В принципе все эти 4 отчета можно было б заменить одним, но мы порой вынуждены выполнять желание “заказчика” – вот я и вывел ему 4 отчета, хотя по смыслу как в юмореске… мы порой думаем что говорим об одном, а на самом деле об другом… или хотим о другом, а получается все об одном и том же
В таком случае с настройками придется работать программно.
Кстати, если источники данных одинаковы, то можно использовать несколько вариантов отчета в одной схеме компоновки данных.
Информация актуальная, спасибо!
Да, очень полезная информация (уже получал этот ответ, но ещё раз подтверждаю)!
И, как я понимаю, в случае, когда нужны остатки на начало и конец периода, а обороты не требуются – применяем тот же подход.
Совершенно верно.
Очень познавательно