Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) Остатки по регистру (число прочтений - 4905 )
ObmanOZ
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 24. Апреля 2019
Остатки по регистру
11. Декабря 2019 :: 17:52
Печать  
Доброго всем дня!
Подскажите, запрос в Файловой
|SELECT
|     $РегСН.Номенклатура AS [Товар $Справочник.Номенклатура],
|     $РегСН.Количество  AS КоличествоОстаток
|  FROM
|     $РегистрИтоги.ОстаткиТМЦ as РегСН
|  WHERE
|     (period = :ПредМесяц~~)
|     AND ($РегСН.Склад=:ВыбСклад)
| ";

С отбором ВыбСклад - дает пустой результат, стоит его убрать так данные есть, не пойму где тупняк. Подскажите пжл
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Остатки по регистру
Ответ #1 - 12. Декабря 2019 :: 14:51
Печать  
ObmanOZ писал(а) 11. Декабря 2019 :: 17:52:
С отбором ВыбСклад - дает пустой результат, стоит его убрать так данные есть, не пойму где тупняк. Подскажите пжл


А где код в котором устанавливается :ВыбСклад?
  
Наверх
www  
IP записан
 
Arbuz
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 58
Зарегистрирован: 06. Февраля 2019
Re: Остатки по регистру
Ответ #2 - 12. Декабря 2019 :: 14:56
Печать  
у меня на 1sqlite работает вот так:

Код (SQL)
Выбрать все
|SELECT
|     РегСН.Номенклатура AS [Товар $Справочник.Номенклатура],
|     РегСН.Количество  AS КоличествоОстаток
|  FROM
|     [РегистрИтоги.ОстаткиТМЦ] as РегСН
|  WHERE
|     (РегСН.period = :ПредМесяц)
|     AND (РегСН.Склад=:ВыбСклад)
| "; 



ВыбСклад - реквизит диалога (поле ввода) на форме, с типом Справчник.Склады
  
Наверх
 
IP записан
 
ObmanOZ
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 24. Апреля 2019
Re: Остатки по регистру
Ответ #3 - 12. Декабря 2019 :: 21:32
Печать  
Djelf писал(а) 12. Декабря 2019 :: 14:51:
ObmanOZ писал(а) 11. Декабря 2019 :: 17:52:
С отбором ВыбСклад - дает пустой результат, стоит его убрать так данные есть, не пойму где тупняк. Подскажите пжл


А где код в котором устанавливается :ВыбСклад?


Сорри, в тексте
рс.УстановитьТекстовыйПараметр("ВыбСклад", ВыбСклад);
рс.УстановитьТекстовыйПараметр("ПредМесяц", НачМесяца(НачМесяца(ПолучитьДатуТА())-1));

На форме реквизит ВыбСклад - Справочник.Склады
  
Наверх
 
IP записан
 
ObmanOZ
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 24. Апреля 2019
Re: Остатки по регистру
Ответ #4 - 12. Декабря 2019 :: 21:34
Печать  
Arbuz писал(а) 12. Декабря 2019 :: 14:56:
у меня на 1sqlite работает вот так:

Код (SQL)
Выбрать все
|SELECT
|     РегСН.Номенклатура AS [Товар $Справочник.Номенклатура],
|     РегСН.Количество  AS КоличествоОстаток
|  FROM
|     [РегистрИтоги.ОстаткиТМЦ] as РегСН
|  WHERE
|     (РегСН.period = :ПредМесяц)
|     AND (РегСН.Склад=:ВыбСклад)
| "; 



ВыбСклад - реквизит диалога (поле ввода) на форме, с типом Справчник.Склады


Та у меня такой же) Но в файловой не стартует
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Остатки по регистру
Ответ #5 - 13. Декабря 2019 :: 07:16
Печать  
Вероятно реквизит $РегСН.Склад имеет тип Справочник (без вида)
Тогда так $РегСН.Склад=:ВыбСклад~
  

1&&2&&3
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Остатки по регистру
Ответ #6 - 13. Декабря 2019 :: 07:23
Печать  
http://www.script-coding.com/Direct_queries.html

Цитата:
Что бы посмотреть, какой же запрос в итоге уйдет на сервер, у объекта ODBCRecordset существует метод Отладка(Вкл).

RS.Отладка(1);
ТЗ = RS.ВыполнитьИнструкцию(Текст);
В окно сообщений выведется текст:


Вот там и будет видно что подставляется на самом деле.
  
Наверх
www  
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Остатки по регистру
Ответ #7 - 13. Декабря 2019 :: 07:28
Печать  
ObmanOZ писал(а) 12. Декабря 2019 :: 21:34:
Та у меня такой же) Но в файловой не стартует

Что это не стартует? 1sqlite? Как это не стартует?

1sqlite проще на файловой, и на файловой через odbc недоступны вкусности типа cte и оконных функций.
  
Наверх
www  
IP записан
 
ObmanOZ
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 24. Апреля 2019
Re: Остатки по регистру
Ответ #8 - 13. Декабря 2019 :: 10:33
Печать  
Djelf писал(а) 13. Декабря 2019 :: 07:28:
ObmanOZ писал(а) 12. Декабря 2019 :: 21:34:
Та у меня такой же) Но в файловой не стартует

Что это не стартует? 1sqlite? Как это не стартует?

1sqlite проще на файловой, и на файловой через odbc недоступны вкусности типа cte и оконных функций.


Сорри, почему то вечером принял Ваш запрос за скульный
  
Наверх
 
IP записан
 
ObmanOZ
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 24. Апреля 2019
Re: Остатки по регистру
Ответ #9 - 13. Декабря 2019 :: 10:36
Печать  
trad писал(а) 13. Декабря 2019 :: 07:16:
Вероятно реквизит $РегСН.Склад имеет тип Справочник (без вида)
Тогда так $РегСН.Склад=:ВыбСклад~



Ошибку дает
"meta name parser error: модификатор не определен для типа"
  
Наверх
 
IP записан
 
ObmanOZ
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 24. Апреля 2019
Re: Остатки по регистру
Ответ #10 - 13. Декабря 2019 :: 10:38
Печать  
Мужики, всем спасибо, это я лох, я в начале модуля сделал
     //Перем ВыбФирма; //:Справочник.Фирмы
     //Перем ВыбТовар; //:Справочник.Номенклатура
     //Перем ВыбСклад; //:Справочник.Склады
закоментил и пошел результат
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Остатки по регистру
Ответ #11 - 13. Декабря 2019 :: 10:41
Печать  
ObmanOZ писал(а) 13. Декабря 2019 :: 10:38:
Ссылка на обработку https://yadi.sk/d/IBn76XdlCZr0sQ


Так низззяяяяя Подмигивание
Перем ВыбСклад; //:Справочник.Склады

В результате этого ВыбСклад = ПустоеЗначение
  
Наверх
www  
IP записан
 
ObmanOZ
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 24. Апреля 2019
Re: Остатки по регистру
Ответ #12 - 13. Декабря 2019 :: 11:18
Печать  
Djelf писал(а) 13. Декабря 2019 :: 10:41:
ObmanOZ писал(а) 13. Декабря 2019 :: 10:38:
Ссылка на обработку https://yadi.sk/d/IBn76XdlCZr0sQ


Так низззяяяяя Подмигивание
Перем ВыбСклад; //:Справочник.Склады

В результате этого ВыбСклад = ПустоеЗначение


Спасибо Вам огромное, чуть опередили меня, я Выше сообщение отредактировал как раз)
  
Наверх
 
IP записан
 
ObmanOZ
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 24. Апреля 2019
Re: Остатки по регистру
Ответ #13 - 13. Декабря 2019 :: 11:20
Печать  
Djelf писал(а) 13. Декабря 2019 :: 10:41:
ObmanOZ писал(а) 13. Декабря 2019 :: 10:38:
Ссылка на обработку https://yadi.sk/d/IBn76XdlCZr0sQ


Так низззяяяяя Подмигивание
Перем ВыбСклад; //:Справочник.Склады

В результате этого ВыбСклад = ПустоеЗначение


Работал только с запросом и чет туда даже не смотрел, видать вначале когда запрос делал о другом думал)
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Остатки по регистру
Ответ #14 - 13. Декабря 2019 :: 14:10
Печать  
Учти следующее:
Если у Склада в регистре ОстаткиТМЦ установлен флаг отбор итогов, то foxpro этот индекс использовать не будет.

http://www.1cpp.ru/forum/YaBB.pl?num=1184317705

А чтобы использовал нужно извратится вот так:
Код (SQL)
Выбрать все
WHERE DTOS(РегСН.period) + $РегСН.Склад = DTOS(:ПредМесяц~~) + :ВыбСклад
 


При построении сложных или динамических отчетов такие конструкции довольно затруднительно писать.

С 1sqlite этого делать не требуется, индекс будет использован автоматически.

Примерный тест этого запроса вот такой (1sqlite версии 3.30.0.23 https://cloud.mail.ru/public/9znr/ZJ6ULE9aR ):
Без использования индекса по period+склад:
foxpro 41мс
1sqlite 39мс
При использовании индекса по period+склад:
foxpro 7мс
1sqlite 17мс
В монопольном режиме при использовании индекса:
foxpro не работает (варианты работы в таком режиме есть, но это не монопольный режим запуска 1С)
1sqlite 3мс

Движок 1С, который использует 1sqlite, отстает от фокса при работе с индексами (при попадании в индекс в фоксе).
В другом запросе, более сложном, возможен и обратный результат.
Стоит ли потраченное время и головная боль на подбор индекса, вот таким извращенным способом, при использовании фокса?
« Последняя редакция: 13. Декабря 2019 :: 15:45 - Djelf »  
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать