Проблема того же разряда, тоже в УТП Украина (1.2.42.2) . Столкнулся с проблемой медленного проведения документа списания товаров, в бух учете почему то ведется партионный учет, зачем и почему уже другая история .... (сам не знаю, но ОЧЕНЬ НАДО БУХАМ!!! )))))) )
Суть проблемы в том что на серверном варианте УправлениеЗапасамиПартионныйУчет.ТорговаяНаценкаАТТ(ДокументСсылка, Склады, Номенклатура, НалоговоеНазначение) отрабатывает критично долго.
Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОстаткиИОборотыТН.НалоговоеНазначение КАК НалоговоеНазначение, | ХозрасчетныйОстаткиИОборотыТН.Субконто1 КАК Номенклатура, | ХозрасчетныйОстаткиИОборотыТН.Субконто2 КАК Склад, |"+?(РазделятьПоПартиям, " | ХозрасчетныйОстаткиИОборотыТН.Субконто3 КАК Партия,", " | &ПустаяПартия КАК Партия,")+ " |"+?(ВестиУчетПоДопРазрезамРегл, " | ХозрасчетныйОстаткиИОборотыТН.Субконто"+НомерСубконтоНоменклатурнойПозиции+" КАК НоменклатурнаяПозиция,", " | &ПустаяНоменклатурнаяПозиция КАК НоменклатурнаяПозиция,") + " | СУММА( | ВЫБОР КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаНачальныйОстатокКт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаНачальныйОстатокКт КОНЕЦ + | ВЫБОР КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаОборотКт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаОборотКт КОНЕЦ | ) КАК ТН, | СУММА( | ВЫБОР КОГДА ХозрасчетныйОстаткиИОборотыПС.СуммаНачальныйОстатокДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ХозрасчетныйОстаткиИОборотыПС.СуммаНачальныйОстатокДт КОНЕЦ + | ВЫБОР КОГДА ХозрасчетныйОстаткиИОборотыПС.СуммаОборотДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ХозрасчетныйОстаткиИОборотыПС.СуммаОборотДт КОНЕЦ |) КАК ПС, | СУММА( | ВЫБОР КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаНУНачальныйОстатокКт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаНУНачальныйОстатокКт КОНЕЦ + | ВЫБОР КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаНУОборотКт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаНУОборотКт КОНЕЦ | ) КАК ТН_НУ, | СУММА( | ВЫБОР КОГДА ХозрасчетныйОстаткиИОборотыПС.СуммаНУНачальныйОстатокДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ХозрасчетныйОстаткиИОборотыПС.СуммаНУНачальныйОстатокДт КОНЕЦ + | ВЫБОР КОГДА ХозрасчетныйОстаткиИОборотыПС.СуммаНУОборотДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ХозрасчетныйОстаткиИОборотыПС.СуммаНУОборотДт КОНЕЦ | ) КАК ПС_НУ |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач,&ДатаКон, , ,Счет = &СчетТН, &ВидыСубконто, НалоговоеНазначение В (&НалоговоеНазначение) И Организация = &Организация И Субконто1 В (&Номенклатура) И Субконто2 В (&Склады)) КАК ХозрасчетныйОстаткиИОборотыТН | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач,&ДатаКон, , ,Счет = &СчетПС, &ВидыСубконто, НалоговоеНазначение В (&НалоговоеНазначение) И Организация = &Организация И Субконто1 В (&Номенклатура) И Субконто2 В (&Склады)) КАК ХозрасчетныйОстаткиИОборотыПС | ПО ХозрасчетныйОстаткиИОборотыТН.НалоговоеНазначение = ХозрасчетныйОстаткиИОборотыПС.НалоговоеНазначение | И ХозрасчетныйОстаткиИОборотыТН.Субконто1 = ХозрасчетныйОстаткиИОборотыПС.Субконто1 | И ХозрасчетныйОстаткиИОборотыТН.Субконто2 = ХозрасчетныйОстаткиИОборотыПС.Субконто2"+?(РазделятьПоПартиям," | И ХозрасчетныйОстаткиИОборотыТН.Субконто3 = ХозрасчетныйОстаткиИОборотыПС.Субконто3","")+?(ВестиУчетПоДопРазрезамРегл," | И ХозрасчетныйОстаткиИОборотыТН.Субконто"+НомерСубконтоНоменклатурнойПозиции+" = ХозрасчетныйОстаткиИОборотыПС.Субконто"+НомерСубконтоНоменклатурнойПозиции,"")+" | |СГРУППИРОВАТЬ ПО | ХозрасчетныйОстаткиИОборотыТН.НалоговоеНазначение, | ХозрасчетныйОстаткиИОборотыТН.Субконто1, | ХозрасчетныйОстаткиИОборотыТН.Субконто2"+?(РазделятьПоПартиям, ", | ХозрасчетныйОстаткиИОборотыТН.Субконто3", "")+?(ВестиУчетПоДопРазрезамРегл, ", | ХозрасчетныйОстаткиИОборотыТН.Субконто"+НомерСубконтоНоменклатурнойПозиции, "")+" |";
Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОстаткиИОборотыТН.НалоговоеНазначение КАК НалоговоеНазначение, | ХозрасчетныйОстаткиИОборотыТН.Субконто1 КАК Номенклатура, | ХозрасчетныйОстаткиИОборотыТН.Субконто2 КАК Склад, | ХозрасчетныйОстаткиИОборотыТН.Субконто3 КАК Партия, | &ПустаяНоменклатурнаяПозиция КАК НоменклатурнаяПозиция, | СУММА(ВЫБОР | КОГДА ХозрасчетныйОстаткиИОборотыТН.Счет = &СчетТН | ТОГДА ВЫБОР | КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаНачальныйОстатокКт ЕСТЬ NULL | ТОГДА 0 | ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаНачальныйОстатокКт | КОНЕЦ + ВЫБОР | КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаОборотКт ЕСТЬ NULL | ТОГДА 0 | ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаОборотКт | КОНЕЦ | ИНАЧЕ 0 | КОНЕЦ) КАК ТН, | СУММА(ВЫБОР | КОГДА ХозрасчетныйОстаткиИОборотыТН.Счет = &СчетТН | ТОГДА ВЫБОР | КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаНУНачальныйОстатокКт ЕСТЬ NULL | ТОГДА 0 | ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаНУНачальныйОстатокКт | КОНЕЦ + ВЫБОР | КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаНУОборотКт ЕСТЬ NULL | ТОГДА 0 | ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаНУОборотКт | КОНЕЦ | ИНАЧЕ 0 | КОНЕЦ) КАК ТН_НУ, | СУММА(ВЫБОР | КОГДА ХозрасчетныйОстаткиИОборотыТН.Счет = &СчетПС | ТОГДА ВЫБОР | КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаНачальныйОстатокДт ЕСТЬ NULL | ТОГДА 0 | ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаНачальныйОстатокДт | КОНЕЦ + ВЫБОР | КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаОборотДт ЕСТЬ NULL | ТОГДА 0 | ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаОборотДт | КОНЕЦ | ИНАЧЕ 0 | КОНЕЦ) КАК ПС, | СУММА(ВЫБОР | КОГДА ХозрасчетныйОстаткиИОборотыТН.Счет = &СчетПС | ТОГДА ВЫБОР | КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаНУНачальныйОстатокДт ЕСТЬ NULL | ТОГДА 0 | ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаНУНачальныйОстатокДт | КОНЕЦ + ВЫБОР | КОГДА ХозрасчетныйОстаткиИОборотыТН.СуммаНУОборотДт ЕСТЬ NULL | ТОГДА 0 | ИНАЧЕ ХозрасчетныйОстаткиИОборотыТН.СуммаНУОборотДт | КОНЕЦ | ИНАЧЕ 0 | КОНЕЦ) КАК ПС_НУ |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты( | &ДатаНач, | &ДатаКон, | , | , | Счет = &СчетТН | ИЛИ Счет = &СчетПС, | &ВидыСубконто, | НалоговоеНазначение В (&НалоговоеНазначение) | И Организация = &Организация | И Субконто1 В (&Номенклатура) | И Субконто2 В (&Склады)) КАК ХозрасчетныйОстаткиИОборотыТН | |СГРУППИРОВАТЬ ПО | ХозрасчетныйОстаткиИОборотыТН.НалоговоеНазначение, | ХозрасчетныйОстаткиИОборотыТН.Субконто1, | ХозрасчетныйОстаткиИОборотыТН.Субконто2, | ХозрасчетныйОстаткиИОборотыТН.Субконто3";
Запрос не приводил в аналогичный вид стандарту потому как лень, в моем конкретном случае данного решения вполне хватает... Скорость отработки запроса уменьшилась на 30-40 %, при замерах производительности с учетом правок запроса управленческого изложенного выше удалось добиться ускорения проведения документа в 4 раза, данное значение получено в сравнении производительности до и после, почему именно в 4 раза вышло сложно сказать, замеры проводились на рабочей базе и в зависимости от текущих нагрузок могут отличаться ...
Так же было замечено что если в параметры запроса массивы передать без дублей это также влияет в положительную cторону, в обработке проведения документа СписаниеТоваров в процедуре ДвиженияПоРегистрамРегл() было переделано так:
Недавно столкнулся с такой задачей: Заказчик потребовал создать отчет но что бы в нем были пронумерованы все колонки и строки этого отчета. Как я понял им нужно это для того что бы отчет можно было сложить в печатном виде по этим номерам (отчет выходит довольно большая простыня). Поскольку в СКД стандартных методов было не обнаружено мной задача была решена таким образом.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!