Имя: Пароль:
1C
1С v8
Заполнение дополнительного реквизита "по умолчанию"
0 gintmp
 
27.10.15
08:53
Добрый день! Подскажите пожалуйста, как можно заполнить дополнительный реквизит при создании формы значением "по умолчанию".
Имеем внешнюю обработку, которая открывает и заполняет форму справочника (менять конфигурацию нельзя), все реквизиты заполняются, кроме дополнительных реквизитов. Приходится выбирать руками, что не удобно.
Вот что делаю:

Форма = ПолучитьФорму("Справочник.ДоговорыКонтрагентов.ФормаОбъекта"); //получаем форму на клиенте
ДанныеФормы = Форма.Объект;
ДанныеДляЗаполнения = ПолучитьДанныеДляЗаполненияДоговораПоПроекту(Элементы.СписокПроектов.ТекущиеДанные.Ссылка); //здесь получаются данные для заполнения
ЗаполнитьНаСервере(ДанныеФормы,ДанныеДляЗаполнения); //здесь заполняются данные формы, в том числе создается строка ТЧ дополнительных реквизитов

КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); //копируем то что заполнили на сервере, при этом строка доп.реквизитов тоже копируется, судя по отладчику
Форма.Открыть(); // открываем, все заполнено кроме доп. реквизита

Куда копать?
1 Fedor-1971
 
27.10.15
09:04
(0) Если делать на УФ то перенеси заполнение твоих доп.реквизитов в процедуру ПриСозданииНаСервере самой формы.
2 gintmp
 
27.10.15
09:11
(1) Все бы хорошо, если можно редактировать конфигурацию. Неужели этого нельзя сделать без изменения?
3 Fedor-1971
 
27.10.15
09:23
(2) ну тогда попробуй заполнить структуру ДанныеЗаполнения и передать её как параметр в создаваемую форму.
4 gintmp
 
27.10.15
09:26
(3) Вариант. Спасибо. Буду пробовать.
5 gintmp
 
27.10.15
09:42
(3) Все же не очень догнал. Можешь немножко развернуть?
В отладчике у формы есть такой реквизит  (Форма.ДополнительныйРеквизитЗначение_0F06985CxA180x11E4x9420x00155D149014_8EB23829x6696x11E5x82DAxB4B676676A87) наверно его и надо заполнять, но создается он видимо в момент открытия, и называться может по разному.. Может есть какие мысли?
6 Fedor-1971
 
27.10.15
10:20
(5) примерно так

пар=новый Структура;
пар.Вставить("ДанныеЗаполнения", новый структура);
пар.ДанныеЗаполнения.Вставить(<Название доп реквизита как называется в форме>, значениеОного);
ОткрытьФорму("Справочник.ДоговорыКонтрагентов.ФормаОбъекта", пар)
[\1C]
только вопрос будет при копировании существующего документа, т.к. ДанныеЗаполнения и есть копируемый элемент.
7 Fedor-1971
 
27.10.15
10:21
6+ незадача, что-то не получается использовать тэги
8 gintmp
 
28.10.15
10:15
(6) Так не получиться, т.к. перед открытием формы у меня нет названия "<Название доп реквизита как называется в форме>,". Он появляется только псле создания формы.
Может можно как-то обновить отображение формы или перезаполнить доп. реквизиты?
Самое интересное, что вот этом этапе: КопироватьДанныеФормы(ДанныеФормы, Форма.Объект)
таблица доп. реквизитов заполнена (содержит доп реквизит значение), но на форме не отображается и при интерактивной записи не сохраняется. Сохраняется только если интерактивно выбрать доп. реквизит.
Есть мыли как можно заполнить программно доп. реквизит на форме?
9 НЕА123
 
28.10.15
10:48
(9)
хз.

для ТЧ использовал плагиат

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Элементы.ТЧ.ДобавитьСтроку();  
    Количество = Объект.ТЧ.Количество();
    Объект.ТЧ.Удалить(Количество-1);
КонецПроцедуры
10 gintmp
 
28.10.15
10:49
(9) брр.. точно в эту ветку написал?)
11 НЕА123
 
28.10.15
11:03
(10)
ну в (9) написано же
>хз.
суть в том, что тебе надо как-то твой реквизит изменять на клиенте.
12 gintmp
 
28.10.15
14:27
Может где-то в стандартных есть заполнение доп реквизита или где можно подсмотреть?)