Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Войти | Зарегистрироваться )




>  Зависание при проведении документа перемещения с розничного склада на оптовый
alur
Отправлено: 27.10.17, 17:39


Молчаливый
*

Группа: Пользователи
Сообщений: 1
Регистрация: 06.07.14
Из: Киев
Пользователь №: 36994


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С Предприятие 8.3 · Просмотр сообщения: #134049 · Ответов: 11 · Просмотров: 4869
 


Новые сообщения  Открытая тема (есть новые ответы)
Опрос  Опрос (есть новые голоса)
Нет новых сообщений  Открытая тема (нет новых ответов)
Нет новых голосов  Опрос (нет новых голосов)
Популярная тема  Горячая тема (есть новые ответы)
Закрыта  Закрытая тема
Нет новых  Горячая тема (нет новых ответов) Перемещена  Тема перемещена
 

RSS Текстовая версия Сейчас: 24.04.24, 12:18
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!