gifts2017

Быстрый поиск подчиненного документа, с помощью прямого запроса

Опубликовал Vitalya Гуляев (Vix) в раздел Программирование - Практика программирования

При ситуации, когда необходимо проверить, есть ли у документа подчиненный документ, конкретного вида или нет, если есть, вывести на экран, в этой ситуации будет полезна следующая функция глобального модуля. Работает только в SQL версии и при установленной внешней компоненте 1С++ !

 

 

 

//глобальные переменные

Перем RS Экспорт ;
Перем RSподч Экспорт ;
Перем RSДвиж Экспорт ;
Перем МетаДата Экспорт ; 

// 2 - только проведенные
// 1 - брать удаленные
Функция глНайтиПодчиненныйДокумент(Конт, ВидДок, УдПров=1) Экспорт
 Если ПустоеЗначение(RSподч)=1 Тогда
  RSподч   = СоздатьОбъект("ODBCRECORDSET") ;
  ТекстЗапроса  =  "
  |SELECT TOP 1
  | Жур.IDDOC as ИдДок
  |FROM _1SCRDOC as Отбор (NOLOCK)
  |INNER JOIN _1SJOURN as Жур (NOLOCK) ON Отбор.ChildID = Жур.IDDOC
  |WHERE (Отбор.ParentVal=?)  AND (Жур.IDDOCDEF=?) AND (Отбор.MDID=0) AND (Жур.Closed&1>=?) AND (Жур.ISMARK<=?)
  |" ;   
  RSподч.Подготовить(ТекстЗапроса) ;
  RSподч.ДобПараметр(1,14,23,0) ;
  RSподч.ДобПараметр(1,3,4,0) ;
  RSподч.ДобПараметр(1,2,1,0) ;
  RSподч.ДобПараметр(1,2,1,0) ;
 КонецЕсли;
 
 RSподч.УстПараметр(1, МетаДата.ЗначениеВСамуюДлиннуюСтрокуБД(Конт.ТекущийДокумент()), 1) ; 
 RSподч.УстПараметр(2, МетаДата.ИДДокумента(ВидДок)) ;
 RSподч.УстПараметр(3, ?(УдПров=2,1,0)) ;
 RSподч.УстПараметр(4, ?(УдПров=1,1,0)) ;
 ИдДок = RSподч.ВыполнитьСкалярный() ;   
 Возврат МетаДата.ЗначениеИзСтрокиБД("Документ."+ВидДок,ИдДок) ;

 

См. также

Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа