пытаюсь реализовать автоматическую подстановку реквизита, при изменении элемента формы.
Ошибки не выдает, но и реквизит не подставляет.
Я только учусь, поэтому не судите строго:blush::blush::blush:
1591
avm3110
20.11.2015, 10:35
Ошибки не выдает, но и реквизит не подставляет.
А как он может вернуть? Почитать в "букваре" - а есть ли в контексте "Клиент" такие объекты как "справочник ссылка"?
Т.е. хинт "а наподумать" - Процедура на стороне сервера "это" возвращает, теперь вопрос - а может ли это воспринять "на прямую" процедура в контексте "на клиенте"?
EVoronova
20.11.2015, 11:46
А как это реализовать? я пыталась с помощью метода справочника "Выбрать", получить выборку и с помощью отбора получить нужный объект, и у него взять нужный реквизит и отправить его в процедуру на клиенте.
Но я не понимаю почему метод "Выбрать", возвращает выборку с неопределенными значениями, если я не накладываю значение отбора, он ведь должен вернуть все объекты справочника ?
Подскажите пожалуйста, как реализовать эту задачу? " на подумать" я уже потратила много времени=) но у меня ничего не выходит........(
1592
EVoronova
20.11.2015, 11:46
А как это реализовать? я пыталась с помощью метода справочника "Выбрать", получить выборку и с помощью отбора получить нужный объект, и у него взять нужный реквизит и отправить его в процедуру на клиенте.
Но я не понимаю почему метод "Выбрать", возвращает выборку с неопределенными значениями, если я не накладываю значение отбора, он ведь должен вернуть все объекты справочника ?
Подскажите пожалуйста, как реализовать эту задачу? " на подумать" я уже потратила много времени=) но у меня ничего не выходит........(
1592
avm3110
20.11.2015, 14:02
А как это реализовать? я пыталась с помощью метода справочника "Выбрать", получить выборку и с помощью отбора получить нужный объект
В качестве совета - минимизируйте на 8-ке использование "объектной модели" програмирования (это несёт довольно существенные издержки на платформу "лишними действиями"). Сделайте запрос и вытаскивайте им (в контексте сервера) все что нужно.
Ну и небольшая выдержка из "букваря"
7.2.2. Преобразование данных прикладных объектов в данные формы и обратно
Для конвертирования прикладных объектов в данные формы и обратно существует набор глобальных методов:
? ЗначениеВДанныеФормы(),
? ДанныеФормыВЗначение(),
? КопироватьДанныеФормы().
Методы, работающие с прикладными объектами, доступны только в серверных процедурах. Метод для копирования значений между данными формы доступен на сервере и на клиенте, так как не требует прикладных объектов в качестве параметров.
Во время конвертирования данных формы в прикладной объект нужно учитывать их совместимость.
? ЗначениеВДанныеФормы() – преобразует объект прикладного типа в данные формы.
? ДанныеФормыВЗначение() – преобразует данные формы в объект прикладного типа.
? КопироватьДанныеФормы() – производит копирование данных формы, обладающих совместимой структурой. Возвращает значение Истина, если копирование произведено, или Ложь, если структура объектов несовместима.
При преобразовании данных формы в прикладные объекты и обратно используется кеширование объектов, но при этом выполняется проверка актуальности версии объекта в кеше.
Приведем пример, как использовать преобразование данных в собственных алгоритмах.
Копировать в буфер обмена
&НаСервере
Процедура ПриСозданииНаСервере(Отка� �, СтандартнаяОбработка)
ОбъектТовар = Товары.НайтиПоНаименовани� �("Кофейник").ПолучитьОбъект();
ЗначениеВДанныеФормы(Объе� �тТовар, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Записать()
ЗаписатьНаСервере();
КонецПроцедуры
&НаСервере
Процедура ЗаписатьНаСервере()
ОбъектТовар = ДанныеФормыВЗначение(Объе� �т, Тип("СправочникОбъект.Товары"));
ОбъектТовар.Записать();
КонецПроцедурыТакже у объекта УправляемаяФорма существуют методы, доступные на сервере:
? ЗначениеВРеквизитФормы() – выполняет преобразование объекта прикладного типа в заданный реквизит формы.
? РеквизитФормыВЗначение() – преобразует реквизит данных формы в объект прикладного типа.
Использование данных методов обычно удобнее, так как они имеют, например, информацию о типе реквизита формы. Кроме того, метод РеквизитФормыВЗначение() выполняет установку соответствия данных формы и объекта, которая используется при формировании сообщений (см. здесь).
Также следует помнить, что при преобразовании в данные формы (как с помощью метода ЗначениеВДанныеФормы(), так и с помощью метода ЗначениеВРеквизитФормы()) объектов типа ТаблицаЗначений или ДеревоЗначений нужно учитывать следующую особенность: в преобразуемом объекте должны существовать все колонки, которые существуют в данных формы.
ВНИМАНИЕ! Колонки реквизитов, не связанные с данными (см. здесь), не участвуют в преобразовании значений между данными формы и объектами информационной базы и обратно. Колонки, отсутствующие в данных объекта, очищаются при преобразовании в данные формы.
Примечание. В качестве первого параметра методов РеквизитФормыВЗначение() и ДанныеФормыВЗначение() могут выступать только реквизиты формы следующих типов: ДанныеФормыСтруктура, ДанныеФормыКоллекция, ДанныеФормыСтруктураСКолл екцией, ДанныеФормыДерево.
Приведем пример использования этих методов.
Копировать в буфер обмена
&НаСервере
Процедура ПересчитатьНаСервере()
// Преобразует реквизит Объект в прикладной объект.
Документ = РеквизитФормыВЗначение("Объект");
// Выполняет пересчет методом, определенным в модуле документа.
Документ.Пересчитать();
// Преобразует прикладной объект обратно в реквизит.
ЗначениеВРеквизитФормы(До� �умент, "Объект");
КонецПроцедуры