Имя: Пароль:
1C
1С v8
Управляемая форма. Работа с табличной частью.
,
0 dmabramov
 
28.04.14
16:15
Всем привет!
Продолжаю разбираться с управляемыми формами. Возник такой вопрос:

В табличной части документа имеется реквизит1 (Тип Справочник).
Необходимо сделать так чтобы при изменении этого реквизита1 заполнялись некоторые реквизиты в текущей строке табличной части, причем данные для заполнения содержатся в реквизит1.

Получить доступ к данным содержащимся в реквизит1 на клиенте я не могу.
Когда делаю это на сервере, не могу понять как найти текущую строку табличной части.

Подскажите как это реализуется?
1 Kamas
 
28.04.14
16:18
ТекДанные    = Элементы.Таблица.ТекущиеДанные;
ТекДанные.Чтото=ТекДанные.Справочник.Чтото;
2 Kamas
 
28.04.14
16:19
Как-то так.
3 Адский плющ
 
28.04.14
16:19
(0) Получать нужные данные по переданным параметрам вызовом бесконтекстной функции.
4 dmabramov
 
28.04.14
16:29
Kamas ну в обычном приложении я так и делал)
А вот в управляемом беда. Дело в том что:

ТекДанные    = Элементы.Таблица.ТекущиеДанные;  - доступно только на клиенте
ТекДанные.Чтото=ТекДанные.Справочник.Чтото; - не доступно на клиенте!
5 bborisko
 
28.04.14
16:31
ТекДанные    = Элементы.Таблица.ТекущиеДанные;
ТекДанные.Чтототам = НаСервереБезКонтекста(ТекДанные.НужнаяСсылка)

&НаСервереБезКонтекста
Функция ВернутьДанные(Ссылка)
   Возврат Ссылка.Реквизит;
КонецФункции
6 bborisko
 
28.04.14
16:32
Ну в смысле ВернутьДанные вызывай)
7 dmabramov
 
28.04.14
16:47
Адский плющ, bborisko Спасибо Вам! Помогло)

Вот так получилось может пригодится кому:
8 dmabramov
 
28.04.14
16:51
НаКлиенте
Процедура ВнутреннийНомерПриИзменении(Элемент)
    ТекДанные = Элементы.Номенклатура.ТекущиеДанные;
    ТекДанные.СерийныйНомер = ПолучитьСерийныйНомерПоВнутреннемуНомеру(ТекДанные.ВнутреннийНомер);
    ТекДанные.Номенклатура = ПолучитьКартриджПоВнутреннемуНомеру(ТекДанные.ВнутреннийНомер);
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьНоменклатуруПоВнутреннемуНомеру(ВнутреннийНомер)
   Возврат ВнутреннийНомер.Номенклатура;
КонецФункции

&НаСервереБезКонтекста
Функция ПолучитьСерийныйНомерПоВнутреннемуНомеру(ВнутреннийНомер)
   Возврат ВнутреннийНомер.СерийныйНомер;
КонецФункции
9 bborisko
 
28.04.14
16:52
Я бы за один раз получал все данные - возвращал бы структуру.
10 dmabramov
 
28.04.14
16:53
А структуру можно на форму передавать? Не будет ругаться? Щас попробую спасибо!
11 vmv
 
28.04.14
16:53
ОбщегоНазначения.ПолучитьЗначенияРеквизитов(Ссылка)

велосипед-то то ездит уже 10 лет и даже без УФ
12 dmabramov
 
28.04.14
17:02
Вот так тогда:
&НаКлиенте
Процедура ВнутреннийНомерПриИзменении(Элемент)
    ТекДанные = Элементы.Номенклатура.ТекущиеДанные;
    ДанныеИзВнутреннегоНомера = ПолучитьДанныеПоВнутреннемуНомеру(ТекДанные.ВнутреннийНомер);
    ТекДанные.СерийныйНомер = ДанныеИзВнутреннегоНомера.СерийныйНомер;
    ТекДанные.Номенклатура = ДанныеИзВнутреннегоНомера.Номенклатура;
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьДанныеПоВнутреннемуНомеру(ВнутреннийНомер)
    Результат = Новый Структура;
    Результат.Вставить("Номенклатура",ВнутреннийНомер.Номенклатура);
    Результат.Вставить("СерийныйНомер",ВнутреннийНомер.СерийныйНомер);
    Возврат Результат
КонецФункции

vmv и Вам спасибо! Не знал такого.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший