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

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

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

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

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

и потом на null отобрать ?
2 polosov
 
03.08.21
11:46
(0) А методом исключения нельзя?
Т.е. исключить все другие типы, кроме документов.
3 БыстрыйЛис
 
03.08.21
11:54
(2)не наверно - долго. там типов дофига - и Ценные бумаги и бывает вообше нет субконто = null и т.д
4 Momus
 
03.08.21
11:56
ХозрасчетныйОстаткиИОбороты.Субконто3 Ссылка Документ.ИмяДокумента
5 toypaul
 
гуру
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м субконто не бывают — то конечно.
10 youalex
 
03.08.21
12:05
если "в лоб" то как то так

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

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

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