|
"Недостаточно памяти" запросу. Обработка большого объема данных | ☑ | ||
---|---|---|---|---|
0
sereban
19.08.11
✎
13:28
|
клиент каждый день загружает в базу прайсы от поставщиков. Для возможности отката, если не тот прайс или еще чтото, было решено сделать документ "загрузка прайсов" с возможностью отката загрузки. Механизм такой: в документе нажимаем прочитать файл, заполняются ТЧ документа данными из файла и, если есть, соответствующими значениями реквизитов номенклатуры из БД. При проведении создается недостающая номенклатура, перезаполняется номенклатура если изменился какой то реквизит, создается установка цен. При отмене проведения все восстанавливается в обратном порядке: убивается установка цен и созданные номенклатуры, измененные номенклатуры заполняются старыми значениями из ТЧ. Возникла проблема при загрузке прайса в 67000 строк в ТЧ("Недостаточно памяти"). Убрал ТЧ, переделал на регистр сведений с одним измерением ИДНоменклатуры и кучей реквизитов. Получилось, сохраняет. При проведении делаю запрос, чтобы привязать ссылки на родителей номенклатуры и единицы измерения. Результат: "Недостаточно памяти".
Текст запроса: "ВЫБРАТЬ | Номенклатура.Ссылка, | Номенклатура.ИДНоменклатурыКонтрагента |ПОМЕСТИТЬ Номенклатура |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.ЭтоГруппа = ИСТИНА | И Номенклатура.Родитель В ИЕРАРХИИ(&Родитель) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | НастройкиЗагрузкиПрайсовСоответствиеЕдиницИзмерения.Наименование, | НастройкиЗагрузкиПрайсовСоответствиеЕдиницИзмерения.ЕдиницаИзмерения |ПОМЕСТИТЬ ЕдиницыИзмерения |ИЗ | Справочник.НастройкиЗагрузкиПрайсов.СоответствиеЕдиницИзмерения КАК НастройкиЗагрузкиПрайсовСоответствиеЕдиницИзмерения |ГДЕ | НастройкиЗагрузкиПрайсовСоответствиеЕдиницИзмерения.Ссылка = &Настройка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЗагрузкаПрайсовНоменклатура.СсылкаВБазе, | ЗагрузкаПрайсовНоменклатура.Наименование, | ЗагрузкаПрайсовНоменклатура.Цена, | ЗагрузкаПрайсовНоменклатура.Количество, | ЗагрузкаПрайсовНоменклатура.Производитель, | ЗагрузкаПрайсовНоменклатура.ОписаниеСсылка, | ЗагрузкаПрайсовНоменклатура.ИзображениеСсылка, | ЗагрузкаПрайсовНоменклатура.ИДГруппы, | ЗагрузкаПрайсовНоменклатура.НомерСтроки, | ЗагрузкаПрайсовНоменклатура.ЕдиницаИзмерения, | ЗагрузкаПрайсовНоменклатура.ИДНоменклатурыКонтрагента, | ЗагрузкаПрайсовНоменклатура.НаименованиеСтар, | ЗагрузкаПрайсовНоменклатура.ИДГруппыСтар, | ЗагрузкаПрайсовНоменклатура.ПроизводительСтар, | ЗагрузкаПрайсовНоменклатура.ОписаниеСсылкаСтар, | ЗагрузкаПрайсовНоменклатура.ИзображениеСсылкаСтар, | ЗагрузкаПрайсовНоменклатура.Создать, | ЗагрузкаПрайсовНоменклатура.СрокГодности, | ЗагрузкаПрайсовНоменклатура.СрокГодностиСтар |ПОМЕСТИТЬ ЗагрузкаПрайсовНоменклатура |ИЗ | &ЗагрузкаПрайсовНоменклатура КАК ЗагрузкаПрайсовНоменклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЗагрузкаПрайсовНоменклатура.СсылкаВБазе, | ЗагрузкаПрайсовНоменклатура.Наименование, | ЗагрузкаПрайсовНоменклатура.Цена, | ЗагрузкаПрайсовНоменклатура.Количество, | ЗагрузкаПрайсовНоменклатура.Производитель, | ЗагрузкаПрайсовНоменклатура.ОписаниеСсылка, | ЗагрузкаПрайсовНоменклатура.ИзображениеСсылка, | ЗагрузкаПрайсовНоменклатура.ИДГруппы, | Номенклатура.Ссылка КАК Родитель, | ЗагрузкаПрайсовНоменклатура.НомерСтроки, | ЕдиницыИзмерения.ЕдиницаИзмерения, | ЗагрузкаПрайсовНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмеренияТекст, | ЗагрузкаПрайсовНоменклатура.ИДНоменклатурыКонтрагента, | ЗагрузкаПрайсовНоменклатура.НаименованиеСтар, | ЗагрузкаПрайсовНоменклатура.ИДГруппыСтар, | ЗагрузкаПрайсовНоменклатура.ПроизводительСтар, | ЗагрузкаПрайсовНоменклатура.ОписаниеСсылкаСтар, | ЗагрузкаПрайсовНоменклатура.ИзображениеСсылкаСтар, | ЗагрузкаПрайсовНоменклатура.Создать, | ЗагрузкаПрайсовНоменклатура.СрокГодности, | ЗагрузкаПрайсовНоменклатура.СрокГодностиСтар |ПОМЕСТИТЬ Основная |ИЗ | ЗагрузкаПрайсовНоменклатура КАК ЗагрузкаПрайсовНоменклатура | ЛЕВОЕ СОЕДИНЕНИЕ Номенклатура КАК Номенклатура | ПО ЗагрузкаПрайсовНоменклатура.ИДГруппы = Номенклатура.ИДНоменклатурыКонтрагента | ЛЕВОЕ СОЕДИНЕНИЕ ЕдиницыИзмерения КАК ЕдиницыИзмерения | ПО ЗагрузкаПрайсовНоменклатура.ЕдиницаИзмерения = ЕдиницыИзмерения.Наименование |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Основная.СсылкаВБазе, | Основная.Наименование, | Основная.Цена, | Основная.Количество, | Основная.Производитель, | Основная.ОписаниеСсылка, | Основная.ИзображениеСсылка, | Основная.Родитель, | Основная.НомерСтроки, | Основная.ЕдиницаИзмерения, | ЕдиницыИзмерения.Ссылка КАК ЕдиницаОстатков, | Основная.ИДНоменклатурыКонтрагента, | Основная.ИДГруппы, | Основная.ЕдиницаИзмеренияТекст, | Основная.НаименованиеСтар, | Основная.ПроизводительСтар, | Основная.ОписаниеСсылкаСтар, | Основная.ИзображениеСсылкаСтар, | Основная.ИДГруппыСтар, | Основная.Создать, | Основная.СрокГодности, | Основная.СрокГодностиСтар |ИЗ | Основная КАК Основная | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения | ПО Основная.СсылкаВБазе = ЕдиницыИзмерения.Владелец | И Основная.ЕдиницаИзмерения.Наименование = ЕдиницыИзмерения.Наименование"; Запрос.УстановитьПараметр("ЗагрузкаПрайсовНоменклатура", ЗагрузкаПрайсовНоменклатура);//тз с данными регистра сведений Запрос.УстановитьПараметр("Родитель", ГруппаНоменклатуры); Запрос.УстановитьПараметр("настройка", НастройкаЗагрузкиПрайсов); |
|||
1
sereban
19.08.11
✎
13:29
|
1С - Файловый вариант.
|
|||
2
Kom-off
19.08.11
✎
13:56
|
(0) В какой момент выдается ошибка нехватки памяти, при установке параметров запроса, при выполнении запроса, при обходе его результата или при выгрузке результата в таблицу значений?
|
|||
3
Reaper_1c
19.08.11
✎
13:59
|
Сервер купить - дешевле.
|
|||
4
dimaldinho
19.08.11
✎
14:00
|
А в цикле по 1000 штук обрабатывать?
|
|||
5
jump if zero
19.08.11
✎
14:03
|
УНИЧТОЖИТЬ ЗагрузкаПрайсовНоменклатура
перед последним запросом |
|||
6
sereban
19.08.11
✎
14:07
|
(2) При выполнении
(5) Пробовал Уничтожить, не помогает; |
|||
7
sereban
19.08.11
✎
14:10
|
Убрал совсем ЗагрузкаПрайсовНоменклатура сделал так:
"ВЫБРАТЬ | Номенклатура.Ссылка, | Номенклатура.ИДНоменклатурыКонтрагента |ПОМЕСТИТЬ Номенклатура |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.ЭтоГруппа = ИСТИНА | И Номенклатура.Родитель В ИЕРАРХИИ(&Родитель) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | НастройкиЗагрузкиПрайсовСоответствиеЕдиницИзмерения.Наименование, | НастройкиЗагрузкиПрайсовСоответствиеЕдиницИзмерения.ЕдиницаИзмерения |ПОМЕСТИТЬ ЕдиницыИзмерения |ИЗ | Справочник.НастройкиЗагрузкиПрайсов.СоответствиеЕдиницИзмерения КАК НастройкиЗагрузкиПрайсовСоответствиеЕдиницИзмерения |ГДЕ | НастройкиЗагрузкиПрайсовСоответствиеЕдиницИзмерения.Ссылка = &Настройка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЗагрузкаПрайсовНоменклатура.СсылкаВБазе, | ЗагрузкаПрайсовНоменклатура.Наименование, | ЗагрузкаПрайсовНоменклатура.Цена, | ЗагрузкаПрайсовНоменклатура.Количество, | ЗагрузкаПрайсовНоменклатура.Производитель, | ЗагрузкаПрайсовНоменклатура.ОписаниеСсылка, | ЗагрузкаПрайсовНоменклатура.ИзображениеСсылка, | ЗагрузкаПрайсовНоменклатура.ИДГруппы, | Номенклатура.Ссылка КАК Родитель, | ЗагрузкаПрайсовНоменклатура.НомерСтроки, | ЕдиницыИзмерения.ЕдиницаИзмерения, | ЗагрузкаПрайсовНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмеренияТекст, | ЗагрузкаПрайсовНоменклатура.ИДНоменклатурыКонтрагента, | ЗагрузкаПрайсовНоменклатура.НаименованиеСтар, | ЗагрузкаПрайсовНоменклатура.ИДГруппыСтар, | ЗагрузкаПрайсовНоменклатура.ПроизводительСтар, | ЗагрузкаПрайсовНоменклатура.ОписаниеСсылкаСтар, | ЗагрузкаПрайсовНоменклатура.ИзображениеСсылкаСтар, | ЗагрузкаПрайсовНоменклатура.Создать, | ЗагрузкаПрайсовНоменклатура.СрокГодности, | ЗагрузкаПрайсовНоменклатура.СрокГодностиСтар |ПОМЕСТИТЬ Основная |ИЗ | РегистрСведений.ЗагрузкаПрайсовНоменклатура КАК ЗагрузкаПрайсовНоменклатура | ЛЕВОЕ СОЕДИНЕНИЕ Номенклатура КАК Номенклатура | ПО ЗагрузкаПрайсовНоменклатура.ИДГруппы = Номенклатура.ИДНоменклатурыКонтрагента | ЛЕВОЕ СОЕДИНЕНИЕ ЕдиницыИзмерения КАК ЕдиницыИзмерения | ПО ЗагрузкаПрайсовНоменклатура.ЕдиницаИзмерения = ЕдиницыИзмерения.Наименование |ГДЕ | ЗагрузкаПрайсовНоменклатура.Регистратор = &Регистратор |; | |//////////////////////////////////////////////////////////////////////////////// |УНИЧТОЖИТЬ Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Основная.СсылкаВБазе, | Основная.Наименование, | Основная.Цена, | Основная.Количество, | Основная.Производитель, | Основная.ОписаниеСсылка, | Основная.ИзображениеСсылка, | Основная.Родитель, | Основная.НомерСтроки, | Основная.ЕдиницаИзмерения, | ЕдиницыИзмерения.Ссылка КАК ЕдиницаОстатков, | Основная.ИДНоменклатурыКонтрагента, | Основная.ИДГруппы, | Основная.ЕдиницаИзмеренияТекст, | Основная.НаименованиеСтар, | Основная.ПроизводительСтар, | Основная.ОписаниеСсылкаСтар, | Основная.ИзображениеСсылкаСтар, | Основная.ИДГруппыСтар, | Основная.Создать, | Основная.СрокГодности, | Основная.СрокГодностиСтар |ИЗ | Основная КАК Основная | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения | ПО Основная.СсылкаВБазе = ЕдиницыИзмерения.Владелец | И Основная.ЕдиницаИзмерения.Наименование = ЕдиницыИзмерения.Наименование"; Теперь запрос отрабатывает. Опять возникла проблема с сохранением строк документа. Не хватает памяти при записи документа)) |
|||
8
sereban
19.08.11
✎
14:12
|
Документ является регистратором для регистра сведений. Записи сохраняются сами при записи документа. На форме документа табличное поле Движения.ЗагрузкаПрайсовНоменклатура. Как можно записать по частям?
|
|||
9
jump if zero
19.08.11
✎
14:25
|
создать набор записей с отбором по регистратору
НаборЗаписей.Записать(Ложь) |
|||
10
GoldenDawn
19.08.11
✎
14:27
|
(0)даже читать лень
делайте по частям |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |