v8: Как обратиться к метаданным документа в УФ? #579067


#0 by svchernova
Разрабатываю документ для тонкого клиента. Хочу обратиться к метаданным. &НаСервере Ругается: {Документ.Страхование.Форма.ФормаДокументаУпр.Форма}: Метод объекта не обнаружен (Метаданные) Как обратиться к метаданным документа в моём случае?
#1 by DrShad
Синтаксис: Метаданные Возвращаемое значение: Тип: ОбъектМетаданных: Справочник. Описание: Предоставляет доступ к объекту описания метаданных справочника. Другой путь получения того же значения - через свойство глобального контекста Метаданные. Например: Метаданные.Справочники.Номенклатура. Доступность: Сервер, толстый клиент, внешнее соединение
#2 by Mort
Объект.Ссылка.Метаданные как вариант
#3 by Поручик
Пальцем в  }|{опу Объект.Ссылка.Метаданные хорошо работает.
#4 by svchernova
и Спасибо :) Это сработало. Пытаюсь обработать смену даты документа и проверить его номер. На тонком клиенте  ошибка {Документ.Страхование.Форма.ФормаДокументаУпр.Форма}: Ошибка при установке значения атрибута контекста (Объект)    ПроверитьНомер(Объект, мТекущаяДатаДокумента);     по причине: Нельзя изменять поле, содержащее объект данных формы Уже совсем крыша съехала у меня.
#5 by 5 Элемент
Процедура ПроверитьНомер(Знач Объект, Дата)
#6 by svchernova
я же должна сначала дату проверить. Аналогично тому как работала процедура
#7 by GROOVY
Объект в форме это ДанныеФормы, Не надо их никуда передавать. Передавайте сам объект: РеквизитФормыВЗначение
#8 by svchernova
Чёрт возьми. Меня. Не понимаю! Я просто пытаюсь интерактивно поменять дату документа. На событие "При изменении" Даты документа навесила процедуру Вываливает сообщение "Нельзя изменять поле, содержащее объект данных формы ".
#9 by svchernova
Период смены номера у меня = год, и РазностьДат = 0. Вроде как должна поменяться дата.. без пробле. Нет, откуда-то вылазит ошибка, какчерт из табакерки
#10 by GROOVY
Хотя гонять объект туда-сюда ради проверки даты - это извращение. Переписывайте свою процедуру ПроверитьНомер.
#11 by svchernova
Может быть, после Ваших лекций перестану быть извращенкой.Пока могу только категориями толстого клиента мыслить.
#12 by svchernova
Нельзя изменять поле, содержащее объект данных формы. А если мне нужно изменить дату документа..
#13 by Поручик
Посмотреть, как реализовано в типовых не предлагать? Или во франях принято изобретать лисапеды?
#14 by svchernova
в типовой, которая у меня есть, нет управляемых форм.
#15 by Mort
По-хорошему, процедура не должна копаться во внутренностях своих параметров. Плюс в этой задаче нет ничего такого, что бы потребовало участие сервера - кроме выяснения периодичности документа, которое можно сделать, например сразу при создании на сервере и запомнить в какой-нить реквизит подходящего типа. Для простоты примера в строковой: &НаСервере .... Где-то на клиенте: .... и т.д.
#16 by Mort
+ Собсна если пользователи меняют дату раз в день, кэшировать такое значение не имеет смысла. Просто привел как пример того, что можно обойтись без вызова сервера.
#17 by svchernova
Знаешь, что до меня оеально не доходит? (Ответ "Ничего" - не самый правильный, я начала понимать немножко). Я не понимаю, в каком месте своего кода я "Вызываю сервер"
#18 by hhhh
ну &НаСервере или эту строчку не ты написала?
#19 by svchernova
я написала. Но даже если я всё тело процедуры закомментирую, то ошибка всё равно вываливается
#20 by Mort
ПроверитьНомер(Объект, мТекущаяДатаДокумента);  - вызывает функцию на сервере. Поскольку директива &наСервере (а не &НаСервереБезКонтекста), у тебя вся форма прется на сервер и объект передавать не нужно, он там и так будет. Но так делать неправильно.
#21 by Mort
в нужно Функция ИзменилсяПериодДаты(... но это как я понял не волнует.
#22 by Mort
И ещё, вот тут &НаКлиенте дата уже изменена. Сравнивать её с самой собою можно, но не рекомендуется. Сделай реквизит формы СтараяДата и там храни старое значение.
#23 by svchernova
Начинает доходить.. Славатегосподи. Твоя функция как раз-таки взволновала до крайности :))) Я начала её писать :))
#24 by svchernova
Спасибо тебе.
#25 by svchernova
Вот ведь действительно ерундень написала
#26 by svchernova
Морт, ты там?
#27 by Mort
Угу
#28 by acsent
Объект - это совсем не тот объект
#29 by acsent
Прочитай для начала книжку по УФ
#30 by acsent
а то так задолбаешь всех своими нубскими вопросами
#31 by svchernova
Ты понимаешь, в чем дело. я о твоём примере. Переменная ПериодичностьНомераСтрокой определяется на сервере. Но затем эта переменная используется в процедуре И её не видно на клиенте.
#32 by Mort
Поэтому я написал над инициализацией "// реквизит формы"
#33 by svchernova
Уже всех задолбала.. начала лекции Чистова слушать, но на это нужно время.
#34 by svchernova
Вон как.. Получается, что ВСЕ переменные, которые будут использоваться как на клиенте, так и на сервере, нужно прописать в реквизитах формы, правильно?
#35 by Mort
Ну в общем случае да.
#36 by svchernova
Спасибо тебе.
#37 by svchernova
и а тебе только позавидовать можно. Стаж 6 лет и времени вагон, все книжки прочесть успел. и вопросов нубских не задаёшь. умница.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С