Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Как получить заголовок реквизита на табличной части формы?

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

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

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

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

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
Здесь можно задать вопрос "Как сделать?" и получить кучу ответов, что тебе это делать не надо. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.