1с отчет формируется висит

Обновлено: 05.07.2024

В начале эти отчеты формируются за пару секунд, после нескольких формирований начинают зависать при выводе отчета. Одно время помогала чистка кэша. Нашел тут старую тему , но там действий для решения проблемы не нашел.

Вот может у меня также " + у меня была такая нездоровая ситуация с перегрузкой документа ОперацияБух - где проводки сразу в набор записей ложатся. В итоговую таблицу по субконто попадала кривая запись с 0х0 и не один пересчет итогов ее почему-то не трогал, а выборка видела и глючила". Но КАК найти проблемный документ?

RLS скорее всего еще поди у пользователя все роли включены..

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

Ладно попробую в другой день спросить, может сегодня знающий отдыхает)

Продолжаем разговор.) Запускал проверку chdbfl(выявила и исправила ошибки), потом запускал тестирование и исправление (тоже поисправляло что было). Не помогло, теперьесли интервал не последние пару месяцев, то всё сразу зависение при выводе отчета.

Если месяцы выбирать то формирует, если за квартал период, то зависает.

Взял месяц и следующий без 1 дня и сформировало за секунду, а как только беру полные 2 месяца, то всё кирдык стопорит.

Во время проведения ТиС ставил галочку у "Пересчет итогов", так что сделано.

Открыть регистр бухгалтерии и проверить даты первой и последней проводки на кривизну

Отчет зависает при выборе периода больше 2-ух полных месяцев за любой год.

"В начале эти отчеты формируются за пару секунд, после нескольких формирований начинают зависать при выводе отчета" "Если месяцы выбирать то формирует, если за квартал период, то зависает" "Отчет зависает при выборе периода больше 2-ух полных месяцев за любой год" Что же будет дальше?

Нашел один совет: "Операции" - "Управление итогами". Обнуляем дату "Установить по:" (удаляем дату). Сделал и весь день ни разу вывод отчетов не зависал. А ведь находил кучу вариантов, где наоборот советовали устанавливать дату. Но посмотрю ещё как пойдет.

посмотри самый первый и самый последний документ. они в другие века не ускакали?

Нашел. Но при выборе в списке всех документов, при формировании выдает ошибку, конфигурация типовая. 1С накосячили столи?

Нашелся 1 документ на 2020год, но он помечен на удаление.

а удаление помеченных объектов в копии сделать и тестирование и исправление прогнать, размер базы сильно упадет? сколько сама база сейчас весит? какая самая большая таблица?

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

Хотя нет, кто то итоги перенес не пойми как на 15 год и заглючило. Глаз да глаз за бухгалтерией. А так все в норме.

какая платформа какая конфигурация какая СУБД как часто выполняются рег. процедуры на сервере СУБД? выставление расчета итогов в дату 01.01.0001 говорит системе что все итоги рассчитываются на лету из таблицы регистра бухгалетрии движения. как минимум желательно сделать пересчет итогов из конфигуратора и после этого запустить переиндексацию.

1С:Предприятие 8.3 (8.3.8.2027) Бухгалтерия предприятия, редакция 2.0 (2.0.65.44) Попробую пересчет и переиндексацию

(1) Да, в модуле менеджера отчета в составе конфигурации есть вот такой код:

(2+) Как это может влиять на формирование отчета в составе конфигурации, или формирование отчета как внешний?

нашел в инете:
|
Все дело в тексте запроса, он программно изменяется при открытии встроенного отчета. При открытии внешнего отчета событие по изменению текста не срабатывает.

Решение подойдет только для внутреннего отчета.
В модуле "ЗарплатаКадрыОтчетыБазовый", в конце процедуры "НастроитьВариантыОтчетов" и добавить новый отчет в список.
|

(5+) Только как решить эту задачу так и не понял! (
Подскажете?
(6) так бывает, когда ты Ливингстар, ответ тебе уже дали
Подскажите как описать внешний отчет в модуле менеджера, текст которого приведен в (2) ?

(12) не понятно что делать что бы работал внешний отчет!

Я скопировал отчет ОтчетыПоСотрудникам в составе конфигурации. Назвал его ОтчетыПоСотрудникамНовый.
Добавил вот это.

Как к копии отчета ОтчетыПоСотрудникам, названному ОтчетыПоСотрудникамНовый вернуть варианты отчетов?
Мда!
Никто не знает почему сохраненный отчет как внешний не показывает данные в ЗУП 3.1.2.183.
Или почему у созданной копии отчетов теряются варианты настроек .
(14) Наверное нужно сперва понять как регистрируется внешний отчет в БСП. Куча примеров в интернете
Те строчки из (13) тебе врятли нужны, это регистрация варианта встроенного отчета.
(17) Понял.
Но дело не в добавлении отчета в состав конфигурации как внешнего.
А в формировании внешнего отчета. Он не выдает данные.

(17) Я так сделал, как в (13) но отчет открывается без вариантов отчета вообще (((

У меня задача. Сохранить отчет ОтчетыПоСотрудникам как внешний, и использовать его. Что бы он выводит данные. Пока он не формируется.
Зачем мне его регистрировать в БСП? Он же внешний, я его не добавляю во внешние отчеты и обработки.

(19) Отчет имеет 4 макета! Что ты мозг выносишь людям.
Давай начнем с того что как ты хочешь выбирать с каким макетом надо работать?
(21) Я никому не выношу мозг.
Я сделал копию отчета ОтчетыПоСотрудникам внешним
и хочу что бы им работали как копией, что то изменив в ней.
Все макеты и нужно использовать что в типовом отчете.

(23) Ну то есть хотите сказать что, что бы сохранить
отчет на диск ОтчетыПоСотрудникам, изменив его несколько
и использовать как дубль отдельно в ЗуП 3.1.2.183 это
совсем не просто.
Там нужно прямо много много менять типовой код?
Вроде задача то элементарная?

Это можно сделать или нет, тогда такой вопрос?

Или сверх новые технологии 1с сейчас для такой простейшей операции, заставляют очень долго и долго разбираться и трудиться. Что бы сделать такую мелочь?

Пункты (22) и (23) не не понятны мне.
Хочется по факту разговора. Не лишних рассуждений!
Я не знаю как сделать, то что в (0) по этому спросил на форуме в надежде что кто то подскажет, кто знает. Задача элементарная!

(26) Новые технологии подразумевают знание БСП
в твоем случае это "БСП Варианты отчетов".

Либо делай 4 отдельных внешних отчета и пихай в каждый по одному макету.

И в качестве варианта будешь открывать отдельный файлик, удобно правда? ))
(28) Нужно одним отчетом его использовать, как копию измененного типового.
(31) если ты не хочешь его подключать к БСП как внешний отчет, а использовать просто как открываемый файлик . то тогда и пиши весь этот гемор в своем отчете, инициализацию макетов выбор макета и тд и тп.
Еще раз спрашиваю, как 1с должна догадаться какой макет тебе надо скомпоновать и вывести?
(32) На форме отчета есть настройка, варианты отчета. Это и определяет какой макет будет сформирован и с какими данными.
(32) Я хочу сделать как угодно.
Важно что бы это было правильно.
И что бы отчет работал как копия, типового.
Которую можно было бы видо изменить.
Пока я не вижу цели и пути, что и как правильно делать!
(32) Подключение отчета к БСП, это вы имеете ввиду подключение его во внешние отчеты и обработки?
С добавлением соответсвующего кода для этого в модуль объекта?
(34) разницу между макетами и вариантами настроек СКД понимашь?
(37) вижу 8 вариантов отчета СКД и 4 макета
в типовом отчете ОтчетыПоСотрудникам
(38) Ну зачем мне подключение отчета как внешнего во внешние отчеты и обработки? Что мне это даст, если он не формируется?

(41)
Я добавил нужный код в модуль объекта отчета и встроил его во внешние отчеты и обработки. Но он как не выводил жанные так и не выводит.

Вы по сути ничего не сказали.

(42) варианты отчета в другом месте находятся. Ты их не скопировал. Поэтому их и нет.
Может нужно какой регистр сведений заполнить или справочник?
Подскажите пожалуйста.
(43) Нет где? В копии отчета что я сделал в составе конфигурации?
Там нет да.
А во внешнем отчете что я добавил во внешние отчеты и обработки они есть, только он не выводит данные.
в ЗУПе все отчеты получают данные из пару супер-запросов, которые подставляются в схему при инициализации отчета. Запросы где-то в общих модулях лежат, на сколько я помню. Если к ним не обратиться, то получишь пустой отчет.
(46) Но отчет же типовой. Как он может к ним не обратиться?
(47) ну отладчик включи уже и посмотри, как он может к ним не обратиться. Плохо код перенес значит
(48) я вообще ничего не переносил, сделал копию типового отчета и все
никто ничего не знает, вокруг да около каждый бегает

(50) Из-за того что ты не знаешь как работает типовая конфа на БСП, не знаешь как работает БСП, ты не понимаешь как работает СКД, не знаешь как работает отладчик, предполагаю что и не знаешь как правильно сохранять отчеты и обработки в файлы, не хочешь читать что тебе тут уже разжевали, все бегают вокруг да около.
Ждешь что тебе пришлют готовый отчет? ты наверное слез с типовой УТ 10.3 и решил что в новых конфигурациях прокатят те же грабли.

Кроме кучи восклицательных знаков и "Отчет не работает" от тебя никакой информации.

Совет: закрой пофигуратор и вызови специалиста.

(51) Какой готовый отчет?
У меня один внешний другой встроенный во внешние отчеты и обработки.
(51) вся информация у меня изложена
повторюсь, вы бегаете вокруг да около, по делу ничего
поддержка форума, наводящими советами.

(53) Отчет ОтчетыПоСотрудникам
все внятно расписано в ветке что нужно, ну нет ответа и нет, сам найду его.

я один встроил в конфигурацию, прописал его как в (13)

второй сохранен на диск как внешний, при его открытии есть виды вариантов отчета но от не показывает данные, не формирует их

Методика расследования причин медленной работы операции на примере открытия управляемой формы

Для начала необходимо убедиться, что проблема стабильно воспроизводится (в одинаковых условиях) и что все пункты с описанием применения методики выполнены. Для этого можно сделать следующее:

Сбор и анализ стандартных данных

Разберем пример для операции открытия формы документа "Табель учёта рабочего времени".

Мы организовали тестовый стенд, на котором наша проблема воспроизводится под пользователем с полными правами. К этому стенду мы можем подключаться как напрямую с удаленной рабочей станции в режиме тонкого клиента, так и в режиме веб-клиента через публикацию на веб-сервере.

Настройка технологического журнала на клиенте может быть такой:

Фильтр по имени процесса для нашей задачи избыточен и нужен для того, чтобы в случае ошибочной настройки такого лога на сервере не получить сбор всех событий для серверных процессов, что может занять значительный объем. С другой стороны, при осознанном включении такой настройки на сервере (если клиентские приложения запускаются там же, где может быть развернут и сервер приложений 1С:Предприятие) мы в отдельном каталоге Client_Full увидим данные только клиентских приложений (хотя при этом подкаталоги других процессов тоже будут созданы, но они буду пустыми). Свойство Interface не собираем, так как оно дублируется более "человек читаемым" свойством IName (хотя даже последнее нам в данном примере не обязательно нужно).

После настройки технологических журналов и проверки корректности замера времени ОценкиПроизводительности БСП выполняем повторение операции с включенной отладкой.

Замеры времени средствами БСП будут выглядеть следующим образом:


Везде далее будем рассматривать верхний в этом списке замер от последнего повторения, его длительность 13,022 секунды.

Замер отладчиком конфигуратора изображен на следующем рисунке:


Как видно, сумма длительности всех строк, связанных с открытием формы составила всего 1,523 секунды.

'00010101' + ТекущаяУниверсальнаяДатаВМиллисекундах() / 1000

а для миллисекунд взять остаток от деления на 1000 (то есть просто последние три цифры, обратите внимание на "779" на следующей картинке).


Точное время начала замера (минут:секунд.миллисекунд): 25:10.779


Точное время окончания замера (минут:секунд.миллисекунд): 25:23.801

Найдем теперь записи технологического журнала, соответствующие данному замеру, они будут примерно следующими:


Здесь видно, что соответствующий нашему замеру серверный вызов SCALL завершился примерно за 10,1 секунды, это соответствует интервалу между запросом VRSREQUEST и ответом VRSRESPONSE.
Причем время начала замера почти совпадает с началом вызова, то есть событием VRSREQUEST, что собственно ожидаемо, так как замер БСП начинается на клиенте и должен быть непосредственно перед командой открытия формы. А вот окончание вызова сервера случилось раньше, чем окончание замера, что значит, что эта разница во времени пришлась на часть работы клиентского приложения.

Итак, промежуточный итог по длительностям замеров разными способами показывает соответствие нашей ситуации ограничениям и выполнение неравенства: 1,5 < 10,1 < 13.

Стандартными инструментами не удается увидеть причину проблем низкой производительности работы (открытия) управляемой формы, поэтому воспользуемся следующими помощниками:

  • Отладчик операционной системы: Windows Performance Recorder для сбора метрик и Windows Performance Analyzer для их визуализации и анализа;
  • Анализатор сетевых протоколов Wireshark или прокси-сервер Fiddler Web Debugger.

Установим и запустим Windows Performance Recorder ("C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\WPRUI.exe"), укажем настройки:


После того, как их подготовили, перейдем в тонкий клиент 1С, откроем форму списка документов и непосредственно перед воспроизведением проблемной операции запустим сбор данных WPR (кнопка Start).

После открытия формы в тонком клиенте запись можно остановить и открыть ее для анализа. В открывшемся окне найдем по PID 5508 (его можно определить в диспетчере задач ОС или по логам ТЖ) наш тонкий клиент 1С и должны получить примерно следующую картинку:


По данным Windows Performance Analyzer видим, что у нас нет серьезной нагрузки по дискам, а поток тонкого клиента потребляет 100% ЦП на протяжении длительного времени вплоть до завершения замера.

Запомним этот результат и проанализируем траффик.

Запустим Wireshark и повторим проблемную операцию в тонком клиенте 1С:Предприятие с прямым подключением к серверу приложений 1С.

При сборе данных с помощью Wireshark (и отбору по пакетам с сервером-источником равным серверу приложений 1С:Предприятие) запуск открытия формы документа будет выглядеть примерно так:


Здесь каждая такая строка – это пакет (или если точнее, то "кадр", frame), который в свою очередь является частью общего большого пакета поверх протокола TCP (PDU – Protocol Data Unit). Если их сложить, получим пакет около 70 Кб. Стоит обратить внимание, что это будет размер с учётом сжатия, а если без него – то должны получить что-то около 2500 – 3500 Кб данных.

Устанавливаем и запускаем Fiddler, на панели инструментов ищем "Browse", выбираем любимый браузер и запускаем в нем необходимое нам приложение (информационную базу 1С:Предприятие). После запуска переходим в форму списка документов (готовимся воспроизвести сценарий), возвращаемся в Fiddler и включаем сбор траффика (кнопка F12), переходим в браузер и открываем форму документа. После её открытия сбор траффика можно отключить и заняться его анализом. Мы должны получить примерно следующее:


В данном дампе достаточно быстро находится относительно большой пакет искомого размера, выбираем его в списке слева, а в правой части окна переключаемся на страницу Inspectors, выбираем там просмотр заголовков (Headers), и так как у нас пакет является сериализованным json (Content-Type: application/json), то попросим Fiddler десериализовать его для нас.

После этого в окне предпросмотра отобразится древовидная структура ответа (response), которая передается с сервера на клиент и содержит так много данных. Далее нам необходимо проанализировать её и найти наиболее проблемные места. Может помочь кнопка Expand All, которая развернёт все элементы дерева, но это может занять некоторое время. Чтобы его сократить, сначала поймем, что именно нужно искать.

Подведем промежуточный итог:

  • Проблем с медленной работой прикладного кода 1С или запросов нет.
  • Большая часть времени открытия формы состоит из сетевого взаимодействия.
  • Размер пакета с формой подозрительно велик.
  • После получения пакетов имеем высокую утилизацию ЦП тонким клиентом 1С (или веб-клиентом).
  • Потерянное время находится где-то между окончанием/началом работы прикладного кода 1С и сетевой передачей.

Из всех этих пунктов для нас наиболее полезным и требующим дополнительного анализа является тезис "Размер пакета с формой подозрительно велик".
Какие могут быть причины для такой ситуации? В общем случае их несколько:

  • Сама по себе большая и сложная форма с большим количеством экранных элементов и реквизитов. Наверное, редкий и точно не очень правильный случай, лучше такого избегать на этапе проектирования систем.
  • Простая форма, но много данных в реквизитах формы (включая данные объекта), в особенности:
    • Хранилище значения, Строка(0);
    • Большие коллекции (Таблица, Дерево, Список);
    • Произвольный тип (концентрация проблем).

    Так как наша проблема (у вас может быть по-другому) воспроизводится даже при очень небольшом количестве данных в ТЧ, и реквизитов у документа (т.е. объекта формы) совсем не много, то их мы не рассматриваем. Остаются реквизиты формы, не равные основному реквизиту "Объект".

    Среди них находится несколько реквизитов, имеющих произвольный тип. Могут выглядеть так:


    Сопоставляем эти данные с уже собранным ранее замером с помощью конфигуратора, и видим заполнение этих структур достаточно большим количеством элементов (например, можно 5059 в реквизите "СвойстваИзмерений").
    Снова вернемся к дампу траффика в Fiddler и найдем там элемент, отвечающий за параметры формы (response/props). Увидим там примерно следующее:


    И если развернем далее эти элементы, убедимся, что их там несколько тысяч, каждый из которых представляет собой вложенную структуру вида:


    Найдем прикладной код, заполняющий эти параметры, и убедимся, что данных там действительно достаточно много (2-3 Мб), и они представляют собой большое количество сложных вложенных структур.

    Отключив заполнение данных реквизитов, убеждаемся, что проблема с производительностью формы исчезает, что значит, что причина была найдена правильно.

    Выводы и рекомендации

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

    Для того чтобы оценить степень влияния всех факторов, которые имеют значения в этом процессе, можно сделать несколько тестов (замеров), изменяя эти факторы и оценивая корреляцию их значений и длительности. В нашем случае причиной проблем были структуры, хранящие данные справочников территорий и условий труда, поэтому изменяли количество этих элементов и пробовали замерять передачу с клиента на сервер этих данных (процедура ДанныеДляРедактированияВХранилище).

    В следующей таблице приведены результаты таких замеров в нашем примере. Сразу следует оговориться, что не стоит никаким образом рассматривать в ней абсолютные значения, так как это будет зависеть еще и от конфигурации компьютера, сети, версии платформы и многого другого, связанного именно с нашим примером. Для нас же важны зависимости и их характер (линейная, экспоненциальная и т.д.). Предлагаем вам проанализировать их самостоятельно (или даже повторить замеры на актуальной версии платформы в вашей среде).


    Принимая во внимание полученные таким образом данные, можно предложить следующие возможные пути решения:

    Читайте также: