МГ: сессия от 2010-08-02. Updated!

Сегодня в мастер-группе мы разобрали ряд важных методологических вопросов.

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

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

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

комментариев 8 на “МГ: сессия от 2010-08-02. Updated!”

  1. У меня вопрос набору записей.
    Свойство РегистрНакопленияНаборЗаписей..Записывать = Истина имеет смысл устанавливать, если код выполняется ТОЛЬКО в модуле объекта документа? (Обработка проведения или экспортная обработка модуля объекта)Если выполнять, например, доступ к набору записей из модуля формы обработки, то достаточно просто указать Набор.Записать(). Это верно?

    • Условие еще более жесткое.
      Свойство Записывать имеет смысл только в контексте события ОбработкаПроведения.

      • Тогда не пойму поведение системы.
        Продемонстрирую.

        Есть обработка. Определил команду:

        &НаКлиенте
        Процедура Вариант2(Команда)
        ВариантДваНаСервере(ДокументПоступления);
        КонецПроцедуры

        &НаСервереБезКонтекста
        Процедура ВариантДваНаСервере(ОбъектДок)
        ОбъектДок.ПолучитьОбъект().ВариантДва();
        КонецПроцедуры // ВариантДваНаСервере()

        Вызываю экспортную процедуру модуля объекта документ:

        Процедура ВариантДва() Экспорт
        //Движения.ОстаткиТоваров.Записывать = Истина;

        Движение = Движения.ОстаткиТоваров.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
        Движение.Период = ТекущаяДата();
        Движение.Номенклатура =
        Справочники.Номенклатура.НайтиПоНаименованию(“Пиво Светлое Хайникен 0.5”);
        Движение.Количество = 7;

        Движения.Записать();
        КонецПроцедуры

        И вот что нтересно:
        1. Если закомментировать свойство Записывать, то запись набора не происходит, и в регистре остатков остаются все записи которые находятся в ТЧ документа (документ ранее был проведен)
        2. Если комментарий убрать, то набор с одной строкой “Пиво” попадает в регистр накопления и затирает предыдущий набор в РН (т.к. мы набор не прочитали)

        Получается что Движения.ОстаткиТоваров.Записывать = Истина влияет на результат не только в обработке проведения.
        Или я может где-то ошибаюсь?

        • Этот момент очень интересен.
          Если вы будете использовать Движения.ОстаткиТоваров.Записать(), то у вас запись набора будет происходить.
          А если вы пишете Движения.Записать(), то система эмулирует те же действия, что и при окончании процедуры ОбработкаПроведения, то есть во внимание принимаются только наборы записей с установленным флагом Записывать.

  2. Александр Горлов 04.08.2010 в 05:57

    По п.10.
    На мой взгляд, объявление экспортной переменной в модуле управляемого приложения для работы обработки – это уже чересчур! Возвращаться к глобальному модулю 7.7 совсем не хочется…
    Более логичным был бы вариант требуемую переменную описать в качестве реквизита обработки.
    Все равно не понял одного: разве при созданной форме объекта сам объект не создается и не существует пока открыта форма? И еще вопрос, как насчет структуры ДополнительныеСвойства, как в 8.1?

    • Через реквизиты обработки задачу не решить. Для каждой формы будет свой объект и соответственно свои значения реквизитов.
      Но в этом вопросе есть нераскрытый нюанс, видео по нему я в скором времени перепишу..

  3. Александр Горлов 04.08.2010 в 05:41

    По п.7. Интересный вариант – вырезать текст условия из запроса! Обычно разработчики типовых решений формируют текст условия программно и “цепляют” его к тексту запроса. Только запрос тогда становится нечитаемым при помощи конструктора…

    С точки зрения читабельности запроса лучше всего использовать “Аналитика = Параметр ИЛИ Параметр = ПустоеЗначение”. Интересно система в запросах тоже оптимизирует выполнение и если Параметр = ПустоеЗначение, то условие сама исключит?

    • Нет не оптимизирует, запрос на стороне СУБД будет выполняться именно с указанным условием ИЛИ.