Provider=VFPOLEDB.1;Data Source= Вдруг резко начало тормозить 1С 7.7
Процедура ПодключитьДвижок()
ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"1cpp.dll");
ОлеДБ = СоздатьОбъект("OLEDBData");
Соединение = "Provider=VFPOLEDB.1;Data Source=" + КаталогИБ() + ";Mode=ReadWrite;Collating Sequence=MACHINE";
Рез = ОлеДБ.Соединение(Соединение);
Запрос = ОлеДБ.СоздатьКоманду();
Запрос.Выполнить("EXECSCRIPT('SET ANSI OFF')");
Запрос.Выполнить("EXECSCRIPT('SET REPROCESS TO 60 SECONDS')");
Запрос.Выполнить("EXECSCRIPT('SET REFRESH TO 0,-1')");
Запрос.Выполнить("Exec('SET TABLEVALIDATE TO 0')");
мд = СоздатьОбъект("MetaDataWork");
КонецПроцедуры // ПодключитьДвижок
Если (Быстро=1) и (ПустоеЗначение(ВыбФирма) = 1) и (ПустоеЗначение(ВыбСклад) = 1) и (МонопольныйРежим()=0) Тогда
ТекстЗапроса="
|sel ect
| $Итоги.Количество КонОст
| FR OM
| $РегистрИтоги.ОстаткиТМЦ Итоги
| WHERE
| DTOS(Итоги.period)+$Итоги.Номенклатура
| LIKE (DTOS(:ПредПериод~~)+:Номенклатура)
|";
//мд = СоздатьОбъект("MetaDataWork");
НачПериод = мд.ПолучитьНачПериода(ПолучитьДатуТА());
Запрос.УстановитьТекстовыйПараметр("ПредПериод",НачПериод);
Запрос.УстановитьТекстовыйПараметр("Номенклатура",ТоварОстатка);
ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
Рез = 0;
Если ТипЗначенияСтр(ТЗ)="ТаблицаЗначений" Тогда
Если ТЗ.КоличествоСтрок()=1 Тогда
Рез = ТЗ.ПолучитьЗначение(1,1);
ИначеЕсли ТЗ.КоличествоСтрок()>1 Тогда
Рез = ТЗ.Итог(1);
КонецЕсли;
КонецЕсли;
ТекстЗапроса="
|sel ect
| $Итоги.Количество КонОст
| FR OM
| $РегистрИтоги.РезервыТМЦ Итоги
| WHERE
| DTOS(Итоги.period)+$Итоги.Номенклатура
| LIKE (DTOS(:ПредПериод~~)+:Номенклатура)
|";
// мд = СоздатьОбъект("MetaDataWork");
НачПериод = мд.ПолучитьНачПериода(ПолучитьДатуТА());
Запрос.УстановитьТекстовыйПараметр("ПредПериод",НачПериод);
Запрос.УстановитьТекстовыйПараметр("Номенклатура",ТоварОстатка);
ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
Рез_2 = 0;
Если ТипЗначенияСтр(ТЗ)="ТаблицаЗначений" Тогда
Если ТЗ.КоличествоСтрок()=1 Тогда
Рез_2 = ТЗ.ПолучитьЗначение(1,1);
ИначеЕсли ТЗ.КоличествоСтрок()>1 Тогда
Рез_2 = ТЗ.Итог(1);
КонецЕсли;
КонецЕсли;
ИначеЕсли (Быстро=1) и (ПустоеЗначение(ВыбФирма) = 1) и (ПустоеЗначение(ВыбСклад) = 0) и (МонопольныйРежим()=0) Тогда
ТекстЗапроса="
|select
| $Итоги.Количество КонОст
| FR OM
| $РегистрИтоги.ОстаткиТМЦ Итоги
| WH ERE
| DTOS(Итоги.period)+$Итоги.Номенклатура+$Итоги.Склад
| LIKE (DTOS(:ПредПериод~~)+:Номенклатура+:Склад)
|";
//мд = СоздатьОбъект("MetaDataWork");
НачПериод = мд.ПолучитьНачПериода(ПолучитьДатуТА());
Запрос.УстановитьТекстовыйПараметр("ПредПериод",НачПериод);
Запрос.УстановитьТекстовыйПараметр("Номенклатура",ТоварОстатка);
Запрос.УстановитьТекстовыйПараметр("Склад",ВыбСклад);
ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
Рез = 0;
Если ТипЗначенияСтр(ТЗ)="ТаблицаЗначений" Тогда
Если ТЗ.КоличествоСтрок()=1 Тогда
Рез = ТЗ.ПолучитьЗначение(1,1);
ИначеЕсли ТЗ.КоличествоСтрок()>1 Тогда
Рез = ТЗ.Итог(1);
КонецЕсли;
КонецЕсли;
ТекстЗапроса="
|select
| $Итоги.Количество КонОст
| FR OM
| $РегистрИтоги.РезервыТМЦ Итоги
| WH ERE
| DTOS(Итоги.period)+$Итоги.Номенклатура+$Итоги.Склад
| LIKE (DTOS(:ПредПериод~~)+:Номенклатура+:Склад)
|";
//мд = СоздатьОбъект("MetaDataWork");
НачПериод = мд.ПолучитьНачПериода(ПолучитьДатуТА());
Запрос.УстановитьТекстовыйПараметр("ПредПериод",НачПериод);
Запрос.УстановитьТекстовыйПараметр("Номенклатура",ТоварОстатка);
Запрос.УстановитьТекстовыйПараметр("Склад",ВыбСклад);
ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
Рез_2 = 0;
Если ТипЗначенияСтр(ТЗ)="ТаблицаЗначений" Тогда
Если ТЗ.КоличествоСтрок()=1 Тогда
Рез_2 = ТЗ.ПолучитьЗначение(1,1);
ИначеЕсли ТЗ.КоличествоСтрок()>1 Тогда
Рез_2 = ТЗ.Итог(1);
КонецЕсли;
КонецЕсли;
Иначе
ПоказатьОтветы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) Знать бы где там индексы я вообще вижу запрос 8.3.
дальше русский яз. заканчивается начинаются условия без запятых и что то из 8.3 LIKE-ПОДОБНО
DTOS по ходу какие то преобразования
Выбрать
$Итоги.Количество КонОст
ИЗ
$РегистрИтоги.ОстаткиТМЦ Итоги
ГДЕ
дальше русский яз. заканчивается начинаются условия без запятых и что то из 8.3 LIKE-ПОДОБНО
DTOS по ходу какие то преобразования
DTOS(Итоги.period)+$Итоги.Номенклатура+$Итоги.Склад
LIKE (DTOS(:ПредПериод~~)+:Номенклатура+:Склад)
Допёрло
ПОЛЯ:
раз LIKE - ПОДОБНО
значит он строки сравнивает? это же наверное медленно?
по опыту 8.х ПОДОБНО ваще медленная штука
ПОЛЯ:
DTOS(Итоги.period)+$Итоги.Номенклатура+$Итоги.Склад
ЗНАЧЕНИЯ ФИЛЬТРА
LIKE (DTOS(:ПредПериод~~)+:Номенклатура+:Склад)
раз LIKE - ПОДОБНО
значит он строки сравнивает? это же наверное медленно?
по опыту 8.х ПОДОБНО ваще медленная штука
Дело было в испорченной таблице, ТииБ помогло
именно были ошибки в наименованиях номенклатуры,
еще в передаче параметров добавил СОКРЛП(ТоварОстатка)
т.к. запрос работает сугубо по строкам
Причем изначально было предположение на увеличение размера какой то таблицы, удаление помеченных сжатие и чистка таблиц не помогла.
именно были ошибки в наименованиях номенклатуры,
еще в передаче параметров добавил СОКРЛП(ТоварОстатка)
т.к. запрос работает сугубо по строкам
Причем изначально было предположение на увеличение размера какой то таблицы, удаление помеченных сжатие и чистка таблиц не помогла.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот