Базовый курс. Мастер-группа Q&A от 04.08.2011
Рассматриваем очередную серию вопросов от участников базового курса по программированию.
1. Механизм произвольных свойств объектов.
В карточке номенклатуры открывается нормально заполнение регистра в котором хранятся привязанные характеристики.
Хотелось бы сделать заполнение автоматом объекта, которому принадлежат характеристики. В голову пришло только установка отбора в форме и включение заполнения из данных заполнения для регистра сведений.
Нет ли более простых и правильных методов?
2. Параметры записи.
В модуле формы элемента есть события, в которых есть параметр “ПараметрыЗаписи”, что с ним можно делать?например:&НаСервереПроцедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) //Вставить содержимое обработчикаКонецПроцедуры
3. Заполнение реквизита нового объекта.
Я попытался найти аналог события ВводНового из 7.7 в 8.2
Получилось что ближайший аналог это событие ПриОткрытии формы документа если в нем проверить новый ли документ открывает, так ли это?
Проблемы
метод ЭтоНовый() объекта документа доступен, естественно, только на сервере.
Сделал серверную процедуру с контекстом и там попробовал вызвать этот метод у объекта, получив его предварительно из ссылки, примерно вот так “Объект.Ссылка.ПолучитьОбъект().ЭтоНовый()”Не сработало — говорит ошибка …
я пошел дальше и в модуле объекта в теле самого модуля написал следующее Перем НовыйОбъект Экспорт; НовыйОбъект = ЭтоНовый(); …при создании нового документа он благополучно заходит в модуль объекта и код отрабатывает, но с той же ошибкой … причем некоторые методы и свойства объекта нормально отрабатывают здесь, например свойство Метаданные
ко всему если вызвать метод ЭтоНовый() в событии ПередЗаписью — то все ОК и нет ошибок …
4. Очистка отбора для регистра сведений.
При первом контакте с к/а записать инфу про менеджера в РС вот так: ТекЗапись = РегистрыСведений.МенеджерыКлиентов.СоздатьМенеджерЗаписи(); ТекЗапись.Клиент = Контрагент; ТекЗапись.Прочитать(); Если НЕ ТекЗапись.Выбран() Тогда ТекЗапись.Клиент = Контрагент; — вот эту строчку пришлось добавить после аналдиза ситуации ТекЗапись.Менеджер = Менеджер; ТекЗапись.Записать(); КонецЕсли;
Я рассудил следующим образом: если считать запись из РС непериодического и без регистратора, то если записи нет – то она и не считается …
все вроде красиво получалось, но …. оказалось метод Прочитать в случае если записи нети все значения реквизитов отбора обнуляет …
Если не активировали токен — посмотрите видео-инструкцию (видео N5)
Если вы залогинены, у Вас активирован токен доступа, но вы все равно видите эту запись — напишите нам на e-mail поддержки.
По первому вопросу. А установленный отбор наложится на запрос или будет применен к полученным результатам запроса? Если второе, то может оптимальней оставить запрос на месте, добавив отбор? Или объемы данных передаваемых от СУБД к серверу не нуждаются в оптимизации, так как узкого канала там быть все равно не может?
И условие запроса и отбор на уровне настроек динамического списка преобразуется в условие Where в запросе к СУБД.
Поэтому оба варианта равнозначны по скорости.
Я где-то что-то пропустил?
В 1 вопросе рассматривается механизм произвольных свойств объектов основанный на объекте “план видов характеристик”.
Кажется, не рассматривали такой объект в пройденном материале… Ткните носом…
Кстати, как можно убедиться, что у меня наисвежайшая поставка курса, и ничего не надо забирать с сайта из раздела “Материалы Курса (Б)”?
В этом вопросе, видимо, один из участников курса забежал чуть вперед.
Данная тема рассматривается в рамках 2-го модуля курса.
У Вас наисвежайшая поставка, ничего качать не нужно.