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

Хранилище

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

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



> Очень долго выполняется запрос по регистру , Help!          
Shurgent Подменю пользователя
сообщение 04.02.11, 19:03
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 0 раз
Рейтинг: 0

Здравствуйте, многоуважаемые All!

1С 7.70.027 + SQL Server 2005
Конфигурация не типовая, писалась под нас.

Столкнулся с непонятной для меня проблемой. Есть у меня один довольно "тяжелый" регистр ПартииТоваров, по которому делается очень много движений. Период сохранения итогов - месяц. Т.е., если я правильно все понимаю, на 1-е число каждого месяца у меня есть итоги по регистру и все последующие итоговые значения вычисляются уже отталкиваясь от этой точки. Но при формировании отчета по этому регистру происходят странные вещи. Если ТА указывает на начало периода, то отчеты формируются практически мгновенно, за несколько секунд. Но стоит переместить ТА хотя бы на следующий день (провести документ 2-м числом, например), то отчеты по этому регистру начинают формироваться 40-50 минут 47046430.gif , при этом, судя по тому как активно 1С начинает "кушать" оперативку (около 300Мб), складывается впечатление, что она считает итоги не с 1-го числа, а от Рождества Христова.
Никто не сталкивался с таким поведением? Как-то лечится? Весь моск себе уже высушил, перегуглил и выгуглил пол интернета - никакой толковой инфы не нашел, кроме того, что 1С работает с SQL сервером "топорно".

Please help! Я в тупике sad.gif

Batchir Подменю пользователя
сообщение 04.02.11, 19:37
Сообщение #2

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

Цитата(Shurgent @ 04.02.11, 20:03) *
Никто не сталкивался с таким поведением? Как-то лечится? Весь моск себе уже высушил, перегуглил и выгуглил пол интернета - никакой толковой инфы не нашел, кроме того, что 1С работает с SQL сервером "топорно".

7.7 с 2005 вообще официально не дружат. А когда у меня (когда-то) возникали проблемы с производительностью выполнения запросов 7.7 на 2005 я брал в руки бубен (1С++) и переводил все проблемные запросы на прямые. Производительность увеличивалась не то что в разы - в десятки раз, тем самым давая второе дыхание умещающей конфе и давая себе время (без плача пользователей что всё тормозит) на разработку методики перевода компании на 8-ку.

Спасибо сказали: Shurgent,

Shurgent Подменю пользователя
сообщение 05.02.11, 9:07
Сообщение #3

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 0 раз
Рейтинг: 0

Если не затруднит, ткните меня в хороший RTFM, как грамотно делать прямые запросы, с примерами.

7up Подменю пользователя
сообщение 06.02.11, 0:58
Сообщение #4

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(Shurgent @ 05.02.11, 10:07) *
Если не затруднит, ткните меня в хороший RTFM, как грамотно делать прямые запросы, с примерами.


Например, [необходимо зарегистрироваться для просмотра ссылки] или [необходимо зарегистрироваться для просмотра ссылки]

По большим регистрам - ускорение в десятки раз. У нас SQL 2008R2. Обычно все запросы поддаются переписке и к ним еще и кусок кода обработки результатов запроса.
Наблюдал, как штатный СводныйОстаток выполняет запрос в 70Мб результатов, после чего на клиенте фильтрует и рассчитывает остаток по одному значению измерения smile.gif

Спасибо сказали: anatol1c, Shurgent,

Shurgent Подменю пользователя
сообщение 07.02.11, 10:30
Сообщение #5

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 0 раз
Рейтинг: 0

Большое спасибо. Пошел штудировать smile.gif

Argus79 Подменю пользователя
сообщение 15.02.11, 13:32
Сообщение #6

Молчаливый
*
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 0 раз
Рейтинг: 0

Приветствую!

Не тестировал, но вроде бы что-то похоже ...
для SQL 2000 можно использовать такую схему, используюя 1с++:

допустим, есть регистр "ОстаткиТМЦ" в резрезе ТМЦ, Партия, Кво, См


в глобальнике :

Перем РСОстатка Экспорт

Процедура ПриНачалеРаботыСистемы()      
    // 1С++ пошла...
    Попытка
        ЗагрузитьВнешнююКомпоненту("1cpp.dll");
        Database=СоздатьОбъект("ODBCDatabase");        
    Исключение
        Предупреждение("На удалось загрузить компоненту 1cpp.dll.
        |Дальнейшая работа невозможна.");
        СтатусВозврата(0);
    КонецПопытки;    
    
    
    РСОстатка = СоздатьОбъект("ODBCRecordSet");
    РСОстатка.УстБД1С(); // для старых версий 1с++
    ТекстЗапроса = "SELECT
    |QW.Партия [Партия $Справочник.Партии],
    |Sum(QW.См) См,
    |Sum(QW.Шт) Шт
    |FROM
    |(SELECT
    | Рег.Партия Партия,
    | Рег.СмОстаток См,
    | Рег.КвоОстаток См
    |FROM
    | $РегистрОстатки.ОстаткиТМЦ(,, (ТМЦ = ?) AND (Партия <> $ПустойИД),(ТМЦ,Партия),(Кво,См)) Рег
    |WHERE
    |( Рег.СмОстаток <> 0) AND (Рег.КвоОстаток <> 0)
    |) QW
    |GROUP BY
    |QW.Партия
    |ORDER BY
    |QW.Партия
    |";

    
    Попытка
        РС.ДобПараметр(1,14, 9 ,0);
        РС.Подготовить(ТекстЗапроса);
    Исключение
        Сообщить(РС.ПолучитьОписаниеОшибки());
    КонецПопытки;
    
    
..........    


КонецПроцедуры


---------------------------------------------
в том же глобальнике (или в документах) можно сделать процедуру (функцию) списания (получения) остатка по выбранному ТМЦ "ВыбТМЦ"

    ТЗ = СоздатьОбъект("ТаблицаЗначений");

    РСОстатка.УстПараметр(1,ВыбТМЦ);
    попытка
        ТЗ = РСОстатка.ВыполнитьИнструкцию();
    Исключение
        Сообщить(РСОстатка.ПолучитьОписаниеОшибки());
        Возврат;
    КонецПопытки;

anatol1c Подменю пользователя
сообщение 27.12.17, 10:25
Сообщение #7

Общительный
**
Группа: Пользователи
Сообщений: 12
Из: Погребище
Спасибо сказали: 2 раз
Рейтинг: 0


 ! 

Правила: 6
 


Сообщение отредактировал Vofka - 27.12.17, 10:36

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Тема закрыта Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

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