![]() |
|
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 Цикл Сумма = Сумма + Док.Сумма; КонецЦикла; КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |