Не удалось сформировать отчет пустой результат 1с
Если вам часто приходится вести учет в системе 1С, тогда вам приходится время от времени анализировать хозяйственную деятельность своего предприятия. В данной системе аналитика осуществляется штатными средствами, а статистика выводится с помощью отчетов. Опытные пользователи регулярно занимаются сбором информации. Однако в результате различных ошибок, случаются сбои. Если не формируется отчет в 1С, тогда затрудняется анализ и сбор статистических данных.
Такая деятельность имеет несколько целей:
- постоянное совершенствование системы;
- устранение внутренних ошибок;
- повышение производительности;
- оптимизация внутренних ресурсов.
Формирование отчетов на платформе 1С.
Особенности формирования отчетов во многом зависят от выбранной конфигурации. Пользователи самостоятельно используют доступные инструменты для решения поставленной задачи. Однако в целом предлагаемый набор всегда одинаков, поэтому достаточно освоить общие принципы.
Выделяют несколько категорий отчетов в системе 1С:
- аналитика остатков, запасов и движения;
- исследование продаж и валовой прибыли;
- ведение бухгалтерии и контроль финансовых операций;
- производственно-оперативные действия и так далее.
Перед тем как пользоваться отчетом, в базе к тому моменту должна накопиться определенная документальная история. В некоторых случаях это становится проблемой, из-за которой пользователи не могут получить необходимый отчет для своих исследований. Информация будет более объемной и подробной, если вы уже достаточно давно работаете в системе 1С.
Возможные причины и устранение проблемы.
Наличие базы данных и истории – это необходимый, но далеко не самый полный набор средств для формирования отчетов. Нельзя об этом забывать, иначе могут возникать определенные сложности. Опытные пользователи обычно хорошо используют доступные инструменты для анализа статистических данных.
Распространенной проблемой становится неправильное использование фильтров. Настройка позволяет точнее получать ту или иную информацию, однако она в полной мере должна соответствовать особенностям базы данных. Если вы не знаете, как работать с расширенными отборами, то не стоит выставлять параметры. Именно это приводит к трудностям во время эксплуатации программного обеспечения!
Приветствую. в очередной раз столкнулся с непонятной проблемой, которую пока не получается побороть.
Есть простой запрос, без параметров, без отборов, без любых ухищрений, просто запрос, собирающий дубли в справочнике. конкретно выдает "тип дублирования, оригинальная запись, запись дубль" всё. сам запрос рабочий, в консоли запросов выполняется и выдает нужный результат, но при копировании его в СКД и попытке сформировать отчет, получаю пустой результат при любых комибанциях группировок и выбранных полей. повторюсь, никаких параметров или отборов нет, запрос тупейший, но через консоль запросов всё ок, а черезе СКД пусто.
Конфигурация самописная, обычное приложение, платформа 8.3.10.2580.
В какую сторону мне смотреть?
Заранее спасибо
Это не ответ на ваш вопрос, но я бы запрос разбил на 3 части и объединил через "ОБЪЕДИНИТЬ ВСЕ", Условия на неравенство ссылки и кодов - избыточны друг к другу.
Я уже делал сотни различных отчетов различной сложности, но с такой проблемой сталкиваюсь впервые
(4) как я написал в топе, запрос тупейший и рабочий, обычный поиск дублей, поэтому и не стал даже выкладывать. но вот он
Собственно в отчете нужно вывести в группировке тип дублирования, а в детальных записях сами дубли с оригиналом. ничего сложного. Но в СКД пусто)
(9) ну так может тупейшая ошибка в скд надо настроить отчет выбрать детальные запписи установить выбранные поля, одного запроса недостаточно.. читали мануал по скд?
(11) отчет настроен. даже если я убираю все группировки и добавляю только ТипДублирования и в выбранные поля добавляю только ТипДублирования, должен увидеть просто 3 строчки с тремя возможными типами из запроса, но в отчете пусто. вижу только заголовок поля, но ни одной записи.
Я не первый раз делаю отчеты, я уже всё в нем прошерстил на предмет тупейших ошибок. Запрос проверил - работает, выбранные поля добавлены, отборов нет, параметров нет, группировки/детальные записи добавлены. Блин, да в нем даже ошибиться негде, настолько он простой))) Такое ощущение, что в СКД запрос возвращает пустой результат. в режиме предприятия через "Изменить вариант" пробовал различные варианты группировок и выбранных полей, результат всегда один - вижу заголовки в соответствии с тем, что настроил, но не вижу записей.
Это не ответ на ваш вопрос, но я бы запрос разбил на 3 части и объединил через "ОБЪЕДИНИТЬ ВСЕ", Условия на неравенство ссылки и кодов - избыточны друг к другу.
(10) как ни странно, но Ваш совет и помог))) переписал запрос, разнес на несколько частей. результат запроса тот же, но теперь он отображается в отчете. спасибо!
ЗУП 3.1.2.121, платформа 8.3.9.2033
Потребовалось сделать доработку отчета "Отчеты по сотрудникам" (вариант "Штатные сотрудники"). Отчет, сохраненный в файл, выдает пустой результат.
Были попытки:
- изменить имя отчета;
- изменить имя варианта;
- добавить сохраненный отчет в "Доп. отчеты и обработки";
- в дереве конфигурации скопировать отчет с привязкой к подсистеме и функ. опциям (с обновлением идентификаторов метаданных в режиме 1С:Предприятия);
- создание нового внешнего отчета с переносом свойств, модулей, макетов из отчета конфигурации.
Все попытки приводят к пустому результату. Что нужно сделать, чтобы работал сохраненный отчет?
В отладке необходимо добраться до "Истинного" макета с параметрами и всем прочим. А затем анализ кода запроса и параметров, консоль отладки или консоль отчета.
(3)В дереве конфигурации выделяю нужный отчет и "Сохранить в файл". И этот отчет из файла уже выдает пустой результат.
(5) Пробовал и с тем же отбором, что и для отчета из конфигурации, и совсем без отбора. Отчет из конфигурации выдает результат, внешний - никак.
(6)и под тем же пользователем? может прав нету? Может из-за того что давно не можете решить вопрос уже не тот отрываете? Человеческий фактор
Это что-то с пользовательскими настройками и прочее. Сохраненный отчет (как внешний) всегда показывает данные если он в базе показывал данные
Ну или посмотрите через отладку, что и как
(7) В одном сеансе открыты рядом внутренний и внешний отчеты. Один с данными, второй пустой.
Было предположение, что дело в модуле менеджера, но, судя по замерам, он не участвует в формировании отчета.
попробуйте под другим пользователем. Это что-то с настроек отчета не срабатывает
А если скопировать отчет в дерево конфигурации (скопировать отчет и будет Отчеты по сотрудникам1 ) работает?
Проверено на базе клиента и на демо-базе.
А если скопировать отчет в дерево конфигурации (скопировать отчет и будет Отчеты по сотрудникам1 ) работает?
(10) Тогда еще что может быть?!
Наверное реквизит какой-то не заполненный. Откройте форму отчета в режиме конфигурация и посмотрите на вкладку реквизиты.
Потом отладкой проверьте заполнение этих реквизитов
(11) В том и проблема, что непонятно, куда еще смотреть. В отчете есть только СКД с вариантами отчета, табличные макеты и модуль объекта.
Все дело в тексте запроса, он программно изменяется при открытии встроенного отчета. При открытии внешнего отчета событие по изменению текста не срабатывает.
Столкнулся с такой же проблемой. Она происходит из-за того, что новый отчет неизвесен системе и программа не может получить схемуКД.
Решение подойдет только для внутреннего отчета.
В модуле "ЗарплатаКадрыОтчетыБазовый", в конце процедуры "НастроитьВариантыОтчетов" и добавить новый отчет в список.
ВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ОтчетыПоСотрудникам);
ВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ОтчетыПоСотрудникамНовый);
ВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.РегистрНалоговогоУчетаПоНДФЛ);
Но сама процедура "ВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ОтчетыПоСотрудникам)" по которой происходит переход, описывает отчет в модуле менеджера. Как вариант, проблема решится если описать внешний отчет, в модуле менеджера.
Есть еще способ. Ползете в общую форму отчета, ставите точку останова перед запуском фонового задания по кнопке "сформировать" в типовом отчете, далее через ctrl+F9 лезете в схему скд и копируете из нее текст запроса. Далее делаете сохранить отчет во внешнюю обработку и в нем заменяете текст запроса. Вуаля, отчет заполняется и можете его модифицировать. Наверное, данный пост уже не актуален для автора, но может кому-то поможет.
(16) Создаете внешнюю обработку, в ней заходите в СКД, далее создаете новый запрос и туда уже вставляете скопированный текст
(15) Идея интересная, но - подскажите пожалуйста подробнее.
(я просто не нашёл - где ставить точку останова).
ЗУП 3.1 (3.1.4.171) .
Платформа - 8.3.10.2466.
Нужно в отчёте "Унифицированная форма Т-2" (Личная карточка (Т-2)) - добавить вывод Северной надбавки.
А именно - значения его.
Сейчас выводится - "Оклад: ХХХ ХХХ, Районн. коэфф.: 1,30; Северная надбавка".
Нужно выводить - "Оклад: ХХХ ХХХ, Районн. коэфф.: 1,30; Северная надбавка: 30%".
Само значение (30%, в данном примере) есть (в кадровых приказах).
Но почему-то в типовой конфигурации, оно нигде не выводится.
Печатные формы "Приём на работу" Т-1, "Кадровый перевод" Т-5 - уже исправил (добавил внешние).
А вот с Т-2 - встал в ступоре.
Подскажите пожалуйста - как этот отчёт реализовать?
Общую форму отчёта (основную из свойств конфигураци) нашёл, а вот точка останова - в ней не срабатывает.
Что/как нужно делать?
(В принципе - я буду благодарен и, если скажете, как сделать в типовой, вывод значения Сев.Надбавки, в типовых формах/отчётах/. )
(18) Некоторые отчеты в ЗУП подхватывают данные из базы для построения запроса перед формированием. Поэтому, когда сохраняете отчет внешним, при его формировании, выходит пустой результат. Необходимо просто, найти место в конфигурации, когда данный отчет (типовой из конфигурации), выводится в табличное поле "Результат", и перед этим местом, зайти в отладку и через ctrl+F9 найти текст запроса, его уже скопировать и воткнуть во внешний отчет. Вот тогда внешний отчет начнет работать и его можно будет редактировать.
где нашёл СКД (запрос его) в параметре -
ПараметрыФормированияОтчета.СхемаКД.НаборыДанных.Данные.Запрос - это и есть текст его.
Текст запроса получил, ок - Спасибо за это.
Нашёл вроде и сам Табличный документ как формируется ("непрямолинейно").
Похоже - придётся теерь сам Табличный Документ (результат) - СтрЗаменить() делать.
А как теперь сделать внешний отчёт?
(чтобы он работал как встроенный - и из формы Сотрудника, и из формы списка и. )
Можете показать пример?
(ссылке на скачивание - очень буду рад)
но - както, это мало мне.
(23) Обычно типовой отчет в ЗУП не имеет своей формы и по умолчанию отрывается общая форма для отчетов. При ее создании для некоторых отчетов вызывается процедура "ПередЗагрузкойНастроекВКомпоновщик", в которой в типовом отчете прописан алгоритм, изменяющий шаблон-заготовку запроса с пустыми значениями полей на реальный запрос. Вызов этой процедуры из внешних отчетов предусмотрен только при определенных условиях, которые по умолчанию (при сохранении отчета во внешнем файле) не соблюдаются. Это приводит к тому, что в отчете применяется шаблон-заготовка запроса, которая возвращает пустой результат при любых настройках отчета. Для того, чтобы внешний отчет использовал процедуру "ПередЗагрузкойНастроекВКомпоновщик" необходимо в функции "СведенияОВнешнейОбработке", которая добавляется в модуль объекта для возможности подключения этого отчета как дополнительного отчета, прописать следующий код:
ПараметрыРегистрации.ОпределитьНастройкиФормы = Истина;
В результате внешний отчет должен давать тот же результат, что и типовой встроенный в конфигурацию отчет(после подключения такого отчета как внешнего).
Yaga_2011; Golden_Girl; user1135816; a-sel; EVorobyeva; alexalexme; Olga_Mil; jane_de_rio; + 8 – Ответить
Странности начались когда мы перешли на 8.3(8.3.3.687) Когда было 8.2 отчеты работали как часы, к ним никто не лез т.е. человеческий фактор можно исключить, после перехода на 8.3 отчеты выдают чистый лист, хотя данные есть (я запрос из СКД исполнял в консоле запросов). Как я это делал: В модуле объекта отчета в процедуре ПриКомпоновкеРезультата получаю код запроса который генерит СКД, беру его из "СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Запрос" вставляю в консоль запросов, консоль выдает данные, почему же СКД выдает чистый лист? P.S. Отбор в СКД никакой не установлен
какие настройки (которые могут повлиять на результат) могли слететь, если б настройки группировки слетели я б данные видел в любом случаи, а тут вообще нет данных, отбор я специально убрал (для чистоты эксперемента)
на закладке настройки есть что нибудь? Если там ничего не будет - то и данных не будет выведено. Оставь там только детальные записи, без группировок, выведет что нибудь?
вот что на закладке "настройки" "Оставь там только детальные записи, без группировок" не понял где это сделать?
группировка задается программно на форме отчета пользователь проставляет галки как он хочет группировать. P.S. сорри за то что задержался с ответом
А где в Компоновщике настроек можно посмотреть данные ко каким производится группировка, я в отладчике смотрю отчет.КомпоновщикНастроек, но там куча всего, Настройки, ПользовательскиеНастройки, ФиксированыеНастройки
тут видно что просто есть группировка, а надо еще глянуть какие поля должны выводится под этой группировкой
тут проблема более глубокая, более местическая так сказать, т.к. есть база с такой же конфой, но там эти отчеты работают, отчеты 1 в 1 такие же (с точки зрения конфигурации)
Чисто "семёрочный" подход. Пора переучивать пользователей. Не изобретай велосипед. Сделай все нужные группировки предварительно. А затем пользователь пусть сам решает, через "Все действия - Изменить вариант".
согласен, но не я это решаю, да и не это является причиной поломки отчета. Я сейчас ковыряю "Все действия - Изменить вариант" все там нормально, как на форме выбрать группировку так в Изменить вариант и отображается, пробовал прям там редактировать, ему пофиг (( P.S. у нас на базе включено разделение данных, по идеи какая разница но я уже не знаю на что смотреть и что может быть причиной.
на скрине видно группировку. а если зайти дальше, то в поле выбор должны быть перечислены поля, которые выводить в отчет. Вы ж программно группировки создаёте
а если вариантов группировки 5 - 6 и разный порядок следования, то что для каждого варианта сохранять настройку
разве это "семёрочный" подход разместить на форме отчета список значений с группировками и исходя из отмеченного пользователем программно формировать отчет?
По-моему трабл в том что настроики варианта где-то кешируются, я убрал код который динамически сознает группировки, заполняет значение параметров, вообще все что не стандартно, изменяю макет, присваиваю значение параметра в макете и создаю там группировку, запускаю мне отчет орет что не заполнено значение параметра (вариант выбран основной), захожу в изменить вариант, и действительно не заполнен нужный параметр, а вот какого х он не заполнен, загадка, в макете для варианта "Основной" я параметр заполнен, кстате и группировки нет если смотреть в изменить вариант, как сказать отчету что бы он взял настройки макета такие как я задал в конфигураторе?
Есть ещё пользовательские настройки. Они сильнее, чем те, что заданы в схеме. Их-то СКД и подгружает из кэша.
так он не воспринимает ни фига если я вношу изменения в "изменить вариант" если выгрузить настройки в файл из конфигуратора и загрузить их в предприятии, то он съедает настройки и все ок, и дальше если я их правлю то изменения тоже видны, но это на корню рубит то что у нас в отчет натройки программно задаются
Я программно подставлял значения параметров в ПриЗагрузкеВариантаНаСервере. Если этого не делать, то параметры не инициализировались. К примеру, так:
Это правда для случая "своей" формы для отчёта на СКД. Для случая полностью программно нарисованного отчёта на СКД играют пользовательские настройки.
на третий день проблему удалось решить. У меня при загрузке варианта вызывались процедуры которые переносили настройки с формы в макет, там обращение было к Отчет.КомпоновщикНастроек.Настройки.Структура, а надо было к настройкам которые приходят праметром в ПриЗагрузкеВариантаНаСервере. 8.3 оказалась привередливой в этом вопросе.
Описание ошибки:
Платформа 1С: Предприятие 8.3.16.1063. Клиент-серверный вариант работы базы. Конфигурация не указана, т.к., забегая вперед, не в ней проблема.
Столкнулся с проблемой при реализации отчета на СКД. При этом, как привычно - запрос для сбора данных тестировался с помощью обработки "Консоль запросов" для 1С 8. Удивительно, но получилось так, что выводимые данные результата запроса в консоли и реализованном отчете отличались. В консоли результат был верный, в СКД - не верный.
В частности, на примере, видно, что сумма из колонки "Полная оплата" в результате запроса консоли в результате отчета на СКД содержится в колонке "Без оплаты".
Было предположено, что возможно интерпретатор СКД и консоли все-таки по-разному воспринимают текст запроса. Т.е. СКД что-то еще проделывает с запросом, в результате чего получается, что в 1С 8 один и тот же запрос возвращает разные данные в консоли и СКД.
Ниже была получена еще одна подсказка, указывающая на проблему в моем случае и примерный вариант решения проблемы различия данных результата запроса в консоли и СКД
В моем случае "хитрым полем" оказалось не Минимум(), а Максимум() для поля с типом значений "Дата" (дата со временем): МАКСИМУМ(РасчетыСКонтрагентамиОбороты.Период) КАК Период
На скрине ниже видно, что СКД его не обрабатывает прямо совсем.
Вариант решения проблемы предполагался в том, чтобы заменить временную таблицу, т.к. именно временные таблицы СКД и преобразует, на вложенный запрос. И, как видно на скрине примера, как раз выражение Максимум() сдержится в тексте запроса, который помещается во временную таблицу. Как известно, вложенные запросы по методике - это наименее производительный результат для СКД, чем временные таблицы, но других очевидных вариантов не оставалось. Но вариант с вложенным запросом не решил проблему. Хотя некоторым помогает решить.
В моем запросе использовались таблицы оборотов регистров, но параметры в них не были указаны, т.к. подразумевалось, что выборка должна осуществляться за все время. Но, как отмечено в комментарии на скрине выше, СКД подставляет параметры &НачалоПериода и &КонецПериода все равно. Ситуацию усугубило (в плане поиска корня проблемы) то, что в используемом запросе уже использовались параметры с этими же названиями в других временных таблицах. После замены виртуальных таблиц оборотов регистров, на физическую таблицу, у которой нет виртуальных параметров, результат вывода данных в СКД стал таким же, как и в консоли запросов. Т.е. срабатывала ненужная выборка по периоду из-за одноименных параметров запроса &НачалоПериода и &КонецПериода и параметров виртуальной таблицы оборотов регистра накопления, хотя они явно и не указывались:
Хоть предыдущие варианты, кроме последнего, и не помогли решить конкретную проблему и не помогли, но их описание может помочь Вам в решении проблемы, т.к. они из наиболее встречающихся.
Читайте также: