Переключение на Главную Страницу Страницы: 1 2 3 [4] 5 6 ... 51 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПрямойЗапрос" - обсуждения. Часть № 2. (число прочтений - 215401 )
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3044
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #45 - 26. Октября 2010 :: 09:43
Печать  
JohnyDeath писал(а) 26. Октября 2010 :: 09:20:
Не надо указывать MIN/MAX в полях, где по группировке будет одно значение.

ну и не надо "это" называть sql
хотя да, никто и не называет.
это и не sql, это sq
Улыбка
  

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


Ябба!

Сообщений: 314
Местоположение: г.Москва
Зарегистрирован: 14. Августа 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #46 - 27. Октября 2010 :: 00:29
Печать  
artbear ушел на 8-ку, vandal: "На длительное время я ушел в запой писанину на 8.2.".. закрадываются справедливые сомнения - если уходят апологеты - пора может и падаванам уходить на 8-ку? в итоге-то получится и спросить не у кого будет при проблеме...
  
Наверх
www  
IP записан
 
kansler
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Зарегистрирован: 05. Октября 2010
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #47 - 29. Октября 2010 :: 10:29
Печать  
Доброго времени суток!
Подскажите, пожалуйста, как получить значение периодической константы на выбраную дату?
Прочитав документацию, написал:
[code]$ПоследнееЗначение.Константа.ПроцентСкидки(0,:КонДата)[/code]
Но парсер ругается:
[code]
Meta name parser error: объект не найден "$ИсторияРеквизита.0"
ЗначениеИстории = ита);[/code]
Как написать правильно?
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #48 - 30. Октября 2010 :: 12:21
Печать  
Покажи весь текст запроса
  
Наверх
IP записан
 
kansler
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Зарегистрирован: 05. Октября 2010
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #49 - 02. Ноября 2010 :: 04:44
Печать  
[quote author=leshik link=1285352210/45#48 date=1288441279]Покажи весь текст запроса[/quote]
[code]
ВЫБРАТЬ
    $ПоследнееЗначение.Константа.ПроцентСкидки(0,:КонДата) как Процент
[/code]
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #50 - 02. Ноября 2010 :: 09:14
Печать  
Ошибку подтверждаю.
В классе используется для построения запроса инструкция $ИсторияРеквизита которая предназначена только для справочников.
Просим автора высказаться о возможности исправления.
  
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #51 - 02. Ноября 2010 :: 15:07
Печать  
Проверим, если есть ошибка исправим.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #52 - 10. Ноября 2010 :: 19:37
Печать  
Всем привет. Есть запрос:
Код
Выбрать все
глТекст = "
|SELECT
|	Номенклатура AS [Товар $Справочник.Номенклатура]
|,	Склад AS [Склад $Справочник.Склады]
|,	КоличествоОстаток AS Остаток
|FROM
|	$РегистрОстатки.ОстаткиТМЦ(
|	:Позиция
|,	(Фирма = :Фирма AND Номенклатура = :Номенклатура AND Склад = :Склад)
|,	(Номенклатура,Склад)
|,	(Количество)
|	)
|";
 



Есть проведенный документ. В документе пытаются изменить количество (сделать коррекцию). Хочу получить остаток товара на начало проведенного документа. Если передаю в переменную :Позиция текущий документ, то остаток считается на конец документа (после проведения), а мне нужно на начало. Каким образом можно это сделать?
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #53 - 11. Ноября 2010 :: 05:49
Печать  
Получай нужную позицию документа
Цитата:
СформироватьПозициюДокумента(<Докум>,<ФлагСмещения>)
---
<ФлагСмещения> - необязательный параметр. Число: -1 (минус единица) - предыдущая позиция. 1 - следующая позиция. 0 - текущая позиция.
  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #54 - 11. Ноября 2010 :: 05:58
Печать  
Вообще-то остатки как и обороты при передачи в качестве значения документа считаются строго "до" этого документа (можно вкл. режим отладки и посмотреть). Так что показывай результат выполнения если "ПрямойЗапрос.РежимОтладки = 1".

2 Salimbek
Позицию документа в качестве значения параметра передать нельзя.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #55 - 11. Ноября 2010 :: 06:16
Печать  
vandalsvq писал(а) 11. Ноября 2010 :: 05:58:
2 Salimbek
Позицию документа в качестве значения параметра передать нельзя.

А разве нельзя передать момент (дату+время) этой позиции?
  
Наверх
 
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #56 - 11. Ноября 2010 :: 06:52
Печать  
Salimbek писал(а) 11. Ноября 2010 :: 05:49:
Получай нужную позицию документа
Цитата:
СформироватьПозициюДокумента(<Докум>,<ФлагСмещения>)
---
<ФлагСмещения> - необязательный параметр. Число: -1 (минус единица) - предыдущая позиция. 1 - следующая позиция. 0 - текущая позиция.

Вариант №1:
Цитата:
Позиция = СформироватьПозициюДокумента(Позиция,-1);
ПрямойЗапрос.УстановитьТекстовыйПараметр("Позиция",Позиция);

Вариант №2:
Цитата:
глМета = СоздатьОбъект("MetaDataWork");
Позиция = глМета.ПолучитьДатуВремяИдДок(СформироватьПозициюДокумента(Позиция,-1));
ПрямойЗапрос.УстановитьТекстовыйПараметр("Позиция",Позиция);

Результат:
Цитата:
Неверное значение параметра 'Позиция'
  
Наверх
 
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #57 - 11. Ноября 2010 :: 06:55
Печать  
vandalsvq писал(а) 11. Ноября 2010 :: 05:58:
Вообще-то остатки как и обороты при передачи в качестве значения документа считаются строго "до" этого документа (можно вкл. режим отладки и посмотреть). Так что показывай результат выполнения если "ПрямойЗапрос.РежимОтладки = 1".

2 Salimbek
Позицию документа в качестве значения параметра передать нельзя.


Прежде чем писать пост, я уже этот вариант пробовал:
Код
Выбрать все
ПрямойЗапрос = СоздатьОбъект("ПрямойЗапрос");
ПрямойЗапрос.РежимОтладки = 1;
ПрямойЗапрос.БухгалтерскийУчет = 0;

ПрямойЗапрос.УстановитьТекстовыйПараметр("Фирма",Фирма);
ПрямойЗапрос.УстановитьТекстовыйПараметр("Склад",Склад);
ПрямойЗапрос.УстановитьТекстовыйПараметр("Номенклатура",Номенклатура);
ПрямойЗапрос.УстановитьТекстовыйПараметр("Позиция",Позиция);

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

ТЗ = СоздатьОбъект("ТаблицаЗначений");
ПрямойЗапрос.Текст = глТекст;
ПрямойЗапрос.Выполнить().Выгрузить(ТЗ);
ТЗ.ВыбратьСтроку();
 


Цитата:
SELECT
           Номенклатура AS [Товар $Справочник.Номенклатура]
     ,      Склад AS [Склад $Справочник.Склады]
     ,      КоличествоОстаток AS Остаток
FROM
           (
     SELECT
           Номенклатура
           ,Склад
           ,SUM(КоличествоОстаток) AS КоличествоОстаток
           
     FROM
           (SELECT
                 rg_405.Номенклатура AS Номенклатура
                 ,rg_405.Склад AS Склад
                 ,rg_405.Количество AS КоличествоОстаток
                 
           FROM
                 [РегистрИтоги.ОстаткиТМЦ] AS rg_405
           WHERE
                 rg_405.PERIOD = '20101101'
           AND
                 (rg_405.Фирма = '     2   ' AND rg_405.Номенклатура = '    MA   ' AND rg_405.Склад = '     8   ')
           
           UNION ALL
           
           SELECT
                 ra_405.Номенклатура
                 ,ra_405.Склад
                 ,CASE WHEN ra_405.debkred = 0 THEN -ra_405.Количество ELSE ra_405.Количество END
                 
           FROM
                 [Журнал] AS docjourn
           LEFT JOIN [Регистр.ОстаткиТМЦ] AS ra_405
           ON ra_405.IDDOC = docjourn.IDDOC
           WHERE (docjourn.idx_DATE_TIME_IDDOC >= '201011115KV82O  DOTC   ')
           AND (docjourn.idx_DATE_TIME_IDDOC < '201011115KV82O  DOTC   ')

           AND
                 (ra_405.Фирма = '     2   ' AND ra_405.Номенклатура = '    MA   ' AND ra_405.Склад = '     8   ')
           ) AS vt_ra_405
     GROUP BY
           Номенклатура
           ,Склад
     HAVING (SUM(КоличествоОстаток) <> 0)


Очень смущает запись, выделенная жирным шрифтом.

В результате вернулся остаток товара ПОСЛЕ проведения текущего документа, а не ДО!
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #58 - 11. Ноября 2010 :: 07:30
Печать  
Нет, нельзя. Принимаемые типы значений: Дата, Документ.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #59 - 11. Ноября 2010 :: 07:34
Печать  
ReLock, версию класса на всякий случай скажи. И этот документ случайно не является документом ТА?
Вообще то условие само по себе противоречивое >= и < соответственно не должен был документ попадать. Другое дело что вместо "201011115KV82O  DOTC   " должно было наверное быть "20100111     0   0      0" (вроде того). Т.е. с начала месяца, а не с позиции документа Улыбка.
Если версия старая то в новой может быть исправлено, если новая... пиши больше симптомов, что за док, где ТА, позиция и док ТА.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 3 [4] 5 6 ... 51
ОтправитьПечать