Добрый день. Конфигурация УТП для Украины 1.2.38.1. платформа 8.3.9.1850. база SQL.
При проведении документа перемещение товаров с розничного склада на оптовый сильно зависает проведение (20-30 минут висит программа), хотя в документе одна, две позиции.
в отладчике посмотрел, что зависает на процедуре "УправлениеЗапасамиПартионныйУчет.ТорговаяНаценкаАТТ".
Подскажите что можна с этим сделать, в фаловом варианте таких проблем не было.
Спасибо.
! | http://pro1c.org.ua/index.php?act=announce&id=2: 3,4 |
Vlad 1C @ Сегодня, 11:50
,
перешли на SQL в ноябре, и тогда же появилась проблема
! | http://pro1c.org.ua/index.php?act=announce&id=2: 16 |
Посмотрите в СКЛ. что он делает в этот момент.
Выше предложили пересчитать итоги, думаю, это первое что надо сделать, т.к. в указанной процедуре в принципе простой запрос. Это если конфигурация не дорабатывалась.
logist @ Сегодня, 15:04
,
процедура не дорабатывалась. попробую пересчитать итоги..
logist @ 10.01.17, 15:04
,
проблема не решилась, зависание происходит только при перемещении с розничного склада на оптовый, если с оптового на розн., то проводится моментально..
что еще можно сделать??
Добрый день
такая же проблема
чем у вас закончилось?
SQL не може оптимізувати цей запит, тому треба об'єднувати не віртуальні таблиці, а тимчасові, що їх обгортають та індексують:
Функция ТорговаяНаценкаАТТ(ДокументСсылка, Склады, Номенклатура, НалоговоеНазначение) Экспорт
БУ = ПланыСчетов.Хозрасчетный.ТоварыНаСкладе.ПолучитьОбъект();
ВестиУчетПоДопРазрезамРегл = ?(БУ.ВидыСубконто.Найти(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НоменклатурныеПозиции, "ВидСубконто") = Неопределено, Ложь, Истина);
РазделятьПоПартиям = НаСчетеВедетсяПартионныйУчет(ПланыСчетов.Хозрасчетный.ТоварыВРозничнойТорговлеВПродажныхЦенахАТТ);
ВидыСубконто = Новый Массив;
ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады);
Если РазделятьПоПартиям Тогда
ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Партии);
НомерСубконтоНоменклатурнойПозиции = 4;
Иначе
НомерСубконтоНоменклатурнойПозиции = 3;
КонецЕсли;
Если ВестиУчетПоДопРазрезамРегл Тогда
ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НоменклатурныеПозиции);
КонецЕсли;
Запрос = Новый Запрос;
// В БУ период определения наценки месяц
Запрос.УстановитьПараметр("ДатаНач", НачалоМесяца(ДокументСсылка.Дата));
Запрос.УстановитьПараметр("ДатаКон", ДокументСсылка.МоментВремени());
Запрос.УстановитьПараметр("Организация", ДокументСсылка.Организация);
Запрос.УстановитьПараметр("СчетТН", ПланыСчетов.Хозрасчетный.ТорговаяНаценкаАТТ);
Запрос.УстановитьПараметр("СчетПС", ПланыСчетов.Хозрасчетный.ТоварыВРозничнойТорговлеВПродажныхЦенахАТТ);
Запрос.УстановитьПараметр("Склады", Склады);
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("НалоговоеНазначение",НалоговоеНазначение);
Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);
Запрос.УстановитьПараметр("ПустаяПартия", Документы.Партия.ПустаяСсылка());
Запрос.УстановитьПараметр("ПустаяНоменклатурнаяПозиция", Справочники.НоменклатурныеПозиции.ПустаяСсылка());
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| ХозрасчетныйОстаткиИОбороты.НалоговоеНазначение,
| ХозрасчетныйОстаткиИОбороты.Субконто1,
| ХозрасчетныйОстаткиИОбороты.Субконто2," + ?(РазделятьПоПартиям, "
| ХозрасчетныйОстаткиИОбороты.Субконто3,", "") + ?(ВестиУчетПоДопРазрезамРегл, "
| ХозрасчетныйОстаткиИОбороты.Субконто" + НомерСубконтоНоменклатурнойПозиции + ",", "") + "
| ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт,
| ХозрасчетныйОстаткиИОбороты.СуммаОборотКт,
| ХозрасчетныйОстаткиИОбороты.СуммаНУНачальныйОстатокКт,
| ХозрасчетныйОстаткиИОбороты.СуммаНУОборотКт,
| ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт,
| ХозрасчетныйОстаткиИОбороты.СуммаОборотДт,
| ХозрасчетныйОстаткиИОбороты.СуммаНУНачальныйОстатокДт,
| ХозрасчетныйОстаткиИОбороты.СуммаНУОборотДт
|ПОМЕСТИТЬ втХозрасчетныйОстаткиИОборотыТН
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
| &ДатаНач,
| &ДатаКон,
| ,
| ,
| Счет = &СчетТН,
| &ВидыСубконто,
| НалоговоеНазначение В (&НалоговоеНазначение)
| И Организация = &Организация
| И Субконто1 В (&Номенклатура)
| И Субконто2 В (&Склады)) КАК ХозрасчетныйОстаткиИОбороты
|
|ИНДЕКСИРОВАТЬ ПО
| НалоговоеНазначение,
| Субконто1,
| Субконто2," + ?(РазделятьПоПартиям, "
| Субконто3,", "") + ?(ВестиУчетПоДопРазрезамРегл, "
| Субконто" + НомерСубконтоНоменклатурнойПозиции, "")
;
Запрос.Выполнить();
Запрос.Текст = СтрЗаменить(СтрЗаменить(Запрос.Текст, "&СчетТН", "&СчетПС"), "втХозрасчетныйОстаткиИОборотыТН", "втХозрасчетныйОстаткиИОборотыПС");
Запрос.Выполнить();
Запрос.Текст =
"ВЫБРАТЬ
| ХозрасчетныйОстаткиИОборотыТН.НалоговоеНазначение КАК НалоговоеНазначение,
| ХозрасчетныйОстаткиИОборотыТН.Субконто1 КАК Номенклатура,
| ХозрасчетныйОстаткиИОборотыТН.Субконто2 КАК Склад," + ?(РазделятьПоПартиям, "
| ХозрасчетныйОстаткиИОборотыТН.Субконто3", "
| &ПустаяПартия")+ " КАК Партия," + ?(ВестиУчетПоДопРазрезамРегл, "
| ХозрасчетныйОстаткиИОборотыТН.Субконто" + НомерСубконтоНоменклатурнойПозиции, "
| &ПустаяНоменклатурнаяПозиция")+ " КАК НоменклатурнаяПозиция,
| СУММА(ЕСТЬNULL(ХозрасчетныйОстаткиИОборотыТН.СуммаНачальныйОстатокКт, 0) + ЕСТЬNULL(ХозрасчетныйОстаткиИОборотыТН.СуммаОборотКт, 0)) КАК ТН,
| СУММА(ЕСТЬNULL(ХозрасчетныйОстаткиИОборотыПС.СуммаНачальныйОстатокДт, 0) + ЕСТЬNULL(ХозрасчетныйОстаткиИОборотыПС.СуммаОборотДт, 0)) КАК ПС,
| СУММА(ЕСТЬNULL(ХозрасчетныйОстаткиИОборотыТН.СуммаНУНачальныйОстатокКт, 0) + ЕСТЬNULL(ХозрасчетныйОстаткиИОборотыТН.СуммаНУОборотКт, 0)) КАК ТН_НУ,
| СУММА(ЕСТЬNULL(ХозрасчетныйОстаткиИОборотыПС.СуммаНУНачальныйОстатокДт, 0) + ЕСТЬNULL(ХозрасчетныйОстаткиИОборотыПС.СуммаНУОборотДт, 0)) КАК ПС_НУ
|ИЗ
| втХозрасчетныйОстаткиИОборотыТН КАК ХозрасчетныйОстаткиИОборотыТН
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ втХозрасчетныйОстаткиИОборотыПС КАК ХозрасчетныйОстаткиИОборотыПС
| ПО ХозрасчетныйОстаткиИОборотыТН.НалоговоеНазначение = ХозрасчетныйОстаткиИОборотыПС.НалоговоеНазначение
| И ХозрасчетныйОстаткиИОборотыТН.Субконто1 = ХозрасчетныйОстаткиИОборотыПС.Субконто1
| И ХозрасчетныйОстаткиИОборотыТН.Субконто2 = ХозрасчетныйОстаткиИОборотыПС.Субконто2" + ?(РазделятьПоПартиям, "
| И ХозрасчетныйОстаткиИОборотыТН.Субконто3 = ХозрасчетныйОстаткиИОборотыПС.Субконто3", "") + ?(ВестиУчетПоДопРазрезамРегл, "
| И ХозрасчетныйОстаткиИОборотыТН.Субконто" + НомерСубконтоНоменклатурнойПозиции + " = ХозрасчетныйОстаткиИОборотыПС.Субконто" + НомерСубконтоНоменклатурнойПозиции, "") + "
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОстаткиИОборотыТН.НалоговоеНазначение,
| ХозрасчетныйОстаткиИОборотыТН.Субконто1,
| ХозрасчетныйОстаткиИОборотыТН.Субконто2," + ?(РазделятьПоПартиям, "
| ХозрасчетныйОстаткиИОборотыТН.Субконто3,", "") + ?(ВестиУчетПоДопРазрезамРегл, "
| ХозрасчетныйОстаткиИОборотыТН.Субконто" + НомерСубконтоНоменклатурнойПозиции, "")
;
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua