Вход | Регистрация
 

Как в Запросе узнать, что тип Субконто - Документ ?

[vde69, 03.08.21 - 12:12]
Как в Запросе узнать, что тип Субконто - Документ ?
Я
   БыстрыйЛис
 
03.08.21 - 11:41
Собственно вопрос не сложный но туплю.
Есть запрос к регистру Бухии Хозрасчетный.
Выбирается массив счетов.
Мне надо знать, что Субконто3 какого то счета - это документ.
Тип не важен.

Обычно пишем так
ТИПЗНАЧЕНИЯ(ХозрасчетныйОстаткиИОбороты.Субконто2) = ТИП(Справочник.ДоговорыКонтрагентов)

но мне надо на просто ДОКУМЕНТ
ТИПЗНАЧЕНИЯ(ХозрасчетныйОстаткиИОбороты.Субконто3) = ТИП(Документ)

так ведь нельзя писать.
А как ? Каждый тип описывать ? - не подойдет.
   БыстрыйЛис
 
1 - 03.08.21 - 11:45
Написать что ли

ХозрасчетныйОстаткиИОбороты.Субконто3.Дата

и потом на null отобрать ?
   polosov
 
2 - 03.08.21 - 11:46
(0) А методом исключения нельзя?
Т.е. исключить все другие типы, кроме документов.
   БыстрыйЛис
 
3 - 03.08.21 - 11:54
(2)не наверно - долго. там типов дофига - и Ценные бумаги и бывает вообше нет субконто = null и т.д
   Momus
 
4 - 03.08.21 - 11:56
ХозрасчетныйОстаткиИОбороты.Субконто3 Ссылка Документ.ИмяДокумента
   toypaul
 
5 - 03.08.21 - 11:59
добавить в ПВХ признак и делать по нему отбор
   БыстрыйЛис
 
6 - 03.08.21 - 12:01
(4)еще раз - для танкистов - имя документа нет. Просто - Документ!
   БыстрыйЛис
 
7 - 03.08.21 - 12:02
Короче...Придложенный мной вариант

ХозрасчетныйОстаткиИОбороты.Субконто3.Дата

и потом на null отобрать - самый рабочий и быстрый
   Масянька
 
8 - 03.08.21 - 12:04
(6) Тип значения преобразовать в строку, строка содержит "Документ".
   Документовед
 
9 - 03.08.21 - 12:04
(1) У договора есть "Номер", "Дата", если у тебе договор или подобные справочники 3м субконто не бывают — то конечно.
   youalex
 
10 - 03.08.21 - 12:05
если "в лоб" то как то так

ТИПЗНАЧЕНИЯ(ХозрасчетныйОстаткиИОбороты.Субконто3) В (&МассивТиповДокумент)

Запрос.УстановитьПараметр("МассивТиповДокумент", Документы.ТипВсеСсылки().Типы()) 

(7) ну если тебя не смущает, что Субконто3.Дата - означает соединение со всеми таблицами документов, определенных в ПВХ, то может быть. Но  у справочников тоже может быть рек Дата. У Договора например (там еще и Номер)
   Конструктор1С
 
11 - 03.08.21 - 12:08
Проверяй через поле ВидСубконтоХ. Видов субконто, ссылающихся на документы, всего несколько штук
   toypaul
 
12 - 03.08.21 - 12:09
(7) плохой вариант. за такое можно люлей отхватить
   Antony8x
 
13 - 03.08.21 - 12:21
(0) Отобрать надо или знать? Если знать вроде этого можно
ВЫБОР КОГДА
ПОДСТРОКА(ПРЕДСТАВЛЕНИЕ(ТИПЗНАЧЕНИЯ(ХозрасчетныйОстаткиИОбороты.Субконто3)),1,8) = "Документ" 
ТОГДА Истина
ИНАЧЕ ЛОЖЬ
КОНЕЦ 
КАК Документ
   ДенисЧ
 
14 - 03.08.21 - 12:24
(13) Подстрока от представления? Сам-то попробовал?
   smpulan
 
15 - 03.08.21 - 13:56
(0) У документов есть свойство Проведен, проверяй его на null. Что то вроде этого:
ВЫБРАТЬ
    ХозрасчетныйОбороты.Счет,
    ХозрасчетныйОбороты.Субконто1,
    ХозрасчетныйОбороты.Субконто2,
    ХозрасчетныйОбороты.Субконто3
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачПериода, &КонПериода, , Счет = &Счет, , НЕ Субконто3.Проведен ЕСТЬ NULL , , ) КАК ХозрасчетныйОбороты
   Жан Пердежон
 
16 - 03.08.21 - 14:20
(12) +1
за такое НУЖНО бить
   SiAl-chel
 
17 - 03.08.21 - 14:28
(15), (7) В запросе через точку сравнивать с NULL - решение быстрое для программера, но тормозное - в работе. Там такие джойны полезут, что "мама, не горюй".
(0) 1. Сравнивай тип субконто с вхождением в массив типов.
2. Массив типов собери циклом по метаданным и установи его в параметр запроса.

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.