Имя: Пароль:
1C
 
Проверка наличия поля у ТЧ в запросе
0 Ychenik1c
 
11.08.22
05:44
Добрый день.
Запрос общем модуле. Обращение к ТЧ документам. В зависимости от документа меняется источник для запроса
В одном из документов есть новый реквизит
Я добавляю в запрос условие но даже если оно не выполняется проверка идёт что отсутствуют такие поля и ошибка. Как можно обойти данную ситуацию?
|Выбор
|Когда ТипЗначения(ДанныеДокумента.Ссылка) = Тип(Документ.ПрочееОприходованиеТоваров) Тогда
|Выбор
|               Когда
|                   &ИспользуетсяОрдернаяСхемаПриПоступлении    
|                   И Не ДанныеДокумента.НоменклатураВозврат = Значение(Справочник.Номенклатура.ПустаяСсылка)
|               Тогда ДанныеДокумента.НоменклатураВозврат
|                Иначе ДанныеДокумента.Номенклатура
|            Конец    
|        Иначе ДанныеДокумента.Номенклатура
|   Конец КАК Номенклатура,

Из документ.ПеремещениеТоваров.Товары как ДанныеДокумента
1 Ychenik1c
 
11.08.22
05:46
Реквизит в ТЧ НоменклатураВозврат есть только в Документ.ПрочееОприходованиеТоваров
2 Ychenik1c
 
11.08.22
05:52
Есть NULL не помог
3 Phoenixxx
 
11.08.22
05:53
Двумя виртуальными таблицами и затем объединить.
4 Phoenixxx
 
11.08.22
06:03
Это весь запрос?
Там данные только из документов одного типа
Из документ.ПеремещениеТоваров.Товары как ДанныеДокумента
5 Ychenik1c
 
11.08.22
06:07
(3)
Не всё так просто.
Это общий модуль. Запросы собираются в пакет. На выходе таблицы для записи движений. Типов документов много. Запрос состоит где то из 70 пакетов
6 Phoenixxx
 
11.08.22
06:09
Либо можно в модуле менять текст запроса если при выполнении данные запрашиваются только из документов одного типа
7 Йохохо
 
11.08.22
06:13
(6) или посмотреть в метаданные, если для любого типа
8 Phoenixxx
 
11.08.22
06:27
(7) Я это имел в виду. Посмотрел какой тип документа в данный момент обрабатывается и согласно этому типу изменил текст запроса.
9 alarm2020
 
11.08.22
08:17
(0) Звездочку используй
10 VoditelKobyly
 
11.08.22
09:21
(0) Какая-то странная выборка:
|Выбор
|Когда ТипЗначения(ДанныеДокумента.Ссылка) = Тип(Документ.ПрочееОприходованиеТоваров) Тогда
|...
Из документ.ПеремещениеТоваров.Товары как ДанныеДокумента
Вроде как явно задан тип документа ПеремещениеТоваров, но сравнивается с типом ПрочееОприходованиеТоваров
Так и надо?
11 mistеr
 
11.08.22
09:45
(0) В самом запросе проверить наличие поля нельзя. На момент выполнения запроса все поля должны быть определены и существовать.

Решение состоит в динамическом формировании текста запроса. Для нужного документа ставь свое выражение, а для всех остальных типов документов просто Номенклатура.
12 СеменовСемен
 
11.08.22
09:48
Если ты подменяешь таблицу, то уже и поле подменяй