Версия для печати темы (https://pro1c.org.ua/index.php?s=a2e3b4d1041b1a92c776ca44c08d0f9f&showtopic=34438)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Зависание при проведении документа перемещения с розничного склада на оптовый

Автор: Gazulo 10.01.17, 9:55

Добрый день. Конфигурация УТП для Украины 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 10.01.17, 11:50

Gazulo @ Сегодня, 9:55 * ,
Итоги давно рассчитывали?

Автор: Gazulo 10.01.17, 12:09

Vlad 1C @ Сегодня, 11:50 * ,
перешли на SQL в ноябре, и тогда же появилась проблема

Автор: Vlad 1C 10.01.17, 14:29


 ! 

http://pro1c.org.ua/index.php?act=announce&id=2: 16
 

Автор: sava1 10.01.17, 14:57

Посмотрите в СКЛ. что он делает в этот момент.

Автор: logist 10.01.17, 15:04

Выше предложили пересчитать итоги, думаю, это первое что надо сделать, т.к. в указанной процедуре в принципе простой запрос. Это если конфигурация не дорабатывалась.

Автор: Gazulo 10.01.17, 15:35

logist @ Сегодня, 15:04 * ,
процедура не дорабатывалась. попробую пересчитать итоги..

Автор: Gazulo 12.01.17, 11:44

logist @ 10.01.17, 15:04 * ,
проблема не решилась, зависание происходит только при перемещении с розничного склада на оптовый, если с оптового на розн., то проводится моментально..
что еще можно сделать??

Автор: Petre 12.01.17, 11:57

Gazulo @ Сегодня, 11:44 * ,

Цитата(sava1 @ 10.01.17, 14:57) *
Посмотрите в СКЛ. что он делает в этот момент.


Автор: Gazulo 12.01.17, 12:31

Petre @ Сегодня, 11:57 * ,
подскажите как это сделать, пожалуйста.

Автор: angv 17.07.17, 16:53

Добрый день
такая же проблема
чем у вас закончилось?

Автор: alur 27.10.17, 17:39

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