Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Помогите: выбрать подчиненные документы... (число прочтений - 4242 )
Kapet
Senior Member
****
Отсутствует


Ламер - вансист

Сообщений: 262
Местоположение: Ukraine, Kyiv
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Помогите: выбрать подчиненные документы...
12. Февраля 2007 :: 09:44
Печать  
Есть документ НалоговаяНакладная, у которой есть реквизит шапки ДокументОснование типа документ неопределенного типа char13. Хочу в обычном журнале документов параметризированым запросом отмечать текущие документы, у которых есть налоговые накладные, т.е в налоговой накладной реквизит ДокументОснование есть ТекущийДокумент из этого журнала.
Далее упрощено для сути проблемы...
Делаю так:
ТекстЗапросаНН="
|SET NOCOUNT ON
|SELECT
|      Журнал.IDDoc as [Документ $Документ.НалоговаяНакладная]
|,      Журнал.IDDocDef as Документ_вид
|FROM
|   _1SJourn as Журнал(NOLOCK)
|LEFT JOIN -- (или Inner Join, до лампочки)
|   $Документ.НалоговаяНакладная as НН(NOLOCK) ON НН.IDDoc = Журнал.IDDoc
|WHERE
|      Журнал.IDDocDef = $ВидДокумента.НалоговаяНакладная
|AND      RIGHT($НН.ДокументСобытие,9) = ?";

или так:

|SELECT
|      НН.IDDoc as [Документ $Документ.НалоговаяНакладная]
|FROM
|      $Документ.НалоговаяНакладная as НН(NOLOCK)
|WHERE
|      RIGHT($НН.ДокументСобытие,9) = ?";

_RSD=СоздатьОбъект("ODBCRecordset");
_RSD.ДобПараметр(1,14,9,0);
_RSD.Подготовить(ТекстЗапросаНН);

В журнале:
Функция Видим()
ТД=ТекущийДокумент;
_RSD.УстПараметр(1,ТД);
Ц=СоздатьОбъект("ТаблицаЗначений");
_RSD.ВыполнитьИнструкцию(,Ц);
(или так: Ц=_RSD.ВыполнитьИнструкцию())
Ц.ВыбратьСтроку();
КонецФункции

В результирующую таблицу значений Ц налоговые не выбираются, всегда пустая тз ...  Плачущий

Где я туплю?


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


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Помогите: выбрать подчиненные документы...
Ответ #1 - 12. Февраля 2007 :: 09:55
Печать  
подчиненные документы лучше выбирать из таблицы _1SCRDOC (Ссылки документов) - будет оптимальнее - там есть индексы
  
Наверх
 
IP записан
 
Kapet
Senior Member
****
Отсутствует


Ламер - вансист

Сообщений: 262
Местоположение: Ukraine, Kyiv
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Помогите: выбрать подчиненные документы...
Ответ #2 - 12. Февраля 2007 :: 10:40
Печать  
DrACe писал(а) 12. Февраля 2007 :: 09:55:
подчиненные документы лучше выбирать из таблицы _1SCRDOC (Ссылки документов) - будет оптимальнее - там есть индексы


Спасибо, действительно ступил. Забыл про первоисточник http://metaprog.co.ua/secrprog/doc_reg.html#_1

Заработало так:
...
_RSD.ДобПараметр(1,14,23,0);
...
_RSD.УстПараметр(1,MDW.ЗначениеВСамуюДлиннуюСтрокуБД(ТД));
...

ТекстЗапросаНН="
|SET NOCOUNT ON
|DECLARE @Докс CHAR(23)
|SET @Докс = ?
|SELECT
|      Журнал.IDDoc as [Документ $Документ.НалоговаяНакладная]
|FROM
|      _1SCRDOC As Подчиненные
|INNER JOIN
|      _1SJOURN As Журнал ON (Подчиненные.CHILDID = Журнал.IDDOC)
|WHERE
|      Подчиненные.MDID = 0
|      AND Подчиненные.PARENTVAL = @Докс";

Вопрос: а нельзя ли здесь как-то обойти это - MDW.ЗначениеВСамуюДлиннуюСтрокуБД(ТД) чем-то в самом запросе, чтоб пошустрее было?
  
Наверх
ICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Помогите: выбрать подчиненные документы...
Ответ #3 - 12. Февраля 2007 :: 10:48
Печать  
1) не понимаю - зачем тебе присоединять Журнал, если ты по нему доп. фильтры не ставишь, реквизиты не используешь?..

2) Можешь использовать метод СформироватьПозициюДокумента()
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Помогите: выбрать подчиненные документы...
Ответ #4 - 12. Февраля 2007 :: 11:27
Печать  
DrACe писал(а) 12. Февраля 2007 :: 10:48:
2) Можешь использовать метод СформироватьПозициюДокумента()
где?
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Помогите: выбрать подчиненные документы...
Ответ #5 - 12. Февраля 2007 :: 11:29
Печать  
+ значение-ссылка - это вовсе не позиция
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Помогите: выбрать подчиненные документы...
Ответ #6 - 12. Февраля 2007 :: 11:32
Печать  
Kapet писал(а) 12. Февраля 2007 :: 10:40:
Вопрос: а нельзя ли здесь как-то обойти это - MDW.ЗначениеВСамуюДлиннуюСтрокуБД(ТД) чем-то в самом запросе, чтоб пошустрее было?

можно написать _RSD.УстПараметр(1,ТД);
исходя из типа параметра (14) и его длины (23), значение преобразуется в нужный вид внутри метода УстПараметр.
+хотя на скорость это практически никак не повлияет
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Помогите: выбрать подчиненные документы...
Ответ #7 - 12. Февраля 2007 :: 11:36
Печать  
+
а прицепленый журн можно использовать для фильтрации вида подчиненного документа (если кроме НалоговаяНакладная могут быть и другие виды)
И еще можно использовать top 1 и ВыполнитьСкалярный()
  

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


Ламер - вансист

Сообщений: 262
Местоположение: Ukraine, Kyiv
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Помогите: выбрать подчиненные документы...
Ответ #8 - 12. Февраля 2007 :: 11:38
Печать  
trad писал(а) 12. Февраля 2007 :: 11:32:
Kapet писал(а) 12. Февраля 2007 :: 10:40:
Вопрос: а нельзя ли здесь как-то обойти это - MDW.ЗначениеВСамуюДлиннуюСтрокуБД(ТД) чем-то в самом запросе, чтоб пошустрее было?

можно написать _RSD.УстПараметр(1,ТД);
исходя из типа параметра (14) и его длины (23), значение преобразуется в нужный вид внутри метода УстПараметр.
+хотя на скорость это практически никак не повлияет

Да, действительно, MDW.ЗначениеВСамуюДлиннуюСтрокуБД(ТД) здесь оказалось лишнее...
Ориентировался на пример из вышеприведенной ссылки...
Журнал мне нужен далее, для получения статуса налоговой (проведена и т.д.)
Спасибо всем!
  
Наверх
ICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Помогите: выбрать подчиненные документы...
Ответ #9 - 12. Февраля 2007 :: 11:40
Печать  
trad писал(а) 12. Февраля 2007 :: 11:27:
DrACe писал(а) 12. Февраля 2007 :: 10:48:
2) Можешь использовать метод СформироватьПозициюДокумента()
где?

признаю - ввел в заблуждение - этот метод можно бы было использовать с модификатором ~, но в таком запросе его приклеить некуда...
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать