Имя: Пароль:
1C
1С v8
Свертка базы: Не могу дождаться окончания выполнения запроса
0 al_zzz
 
27.01.15
23:44
Хочу выполнить свертку базы(а точнее, этого хочет клиент). Выполнение обработки останавливается на формировании документов ввода остатков цен номенклатуры. В отладчике посмотрел - там процесс зависает на запросе:
ВЫБРАТЬ
ЛОЖЬ КАК Активность,
&ПериодЗаписи КАК Период,
ТабРег.ТипЦен,
ТабРег.Номенклатура,
ТабРег.ХарактеристикаНоменклатуры,
ТабРег.Валюта КАК Валюта,
ТабРег.Цена КАК Цена,
ТабРег.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
ТабРег.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
ТабРег.СпособРасчетаЦены КАК СпособРасчетаЦены
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаОст, ) КАК ТабРег
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПервых(&ДатаОст, Период = НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&ДатаОст, ДЕНЬ, 1), ДЕНЬ)) КАК ТабРегСрезПервых
ПО ИСТИНА
И ТабРег.ТипЦен = ТабРегСрезПервых.ТипЦен
И ТабРег.Номенклатура = ТабРегСрезПервых.Номенклатура
И ТабРег.ХарактеристикаНоменклатуры = ТабРегСрезПервых.ХарактеристикаНоменклатуры
ГДЕ
ТабРегСрезПервых.Период ЕСТЬ NULL
и выполняется более суток(дождаться окончания не смог - администратор отключил процесс).
А вопросы у меня следующие: клиент использует postgres(версию не знаю), может ли быть в этом причина? Можно ли как-то оптимизировать запрос, чтоб он выполнился? Если да, то как? Сталкивались ли Вы с таким, если да, то как решали?
Спасибо!
1 sda553
 
28.01.15
00:02
не вижу смысла в срезе первых на ДатаОст, т.к. мы все равно потом этот срез по конкретному периоду отбираем ДатаОст. Если уж есть период ДатаОст, то он вроде как при этих условиях и будет срезом первых.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший