Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 16:59

Как получить значение реквизита формы в V8.2

Автор Serzh, 15 сен 2010, 16:46

0 Пользователей и 1 гость просматривают эту тему.

Serzh

Столкнулся с такой проблемой -
Ест справочник "Животное", с реквизитами "Отец" и "Мать". Чтобы получить, например, деда животного в V8.1 был такой код

           Дед = ЭлементыФормы.Животное.Значение.Отец.Отец;

в V8.2 коллекцию всех элементов управляемой формы для прямого доступа получаем словом "Элементы" (а не ЭлементыФормы).
Как получить реквизит реквизита в 8.2? Второй день мучаюсь и ничего не выходит.
Помогите, пожайлуста!!!

ms

на клиенте не доступен ссылочный тип, на сервере завсегда пожалуйста
ну вот типа того
&НаСервереБезКонтекста
Функция Получить(ОбъектССылка)
Возврат ОбъектССылка.Родитель;
КонецФункции


ms

Р.S.
Дед = Получить(Элементы.Животное);

Serzh

Спасибо за ответ, но чего то никак у меня не получается.
Если точнее, то код в 8,1 у меня был такой:

&НаКлиенте
Процедура ОтецПриИзменении(Элемент)
   СтрокаТабличнойЧасти=ЭлементыФормы.Родословная.ТекущиеДанные;
   СтрокаТабличнойЧасти.ММ=ЭлементыФормы.Отец.Значение.Отец.Отец;
                  и т.д....       
КонецПроцедуры

Где "Родословная" - это название табличной части, а "ММ" - ячейка строки табличной части (отец отца)
Да и с &Клиент &Сервер у меня слабовато.
Поясните, пожайлуста!

ms

Да будет так)

&НаКлиенте
Процедура ОтецПриИзменении(Элемент)
   СтрокаТЧ = Элементы.Родословная.ТекущиеДанные;
   Отец = ПолучитьРеквизит(СтрокаТЧ.Отец, "Родитель");
   Дед   = ПолучитьРеквизит(Отец, "Родитель");
   СтрокаТЧ.<Нужное поле>  = <Полученное значение>;
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьРеквизит(ОбъектССылка, ИмяРеквизита)
    Возврат ОбъектССылка[ИмяРеквизита];
КонецФункции


Serzh

:)

&НаКлиенте
Процедура ОтецПриИзменении(Элемент)
   СтрокаТЧ = Элементы.Родословная.ТекущиеДанные;
   Отец = ПолучитьРеквизиты(Элементы.Отец);
   ...

{Справочник.Животное.Форма.ФормаЭлемента.Форма(6)}: Ошибка при вызове метода контекста (ПолучитьРеквизиты): Метод недоступен на клиенте
   Отец = ПолучитьРеквизиты(Элементы.Отец);
по причине:
Метод недоступен на клиенте


&НаСервереБезКонтекста
Функция ПолучитьРеквизиты(Справочники.Животное, Отец);
    Возврат Справочники.Животное[Отец];
КонецФункции


{Справочник.Животное.Форма.ФормаЭлемента.Форма(81,38)}: Ожидается символ ')'
Функция ПолучитьРеквизиты(Справочники<<?>>.Животное); (Проверка: Сервер)


Куда эту скобку прилепить???

:)

ms

1.
&НаКлиенте
Процедура ОтецПриИзменении(Элемент)
   СтрокаТЧ = Элементы.Родословная.ТекущиеДанные;
   Отец = ПолучитьРеквизиты(Элементы.Отец); => НЕПРАВЕЛЬНО
   Отец = ПолучитьРеквизиты(СтрокаТЧ .Отец); => ПРАВЕЛЬНО


Serzh

Так у меня в реквизитах формы только "Отец" и "Мать", а уже в табличной части пошли дед, прадед и т.д. до 4-го колена. И т.е. когда записывается животное, у него на основании реквизитов формируется табличная часть. И мне вот именно нужно получить значения реквизитов, а не табличной части.
В 8,1 это было просто - на клиенте и по ссылке (как написано выше), а в 8,2 1С-овцы чего то завернули непонятное.
За ответы - огромное спасибо!!! Они мне для другого пригодились, да и с клиентом и сервером разобрался.

ms

Ничего не понятного
просто надо помнить что есть на клиенте а чего нет

просто пишите сразу подробней

в процедуру получения реквизита Вы должны отправить Реквизит формы, т.к. он содержит значение (элемент формы только отображает)

т.е.
1. если это форма элемента справочника и "отец" это реквизит справочника
ПолучитьРеквизиты(Объект.Отец, "Родитель")

2. Если "Отец" - это самостоятельный реквизит формы
ПолучитьРеквизиты(Отец, "Родитель")

и т.д и т.п.




Serzh

Ну да, в конфигураторе у справочника "Животное" есть два реквизита "Отец" и "Мать" и одна табличная часть "Родословная", и на ФормеЭлемента стоят два поля выбора "Отец" и "Мать" и табличная часть "Родословная", т.е. получается, что "Отец" - это самостоятельный реквизит формы. Но на клиенте метод "ПолучитьРеквизиты" не поддерживается. И когда я в конфигураторе в свойствах реквизита "Отец" добавляю событие ПриИзменении, то программа автоматом формирует процедуру

   &НаКлиенте
   Процедура ОтецПриИзменении(Элемент)

Т.е. получается, что при изменении реквизита отец на форме необходимо получить значение его отца, отца отца, отца отца отца, и т.д. для автоматического заполнения табличной части.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск