Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) 1sqlite - движения документа (число прочтений - 8242 )
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
1sqlite - движения документа
09. Декабря 2010 :: 04:49
Печать  
Как присоединить в запросе 1sqlite движения дока по конкретному регистру?
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite - движения документа
Ответ #1 - 09. Декабря 2010 :: 06:08
Печать  
left join [Регистр.НужныйТебе] Рег on Рег.iddoc=Док.iddoc
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: 1sqlite - движения документа
Ответ #2 - 09. Декабря 2010 :: 06:37
Печать  
Спасибо!
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Регистр движений
Ответ #3 - 15. Декабря 2010 :: 05:24
Печать  
Необходимо получить итоги + движения регистра по конкретному измерению.
Соорудил в консольке пробный запрос:
Код
Выбрать все
SELECT
мат.id [Материал :Справочник.Материалы]
, SUM(COALESCE(Партии.Количество, ПартииД.Количество * (1 - ПартииД.debkred * 2), 0))
, SUM(COALESCE(Партии.Сумма, ПартииД.Сумма * (1 - ПартииД.debkred * 2), 0))
FROM [Справочник.Материалы] мат
LEFT JOIN [РегистрИтоги.Партии] Партии ON SUBSTR(Партии.МПЗ,5,9) = мат.id AND Партии.period = '20101201'
LEFT JOIN [Регистр.Партии] ПартииД ON SUBSTR(ПартииД.МПЗ,5,9) = мат.id
LEFT JOIN [Журнал] ж ON ж.iddoc = ПартииД.iddoc AND ж.date >= '20101201'
WHERE мат.МатериалБезЛица IN ('   3UA   ')
GROUP BY 1
LIMIT 20 

Запрос выполняется 50 сек ... что я делаю не так?
(В справочнике есть индекс по полю МатериалБезЛица, сделано через IN потому что в реальных условиях там будет не один материал)
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite - движения документа
Ответ #4 - 15. Декабря 2010 :: 05:53
Печать  
1.Перебираешь весь справочник материалов
2.Перебираешь всю табличку регистра
3.Не используешь индекс при подключении 1sjournl

ЗЫ: Оно точно надо, весь справочник иметь в выборке ?
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: 1sqlite - движения документа
Ответ #5 - 15. Декабря 2010 :: 06:18
Печать  
Eprst писал(а) 15. Декабря 2010 :: 05:53:
1.Перебираешь весь справочник материалов
2.Перебираешь всю табличку регистра
3.Не используешь индекс при подключении 1sjournl

ЗЫ: Оно точно надо, весь справочник иметь в выборке ?

1. Почему весь? Только при условии совпадения по реквизиту. Просто условие для выборки только одно...
2. Аналогично пункту 1.
3. Поясни. Не понял.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite - движения документа
Ответ #6 - 15. Декабря 2010 :: 06:44
Печать  
Вообще весьма забавный код..
Складывать итоги на определенную дату со всеми движениями, при условии, что если остатка нет на '20101201', то и сумма в движениях тоже 0 будет всегда.
Зачем присоединять табличку движений - неясно.
Если нужно иметь остаток на определенную дату, то нужно юнион делать.
Если нужны итоги на ТА - то табличка движений не нужна вообще.
И еще, в регистре, мпз - справочник неопределенного вида ?


  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite - движения документа
Ответ #7 - 15. Декабря 2010 :: 06:45
Печать  
Dmitry The Wing писал(а) 15. Декабря 2010 :: 06:18:
Eprst писал(а) 15. Декабря 2010 :: 05:53:
1.Перебираешь весь справочник материалов
2.Перебираешь всю табличку регистра
3.Не используешь индекс при подключении 1sjournl

ЗЫ: Оно точно надо, весь справочник иметь в выборке ?

1. Почему весь? Только при условии совпадения по реквизиту. Просто условие для выборки только одно...
2. Аналогично пункту 1.
3. Поясни. Не понял.


1.потому, что отсканить весь справочник и отсеет те строки, которые не подходят по условию мат.МатериалБезЛица IN
2. аналогично..
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: 1sqlite - движения документа
Ответ #8 - 15. Декабря 2010 :: 06:51
Печать  
Eprst писал(а) 15. Декабря 2010 :: 06:44:
Вообще весьма забавный код..
Складывать итоги на определенную дату со всеми движениями, при условии, что если остатка нет на '20101201', то и сумма в движениях тоже 0 будет всегда.
Зачем присоединять табличку движений - неясно.
Если нужно иметь остаток на определенную дату, то нужно юнион делать.
Если нужны итоги на ТА - то табличка движений не нужна вообще.
И еще, в регистре, мпз - справочник неопределенного вида ?

Итоги я видел только на первые числа ... в теории период может быть и неактуальным.
Можно и юнион, но в регистре движений нет дат...
Реквизит мпз - неопределенный справочник.

Eprst писал(а) 15. Декабря 2010 :: 06:45:
1.потому, что отсканить весь справочник и отсеет те строки, которые не подходят по условию мат.МатериалБезЛица IN
2. аналогично..

Т.е. индекс по реквизиту не используется?  Ужас
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite - движения документа
Ответ #9 - 15. Декабря 2010 :: 06:56
Печать  
Тебе в результате что нужно то ?
То что ты написал, годится только для получения итогов на ТА, и то, если выкинешь обращение к таблице движений.

  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: 1sqlite - движения документа
Ответ #10 - 15. Декабря 2010 :: 06:58
Печать  
Eprst писал(а) 15. Декабря 2010 :: 06:56:
Тебе в результате что нужно то ?

Мне нужны остатки на определенную дату. Понимаю, что вместо "ж.date >= '20101201'" должен быть BETWEEN.

С юнионом - так?
Код
Выбрать все
SELECT
мат.id [Материал :Справочник.Материалы]
, SUM(Партии.Количество) Количество
, SUM(Партии.Сумма) Сумма
FROM [Справочник.Материалы] мат
LEFT JOIN [РегистрИтоги.Партии] Партии ON SUBSTR(Партии.МПЗ,5,9) = мат.id AND Партии.period = '20101201'
WHERE мат.МатериалБезЛица IN ('   3UA   ')
GROUP BY 1
UNION
SELECT
мат.id [Материал :Справочник.Материалы]
, SUM(ПартииД.Количество * (1 - ПартииД.debkred * 2))
, SUM(ПартииД.Сумма * (1 - ПартииД.debkred * 2))
FROM [Справочник.Материалы] мат
LEFT JOIN [Регистр.Партии] ПартииД ON SUBSTR(ПартииД.МПЗ,5,9) = мат.id
LEFT JOIN [Журнал] ж ON ж.iddoc = ПартииД.iddoc AND ж.date >= '20101201'
WHERE мат.МатериалБезЛица IN ('   3UA   ') AND ж.iddoc IS NOT NULL
GROUP BY 1 



гм... вижу, что таблица движений перебирается вся, но пока нет мыслей, как это ограничить ...
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite - движения документа
Ответ #11 - 15. Декабря 2010 :: 07:18
Печать  
Код
Выбрать все
   Т="
	  |Select
		|   Рег.МПЗ [Материал :Справочник]
		|   ,SUM(Рег.НачОст) [НачОст $Число]
		|   ,SUM(Рег.Приход) [Приход $Число]
		|   ,SUM(Рег.Расход) [Расход $Число]
		|   ,SUM(Рег.НачОст+Рег.Приход-Рег.Расход) [КонОст $Число]
		|From
		|	(
		|	SELECT
		|	  Итоги.МПЗ МПЗ
		|		,Итоги.Количество НачОст
		|		,0 Приход
		|		,0 Расход
		|	FROM
		|		[РегистрИтоги.Партии] as Итоги
		|
		|	WHERE
		|		Итоги.period = :ПредПериод
		|   UNION ALL
		|	SELECT
		|		 Движения.МПЗ
		|		,Движения.Количество * (1 - Движения.debkred * 2)
		|		,0
		|		,0
		|	FROM
		|		[Регистр.Партии] AS Движения
		|   INNER Join [Журнал] Жур ON Жур.iddoc = Движения.iddoc and Жур.date BETWEEN :НачПериод And :КонПериод
		|	--WHERE это если есть галка быстрая обработка движений
		|		-- Движения.date BETWEEN :НачПериод And :КонПериод
		|	UNION ALL
		|	SELECT
		|		 Движения.МПЗ
		|		,0
		|		,Движения2.Количество*(1-Движения2.Debkred)
		|		,Движения2.Количество*Движения2.Debkred
		|	FROM
		|		[Регистр.Партии] Движения2
		|   INNER Join [Журнал] Жур2 ON Жур2.iddoc = Движения.iddoc and Жур2.date BETWEEN :Дата1 And :Дата2
		|
		|	--WHERE это если есть галка быстрая обработка движений
		|		--Движения2.date BETWEEN :Дата1 And :Дата2
		|) Рег
		|Inner join [Справочник.Материалы] мат on SUBSTR(Рег.МПЗ,5,9) = мат.id and мат.МатериалБезЛица IN ('   3UA   ')
	  |Group by Рег.МПЗ
		|";

		мд = СоздатьОбъект("MetaDataWork");
		НачПериод = мд.ПолучитьНачПериода(НачДата);//начало периода
		ПредПериод = мд.ПолучитьНачПериода(НачПериод-1);//предыдущее начало периода останков
		Запрос.Подставлять("ПредПериод",ПредПериод);
		Запрос.Подставлять("НачПериод",НачПериод);
		Запрос.Подставлять("КонПериод",НачДата-1);//для вычисления НачОст
		Запрос.Подставлять("Дата1",НачДата);
		Запрос.Подставлять("Дата2",КонДата);
 

  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: 1sqlite - движения документа
Ответ #12 - 15. Декабря 2010 :: 07:20
Печать  
Eprst писал(а) 15. Декабря 2010 :: 06:44:
Если нужны итоги на ТА - то табличка движений не нужна вообще.

Проверил это заявление и не нашел подтверждения. Итоги всегда лежат на первом числе, хотя ТА находится не там...
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite - движения документа
Ответ #13 - 15. Декабря 2010 :: 07:22
Печать  
Это начОст,КонОст,Приход,Расход за период с НачДата по КонДата..
Если нужны только КонОст - то выкидываешь последний юнион и переписываешь запрос, чтоб сразу КонОст получался, а не как НачОст+Приход-Расход.., т.е нужно взять ближайший итог от даты и сложить приход-расход от даты начала периодичности хранения останков до нужной даты получения остатков.
Если нужны актуальные останки (на ТА), то достаточно сложить итоги на начало периодичности хранения останков и всё.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite - движения документа
Ответ #14 - 15. Декабря 2010 :: 07:24
Печать  
Dmitry The Wing писал(а) 15. Декабря 2010 :: 07:20:
Eprst писал(а) 15. Декабря 2010 :: 06:44:
Если нужны итоги на ТА - то табличка движений не нужна вообще.

Проверил это заявление и не нашел подтверждения. Итоги всегда лежат на первом числе, хотя ТА находится не там...


Итоги лежат не на первое число (исключение - периодичность - месяц), а на начало периодичности хранения останков.
Для месяца - начало месяца, для 5-дневки - начало пятидневки и т.д..

И при получении итогов на ТА, смотреть табличку движений не надо.
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: 1sqlite - движения документа
Ответ #15 - 15. Декабря 2010 :: 07:32
Печать  
Мудрено, но работает. Спасибо. Про периодичность - не встречал вариантов, кроме месяца, потому и не задумывался...
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite - движения документа
Ответ #16 - 15. Декабря 2010 :: 07:39
Печать  
Для скорости, нужно ставить 5 дней.
Время проведения намного быстрее, штатные запросы работают тоже быстрее, единственный минус - открытие периода и рост табличек итогов.
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: 1sqlite - движения документа
Ответ #17 - 15. Декабря 2010 :: 07:56
Печать  
Eprst писал(а) 15. Декабря 2010 :: 07:39:
Для скорости, нужно ставить 5 дней.
Время проведения намного быстрее, штатные запросы работают тоже быстрее, единственный минус - открытие периода и рост табличек итогов.

Открытие периода - слишком долгий процесс ... раз в месяц юзеры уже смирились, но чаще начнут выть, ругаться и кусаться ... производство круглосуточное ...
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite - движения документа
Ответ #18 - 15. Декабря 2010 :: 11:06
Печать  
Если регистры закрываются, то не быстрое, о ачень быстрое открытие периода.
Да и пересчет итогов тоже влет идёт.
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: 1sqlite - движения документа
Ответ #19 - 16. Декабря 2010 :: 01:52
Печать  
Думаю, тут все упирается в объем базы...
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite - движения документа
Ответ #20 - 16. Декабря 2010 :: 07:06
Печать  
Dmitry The Wing писал(а) 16. Декабря 2010 :: 01:52:
Думаю, тут все упирается в объем базы...


Если регистр закрывается "быстро", то рост не такой уж и большой.
Зато штатное проведение намного быстрее, за счет меньших затрат на пересчет итогов.
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite - движения документа
Ответ #21 - 16. Декабря 2010 :: 14:38
Печать  
Ветку вдумчиво не читал, но хочу заметить, что в sqlite "Group by 1" вовсе не означает группировать по первой колонке результата, как это работает на фоксе. Надо указывать имена полей.
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: 1sqlite - движения документа
Ответ #22 - 17. Декабря 2010 :: 02:16
Печать  
orefkov писал(а) 16. Декабря 2010 :: 14:38:
Ветку вдумчиво не читал, но хочу заметить, что в sqlite "Group by 1" вовсе не означает группировать по первой колонке результата, как это работает на фоксе. Надо указывать имена полей.

гм. важный момент. спасибо. отметь это где-нибудь большими красными буквами ... просто во всех СУБД это работает... потому по привычке пользую и здесь...
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Где настраивается периодичность?
Ответ #23 - 23. Декабря 2010 :: 03:35
Печать  
Eprst писал(а) 15. Декабря 2010 :: 07:39:
Для скорости, нужно ставить 5 дней.
Время проведения намного быстрее, штатные запросы работают тоже быстрее, единственный минус - открытие периода и рост табличек итогов.

Задумался над фразой и попытался найти, где это настраивается - не смог ... рассказывай!
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Где настраивается периодичность?
Ответ #24 - 23. Декабря 2010 :: 06:50
Печать  
Dmitry The Wing писал(а) 23. Декабря 2010 :: 03:35:
Eprst писал(а) 15. Декабря 2010 :: 07:39:
Для скорости, нужно ставить 5 дней.
Время проведения намного быстрее, штатные запросы работают тоже быстрее, единственный минус - открытие периода и рост табличек итогов.

Задумался над фразой и попытался найти, где это настраивается - не смог ... рассказывай!


Меню - Операции - Управление оперативными итогами..
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Итоги на документ
Ответ #25 - 17. Января 2011 :: 07:38
Печать  
Eprst писал(а) 15. Декабря 2010 :: 07:18:
хитроумный запрос поскипан

А как сей запрос адаптировать для получения остатков на документ? т.е. на момент, предшестсвующий проведению документа. Аналог РассчитатьРегистрыНа.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite - движения документа
Ответ #26 - 17. Января 2011 :: 07:54
Печать  
брать движения до позиции документа вестимо.
Т.е условие не на дату, а на позицию дока.
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Остатки на документ
Ответ #27 - 17. Января 2011 :: 07:58
Печать  
Eprst писал(а) 17. Января 2011 :: 07:54:
брать движения до позиции документа вестимо.
Т.е условие не на дату, а на позицию дока.

Вот этого я пока и не понял - что с чем надо сравнивать?
DATE+TIME? Если так - то непонятно, как отработается два документа, стоящих на одном времени...
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite - движения документа
Ответ #28 - 17. Января 2011 :: 08:09
Печать  
Так, примерно:

Код
Выбрать все
	| Where
		|	"
			+?(АктуальностьИтогов=1,"Продажи.date BETWEEN :НачПериод And :КонПериод","Продажи.idx_date_time_iddoc_lineno_actno BETWEEN :НачПериод And :КонПериод~~~")+"

......................

		Если ИтогиАктуальны() = 1 Тогда
			Запрос.Подставлять("КонПериод",ДатаДок);
		Иначе
			Запрос.Подставлять("КонПериод",ТекущийДокумент());
		КонецЕсли; 


  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Запрос с границей - документом вместо даты
Ответ #29 - 17. Января 2011 :: 08:31
Печать  
Eprst писал(а) 17. Января 2011 :: 08:09:
Так, примерно:......................

Видимо, не понимаю...
Запросы делаются по журналу и регистрам, например:
Было:
Код
Выбрать все
SELECT
ж.iddoc [Смена :Документ]
, ж.iddocdef [Смена_вид :ВидДокумента]
...
FROM [Журнал] ж
...
WHERE ж.date BETWEEN @ДатаНач AND @ДатаКон
... 


Попытался сделать так:
Код
Выбрать все
SELECT
ж.iddoc [Смена :Документ]
, ж.iddocdef [Смена_вид :ВидДокумента]
...
FROM [Журнал] ж
...
WHERE ж.idx_date_time_iddoc BETWEEN @ДатаНач AND @ДатаКон~~~
... 


В консольке запрос не прошел (не дал плана). Что я делаю не так? К сожалению, не вижу даже как посмотреть имена индексов у журнала, может дело в неправильно набранном имени...
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1sqlite - движения документа
Ответ #30 - 17. Января 2011 :: 08:37
Печать  
Индекс называется idx_date_time_iddoc_lineno_actno (ты немного недописал)
А все поля (включая виртуальные индексы) можешь посмотреть стандартно:
Код
Выбрать все
SELECT * FROM ЖУРНАЛ 

  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: 1sqlite - движения документа
Ответ #31 - 17. Января 2011 :: 08:41
Печать  
JohnyDeath писал(а) 17. Января 2011 :: 08:37:
Индекс называется idx_date_time_iddoc_lineno_actno (ты немного недописал)
А все поля (включая виртуальные индексы) можешь посмотреть стандартно:
Код
Выбрать все
SELECT * FROM ЖУРНАЛ 


Спасибо за совет по определению списка полей - помогло, правда я еще добавил "limit 1", но индекс в журнале есть именно idx_date_time_iddoc, а idx_date_time_iddoc_lineno_actno - отсутствует. Видимо, что-то другое нарушается...

Понял, в чем проблема:
@ДатаКон~~~ надо заменить на @ДатаКон с соответствующим модификатором (3) в УстановитьПараметр.

Однако, меня пугает то, что в плане использование индекса никак не отразилось:
Код
Выбрать все
Использование таблиц
order	from	detail
0	0	TABLE Журнал AS ж VIRTUAL TABLE INDEX 1:ACDATETIM;    24 !" 0?b 6O?|?j`"b$ @? 1$ d! R,zP
1	1	TABLE Документ.Смена AS ш VIRTUAL TABLE INDEX 0:ID;    15 !  0p nHy$40T  Q  81.h +
2	2	TABLE Журнал AS жрс VIRTUAL TABLE INDEX 0:IDDOC;    15 !  0p nHy$40D  Q  81.h +
3	3	TABLE Журнал AS жс VIRTUAL TABLE INDEX 0:IDDOC;    15 !  0p nHy$40D  Q  81.h +
4	4	TABLE Документ.СопроводительныйЛист AS с VIRTUAL TABLE INDEX 0:ID;    10 !  0p nHyd!   kM 



Ой ... соврал ... этот индекс используется, просто в 1С зовется иначе:
Код
Выбрать все
# Name     |Descr	  |Unique|Indexed fields							   |DBName
I=ACDATETIM|Date+Time+ID  |0     |DATE,TIME,IDDOC							   |ACDATETIME 

  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1sqlite - движения документа
Ответ #32 - 17. Января 2011 :: 08:50
Печать  
А что должно было поменяться в плане индексов?
Просто до этого этот индекс выбирался автоматически, а теперь ты указываешь его явно.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать