|
Не добавляются на форму доп. реквизиты | ☑ | ||
---|---|---|---|---|
0
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 делал Форма.прочитать(); Форма.ОбновитьОтображениеДанных(); не помогло |
|||
1
wms
25.01.19
✎
17:58
|
в п.2 доп. реквизиты нормально все добавляются т.е. в Форма.Объект.ДополнительныеРеквизиты они есть, но на форме не отображаются
|
|||
2
singlych
25.01.19
✎
18:39
|
"Форма.прочитать();"
Мм, должно было сработать. Отладчик останавливается в ПриЧтенииНаСервере() формы? Свойства точно из нужного набора заполняешь? КопироватьДанныеФормы заюзай. |
|||
3
wms
25.01.19
✎
19:26
|
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) Форма = ПолучитьФорму("Справочник.ДоговорыМеждуОрганизациями.ФормаОбъекта"); ивсДанныеФормы = Форма.Объект; // Получаем объект формы в переменную Создали=Ложь; ДоговорСОрганизацией=Неопределено; ивсЗаполнитьДоговорНаСервере(ивсДанныеФормы,ПараметрыВыполненияКоманды.Источник.Объект.Ссылка,Создали,ДоговорСОрганизацией); // Заполняем справочник на сервере Если Создали Тогда КопироватьДанныеФормы(ивсДанныеФормы, Форма.Объект); // копируем наш объект в объект формы и далее открываем ее Форма.прочитать(); //не помогает т.к. сразу форма открывается в ПриОткрытии, а доп. реквизиты добавляются на форму ПриСозданииНаСервере() //Форма.ОбновитьОтображениеДанных(); //УправлениеСвойствами_ЗаполнитьДополнительныеРеквизитыВФорме(Форма,Форма.Объект); Форма.Открыть(); //- тут Форма.Объект.ДополнительныеРеквизиты.количество()=4, но на форме доп. реквизитов НЕТ!!! иначеесли ДоговорСОрганизацией<>Неопределено тогда ОткрытьФорму("Справочник.ДоговорыМеждуОрганизациями.ФормаОбъекта", Новый Структура("Ключ", ДоговорСОрганизацией)); КонецЕсли; КонецПроцедуры |
|||
4
wms
25.01.19
✎
19:27
|
(2) см. код выше
Форма.прочитать();//не помогает т.к. сразу форма открывается в ПриОткрытии, а доп. реквизиты добавляются на форму "КопироватьДанныеФормы заюзай." использую |
|||
5
singlych
25.01.19
✎
21:58
|
ПриСоздании должно отработать при ПолучитьФорму(). А, ну да, ПриЧтении же не работает, тк объект новый. Вот реквизиты и не заполняются. Есть вариант заполнять не допреквизиты в объекте, а в реквизитах формы, созданных для их отображения в модуле управления свойствами. У формы должен быть реквизит ОписаниеСвойств или как-то так - это ДанныеФормыКоллекция, там в колонках есть ссылки на свойства и имена реквизитов формы вида ДополнительныйРеквизитЗначение<гуид набора><гуид свойства>, их заполняй. А в ТЧ допреквизитов объекта оно само попадет при записи документа.
|
|||
6
wms
26.01.19
✎
10:27
|
(5) да, через форму и сделал заполнение доп. реквизитов. костыль, но по другому видимо никак.
Написал Процедуру &НаКлиенте Процедура УправлениеСвойствами_ЗаполнитьДополнительныеРеквизитыВФорме(Форма,Объект) Список = Форма.Свойства_ОписаниеДополнительныхРеквизитов; Если ЗначениеЗаполнено(Список) Тогда Для каждого Стр Из Объект.ДополнительныеРеквизиты Цикл НайденныеСтроки = Список.НайтиСтроки(Новый Структура("Свойство", стр.Свойство)); Если НайденныеСтроки.Количество() > 0 Тогда ИмяДопРеквНаФорме=НайденныеСтроки[0].ИмяРеквизитаЗначение; Форма[ИмяДопРеквНаФорме]=стр.Значение; КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры И вызываю ее перед открытием УправлениеСвойствами_ЗаполнитьДополнительныеРеквизитыВФорме(Форма,Форма.Объект); Форма.Открыть(); |
|||
7
wms
26.01.19
✎
10:33
|
мне вот еще момент не понятен. Пытался дозаполнить доп. реквизиты через типовую процедуру
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(Форма) но ее на клиенте нельзя вызвать т.к. общий модуль "УправлениеСвойствами" стоит галка только сервер. и в нее никак нельзя передать Форма Но, эта же процедура вызывается из модуля формы справочника Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) и в неЁ уже передается форма и не ругается и в ней доп. реквизиты выводятся на форму. |
|||
8
singlych
26.01.19
✎
12:28
|
(7) Потому что форму нельзя передать с клиента на сервер. Но можно с клиента на клиент и с сервера на сервер.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |