#0
by Pereliviya
День добрый! Помогите оптимизировать запрос. При формировании отчета вылетает "Недостаточно памяти". Если ставить Отбор по определенной номенклатуре, то работает. На чем рабочая база не скажу. Но тестовая, на которой мне дали тестировать отчет - файловая. Платформа 8.2. Конфигурация Комплексная Автоматизация 1.1.14.1. Заказчик хочет все и сразу, как говорится. В одном отчете объединить несколько данных: и остатки в разрезе филиалов и расходы по филиалам, и резерв, и товар в пути с разбивкой по датам (колонкам), И Общий расход с разбивкой по датам (колонкам) и т.д. Объем данных конечно большой, но может дело в моем запросе.... Отчет написан на СКД. Вот мое творение: Ах да, при открытии отчета заполняются параметры. Все обязательные. Меня интересует это из-за большого объема информации ошибка или из-за некорректного запроса? Спасибо! Жду ваших идей.
#0
by Pereliviya
День добрый! Помогите оптимизировать запрос. При формировании отчета вылетает "Недостаточно памяти". Если ставить Отбор по определенной номенклатуре, то работает. На чем рабочая база не скажу. Но тестовая, на которой мне дали тестировать отчет - файловая. Платформа 8.2. Конфигурация Комплексная Автоматизация 1.1.14.1. Заказчик хочет все и сразу, как говорится. В одном отчете объединить несколько данных: и остатки в разрезе филиалов и расходы по филиалам, и резерв, и товар в пути с разбивкой по датам (колонкам), И Общий расход с разбивкой по датам (колонкам) и т.д. Объем данных конечно большой, но может дело в моем запросе.... Отчет написан на СКД. Вот мое творение: Ах да, при открытии отчета заполняются параметры. Все обязательные. Меня интересует это из-за большого объема информации ошибка или из-за некорректного запроса? Спасибо! Жду ваших идей.
#2
by mikecool
"Недостаточно памяти" просто может быть оттого, что ограничили память на процесс на скуле, да и раб. процесс у 1С имеет всего 2 гига для работы
#3
by aleks-id
>>раб. процесс у 1С имеет всего 2 гига для работы я думал все на х64 давно перешли...
#7
by Pereliviya
Пожалуйста, запрос: ВЫБРАТЬ ВЫБРАТЬ ВЫБРАТЬ (ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПриходныйОрдерНаТовары) СГРУППИРОВАТЬ ПО ТоварыНаСкладахОбороты.Номенклатура ВЫБРАТЬ (ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах) СГРУППИРОВАТЬ ПО ТоварыНаСкладахОбороты.Номенклатура, ВЫБРАТЬ И (ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах) СГРУППИРОВАТЬ ПО ТоварыНаСкладахОбороты.Номенклатура ВЫБРАТЬ И (ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах) СГРУППИРОВАТЬ ПО ТоварыНаСкладахОбороты.Номенклатура ВЫБРАТЬ И (ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах) СГРУППИРОВАТЬ ПО ТоварыНаСкладахОбороты.Номенклатура ВЫБРАТЬ ВЫБРАТЬ ВЫБРАТЬ ВЫБРАТЬ ВЫБРАТЬ ВЫБРАТЬ ВЫБРАТЬ
#8
by mikecool
+4 Основным преимуществом 64-разрядного сервера "1С:Предприятия 8.1" является возможность использования практически неограниченного адресного пространства, выделяемого рабочему процессу. уже не так ))
#11
by Pereliviya
в моем случае нужно полное соединение, НО, если поставить левое, все та же проблема. Хотя..... ща попробую внутреннее поставить...
#14
by Aprobator
вот это в мемориз - однозначно. Во первых какая еще сумма у регистра сведений? Во вторых условие в праметры виртуальной таблицы.
#17
by Pereliviya
учитываю все рекомендациии.... ща пробую все условия внуть вирт таблице установить и убрать группировки... сделаю. отпишусь.
#18
by Aprobator
+ 100500 сначала все по условию по периоду выбирается в ВТ. А потом уже из нее по условиям раскладывается куда надо.
#19
by Axel2009
+ в данном случае полное объединение лучше сразу было оформить через объединить все. тогда полное соединение отработает. а вот это ВЫБРАТЬ Остатки.Номенклатура, будет NULL возвращать если нет остатков по номенклатуре. запрос отработает некорректно
#22
by Pereliviya
группировку по дням использую в СКД настройках установила все условия во вирт.таблицах - не помогло. изначально так и работало через объединение, но все равно было недостаточно памяти. Переделала на соединение для проверки, но итог один.
#23
by prog01
какая полатформа? загрузки документа. по причине: Ошибка преобразования данных XDTO: НачалоСвойства: { Форма: Элемент Тип: { @
#24
by ptiz
" группировку по дням использую в СКД настройках" - как именно, если ты не вытащил это поле в конечной таблице? У тебя все данные умножаются на кол-во дней.
#26
by Pereliviya
вот самый первый запрос через объединение ВЫБРАТЬ ИтогТаблицы.Номенклатура КАК Номенклатура, ИтогТаблицы.Номенклатура.ВхождениеВМатрицу КАК ВхождениеВМатрицу, (ВЫБРАТЬ 0, 0, СУММА(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0 0, 0, 0, СУММА(ТоварыНаСкладахОборотыПриход.КоличествоПриход), 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0 (ТоварыНаСкладахОборотыПриход.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг ИЛИ ТоварыНаСкладахОборотыПриход.Регистратор ССЫЛКА Документ.ПриходныйОрдерНаТовары) 0, 0, 0, 0, СУММА(ТоварыНаСкладахОбороты.КоличествоРасход), 0, 0, 0, 0, 0, 0, 0, 0, ТоварыНаСкладахОбороты.ПериодМесяц, NULL, 0 ГДЕ (ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах) 0, 0, 0, 0, 0, СУММА(КемеровоРасход.КоличествоРасход), 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0 ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода {(&НачалоПериода)}, &КонецПериода {(&КонецПериода)}, Авто, , Склад В ИЕРАРХИИ (&ФилиалКемерово)) КАК КемеровоРасход ГДЕ (КемеровоРасход.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг ИЛИ КемеровоРасход.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары ИЛИ КемеровоРасход.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах) СГРУППИРОВАТЬ ПО КемеровоРасход.Номенклатура 0, 0, 0, 0, 0, 0, СУММА(РасходТомск.КоличествоРасход), 0, 0, 0, 0, 0, 0, NULL, NULL, 0 ИЗ РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода {(&НачалоПериода)}, &КонецПериода {(&КонецПериода)}, Авто, Склад В ИЕРАРХИИ (&ФилиалТомск)) КАК РасходТомск ГДЕ (РасходТомск.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг ИЛИ РасходТомск.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары ИЛИ РасходТомск.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах) СГРУППИРОВАТЬ ПО РасходТомск.Номенклатура 0, 0, 0, 0, 0, 0, 0, СУММА(РасходНК.КоличествоРасход), 0, 0, 0, 0, 0, NULL, NULL, 0 ИЗ РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода {(&НачалоПериода)}, &КонецПериода {(&КонецПериода)}, Авто, Склад В ИЕРАРХИИ (&ФилиалНК)) КАК РасходНК ГДЕ (РасходНК.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг ИЛИ РасходНК.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары ИЛИ РасходНК.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах) СГРУППИРОВАТЬ ПО РасходНК.Номенклатура 0, 0, 0, 0, 0, 0, 0, 0, СУММА(ОстаткиКемерово.КоличествоКонечныйОстаток), 0, 0, 0, 0, NULL, NULL, 0 ИЗ 0, 0, 0, 0, 0, 0, 0, 0, 0, СУММА(ОстаткиНК.КоличествоКонечныйОстаток), 0, 0, 0, NULL, NULL, 0 ИЗ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, СУММА(ОстаткиТомск.КоличествоКонечныйОстаток), 0, 0, NULL, NULL, 0 ИЗ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, СУММА(ЦеныНоменклатурыСрезПоследних.Цена), 0, NULL, 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ЗаказыПоставщикамОстатки.КоличествоОстаток
#31
by ptiz
Ты прикинь примерно, сколько строк получится в выходной таблице. Выведи отдельно ТоварВПути3 и итоговую таблицу без соединения с ТоварВПути3.
#33
by ДемонМаксвелла
дело не в запросе, даже группировка в запросе не имеет особого значения. СКД нормально обрабатывает миллионы строк, а вот вывести их в табличный документ не может, т.к. он целиком находится в оперативной памяти, и памяти клиента не хватает.
#36
by ДемонМаксвелла
делать вывод СКД программно, контролировать количество строк, прекращать вывод не дожидаясь "Недостаточно памяти". убрать расшифровку - слегка поможет.
#39
by ДемонМаксвелла
оценивать нужно количество строк в отчете, а не в исходных таблицах. при соединении двух таблиц по 1000 записей уже технически возможно получить миллион.
#41
by ДемонМаксвелла
сделай вывод СКД программно, количество строк в итоговом отчете посчитай в таком цикле:
#42
by ptiz
У неё идет соединение этих двух таблиц, так что записей будет больше. Но если "товар в пути 2366 строк", то не намного больше. Не должно падать. Либо кол-во строк неверно посчитано.
#43
by Kashemir
Проблема озвученная в является клиентской проблемой и наиболее вероятно возникает при получении слишком большого количества результатов - прав. Но есть и второй вариант - размер самой базовой настройки может превысить некое фиксированное значение - до выполнения запроса даже дело не дойдет. У меня был такой опыт - запрос для схемы строился на основе справочника показателей - сотня таблиц объединения показателей с ~400 параметрами - слет по памяти. Причем сам процесс 1с сам по себе отжирал при этом не более 400мб
#44
by Axel2009
ВЫБРАТЬ прикольное перемножение данных. если номенклатура поступает 2 раза, то на выходе получится 4096 строк
#45
by Aprobator
это как? Обращение вроде к виртуальной таблице регистра свертку делает. Другое дело что услове ГДЕ тут нафиг не нужно. Не может в остатках 0 быть.
#48
by Axel2009
поторопился.. масштабы поменьше но все же ВЫБРАТЬ (ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах) СГРУППИРОВАТЬ ПО ТоварыНаСкладахОбороты.Номенклатура, ВЫБРАТЬ эти 2 запроса при соединении по номенклатуре что сделают?
#49
by Aprobator
поскольку свертка есть в обоих подзапросах, то умножение будет при соединении только по номенклатуре, если будет еще добавлено и соединение по периодам, то ничего страшного не вижу.
#51
by Pereliviya
Периоды выбраны для разных целей. Поле "ПоМесяцам" разбивает Расход по месяцам за выбранный период, поле "ТоварВПути" разбивает на конкретные даты заказанных товаров, но еще не поступивших, т.е. в пути. Вот пример отчета: Если есть другие варианты решения подобной задачи буду рада увидеть и применить в своей задачи.
#55
by Axel2009
да без разницы для каких целей. если поступлений будет 3, а отгрузок будет 5, как их выводить в отчете?
#60
by Kashemir
3 год на форуме и спрашиваешь зачем ? Открой параллельно диспечер задач и следи за потреблением памяти - обрати внимания на максимальное значение перед вылетом ошибки
#63
by Pereliviya
к сожалею да. Файловая. При формировании отчета сжирает всю память. Память доходит до 3,95 ГБ Физическая память всего 4086 свободно 4 - это при пике (ошибке).
#64
by Fragster
потребление памяти надо смотреть процессом, а не "физическая память". или у тебя своп выключен? а если файловая - то нужно курить запрос на предмет соединений, даже неявных (получение данных через 2 и более точек).
#65
by Fragster
удаление неиспользуемых временных таблиц, если неправильных соединений нет, просто объем такой. ну а если запрос оптимален, то тут только обработка частями или скуль помогут. кстати, реальный текст запроса может отличаться от того, что задано в конфигураторе, соответственно нужно использовать консоль отчетов, которая показывает этот реальный текст
#67
by Pereliviya
процессом доходит до 1 815 304 КБ (если я правильно поняла) в консоли отчет спокойно формируется.
#70
by Aprobator
если в консоли формируется, то автозаполнение в СКД в сад и явно указываешь какие поля доступны для вывода и условий в СКД.
#71
by ЧеловекДуши
32-ух битное, а это лихо так написать запрос, что бы он отъел все пространство до самого краха :DDDD ... Все дело в фото...
#72
by ЧеловекДуши
+Лучше начать смотреть в ту сторону, что у вас неправильное представления ведения учета, коль приходится лопатить такой объем информации :)
#73
by Pereliviya
задача состояла написать такой отчет. Базу вижу впервые, т.е. я сторонний программист. А клиенту ну захотелось в одном отчете все и сразу... ну бывает...
#78
by Pereliviya
В общем, решила проверять свой запрос частями, чтоб понять на каком моменте у меня "Рушится". Оказалось вот этот запрос: (ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах) СГРУППИРОВАТЬ ПО ТоварыНаСкладахОбороты.Номенклатура, эх....
#80
by Pereliviya
идея! :)))) "оптимизируем" условие: ВЫБРАТЬ (НЕ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров) и.... печалько.... ничто не помогает справиться.
#81
by Pereliviya
в общем, опечалила клиента. Сказала что такой отчет можно формировать только если выбирать в отборе конкретную номенклатуру :)))
#84
by Pereliviya
что с ней, что без нее.. вылетает уже ненавистное окошко с сообщением "Недостаточно памяти" :(( Правда конечно уже не на 0%, а на 18% вылетает! Прогресс! :)))
#86
by GANR
1. Нужно как угодно избавиться от такого количества полных соединений - на них уйма времени уходит. Наверняка то, что полным соединением делается можно сделать посредством "объединить все" и "выбор когда". 2. Временные таблицы, если они получаются большими и используются один раз работают в разы медленнее, чем вложенный запрос, т. к. в случае с ВТ уходит время для из записи выборки на жесткий диск. 3. Уже лучше. Вместо множества запросов к одной и той-же таблице (скажем, ТоварыНаСкладах) через объеднить все используй запрос один раз - не надо ничего объединять, надо так: ... выбор когда Склад = &ФилиалКемерово Тогда Количество иначе 0 конец КАК ОстатокКемерово, выбор когда Склад = &ФилиалНовосибирск Тогда Количество иначе 0 конец КАК ОстатокНовосибирск, ... Смысл понятен?
#90
by Fragster
да, в этом все и дело, что виртуальная таблица - на самом деле это 2-4 вложенных запроса, из-за чего план строится кривой.
#91
by GANR
Глянуть-бы, во что транслируется - нет ли там UNION ALL по всем типам регистраторов для регистра "Товары на складах"? Если так - тогда понятно почему тормоза. Боюсь, что оптимальнее, в таком случае, может быть только ПРЯМОЙ SQL-запрос.
#94
by GANR
А может попробовать так вместо : НЕ ТоварыНаСкладахОбороты.Регистратор В (ВЫБРАТЬ Ссылка ИЗ Документ.ПеремещениеТоваров) ТоварыНаСкладахОбороты.ПериодМесяц
#95
by Pereliviya
Убрала вообще регистратор и из периодичности и из условия соответственно, все равно вылетает. Правда на 65% :)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- ОСВ бух.-8-ка ошибка: для выполнения запроса недостаточно памяти - размер выборки превышает...
- Ошибка Для исполнения запроса недостаточно памяти
- SQL - Ошибка SDBL: Для исполнения запроса недостаточно памяти...
- Ошибка выполнения запроса "Ошибка при выполнении операции над данными: Ошибка SQL: Де
- СКД: СКД. Как задать устанавливать параметры вложенных схем СКД?
- СКД: СКД: Набор данных-объект, ошибка при подключении внешнего набора данных
- СКД: Как выводить СКД результат запроса в табличный документ?
- СКД: СКД: Программное обращение к полям группировки СКД
- СКД: СКД. Вычисляемое поле на основе агрегатных функций запроса...
- СКД: СКД: как программно или в схеме компоновки передать значение параметра для запроса?
- СКД: Запрос в СКД , как установить разные периоды для разных таблиц запроса ?
- СКД: СКД. Как переоределить действие кнопки "Сформировать" отчета, созданного в СКД?
В этой группе 1С
- v7: 1С++. Отбор по виду справочника
- Комплексная автоматизация 1.1.25.2: Взаиморасчеты. Детализация по документам.
- УФ - перетаскивание - что-то не догоняю
- Битрикс.Параллельная выгрузка из 1с УТ 10.3 на сайт
- УФ: Как закрыть доступ к полям списка отбора
- Перестало работать динамическое обновление после обновления платформы
- Зачем в новой Бухгалтерии 2.0.40.10 в интерфейсе неработающие ссылки на авизо?
- УФ, как сделать условное оформление на основании програмного элемента
- Проблема с ведением партионного учета в УТ 10.3
- Не получается записать программно заполненный документ "ОперацияБух"
- Контроль заказов при отгрузке в УТ 10.3
- Медленная работа запроса
- Проблема с настройкой управляемой формы
- Печать табличной части документа в word
- Выгрузка mxl в Excel с Макросом.
- УТ ред. 11 Как завести паспорт у контрагента
- ЗУП бюджет 46.2. Куда делся код ОКВЭД на титульном листе формы 4 ФСС
- Количество сетевых подключений в Windows 7 professional.
- Объединение CRM с УПП (КА) подводные камни
- ЗУП: Начисление районного коэф-та на премии сотрудницам, находящимся в декрете