Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Фильтр по позиции  документа (число прочтений - 2681 )
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Фильтр по позиции  документа
01. Октября 2007 :: 12:15
Печать  
Нужно отобрать все движения из таблицы движений регистра, удовлетворяющие значениям фильтра, в интервале от начала ведения учета в программе, до позиции документа
позицию документа получаю так, текст запроса

Код
Выбрать все
ПозДок = СформироватьПозициюДокумента(ТекущийДокумент(),-1);
ТекстЗапроса ="
select
    $Рег.Сумма Сумма,
    J.Date_Time_Iddoc as ПозицияДока
from
$Регистр.Реклама as Рег (nolock)
inner join _1sjourn as j ON (j.iddoc = Рег.Iddoc) AND (J.Date_Time_Iddoc <= :ПозДок )
where
 $Рег.Издание = :Издание AND
 $Рег.Контрагент = :Контрагент
 


Запрос не отрабатывает изза ПозДок поскольку она не в пригодном виде,
вопрос чем заменить условие на соединении ?
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Фильтр по позиции  документа
Ответ #1 - 01. Октября 2007 :: 12:29
Печать  
:ПозДок ~
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Фильтр по позиции  документа
Ответ #2 - 01. Октября 2007 :: 12:46
Печать  
Спасибо помогло,
но в документации  это не отражено
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Фильтр по позиции  документа
Ответ #3 - 01. Октября 2007 :: 12:56
Печать  
Правила обозначения модификаторов

Цитата:
Строка:

0: char() - строка как есть;
1: char(23) - должна быть передана позиция документа, из которой будет сформирована строка в формате date_time_iddoc.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Фильтр по позиции  документа
Ответ #4 - 22. Октября 2007 :: 11:35
Печать  
Вопрос опять возник тот же - как сравнить позицию документа выдаваемую ф-ей СформироватьПозициюДокумента() и позицию вида _1sjourn.Data_time_iddoc в запросе?, потому что этом  случае не могу воспользоваться модификатором ~, т.к.  значения будут заполняться курсором (позиция передается в запрос в переменной @Поз см. (1)) вот листинг курсора
Код
Выбрать все
	|declare КурсорКМИ cursor static -- #
	|For select
	|	$КМИ.КМИ as КМИ,
	|	$КМИ.Контрагент as Кон,
	|	$КМИ.Менеджер as Мен,
	|	$КМИ.Издание as Изд,
	|	$КМИ.Позиция as Поз
	|from $Справочник.КМИ as КМИ (NOLOCK)
	|where
	|	"+?(ПустоеЗначение(Издание)=0,"$КМИ.Издание = :Изд ","0=0")+" AND "+?(ПустоеЗначение(Контрагент)=0,"$КМИ.Контрагент= :Кон ","0=0 ")+" AND "
	|	"+?(ПустоеЗначение(Менеджер)=0,"$КМИ.Менеджер = :Мен ","0=0")+"
	|declare @КМИ char(27)
	|declare @Кон char(9)
	|declare @Мен char(9)
	|declare @Изд char(9)
	|declare @Поз char(9)
	|open КурсорКМИ
	|FETCH NEXT FROM КурсорКМИ INTO @КМИ,@КОН,@Мен,@Изд,@Поз
	|WHILE @@FETCH_STATUS = 0 BEGIN
	|		select
	|			distinct(Рег.IDDOC)				[Документ $Документ],
	|			Рег.IDDOCDEF					[Документ_вид],
	|			LEFT(Рег.Date_Time_IDDOC,14)	[Date_Time_IDDOC]
	|		into #ListDocs
	|		from
	|			$Регистр.Реклама as Рег (NOLOCK)
	|		where
(1)	|			Рег.Date_Time_IDDOC BETWEEN @Поз AND :КонДата~
	|			AND %@Издание AND %Контрагент AND %Менеджер --AND %Договор
	|FETCH NEXT FROM КурсорКМИ INTO @КМИ,@КОН,@Мен,@Изд
	|END
 


  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Фильтр по позиции  документа
Ответ #5 - 22. Октября 2007 :: 12:08
Печать  
можно воспользоваться такой вот шняжкой:

Код
Выбрать все
Функция glDateTimeIDDoc(Знач Позиция) Экспорт
	Если ТипЗначения(Позиция) <> 2 Тогда
		Позиция = Позиция.ПолучитьПозицию();
	КонецЕсли;
	стрДата		= Сред(Позиция, 2, 8);    //Дата документа
	стрВремя	= Сред(Позиция, 10, 10);  //Время документа
	стрИДДОК1	= Сред(Позиция, 20, 10);  //IDDOC без идентификатора ИБ
	стрИДДОК2	= Сред(Позиция, 30, 3);   //идентификатор ИБ
	Возврат стрДата + _idtostr(стрВремя) + _idtostr(стрИДДОК1) + стрИДДОК2;
КонецФункции
 

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



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Фильтр по позиции  документа
Ответ #6 - 24. Октября 2007 :: 01:33
Печать  
Большое спасибо, помогло, совсем забыл про функцию _IdToStr, в 27 релизе работает
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Фильтр по позиции  документа
Ответ #7 - 08. Ноября 2007 :: 04:25
Печать  
Вот что ещё есть оказывается
Синтаксис: ПолучитьДатуВремяИдДок(ПозицияДокумента)

Параметры:

ПозицияДокумента - тип: Строка. Позиция документа в формате 1С (GetPosition()/ПолучитьПозицию() объекта Document/Документ).
Возвращает: тип: Строка. Позиция во внутреннем формате базы данных.

Описание: позволяет преобразовать позицию документа из внешнего формата во внутренний (как оня хранится в БД).

  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать