|
Табличная часть в УП |
☑ |
0
MaiorovYury
07.04.14
✎
10:53
|
Добрый день,
задам наверное совершенно нубский вопрос, но с управляемым приложением раньше ни разу не работал.
Надо переписать обработки с ОП на УП.
При попытке обратиться к табличной части моей обработки просто по ее названию, вылетает ошибка, причем как для сервера, так и для клиента
{Форма.Форма1.Форма(303,2)}: Переменная не определена (Отгрузки)
<<?>>Отгрузки.Очистить(); (Проверка: Сервер)
{Форма.Форма1.Форма(42,17)}: Переменная не определена (Отгрузки)
НоваяСтрока = <<?>>Отгрузки.Добавить(); (Проверка: Тонкий клиент)
Как обращаться к табличным частям моей обработки внутри управляемой формы?
|
|
1
Wobland
07.04.14
✎
10:54
|
внутри сервера. преобразовать реквизит формы в значение (объект)
|
|
2
MaiorovYury
07.04.14
✎
10:55
|
Эти ошибки вылетают при попытке сохранить внешнюю обработку
1С:Предприятие 8.3 (8.3.4.437)
|
|
3
MaiorovYury
07.04.14
✎
10:56
|
(1) то есть ЭтаФорма.ЭлементыФормы.Отгрузки
А дальше? :)
|
|
4
Wobland
07.04.14
✎
10:59
|
ещё один считает, что данные - это то, чтоон видит
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
об=РеквизитФормыВЗначение("Объект");
|
|
5
Wobland
07.04.14
✎
11:00
|
на тебе более информативный кусок
&НаКлиенте
Процедура ЗаполнитьСлучайно(Команда)
Если Вопрос("Табличная часть будет очищена. Продолжить?", РежимДиалогаВопрос.ДаНет)=КодВозвратаДиалога.Да Тогда
СлучайноЗаполнить();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СлучайноЗаполнить()
док=РеквизитФормыВЗначение("Объект");
СерверныйМодуль.ЗаполнитьСлучайно(док);
ЗначениеВРеквизитФормы(док, "Объект");
КонецПроцедуры
|
|
6
vvp91
07.04.14
✎
11:11
|
>> (1), (4), (5) преобразовать реквизит формы в значение (объект)
Так делать не надо.
>> (0) Как обращаться к табличным частям моей обработки внутри управляемой формы?
Внутри УФ есть основной реквизит формы, называется (как правило) - Объект. Если у обработки есть табчасти, то основной реквизит формы будет с типом ДанныеФормыСтруктураСКоллекцией, читай про этот тип в справке.
// Обращаться внутри УФ тривиально как на клиенте, так и на сервере:
Объект.Отгрузки.Очистить();
СтрокаОтгрузки = Объект.Отгрузки.Добавить();
СтрокаОтгрузки.ДатаОтгрузки = ТекущаяДата();
Если обращение идет на клиенте (в методах с директивой &НаКлиенте), то платформа сама обеспечивает передачу данных формы на сервер. Если обращение идет на сервере (в методах с директивой &НаСервере), то платформа обеспечивает передачу нужных измененных данных для отображения на клиенте.
|
|
7
MaiorovYury
07.04.14
✎
11:15
|
(6) О, спасибо!
Уже думал, что беда с этими преобразованиями
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший