Имя: Пароль:
1C
1C 7.7
v7: Как получить заголовок реквизита на табличной части формы?
0 sysadminlk
 
29.04.20
10:44
Как получить заголовок реквизита табличной части?
хотел через формекс но не могу понять как туда форму текущего документа передать

                    ФормаРасш = СоздатьОбъект("РасширениеФормы");
                    Не работает: ФормаРасш.УстановитьФорму(ТекущийДокумент()); //ФормаРасш.УстановитьФорму(Форма); //ФормаРасш.УстановитьФорму(ТекущийДокумент().форма);
                    Для Х = 0 По ФормаРасш.КоличествоАтрибутов() - 1 Цикл
                        Сообщить(ФормаРасш.ПолучитьАтрибут(Х).Идентификатор());
                        Сообщить(ФормаРасш.ПолучитьАтрибут(Х).Заголовок());
                    КонецЦикла;

в модуле документа
ТекущийДокумент().Форма
я так понял нету
Сообщить(Контрагент.Заголовок());
{Документ.ВыпискаБанка.Модуль Документа(25)}: Поле агрегатного объекта не обнаружено (Заголовок)

Сообщить(Форма<<?>>.Контрагент.Заголовок());
{Документ.ВыпискаБанка.Модуль Документа(25)}: Переменная не определена (Форма)

Контрагент - это реквизит табличной части
Подскажите мне пожалуйста как получить его заголовок при проведении документа?
1 HawkEye
 
29.04.20
10:55
(0) зачем?
2 Злопчинский
 
29.04.20
10:57
ФормаРасш.УстановитьФорму(ТекущийДокумент());
это не надо. и неправильно. на крайняк (Форма), если просто УстановитьФорму() - то текущая.
3 Злопчинский
 
29.04.20
10:59
"..его заголовок при проведении документа"
при проведении документа форма может отсутсвовать.
документ проводится программно. - какая форма? какой заголовок? вы о чем?
.
напиши задачу, а не то как ты гвоздь в рельсу пытаешься забить.
4 Злопчинский
 
29.04.20
11:05
И без всяких формексов можно получить и изменить заголовок
А3 = Форма.ПолучитьАтрибут("Контрагент");
А3.Заголовок() - читаем
А3.Заголовок("ХреньКакуюТоВыдумал") - устанавливаем
5 sysadminlk
 
29.04.20
11:11
Документ проводится юзером.
У реквизита меняется заголовок в зависимости от того что там пользователь натыкал. Хочу показать юзеру если он забыл выбрать реквизит что конкретно он забыл. Поэтому нужно прочитать заголовок. Форма не доступна в модуле документа.
6 АгентБезопасной Нацио
 
29.04.20
11:16
(5) Ну передавай контекст, если уж так приперло.
а в ОбработкеПроведения проверяй, пустой параметр или нет.
но все равно это плохое решение...
7 Bigbro
 
29.04.20
12:14
обычно заголовок как раз выводится в зависимости от реквизита или их комбинации.
может проще проверить исходные данные по которым определяется заголовок документа?
8 Cthulhu
 
29.04.20
12:35
а что говорить тупо <ИмяРеквизита>.Заголовок() ?
9 Cthulhu
 
29.04.20
12:36
прим.: все реквизиты табличной части формы объекта (не путать с реквизитом формы типа "таблица значений"!!!) - это тупо реквизиты формы же.
10 sysadminlk
 
29.04.20
14:44
(8) Сообщить(Контрагент.Заголовок());
{Документ.ВыпискаБанка.Модуль Документа(25)}: Поле агрегатного объекта не обнаружено (Заголовок)
11 Duke1C
 
29.04.20
14:46
(10) Форма.Контрагент.Заголовок()
12 Duke1C
 
29.04.20
14:47
+11 Проверяй перед проведением, в модуле формы,
а не модуле документа
13 sysadminlk
 
29.04.20
14:55
(4)
я же говорю что это не в модуле формы, а в модуле документа, при проведении

А3 = Форма<<?>>.ПолучитьАтрибут("Контрагент");
{Документ.ВыпискаБанка.Модуль Документа(25)}: Переменная не определена (Форма)
При проверке модуля обнаружены синтаксические ошибки!

Процедура ОбработкаПроведения()
14 sysadminlk
 
29.04.20
15:30
Всем спасибо, сделал так:

                Если Контрагент.Выбран() = 0 тогда
                    Конт="";
                    Сервис = СоздатьОбъект("Сервис");
                    Если Сервис.АктивныйКонтекст(Конт) = 1 Тогда
                        Предупреждение("Не выбран реквизит """+Конт.Форма.Контрагент.Заголовок()+""" !");  
                    Иначе
                        ВидРекКонтрагент = ?(ТипЗначенияСтр(Контрагент) = "Справочник",Контрагент.Вид(),ТипЗначенияСтр(Контрагент));
                        Предупреждение("Не выбран реквизит """+ВидРекКонтрагент+""" !");                          
                    КонецЕсли;
                    СтатусВозврата(0);
                    Возврат;
                КонецЕсли;
15 Cthulhu
 
29.04.20
16:14
ну т.е. тебя устраивает то, что теперь программно проводить этот документ стало невозможно?.. ну и при этом в модуле роведения(!!!) ты юзаешь "предупреждение(..)" (причем - без таймаута даже!!!))))...
ну што ж.... дело твое, конечно...
16 Cthulhu
 
29.04.20
16:15
(15)+: но я бы лично тебя нахрен уволил, да...
17 Злопчинский
 
30.04.20
00:00
я сказал о форме в модуле - еще в самом начале. это херовое решение.
18 Злопчинский
 
30.04.20
00:03
(5) "У реквизита меняется заголовок в зависимости от того что там пользователь натыкал. Хочу показать юзеру если он забыл выбрать реквизит что конкретно он забыл. Поэтому нужно прочитать заголовок. Форма не доступна в модуле документа."
- юзер проводит ручками документ. ты что не знаешь. что ты можешь документ провести сам себя из формы документа? поэтому что там натыкал юзвер и сообщай ему - ДО ПРОВЕДЕНИЯ документа. не трогай модуль проведения, все можно сделать в интерактивнйо чсти дока.

В форме пишешь
Если ПользовательНатыкалХорошо()=1 Тогда
    Провести();
Иначе
   Предупреждение("Плохо натыкал!")
КонецЕсли;
19 Bigbro
 
30.04.20
05:20
(14) очень плохо, читай Злопчинского он прав.