| 
    
        
     
     | 
    
  | 
Проверка наличия поля у ТЧ в запросе | ☑ | ||
|---|---|---|---|---|
| 
    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 
 | 
         
        Если ты подменяешь таблицу, то уже и поле подменяй     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |