|   |   | 
| 
 | v7: Проверка реквизита документа | ☑ | ||
|---|---|---|---|---|
| 0
    
        И Р 22.10.18✎ 20:24 | 
        Здравствуйте! При формировании реестра документов показывается ошибка:
 ТЗ.Сумма=Док.Сумма; {Отчет.РеестрДокументов.Форма.Модуль(428)}: Поле агрегатного объекта не обнаружено (Сумма) Предполагаю, что есть документ, у которого нет этого реквизита "Сумма". Пытаюсь поставить проверку в документе на наличие реквизита и возникает следующая ошибка: Если Док.Метаданные().Реквизиты.Найти("Сумма") <> Неопределено <<?>> Тогда {Отчет.РеестрДокументов.Форма.Модуль(427)}: Переменная не определена (Неопределено) Так как же сделать проверку, есть ли в документе такой реквизиты или нет? | |||
| 1
    
        Cool_Profi 22.10.18✎ 20:27 | 
        в7 и неопределено?
 Продам оператор попытки.... | |||
| 2
    
        Злопчинский 22.10.18✎ 20:52 | 
        (0) открой в типовой ТиС глобальным поиском СкопироватьРеквизитыШапки() - и посмотри как обходятся мтаданные     | |||
| 3
    
        MWWRuza гуру 22.10.18✎ 20:52 | 
        Из типовой торговли 7.7:
 // глЕстьРеквизитМнЧ(ИмяРеквизита, ВидДокумента) // // Параметры: // ИмяРеквизита - имя реквизита (строка) // ВидДокумента - вид документа (строка) // // Возвращаемое значение: // 0 - нет реквизита, // 1 - есть реквизит // // Описание: // Проверяет, есть ли в структуре метаданных документа указанного вида // реквизит многострочной части с указанным названием // Функция глЕстьРеквизитМнЧ(ИмяРеквизита,ВидДокумента) Экспорт Перем Реквизит; Если (ПустоеЗначение(ВидДокумента) = 1) ИЛИ (ПустоеЗначение(ИмяРеквизита) = 1) Тогда Возврат 0; КонецЕсли; Реквизит=Метаданные.Документ(ВидДокумента).РеквизитТабличнойЧасти(ИмяРеквизита); Возврат Реквизит.Выбран(); КонецФункции //глЕстьРеквизитМнЧ() | |||
| 4
    
        И Р 22.10.18✎ 23:53 | 
        (3) Прошу прощения, а если документы перебираются разных типов и реквизит может быть не табличной части?
 Как то это немного через одно место реализовано, неужели нельзя произвести поиск по реквизитам конкретного документа? | |||
| 5
    
        И Р 23.10.18✎ 00:05 | 
        Да и тут как бы не проверяется наличие такого реквизита.. тут возвращается его значение т.е. в моём случае также вернётся ошибка.     | |||
| 6
    
        Злопчинский 23.10.18✎ 00:36 | 
        (4) Перебрать 
 1. Общие (шапка) реквизиты документа 2. Реквизиты шапки документа 3. Реквизиты ТЧ документа . перебирай в каком тебе нужно порядке и строй алгоритм как надо и всё | |||
| 7
    
        Злопчинский 23.10.18✎ 00:36 | 
        (5)  Возврат Реквизит.Выбран();
 вернет 0 или 1 в зависимости от того есть такой реквизит в метаданных объекта или нет | |||
| 8
    
        big 23.10.18✎ 05:07 | 
        Если (Метаданные.Документ(ВидДокумента).РеквизитТабличнойЧасти(ИмяРеквизита).Выбран() = 1) ИЛИ
 (Метаданные.Документ(ВидДокумента).РеквизитШапки(ИмяРеквизита).Выбран() = 1) ИЛИ (Метаданные.Документ(ВидДокумента).ОбщийРеквизитДокумента(ИмяРеквизита).Выбран() = 1) Тогда ТЗ.ИмяРеквизита = Док.ИмяРеквизита; КонецЕсли; | |||
| 9
    
        Калиостро 23.10.18✎ 09:28 | 
        +(8) еще надо проверить
 Если Метаданные.Документ(ДокВидумента).РеквизитТабличнойЧасти("Сумма").ИтогПоКолонке = 1 Тогда Сумма = Док.Итог("Сумма"); Иначе Сумма = 0; Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку() = 1 Цикл Сумма = Сумма + Док.Сумма; КонецЦикла; КонецЕсли; | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |