МГ: сессия от 2010-09-24.

Продолжаем сессии ответов на вопросы.

Хотя вопросов поступает сейчас не много, но все они очень интересные.

1. —Расскажите про настройку Документа вкладка права галочка «Привилегированный режим при проведении»… —Как в привилегированном модуле будет выполняться вызов другой процедуры обычного (непривилегированного) общего модуля – с проверками РЛС или без проверок? —Само по себе право на действие (галочка на чтение, изменение, удаление и т.п.) проверяется в привилегированном модуле или нет? Т.е. привилегированный модуль отменяет проверки всех прав или только РЛС?

2. —Документ счет содержит несколько номенклатур у которых описание в виде форматированного документа —Нужно вывести по очереди эти описания в одну печатную форму. —Как это сделать?

3. —Просьба детальнее объяснить назначения параметров 2 и 3 в методе “Выбрать” —Работа с запросами: результат запроса/ Выборка из результата запроса —Особенно хотелось бы прояснить ситуацию по использованию 3 параметра “ГруппировкиДляЗначенийГруппировок”, в особенности в ситуации когда используется более одной группировки в запросе.

4. —Касается упорядочивания в запросе по моменту времени. В “МГ: сессия от 2010-07-23” этот вопрос разбирался —Но еще в 2006 в первом учебном центре 1С преподаватель, если не ошибаюсь на Павел, говорил что сортировку по Моменту делать нельзя —Поскольку она не дает 100% результата всегда (и вроде как разработчики платформы не документировали такую возможность). —При рассмотрении данного вопроса тогда единственно правильным вариантом сортировки документов было упорядочивание вначале по ДАТА, а затем по ССЫЛКА. —Как я понимаю данный подход до сих под не задокументирован? Описано ли где что сортировка по ССЫЛКА + Автоупорядочивание должно давать требуемый результат?

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

комментариев 12 на “МГ: сессия от 2010-09-24.”

  1. Вопрос про формдоки мелочь:
    В итоговом html у закрывающегося тега body не хватает “<“,  Прав недорезает одного символа.
    ВесьТекст = Лев(Текст, ПозицияНачало-6) + Весьтекст + Прав(Текст, СтрДлина(Текст) – ПозицияКонец +1))
    Работать будет и без “<” у закрывающего тега </body>, но так.. для порядку :)

  2. Сергей 25.09.2010 в 02:43

     Итого по сортировке документов: чтобы не было проблем с их упорядочиванием используем сорировка ДАТА + ССЫЛКА, а не МОМЕНТВРЕМЕНИ (ошибки с которым были в БК)

    • Сергей 06.10.2010 в 20:09

      С учетом нулевого блока продвинутого курса )):
      Вот так выглядят запросы по упорядочиваю документов, для запроса 1С:
      ВЫБРАТЬ
       ПоступлениеТоваров.Ссылка
      ИЗ
       Документ.ПоступлениеТоваров КАК ПоступлениеТоваров
      1. Если упорядочивание по Дата+Ссылка:
      SELECT
      T1._IDRRef,
      T1._Date_Time
      FROM _Document16 T1 WITH(NOLOCK)
      ORDER BY (T1._Date_Time), (T1._IDRRef)
      2. Если упорядочивание по МоментВремени:
      SELECT
      T1._IDRRef,
      T1._Date_Time,
      T1._IDRRef
      FROM _Document16 T1 WITH(NOLOCK)
      ORDER BY (T1._Date_Time), (T1._IDRRef)

      Получается что для второго варианта дублируется ссылка… а так все идентично

      • Действительно должно быть одно и тоже, но…
        То что дублируется ссылка, скорее всего свойство конкрентного релиза платформы. Не будем считать за особенность.
        А главная особенность заключается в том, что иногда во вложенных запросах система не дает делать упорядочивание по моменту времени (показывал в мастер-группе).

        • Сергей 08.10.2010 в 02:02

          упорядоячивание по Моменту времени не работает корректно во вложенных запросах и при упорядочивании по УБЫВ(я описал это в письме на адрес МГ). Причина: не корректное построение запроса в SQL Server-е. По какой-то причине именно во вложенном запросе условия упорядочивания накладываются только на Ссылку, а дата остается по ВОЗР.

          • Сергей 08.10.2010 в 02:16

            Продублирую письмо:
            анализ сортировки документов показал, что проблемы с сортировкой будут при использовании сортировки по УБЫВ для МоментаВремени и именно во вложенном запросе:

            1. При сортировке по МоментуВремени
            1.1. В 1С:
            ВЫБРАТЬ
            ПоступлениеТоваров.Ссылка
            ИЗ
            Документ.ПоступлениеТоваров КАК ПоступлениеТоваров
            ГДЕ
            ПоступлениеТоваров.Ссылка В
            (ВЫБРАТЬ ПЕРВЫЕ 1
            ПоступлениеТоваров.Ссылка
            ИЗ
            Документ.ПоступлениеТоваров КАК ПоступлениеТоваров
            УПОРЯДОЧИТЬ ПО
            ПоступлениеТоваров.МоментВремени УБЫВ)
            1.2. В SQL Server:
            SELECT
            T1._IDRRef
            FROM _Document16 T1 WITH(NOLOCK)
            WHERE T1._IDRRef IN
            (SELECT TOP 1
            T2._IDRRef AS Q_001_F_000RRef
            FROM _Document16 T2 WITH(NOLOCK)
            ORDER BY T2._Date_Time, T2._IDRRef DESC)

            2. При сортировке по Дата+Время
            2.1 В 1С:
            ВЫБРАТЬ
            ПоступлениеТоваров.Ссылка
            ИЗ
            Документ.ПоступлениеТоваров КАК ПоступлениеТоваров
            ГДЕ
            ПоступлениеТоваров.Ссылка В
            (ВЫБРАТЬ ПЕРВЫЕ 1
            ПоступлениеТоваров.Ссылка
            ИЗ
            Документ.ПоступлениеТоваров КАК ПоступлениеТоваров
            УПОРЯДОЧИТЬ ПО
            ПоступлениеТоваров.Дата УБЫВ,
            ПоступлениеТоваров.Ссылка УБЫВ)
            2.2. В SQL Server
            SELECT
            T1._IDRRef
            FROM _Document16 T1 WITH(NOLOCK)
            WHERE T1._IDRRef IN
            (SELECT TOP 1
            T2._IDRRef AS Q_001_F_000RRef
            FROM _Document16 T2 WITH(NOLOCK)
            ORDER BY T2._Date_Time DESC, (T2._IDRRef) DESC)

            Обратите внимание на сортировку в п 1.2.:
            ORDER BY T2._Date_Time, T2._IDRRef DESC – получается что по дате нет сортировки по убыванию отсюда и проблемы…. А именно сортировка по убыванию и использовалась в обучающем примере

            Что самое интересное для прямого запроса все нормально:
            SELECT
            T1._IDRRef,
            T1._Date_Time,
            T1._IDRRef
            FROM _Document16 T1 WITH(NOLOCK)
            ORDER BY (T1._Date_Time) DESC, (T1._IDRRef) DESC – интерпретация запроса с сортировкой по Моменту

            SELECT
            T1._IDRRef,
            T1._Date_Time
            FROM _Document16 T1 WITH(NOLOCK)
            ORDER BY (T1._Date_Time) DESC, (T1._IDRRef) DESC – интерпретация запроса с сортировкой по Дата+Время

            ИТОГО: использовать сортировку по УБЫВ МоментВремени во вложенных запросах нельзя…. Во всех остальных случая вроде работает. Но как я понимаю при таком подходе нет гарантии, что так будет всегда…

            • Отличный анализ, Сергей.
              Полагаю это ошибка платформы, тем не менее о таких подводных камнях нужно знать. Спасибо, Сергей.

  3. ну почему сразу вопросов мало, например, вот такой:  В табличную часть добавляю новую строку и ввожу какие-то значения, по клавише Enter переходим к другой колонке и т.д. Если добавим вторую строку, то всё аналогично… а вот если вернемся к предыдущей строке и начнем редактировать, то по клавише Enter уже не сможем перейти к следующей колонке… это можно как-нибудь исправить? :) Клавиша Tab не годится :)

    • Красивого варианта решения пока не нашел.
      Какие есть варианты.
      1. В обработчик ПриИзменении каждого реквизита таблицы формы вставить функцию, содержащую код:

      ЭлементыТаблицы = ТекущийЭлемент.ПодчиненныеЭлементы;
      ТекПоле = ЭлементыТаблицы.Найти(ТекущийЭлемент.ТекущийЭлемент.Имя);
      Индекс = ЭлементыТаблицы.Индекс(ТекПоле);
      Если ИндексНеопределено И Индекс<ЭлементыТаблицы.Количество() Тогда
      ТекущийЭлемент.ТекущийЭлемент = ЭлементыТаблицы[Индекс+1];
      КонецЕсли;

      Но система не входит в режим редактирования. Не помогает даже свойство Режим редактирования – Непосредственно.

      2. Создать сообщение пользователю и привязать его к следующему полю таблицы.
      Будет выглядеть криво, но зато будет поле в режиме редактирования.

  4. Спасибо скоромное.  Кучу времени потерял пытаясь объединить несколько форматированых документов(благо не мало нового узнал пока разбирался, так что не все время в ведро). Еще раз спасибо за решение.