• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Тормоза Sql версии 1С 7.7

  • Автор темы Programmer_Hard
  • Дата начала
Статус
Закрыто для дальнейших ответов.
P

Programmer_Hard

Недавно перенесли базу 1с7 бух учет из дбф в скл
(Файл итогов был очень большим 2Гб, поэтому и перешли на скл).
Сравнил работу дбф версии и скл на некоторых доках. Оказалось что в дбф версии запрос вида:
БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
БухИт.ИспользоватьСубконто(ВидыСубконто.Номенклатура, Товар,,);
БухИт.ВыполнитьЗапрос('01.01.00',ДатаДок, "41.1", "60.1",,3,,);
выполняется мгновенно.
А для скл версии выполняется несколько минут...
Почему такая огромная разница выполнения запроса бух итогов!!!?
Сервер Q6600 4Gb. Win server 2003. Sql server 2000 sp3a.
 
V

vitfil

Сначала рекомендации:
1. Поставить SP4 на SQL

2. Поставить
SQL2000-KB899761-v8.00.2040-x86x64-ENU.exe
SQL2000-KB916287-v8.00.2187-x86x64-ENU.exe

3. Проверить модель логирования базы. Если стоит Full, исправить на Simple.

Теперь пояснения:
Вам только кажется, что запрос на ДБФ выполняется быстрее. Разница в том, как работают запросы в ДБФ и СКЛ. Вы уверены, что вас интересует такой большой период, как у вас установлено в запросе? Может, стоит отказаться от работы с бухитогами? Собственно, они ж предназначены не для того, чтобы работать в оперативном режиме. Или посмотреть в сторону использования прямых запросов к базе данных...

Ну и еще добавлю. Данные вашего сервера ни о чем не говорят. Важны настройки сети, по какому протоколу работает 1С с сиквелом...
 
P

Programmer_Hard

3. Проверить модель логирования базы. Если стоит Full, исправить на Simple.
Где это смотреть?

Я бы и рад отказаться от бух итогов.
Задача стоит такая :
В таб часть дока добавляется номенклатура. Нужно определить сколько и на какую сумму поступала данная номенклатура на склад, указанный в доке. Для того чтобы расчитать цену = сумму/кол-во.
Код:
БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
БухИт.ИспользоватьСубконто(ВидыСубконто.Номенклатура, Товар,,);
БухИт.ВыполнитьЗапрос('01.01.00',ДатаДок, "41.1", "60.1",,3,,);
Может есть оптимальнее способ, но пока не нашел (
 
V

vitfil

Странный подход...
Вообще же цену (себестоимость?) определяют так:
СуммаОстаток\КоличествоОстаток*КоличествоСписания.
Исходя из этого, требуются не все обороты, а конечный остаток. Следовательно, в вашем запросе первая дата становится равной ДатаДок. Но и это будет не совсем правильно, в том случае, если документ уже был проведен.
Запрос надо выполнять на СформироватьПозициюДокумента(ТекущийДокумент()-1)
Где это смотреть
В книжке по администрированию MS SQL
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!