Имя: Пароль:
1C
1С v8
Обновление доп. реквизита на форме
0 Loko
 
22.08.16
13:00
всем привет!
есть справочник "договоры контрагентов" (1С erp 8.3), добавлен доп. реквизит "Внутренний рег.номер". нужно чтобы при записи в форме элемента программно заполнялся этот реквизит и отображался в форме.
код:

&НаСервере
Процедура ЗарегистрироватьНомер()
   СправочникОбъект     = РеквизитФормыВЗначение("Объект");
   СвойствоРегНомер     =    ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Внутренний рег.номер (Договоры с контрагентами)",Истина);
    НоваяСтрока          = СправочникОбъект.ДополнительныеРеквизиты.Добавить();
    //НоваяСтрока          = Объект.ДополнительныеРеквизиты.Добавить();    
    НоваяСтрока.Свойство = СвойствоРегНомер;
    НоваяСтрока.Значение = "тест";
    ЗначениеВРеквизитФормы(СправочникОбъект, "Объект");
КонецПроцедуры

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    ЗарегистрироватьНомер();    
КонецПроцедуры

в отладчике вижу, что запись в таблицу идет. но в таблицу в итоге не добавляется запись и соответственно на форме не отображается. подскажите, пожалуйста, что делаю не так?
1 butterbean
 
22.08.16
13:02
убери всю шелуху с СправочникОбъект, просто пиши НоваяСтрока = ДополнительныеРеквизиты.Добавить();
2 Loko
 
22.08.16
13:07
&НаСервере
Процедура ЗарегистрироватьНомер()
    НоваяСтрока = Объект.ДополнительныеРеквизиты.Добавить();
    НоваяСтрока.Свойство = СвойствоРегНомер;
    НоваяСтрока.Значение = "тест";
КонецПроцедуры

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    ЗарегистрироватьНомер();    
КонецПроцедуры

не идет
3 RomanYS
 
22.08.16
13:11
(2) что значит "не идет"? Результат запросом проверяешь?
4 Loko
 
22.08.16
13:14
(3) нажимаю записать. в отладчике вижу, что в ДополнительныеРеквизиты запись добавлена. а после записи (после отладки) в элементе запись не добавлена почему то.
5 RomanYS
 
22.08.16
13:20
(4) В процессе записи вызывается много обработчиков как у формы так и у объекта. Пройдись по всем, найди где данные удаляются.
6 Loko
 
22.08.16
13:30
&НаСервере
Процедура ЗарегистрироватьНомер()
    //СвойствоРегНомер     = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Внутренний рег.номер (Договоры с контрагентами)",Истина);
    //НоваяСтрока = Объект.ДополнительныеРеквизиты.Добавить();
    //НоваяСтрока.Свойство = СвойствоРегНомер;
    //НоваяСтрока.Значение = "тест";
    Объект.Наименование = "тест";    
КонецПроцедуры

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    ЗарегистрироватьНомер();    
КонецПроцедуры

сделал для наименования. все работает. почему с таблицей значения. не получается?
7 Loko
 
22.08.16
13:47
(5) ага, нашел
8 Loko
 
22.08.16
14:16
еще нужна помощь)
в общем, там перед записью на сервере выполняется процедура, которая очищает табличную часть "доп. реквизиты" и потом заполняет ее значениями из формы.
т.е. для меня нужно получается программно заполнить это значение на форме? как это сделать?..
9 butterbean
 
22.08.16
14:21
(8) нет под рукой erp, но можно просто посмотреть что за элемент лежит на форме, это скорее всего таблицазначений, и в него добавлять строки
10 butterbean
 
22.08.16
14:22
(9) точнее в реквизит формы, с которым связан элемент
11 Loko
 
22.08.16
14:49
(10) да, это табл. часть. но на форме то ее нет же.
проблема в том, что доп. реквизиты на форме добавлены через "изменить форму". и по сути это уже не табл. часть, а именно реквизиты, но на форме их "как бы" нет.

вот в отладчике "форма":

http://upload.akusherstvo.ru/image1111880.png
12 Loko
 
22.08.16
16:02
помогите)
13 polosov
 
22.08.16
16:16
(12) Кури общие модули УправлениеСвойствами*
Не изобретай велосипеды.
14 Мимохожий Однако
 
22.08.16
16:18
Добавь Записать()
15 Loko
 
23.08.16
03:15
сделал. кому мож интересно будет.


&НаСервере
Процедура ЗарегистрироватьНомер()
    СвойствоРегНомер     = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Внутренний рег.номер (Договоры с контрагентами)",Истина);
    Отбор = Новый Структура();
    Отбор.Вставить("Свойство", СвойствоРегНомер);
    НайденныеСтроки = ЭтаФорма.Свойства_ОписаниеДополнительныхРеквизитов.НайтиСтроки(Отбор);
    Если НайденныеСтроки.Количество() > 0 тогда
        Этаформа[НайденныеСтроки[0].ИмяРеквизитаЗначение]= "тест";
    КонецЕсли;
КонецПроцедуры
16 Горогуля
 
23.08.16
03:18
а ничего, что данные не меняются?
17 Loko
 
23.08.16
03:28
(16) в смысле?
18 Loko
 
23.08.16
03:29
(16) меняются. там выше писал в (8)
19 Горогуля
 
23.08.16
03:50
>программно заполнить это значение на форме
уговорил