Базовый курс. Мастер-группа Q&A от 04.08.2011

Рассматриваем очередную серию вопросов от участников базового курса по программированию.

1. Механизм произвольных свойств объектов.
В карточке номенклатуры открывается нормально заполнение регистра в котором хранятся привязанные характеристики.
Хотелось бы сделать заполнение автоматом объекта, которому принадлежат характеристики. В голову пришло только установка отбора в форме и включение заполнения из данных заполнения для регистра сведений.
Нет ли более простых и правильных методов? 

2. Параметры записи.
В  модуле  формы  элемента  есть  события, в которых есть параметр “ПараметрыЗаписи”, что с ним можно делать? например: &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)        //Вставить содержимое обработчика КонецПроцедуры

3. Заполнение реквизита нового объекта.
Я попытался найти аналог события ВводНового из 7.7 в 8.2
Получилось что ближайший аналог это событие ПриОткрытии формы документа если в нем проверить новый ли документ открывает, так ли это?
Проблемы
метод ЭтоНовый() объекта документа доступен, естественно, только на сервере.
Сделал серверную процедуру с контекстом и там попробовал вызвать этот метод у объекта, получив его предварительно из ссылки, примерно вот так “Объект.Ссылка.ПолучитьОбъект().ЭтоНовый()” Не сработало — говорит ошибка … 
я пошел дальше и в модуле объекта в теле самого модуля написал следующее Перем НовыйОбъект Экспорт; НовыйОбъект = ЭтоНовый(); … при создании нового документа он благополучно заходит в модуль объекта и код отрабатывает, но с той же ошибкой … причем некоторые методы и свойства объекта нормально отрабатывают здесь, например свойство Метаданные
ко всему если вызвать метод ЭтоНовый() в событии ПередЗаписью — то все ОК и нет ошибок … 

4. Очистка отбора для регистра сведений.
При первом контакте с к/а записать инфу про менеджера в РС вот так:     ТекЗапись = РегистрыСведений.МенеджерыКлиентов.СоздатьМенеджерЗаписи();          ТекЗапись.Клиент = Контрагент;     ТекЗапись.Прочитать();     Если НЕ ТекЗапись.Выбран() Тогда         ТекЗапись.Клиент = Контрагент; — вот эту строчку пришлось добавить после аналдиза ситуации         ТекЗапись.Менеджер = Менеджер;         ТекЗапись.Записать();     КонецЕсли;
Я рассудил следующим образом: если считать запись из РС непериодического и без регистратора, то если записи нет – то она и не считается … 
все вроде красиво получалось, но …. оказалось метод Прочитать в случае если записи нети все значения реквизитов отбора обнуляет … 

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

Если не активировали токен — посмотрите видео-инструкцию (видео N5)

Если вы залогинены, у Вас активирован токен доступа, но вы все равно видите эту запись — напишите нам на e-mail поддержки.

комментария 4 на “Базовый курс. Мастер-группа Q&A от 04.08.2011”

  1. По первому вопросу. А установленный отбор наложится на запрос или будет применен к полученным результатам запроса? Если второе, то может оптимальней оставить запрос на месте, добавив отбор? Или объемы данных передаваемых от СУБД к серверу не нуждаются в оптимизации, так как узкого канала там быть все равно не может?

    • И условие запроса и отбор на уровне настроек динамического списка преобразуется в условие Where в запросе к СУБД.
      Поэтому оба варианта равнозначны по скорости.

  2. Я где-то что-то пропустил?
    В 1 вопросе рассматривается механизм произвольных свойств объектов основанный на объекте “план видов характеристик”.
    Кажется, не рассматривали такой объект в пройденном материале… Ткните носом…
    Кстати, как можно убедиться, что у меня наисвежайшая поставка курса, и ничего не надо забирать с сайта из раздела “Материалы Курса (Б)”?

    • В этом вопросе, видимо, один из участников курса забежал чуть вперед.
      Данная тема рассматривается в рамках 2-го модуля курса.
      У Вас наисвежайшая поставка, ничего качать не нужно.