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

Не добавляются на форму доп. реквизиты

Не добавляются на форму доп. реквизиты
Я
   wms
 
25.01.19 - 17:56
1С:Предприятие 8.3 (8.3.13.1644)
1С:ERP Управление строительной организацией 2.4 (2.4.6.188)
Выполняется команда:
1)Сначала получаю форму
Форма = ПолучитьФорму("Справочник.ДоговорыМеждуОрганизациями.ФормаОбъекта");

2) заполняю все ее реквизиты в т.ч. доп. реквизиты

3) открываю Форма.Открыть();

дело в том что доп. реквизиты добавляются на форму до процедуры открытия, т.е. в момент получения формы обрабатываются серверные методы ПриСозданииНаСервере() и т.п.

перед выполнением п.3 делал
Форма.прочитать();
Форма.ОбновитьОтображениеДанных();
не помогло
 
 
   wms
 
1 - 25.01.19 - 17:58
в п.2 доп. реквизиты нормально все добавляются т.е. в Форма.Объект.ДополнительныеРеквизиты они есть, но на форме не отображаются
   singlych
 
2 - 25.01.19 - 18:39
"Форма.прочитать();"
Мм, должно было сработать. Отладчик останавливается в ПриЧтенииНаСервере() формы?
Свойства точно из нужного набора заполняешь?
КопироватьДанныеФормы заюзай.
   wms
 
3 - 25.01.19 - 19:26
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    Форма = ПолучитьФорму("Справочник.ДоговорыМеждуОрганизациями.ФормаОбъекта");
    ивсДанныеФормы = Форма.Объект;// Получаем объект формы в переменную

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

    Если Создали Тогда
        КопироватьДанныеФормы(ивсДанныеФормы, Форма.Объект);// копируем наш объект в объект формы и далее открываем ее

        Форма.прочитать();//не помогает т.к. сразу форма открывается в ПриОткрытии, а доп. реквизиты добавляются на форму ПриСозданииНаСервере()

        //Форма.ОбновитьОтображениеДанных();

        //УправлениеСвойствами_ЗаполнитьДополнительныеРеквизитыВФорме(Форма,Форма.Объект);

        Форма.Открыть();    //- тут   Форма.Объект.ДополнительныеРеквизиты.количество()=4, но на форме доп. реквизитов НЕТ!!! 

    иначеесли ДоговорСОрганизацией<>Неопределено тогда    
        ОткрытьФорму("Справочник.ДоговорыМеждуОрганизациями.ФормаОбъекта", Новый Структура("Ключ", ДоговорСОрганизацией)); 
    КонецЕсли; 
КонецПроцедуры
   wms
 
4 - 25.01.19 - 19:27
(2) см. код выше
Форма.прочитать()//не помогает т.к. сразу форма открывается в ПриОткрытии, а доп. реквизиты добавляются на форму 


"КопироватьДанныеФормы заюзай." использую
   singlych
 
5 - 25.01.19 - 21:58
ПриСоздании должно отработать при ПолучитьФорму(). А, ну да, ПриЧтении же не работает, тк объект новый. Вот реквизиты и не заполняются. Есть вариант заполнять не допреквизиты в объекте, а в реквизитах формы, созданных для их отображения в модуле управления свойствами. У формы должен быть реквизит ОписаниеСвойств или как-то так - это ДанныеФормыКоллекция, там в колонках есть ссылки на свойства и имена реквизитов формы вида ДополнительныйРеквизитЗначение<гуид набора><гуид свойства>, их заполняй. А в ТЧ допреквизитов объекта оно само попадет при записи документа.
   wms
 
6 - 26.01.19 - 10:27
(5) да, через форму и сделал заполнение доп. реквизитов. костыль, но по другому видимо никак.
Написал Процедуру
&НаКлиенте
Процедура УправлениеСвойствами_ЗаполнитьДополнительныеРеквизитыВФорме(Форма,Объект)
    Список = Форма.Свойства_ОписаниеДополнительныхРеквизитов;
    Если ЗначениеЗаполнено(Список) Тогда
        Для каждого Стр Из Объект.ДополнительныеРеквизиты Цикл
            НайденныеСтроки = Список.НайтиСтроки(Новый Структура("Свойство", стр.Свойство));
            Если НайденныеСтроки.Количество() > 0 Тогда
                ИмяДопРеквНаФорме=НайденныеСтроки[0].ИмяРеквизитаЗначение;        
                Форма[ИмяДопРеквНаФорме]=стр.Значение;
            КонецЕсли;         
        КонецЦикла; 
    КонецЕсли; 
КонецПроцедуры

И вызываю ее перед открытием
        УправлениеСвойствами_ЗаполнитьДополнительныеРеквизитыВФорме(Форма,Форма.Объект);
Форма.Открыть();
   wms
 
7 - 26.01.19 - 10:33
мне вот еще момент не понятен. Пытался дозаполнить доп. реквизиты через типовую процедуру
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(Форма)
но ее на клиенте нельзя вызвать т.к. общий модуль "УправлениеСвойствами" стоит галка только сервер. и в нее никак нельзя передать Форма

Но, эта же процедура вызывается из модуля формы справочника
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

и в неЁ уже передается форма и не ругается
и в ней доп. реквизиты выводятся на форму.
   singlych
 
8 - 26.01.19 - 12:28
(7) Потому что форму нельзя передать с клиента на сервер. Но можно с клиента на клиент и с сервера на сервер.

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