При построении запроса я столкнулся с такой проблемой. При вытягивании счёта мне нужно определять, является ли субконто контрагентом, и если является, то идёт сравнение этого контрагента с текущей организацией по ИНН. Если он одинаковый, то беру определённый счёт. И казалось бы, я собрал конструкцию, которая должна была бы работать в обычном коде:

ВЫБОР
 КОГДА ТИПЗНАЧЕНИЯ(Данные.СубконтоДт1) = ТИП(Справочник.Контрагенты)
   И Данные.Организация.ИНН = Данные.СубконтоДт1.ИНН
  ТОГДА ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыПоТекущимОперациям)
 ИНАЧЕ ЕСТЬNULL(ПрочиеДт.СчетУчета, ЕСТЬNULL(СчетаДтДанных.Ссылка, &ПустаяСсылка))
КОНЕЦ

Обычный код должен был проверить первое условие "КОГДА ТИПЗНАЧЕНИЯ(Данные.СубконтоДт1) = ТИП(Справочник.Контрагенты)", и в случае если оно Ложь, даже не проверял бы второе условие, а сразу перешёл к ИНАЧЕ. Но в запросе почему-то после проверки первого условия у меня вываливается в ошибку на втором условии мол у Данные.СубконтоДт1 отсутствует реквизит ИНН. Разумеется он там отсутствует, я ради этого и делал первую проверку. Я подумал, может в запросе он будет проверять все условия, которые идут через оператор И и немного доделал конструкцию:

ВЫБОР
 КОГДА ТИПЗНАЧЕНИЯ(Данные.СубконтоДт1) = ТИП(Справочник.Контрагенты) ТОГДА
     (ВЫБОР
   КОГДА Данные.Организация.ИНН = Данные.СубконтоДт1.ИНН ТОГДА ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыПоТекущимОперациям)
   ИНАЧЕ ЕСТЬNULL(ПрочиеДт.СчетУчета, ЕСТЬNULL(СчетаДтДанных.Ссылка, &ПустаяСсылка))
  КОНЕЦ)
 ИНАЧЕ ЕСТЬNULL(ПрочиеДт.СчетУчета, ЕСТЬNULL(СчетаДтДанных.Ссылка, &ПустаяСсылка))
КОНЕЦ

Но нет, в этом варианте он точно также вываливается в ошибку, что у субконто отсутствует ИНН. Я собрал систему, в которой я вручную подаю данные в этот запрос, чтобы удостовериться что проблема не в данных. Закинул в запрос ТЗшку с одной строкой через параметр, где указал что субконто это Статья расходов. Ошибка повторилась. Закинул в субконто контрагента, ошибки нет. Зачем 1Ска в запросе идёт проверять условия, которые она и так обойдёт стороной? Методы ВЫРАЗИТЬ и ССЫЛКА тут с субконто не работают, жалуются на несоответствие типов. И как тогда эту проблему можно решить? Если только вне запроса, то это будет очень громостко и костыльно.
---
Проблема решилась через присоединение к основной таблице справочника с контрагентами связав их по субконту. И потом сравниваю ИНН организации с ИНН из присоединённой таблицы справочника.
---
ВЫБОР
КОГДА ТИПЗНАЧЕНИЯ(Данные.СубконтоДт1) = ТИП(Справочник.Контрагенты)
И Данные.Организация.ИНН = Данные.СубконтоДт1.ИНН
ТОГДА ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыПоТекущимОперациям)
ИНАЧЕ ЕСТЬNULL(ПрочиеДт.СчетУчета, ЕСТЬNULL(СчетаДтДанных.Ссылка, &ПустаяСсылка))
КОНЕЦ

А так не работает?

```1c
    ВЫБОР
    КОГДА ТИПЗНАЧЕНИЯ(Данные.СубконтоДт1) = ТИП(Справочник.Контрагенты)
    И Данные.Организация.ИНН = Данные.СубконтоДт1.ИНН
    ТОГДА ВЫРАЗИТЬ(ПланСчетов.Хозрасчетный.РасчетыПоТекущимОперациям) КАК РасчетыПоТекущимОперациям
    ИНАЧЕ ЕСТЬNULL(ПрочиеДт.СчетУчета, ЕСТЬNULL(СчетаДтДанных.Ссылка, &ПустаяСсылка))
    КОНЕЦ
```

Но сразу вопрос.. ИНН точно субконто? Дайте корректный запрос
---
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
{(806, 50)}: Поле не найдено "Данные.СубконтоДт1.ИНН"
И Данные.Организация.ИНН = Данные.СубконтоДт1.<<?>>ИНН
---
КАК ИНН может быть субконто?
Субконто это разрез учета(справочник), а ИНН это просто реквизит числового типа
---
ИНН и не может быть субконто, откуда вы это взяли?
---
Вы хотите переопределить что-то в проводках? Зачем менять типовой запрос? – просто сделайте свою дописку в ПередЗаписью набора регистра бухгалтерии.
---
Реально думаешь, что ИНН имеет тип Спр.Контрагенты? ТИПЗНАЧЕНИЯ(Данные.СубконтоДт1.ИНН) = ТИП(Справочник.Контрагенты)
---
Это я случайно тут оставил. Копировал запрос во временный блокнотик в котором его подгонял, из которого скопировал кусок запроса. В рабочей версии я удалил ИНН и оставил просто ТИПЗНАЧЕНИЯ(Данные.СубконтоДт1) = ТИП(Справочник.Контрагенты)
---
Используй ВЫРАЗИТЬ. Составной тип Субконто ещё никто не отменял.
---
Я же специально в вопросе написал, что ВЫРАЗИТЬ и ССЫЛКА тут не работают. Вываливается в ошибку о несоответствии типов. Данные тянутся не из регистра, а из ВТшки, которая собирается по типовым модулям.
---
А в отладчике какой тип данных?
---
"Статья расходов, Null"
---
А ИНН отсутствует точно в субконто, а не в организации? Может там NULL.
---
Нет, в организации он не может отсутствовать. При ручной проверке я закидывал заполненные строки.
---
Проблема решилась через присоединение к основной таблице справочника с контрагентами связав их по субконту. И потом сравниваю ИНН организации с ИНН из присоединённой таблицы справочника.