Имя: Пароль:
1C
 
Как получить синоним реквизита?
0 gerthog
 
10.03.15
14:31
Есть задача, проверка заполнения реквизитов по условию. Реквизиты на техническом английском, а синонимы по русски и нужно, что бы если реквизит(например "X_GZT") не заполнен, тогда сообщить пользователю, что не заполнен реквизит "СинонимРеквизита". Гугл пока ничего подходящего не сказал, мб тут подскажут?
1 aka AMIGO
 
10.03.15
14:32
какая конфа? релиз?
2 zak555
 
10.03.15
14:33
Метаданные ?
3 Vladal
 
10.03.15
14:33
Правильно ли я понимаю, что синоним реквизита не заполнен в дереве метаданных?
Тогда по метаданным в цикле и проверять реквизит.

Если НЕ ЗначениеЗаполнено(Реквизит.Синоним) Тогда
    // Ошибочка вышла
КонецЕсли;
4 Веселый молочник
 
10.03.15
14:34
никак
5 aka AMIGO
 
10.03.15
14:35
(4) почему "Никак"?
6 Веселый молочник
 
10.03.15
14:36
(5) потому что штатными средствами в режиме предприятия никак
7 Vladal
 
10.03.15
14:37
проверь и поправь в своей конфе:

    МетаданныеДокумента = Источник.Метаданные();
    
    // Проверка по реквизитам шапки
    Для Каждого РеквДок из МетаданныеДокумента.Реквизиты Цикл
        Сообщить(РеквДок.Синоним);
    КонецЦикла;
    
    // Проверка по табличным частям
    Для каждого ТабЧасть Из МетаданныеДокумента.ТабличныеЧасти Цикл
        Для каждого КолонкаТЧ Из ТабЧасть.Реквизиты Цикл
            Сообщить(КолонкаТЧ.Синоним);
        КонецЦикла;
    КонецЦикла;

Я грубо вырезал свою обработку использования помеченных на удаление элементов справочников.

(5) и (6) Потому что ты этого не знаешь. А средства штатные. Код - выше.
8 aka AMIGO
 
10.03.15
14:38
(6) так в (3) и предложено нештатное :)
а штатно - только смотреть в конфигураторе дерево метаданных :)
9 aka AMIGO
 
10.03.15
14:39
(7) понятно :)
10 Vladal
 
10.03.15
14:39
(8) Почему нештатное? Внешние компоненты, VBS, WSH - нештатное. А нативный код в 1С - штатное.
11 Vladal
 
10.03.15
14:40
+(7) Весь код такой (может, кому пригодится)

    МетаданныеДокумента = Источник.Метаданные();
    
    // Проверка по реквизитам шапки
    Для Каждого РеквДок из МетаданныеДокумента.Реквизиты Цикл
        Если ВидОбъектаПоСсылке(Источник[РеквДок.Имя]) = "Справочник" Тогда
            Если ЗначениеЗаполнено(Источник[РеквДок.Имя])
                И Источник[РеквДок.Имя].ПометкаУдаления Тогда
                ОбщегоНазначения.СообщитьОбОшибке("Нельзя использовать помеченный на удаление элемент!
                |Реквизит шапки " + РеквДок.Синоним + " - " + Источник[РеквДок.Имя]);
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    
    // Проверка по табличным частям
    Для каждого ТабЧасть Из МетаданныеДокумента.ТабличныеЧасти Цикл
        Для каждого СтрокаТЧ Из Источник[ТабЧасть.Имя] Цикл
            Для каждого КолонкаТЧ Из ТабЧасть.Реквизиты Цикл
                Если ВидОбъектаПоСсылке(СтрокаТЧ[КолонкаТЧ.Имя]) = "Справочник" Тогда
                    Если ЗначениеЗаполнено(СтрокаТЧ[КолонкаТЧ.Имя])
                        И СтрокаТЧ[КолонкаТЧ.Имя].ПометкаУдаления Тогда
                        ОбщегоНазначения.СообщитьОбОшибке("Нельзя использовать помеченный на удаление элемент!
                        |Табличная часть " + ТабЧасть.Синоним
                        + ", строка " + СтрокаТЧ.НомерСтроки
                        + ", колонка " + КолонкаТЧ.Синоним
                        + " - " + СтрокаТЧ[КолонкаТЧ.Имя], Отказ);
                    КонецЕсли;
                КонецЕсли;
            КонецЦикла;
        КонецЦикла;
    КонецЦикла;
12 aka AMIGO
 
10.03.15
14:40
(10) т.е. я вношу изменения в модуль конфы, и получаю штатное решение?
13 DirecTwiX
 
10.03.15
14:49
(12) Так обработки же есть
14 Vladal
 
10.03.15
14:50
(12) Внешней обработкой.
Что есть штатное и нештатное?
Что есть штатное для типовой?
Что есть нештатное для типовой?
Что находится в папках Extforms на диске ИТС?
15 Timon1405
 
10.03.15
14:51
Телепатирую: у ТС есть некий объект Деталь1, у которого есть реквизит Деталь1.X_GZT, у которого синоним, например "Ширина детали" и, если при загрузке извне она оказалась пустой, то сообщать нужно "у Детали1 не заполнена Ширина детали"
16 Vladal
 
10.03.15
14:52
(12) Вот получить Exif-информацию из фоток (размер, выдержка, GPS-координты. модель фотоаппарата, дата и время снимка и т.д.) средствами 1С без внешних компонент - явно нештатное, ибо приходилось задействовать vbs.
А прочиттать синоним метаданых - вполне себе штатный метод, описан в синтакс-помощнике.
17 Vladal
 
10.03.15
14:53
(15) Хороший вариант.
18 gerthog
 
10.03.15
14:56
(1) Конфа - Управление Мед. Центром
(2) Что метаданные?
(3) Нет, синоним в дереве метаданных заполнен. Например реквизит "X_TVP" его синоним: "ТВП". Программно проверяю заполнен ли реквизит "X_TVP", если нет, то нужно вывести сообщение пользователю "Не заполнен реквизит "ТВП"", но как узнать синоним реквизита не могу нагуглить.
(7) Спасибо, сейчас попробую
19 b_ru
 
10.03.15
14:57
>>Реквизиты на техническом английском
Я бы рекомендовал эвтаназию для автора решения.
20 gerthog
 
10.03.15
15:00
(19) Не знаешь для чего и почему так сделано, а критикуешь - глупо
21 Vladal
 
10.03.15
15:05
(18) Ну вот как раз это и есть синоним:

ОбщегоНазначения.СообщитьОбОшибке("Нельзя использовать помеченный на удаление элемент!
|Реквизит шапки " + РеквДок.Синоним + " - " + Источник[РеквДок.Имя]);

РеквДок.Синоним -- синоним реквизита, как его привыкли видеть пользователи на экране.
22 aka AMIGO
 
10.03.15
15:13
(16) я понял, спасибо! :)
23 gerthog
 
10.03.15
15:21
(21) Пробую сейчас по Вашему примеру. К метаданным можно обращаться только НаСервере, да?