|
Помогите программно заполнить УФ форму | ☑ | ||
---|---|---|---|---|
0
for012
16.12.14
✎
09:09
|
Здравствуйте.
Из экселя гружу доки в типовую конфу. Создаю форму, заполняю ее и оставляю открытой, чтобы юзер поправил и посмотрел, а затем провел. Но проблема: В данной УФ форме есть Вкладка (страница) БухгалтерскаяОперация и на ней есть элементы с именами: ТиповыеОперации_ТиповаяОперацияДокумента, ТиповыеОперации_ТиповаяОперация, ТиповыеОперации_ОткрытьОперацию ТиповыеОперации_СчетПоКредиту, ТиповыеОперации_КВД, ТиповыеОперации_СчетКт, ТиповыеОперации_КПС_20110 Никак их заполнить не получается. Т.к. в конфигураторе этой страницы вообще нет и она видимо добавляется программно (фирмой 1с) при создании формы (или при открытии) И через ДанныеФормы = Форма.Объект; Я их не могу найти и заполнить. Как заполнить их? Как найти какие реквизиты соответствуют этим элементам? |
|||
1
Fish
16.12.14
✎
09:12
|
В коде посмотреть никак?
|
|||
2
olegves
16.12.14
✎
09:18
|
(0) к отладчику тебя не пускают?
|
|||
3
for012
16.12.14
✎
11:13
|
(1)
В коде в модуле формы в ф-ции ПриСозданииНаСервере идет вызов: БухгалтерскиеОперацииСервер.ПриСозданииНаСервере(Отказ, СтандартнаяОбработка, Элементы.БухгалтерскаяОперация, Элементы.ДополнительныеТабличныеЧасти); Также идет вызов в ф-ции ПриЧтенииНаСервере Смотрю ф-цию к-е работает в вызове ПриСозданииНаСервере, там есть ф-ция Если РеквизитыФормы = Неопределено Тогда РеквизитыФормы = Форма.ПолучитьРеквизиты(); КонецЕсли; Для каждого ТекРеквизит Из РеквизитыФормы Цикл Если ТекРеквизит.Имя = "ТиповаяОперация" Тогда Форма["ТиповаяОперация"] = БухгалтерскаяОперация; ИначеЕсли ЗначенияДопРеквизитов.Свойство(ТекРеквизит.Имя) Тогда Форма[ТекРеквизит.Имя] = ЗначенияДопРеквизитов[ТекРеквизит.Имя]; БухгалтерскиеОперацииКлиентСервер.ДопРеквизитИзменение(Форма.Элементы[БухгалтерскиеОперацииКлиентСервер.ПрефиксЭлементовОперации() + ТекРеквизит.Имя], Форма); КонецЕсли; КонецЦикла; |
|||
4
Fuas4
16.12.14
✎
11:23
|
Заполни их после того, как они создадутся на форме. Т.е., вероятно, ПРиСозданииНаСервере(), но после всех типовых строк кода
|
|||
5
for012
16.12.14
✎
11:36
|
Вообще в ф-ции ПриСозданииНаСервере касательноБухОперации
если 3 функции, к-е касаются проблемы: ЗаполнитьДополнительныеРеквизитыВФорме(Форма, ТиповаяОперация, ЗначенияДопРеквизитов); ПроверитьЗначенияДополнительныхРеквизитовПоУстановленнымОтборам(Форма, Объект, ТиповаяОперация); УстановитьДоступностьЗависимыхРеквизитовФормы(Форма, ПолеДляРеквизитовОперации); |
|||
6
Fuas4
16.12.14
✎
11:41
|
ну и что?
|
|||
7
Адский плющ
16.12.14
✎
11:51
|
1) Создать подписку на событие обработки заполнения.
2) Передавать туда что нужно, хоть адрес данных в хоронилище 3)....profit! |
|||
8
Адский плющ
16.12.14
✎
11:54
|
Вероятно в БСП подобный вопрос можно решить без внесения изменений в конфу, ХЗ.
|
|||
9
for012
16.12.14
✎
11:57
|
Менять типовую конфу, типовые модули не хочу, т.е. все делается в моем модуле (или в обработке).
Они, как я понял, создают форму сначала на сервере и там же в ф-ции ЗаполнитьДополнительныеРеквизитыВФорме(Форма, ТиповаяОперация, ЗначенияДопРеквизитов); к-я приведена в (3) они работают напрямую с Управляемой формой и ее реквизитами через Форма.ПолучитьРеквизиты() А я создаю свою форму на клиенте вызовом ф-ции Форма = ПолучитьФорму(...); Далее заполняю структуру ДанныеФормы = Форма.Объект; и ее отправляю в свой серверный модуль, а там, если я напишу: ДанныеФормы.ТиповыеОперации_КВД = Перечисления.КВД.Бюджет; Он мне сругается "Поле объекта не обнаружено (ТиповыеОперации_КВД)" При этом он не ругается на все те элементы, к-е есть в конфигураторе по умолчанию (т.е. к-е программно не задаются). Т.е. вызов ДанныеФормы.СуммаДокумента = 1; проходит без проблем. Соответственно, если я пытаюсь передать в серверный модуль саму форму, как 1С делает в (3) и (5) то я получаю: "Отсутствует отображение для типа 'УправляемаяФорма'" |
|||
10
for012
16.12.14
✎
12:27
|
А если я на клиенте пытаюсь вызвать
РеквизитыФормы = Форма.ПолучитьРеквизиты(); Тоже ругается : Метод недоступен на клиенте |
|||
11
DrZombi
гуру
16.12.14
✎
12:30
|
(0) Зачем тебе Форма?!!
Пиши сразу в Объект документа, выполняя по ходу те же функции, что и в интерактивном режиме, для быстроты заполнения :) |
|||
12
DrZombi
гуру
16.12.14
✎
12:31
|
(10) Познай для себя команды: &НаСервере &НаСевереБезКонтекста
Клавиша "F1", в конфигураторе, вводишь в поисковой строке "Хелпа" "НаСевереБезКонтекста", и читаешь :) |
|||
13
for012
16.12.14
✎
12:37
|
(11) Я так и хотел в начале, но также хотел не записывать док. в базу, а просто открыть на просмотр, чтобы если ему не понравится и пр. можно было закрыть без сохранения...
Если связка: создать объект - заполнить данными - открыть форму без записи объекта сработает, то конечно можно и так. В крайнем случае можно и сразу в базу писать... с записью. (12) Да вроде уже читал про них, но забыл, надо освежить. Только начал на УФ делать. |
|||
14
for012
16.12.14
✎
12:47
|
а как перебрать все элементы объекта:
ДанныеФормы = Форма.Объект; Типа ДанныеФормыСтруктура???? |
|||
15
for012
16.12.14
✎
13:36
|
(11) Посмотрел, таких реквизитов док-та
ТиповыеОперации_ТиповаяОперацияДокумента, ТиповыеОперации_ТиповаяОперация, ТиповыеОперации_ОткрытьОперацию ТиповыеОперации_СчетПоКредиту, ТиповыеОперации_КВД, ТиповыеОперации_СчетКт, ТиповыеОперации_КПС_20110 В принципе нет, по крайней мере если смотреть через подсказку всплывающую. И в конфигураторе в дереве их тоже нет. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |