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

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

Programmer_Hard

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

vitfil

IT-интегратор
02.04.2004
2 062
0
44
Минск
#2
Сначала рекомендации:
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
3. Проверить модель логирования базы. Если стоит Full, исправить на Simple.
Где это смотреть?

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

vitfil

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