Разработка и оптимизация запросов в 1С:Предприятие 8.3. Модуль 7. Использование виртуальных таблиц в запросе

На данной странице задавайте вопросы по материалам и практическим заданиям седьмого модуля курса «Разработка и оптимизация запросов в 1С:Предприятие 8.3».

Практические задания

К сожалению, у Вас недостаточно прав для дальнейшего просмотра.

Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.

Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.

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

Комментарии / обсуждение (488):

  1. Алекс Панскихъ

    Добрый вечер. Простите, если не по теме… В уроке “Структура регистра сведений” говориться об “Общих реквизитах”: “Общий реквизит – поле, содержащее значения общего реквизита. Имя поля задается в конфигураторе. Такие поля создаются для общих реквизитов, не являющихся разделителями, или для разделителей с режимом использования разделяемых данных НезависимоИСовместно, в которых участвует данный регистр”. Разделители? О чем это? “Режим использования разделяемых данных” – что за зверь?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  2. escape_44

    Добрый день!

    Практическое задание №22. Особенности
    получения среза последних

    В решении вы предлагаете следующий текст запроса:

    /////////////////////////////////////

    ВЫБРАТЬ
        КадроваяИсторияСрезПоследних.Период КАК Период,
        КадроваяИсторияСрезПоследних.Сотрудник КАК Сотрудник,
        КадроваяИсторияСрезПоследних.Должность КАК Должность
    ИЗ
        РегистрСведений.КадроваяИстория.СрезПоследних КАК КадроваяИсторияСрезПоследних
    ГДЕ
        КадроваяИсторияСрезПоследних.Должность.Наименование ПОДОБНО "%руководитель%"

    /////////////////////////////////////

    При этом данны текст преобразуется в СУБД в следующий:

    /////////////////////////////////////

    SELECT
    T1.Period_,
    T1.Fld94RRef,
    T1.Fld95RRef
    FROM (SELECT
    T4.Период AS Period_,
    T4.Сотрудник AS Fld94RRef,
    T4.Должность AS Fld95RRef
    FROM (SELECT
    T3.Сотрудник AS Fld94RRef,
    MAX(T3.Период) AS MAXPERIOD_
    FROM РегистрСведений.КадроваяИстория T3
    GROUP BY T3.Сотрудник) T2
    INNER JOIN РегистрСведений.КадроваяИстория T4
    ON T2.Fld94RRef = T4.Сотрудник AND T2.MAXPERIOD_ = T4.Период) T1
    LEFT OUTER JOIN Справочник.Должности T5
    ON T1.Fld95RRef = T5.Ссылка
    WHERE (T5.Наименование LIKE '%руководитель%')",NParams=0,planSQLText='Fields:(
        T1.Period_,
        T1.Fld94RRef,
        T1.Fld95RRef
    )
    NESTED SELECT FULL SCAN
    (
        Fields:(
            T4.Период,
            T4.Сотрудник,
            T4.Должность
        )
        NESTED SELECT FULL SCAN
        (
            Fields:(
                T3.Сотрудник,
                MAX(T3.Период)
            )
            _INFORG93 (T3)(TWICE) FULL SCAN


            GROUPING
        )

        NESTED LOOP
        _INFORG93 (T4)(TWICE) RANGE SCAN USING INDEX (_INFORG93_BYPERIOD) (2 fields)
        WHERE
                (T2.Fld94RRef = T4.Сотрудник)
                AND
                (T2.MAXPERIOD_ = T4.Период)

    )

    NESTED LOOP
    _REFERENCE20 (T5) RANGE SCAN USING INDEX (_IDRREFIDX) (1 fields)
    WHERE
            T5.Наименование LIKE %руководитель%
            AND
            (T1.Fld95RRef = T5.Ссылка)

    Statistics: RecordsScanned = 28, ParseTime = 0, ExecuteTime = 0, BuffersMemory = 25847, ResultRecords = 2, RecordSize = 5
    /////////////////////////////////////

    Я в своем решении использовал временную таблицу, в которую отобрал все требуемые должности а затем соединил со срезом, в результате получаем следующий текст на СУБД:

    /////////////////////////////////////

    SELECT
    T1.Ссылка AS _Q_001_F_000RRef INTO #T8830a1733ba9492985f18bf3874a7b78
    FROM Справочник.Должности T1
    WHERE (T1.Наименование LIKE '%руководитель%')",NParams=0,planSQLText='Fields:(
        T1.Ссылка
    )
    _REFERENCE20 (T1) FULL SCAN
    WHERE
            T1.Наименование LIKE %руководитель%

    Statistics: RecordsScanned = 8, ParseTime = 0, ExecuteTime = 0, BuffersMemory = 28212, ResultRecords = 3, RecordSize = 1

    SELECT
    T1.Period_,
    T1.Fld94RRef,
    T1.Fld95RRef
    FROM (SELECT
    T4.Период AS Period_,
    T4.Сотрудник AS Fld94RRef,
    T4.Должность AS Fld95RRef
    FROM (SELECT
    T3.Сотрудник AS Fld94RRef,
    MAX(T3.Период) AS MAXPERIOD_
    FROM РегистрСведений.КадроваяИстория T3
    GROUP BY T3.Сотрудник) T2
    INNER JOIN РегистрСведений.КадроваяИстория T4
    ON T2.Fld94RRef = T4.Сотрудник AND T2.MAXPERIOD_ = T4.Период) T1
    INNER JOIN #T8830a1733ba9492985f18bf3874a7b78 T5
    ON (T5._Q_001_F_000RRef = T1.Fld95RRef

    /////////////////////////////////////

    Данное решение не содержит вложенных запросов, я правильно понимаю, что такое решение является более оптимальным?!

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  3. Doremi_2020

    Добрый день, пыталась реализовать пример из видео 7-3-3. В Консоли запросов на закладке параметры для &Субк выбрала из видов субконто хозрасчетные Номенклатуру. Результат неожиданные: {(1,1)}: Переменная не определена (Номенклатура)
    <>Номенклатура
    Что это и что с этим делать, подскажите, пожалуйста.

    • Doremi_2020

      Пыталась тоже самое реализовать обработкой (прикрепила обработку), но она почему-то вообще не открывается и нет каких-либо сообщений. Почему?

      • Василий Ханевич


        (текст комментария доступен только участникам Мастер-группы)

        • Doremi_2020

          Будьте добры, ответьте, пожалуйста на первый вопрос в этой ветки. По всей видимости, некорректно было продолжать свой вопрос, нажав на нём “ответить”.

          • Василий Ханевич


            (текст комментария доступен только участникам Мастер-группы)

            • Doremi_2020

              Извините, но вижу ответ на вопрос касательно решения в обработке, а ответа касательно такого же решения в консоли запросов не вижу, хотя перегрузила страницу. Продублируйте, пожалуйста.

              • Василий Ханевич


                (текст комментария доступен только участникам Мастер-группы)

                  • Василий Ханевич


                    (текст комментария доступен только участникам Мастер-группы)

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  4. Doremi_2020

    Query-7-3-AccumRg-5. Для получения бух оборотов за период преподаватель указывает для начала периода и конца одну и ту же дату. Результат – обороты за секунду. Получается, что программа видит начальную дату на начало секунды, а конечную дату на конец секунды?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  5. Doremi_2020

    Query-7-3-AccumRg-3.
    1. Хочу из формы обработки передать в модуль формы значение субконто, по которому надо получить остатки по счетам. Но в типе реквизита формы не нахожу ничего, связанного с субконто. Подскажите, пожалуйста, как это сделать?

    2. Когда добавляется в выходное поле субконто2, то в параметр Субконто что мы должны были написать? Как записывается массив с видами субконто в этом случае?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

      • Doremi_2020

        Добрый день! Вопрос немного в другом. В форме обработки хочу указывать, чтобы передать в форму, не одно субконто, а два – склад и номенклатура. Если для указания 1 субконто – номенклатура в типе указываем СправочникСсылка.Номенклатура, то для указания сразу двух субконто надо выбрать СписокЗначений? Если да, то как программа поймёт что это СправочникСсылка.Номенклатура и СправочникСсылка.Склады?
        Если в модуле описать Массив = Новый Массив и добавить в него пустые ссылки СправочникМенеджер.Номенклатура.ПустаяСсылка и СправочникМенеджер.Склады.ПустаяСсылка, то тогда скорее всего, программе не понравится несоответствие типов.
        Как правильно описать параметр Субконто на форме обработки, если это не одно субконто, а перечень субконто? И какое описание этого перечня должно быть в модуле формы?

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

  6. Doremi_2020

    Query-7-3-AccumRg-1.
    1. Если в параметре Условие виртуальной таблицы ХозрасчетныйДвиженияССубконто необходимо указать несколько условий, то они перечисляются в поле Условие через ; или как-то по-другому?
    2. Напишите, пожалуйста, пример заполнения параметра Упорядочивание.
    3. Не понятно, для чего используют параметр Первые. Приведите, пожалуйста, пример когда он нужен.

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  7. Doremi_2020

    Задание 27.
    Результат объединения запроса по товарам и запроса по услугам не клала во временную таблицу, остановилась на объединении и получила тот же результат, что и преподавателя. В чём ошибка? Почему получила тот же результат?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  8. Doremi_2020

    Добрый день!
    Задание 26.
    1. В результате получила период в виде 01.01.2014 0:00:00. Хотела убрать секунды. К периоду применила функцию МЕСЯЦ, ожидаемо получила цифры 1,2,3 и т.д. Но когда вместо функции МЕСЯЦ применила функцию ДЕНЬ, неожиданно помесячный разворот свернулся в 1 колонку. Функция ДЕНЬ что, возвращает только номер дня месяца и поэтому 1-е число разных месяцев понимается, как один день?
    2. Как убрать секунды из периода?
    3. Конструктор создал строки: ТабДок.НачатьАвтогруппировкуСтрок(), ТабДок.ЗакончитьАвтогруппировкуСтрок();. Закомментировала, ничего не изменилось. Для чего этот оператор, как он влияет на результат?
    4. На закладке Итоги для Периода «Дополнение периодами» указывала ДЕКАДА. В результате появились новые колонки, соответствующие декадам, но они пустые. Продажи заполнены в течение всего месяца, но в таблице заполняются только 1-е колонки в месяце. Колонки не заполнились равномерно потому, что для таблицы ПродажиОбороты в параметре Периодичность указано Месяц?
    5. В одном варианте решения использовала «Дополнение периодами» – МЕСЯЦ, в другом ничего не указывала, а результат одинаковый. Зачем нужно использовать «Дополнение периодами» – МЕСЯЦ?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

      • Doremi_2020

        1. По поводу отображения даты без секунд. В задании 26 мы строим кросс-таблицу, функцию Формат не нашла как в этом случае применить.
        2. По поводу ТабДок.НачатьАвтогруппировкуСтрок(), ТабДок.ЗакончитьАвтогруппировкуСтрок(). Дело как раз в том, что группировка в отчёте не появляется, в этом-то и вопрос. После Вашего пояснения предполагаю, что это из-за того, что в методе Вывести не указан уровень.
        3. По поводу итогов для Периода с «Дополнение периодами» ДЕКАДА.
        Архив прикрепила. Обработка называется Задание26. Скриншот результата прилагаю.

        &НаСервереБезКонтекста
        Процедура КроссТабПродажиПоМесяцамНаСервере(ТабДок)

        Макет = Обработки.Задание26.ПолучитьМакет("Макет");
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        | ПродажиОбороты.Период КАК Период,
        | ПродажиОбороты.Контрагент КАК Контрагент,
        | ПРЕДСТАВЛЕНИЕ(ПродажиОбороты.Контрагент) КАК КонтрагентПредставление,
        | ПродажиОбороты.СуммаОборот КАК Сумма
        |ИЗ
        | РегистрНакопления.Продажи.Обороты(, , Месяц, ) КАК ПродажиОбороты
        |
        |УПОРЯДОЧИТЬ ПО
        | Период,
        | Контрагент
        |ИТОГИ
        | СУММА(Сумма)
        |ПО
        | ОБЩИЕ,
        | Контрагент,
        | Период ПЕРИОДАМИ(ДЕКАДА, , )";

        РезультатЗапроса = Запрос.Выполнить();

        ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
        ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
        ОбластьШапкаКонтрагент = Макет.ПолучитьОбласть("Шапка|Контрагент");
        ОбластьШапкаПериод = Макет.ПолучитьОбласть("Шапка|Период");
        ОбластьШапкаИтог = Макет.ПолучитьОбласть("Шапка|Итог");
        ОбластьСтрокаКонтрагент = Макет.ПолучитьОбласть("Строка|Контрагент");
        ОбластьСтрокаПериод = Макет.ПолучитьОбласть("Строка|Период");
        ОбластьСтрокаИтог = Макет.ПолучитьОбласть("Строка|Итог");

        ОбластьПодвалКонтрагент = Макет.ПолучитьОбласть("Подвал|Контрагент");
        ОбластьПодвалПериод = Макет.ПолучитьОбласть("Подвал|Период");
        ОбластьПодвалИтог = Макет.ПолучитьОбласть("Подвал|Итог");

        ТабДок.Очистить();
        ТабДок.Вывести(ОбластьЗаголовок);
        ТабДок.Вывести(ОбластьШапкаКонтрагент);
        ТабДок.НачатьАвтогруппировкуСтрок();

        ВыборкаПериод = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Период","Все");
        Пока ВыборкаПериод.Следующий() Цикл
        ОбластьШапкаПериод.Параметры.Заполнить(ВыборкаПериод);
        ТабДок.Присоединить(ОбластьШапкаПериод);
        КонецЦикла;
        ТабДок.Присоединить(ОбластьШапкаИтог);

        ВыборкаКлиент = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Контрагент");
        Пока ВыборкаКлиент.Следующий() Цикл
        ОбластьСтрокаКонтрагент.Параметры.Заполнить(ВыборкаКлиент);
        ТабДок.Вывести(ОбластьСтрокаКонтрагент);
        ВыборкаПериодКонтрагента = ВыборкаКлиент.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Период","Все");
        Пока ВыборкаПериодКонтрагента.Следующий() Цикл
        ОбластьСтрокаПериод.Параметры.Заполнить(ВыборкаПериодКонтрагента);
        ТабДок.Присоединить(ОбластьСтрокаПериод);
        КонецЦикла;
        ОбластьСтрокаИтог.Параметры.Заполнить(ВыборкаКлиент);
        ТабДок.Присоединить(ОбластьСтрокаИтог);

        КонецЦикла;

        ТабДок.Вывести(ОбластьПодвалКонтрагент);
        ВыборкаПериод.Сбросить();
        Пока ВыборкаПериод.Следующий() Цикл
        ОбластьПодвалПериод.Параметры.Заполнить(ВыборкаПериод);
        ТабДок.Присоединить(ОбластьПодвалПериод);
        КонецЦикла;

        ВыборкаИтог = РезультатЗапроса.Выбрать(); //т.е. общие итоги
        Если ВыборкаИтог.Следующий() Тогда
        ОбластьПодвалИтог.Параметры.Заполнить(ВыборкаИтог);
        ТабДок.Присоединить(ОбластьПодвалИтог);
        КонецЕсли;
        ТабДок.ЗакончитьАвтогруппировкуСтрок();
        КонецПроцедуры

        &НаКлиенте
        Процедура КроссТабПродажиПоМесяцам(Команда)
        ТабДок = Новый ТабличныйДокумент;
        КроссТабПродажиПоМесяцамНаСервере(ТабДок);
        ТабДок.Показать();

        КонецПроцедуры

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

          • Doremi_2020

            Добрый день! понимала, что должно быть форматирование, искала, нашла оформление, положение, а формата без Вашей подсказки не нашла! Ну что скажешь – Семён Семёнович! Спасибо за терпение!

            • Василий Ханевич


              (текст комментария доступен только участникам Мастер-группы)

              • Doremi_2020

                А вот с программным определением формата всё равно не получается. Исправьте, пожалуйста, ошибку:

                ВыборкаПериод = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Период","Все");
                Пока ВыборкаПериод.Следующий() Цикл
                ОбластьШапкаПериод.Параметры.Заполнить(ВыборкаПериод);
                ОбластьШапкаПериод.Параметры.Период = Формат(ВыборкаПериод, "ДФ=dd.MM.yyyy");
                ТабДок.Присоединить(ОбластьШапкаПериод);
                КонецЦикла;

                • Василий Ханевич


                  (текст комментария доступен только участникам Мастер-группы)

  9. Doremi_2020

    Задание 24. Решила задание не через объединение, а через пакет запросов.
    Вопросы: 1. Возможно ли такое решение или оно ошибочно? В чём преимущества?
    2. В решении были использованы временные таблицы, при этом менеджер временных таблиц не использовался, а всё сработало. Почему?

    &НаСервереБезКонтекста
    Процедура ЦеныКомпанииНаСервере(ТабДок)

    Макет = Обработки.Задание24.ПолучитьМакет("Макет");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    | ПРЕДСТАВЛЕНИЕ(ЦеныНоменклатурыСрезПоследних.Номенклатура) КАК НоменклатураПредставление,
    | ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаЗакуп
    |ПОМЕСТИТЬ ВТ_Закуп
    |ИЗ
    | РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен.Наименование ПОДОБНО ""%закуп%"") КАК ЦеныНоменклатурыСрезПоследних
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    | ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    | ПРЕДСТАВЛЕНИЕ(ЦеныНоменклатурыСрезПоследних.Номенклатура) КАК НоменклатураПредставление,
    | ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаРозн
    |ПОМЕСТИТЬ ВТ_Розн
    |ИЗ
    | РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен.Наименование ПОДОБНО ""%розн%"") КАК ЦеныНоменклатурыСрезПоследних
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    | ВТ_Закуп.Номенклатура КАК Номенклатура,
    | ПРЕДСТАВЛЕНИЕ(ВТ_Закуп.Номенклатура) КАК НоменклатураПредставление,
    | ВТ_Закуп.ЦенаЗакуп КАК ЦенаЗакуп,
    | ВТ_Розн.ЦенаРозн КАК ЦенаРозн,
    | (ВТ_Розн.ЦенаРозн / ВТ_Закуп.ЦенаЗакуп - 1) * 100 КАК Процент
    |ИЗ
    | ВТ_Закуп КАК ВТ_Закуп
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Розн КАК ВТ_Розн
    | ПО ВТ_Закуп.Номенклатура = ВТ_Розн.Номенклатура";

    РезультатЗапроса = Запрос.Выполнить();

    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    КонецЦикла;

    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    КонецПроцедуры

    &НаКлиенте
    Процедура ЦеныКомпании(Команда)
    ТабДок = Новый ТабличныйДокумент;
    ЦеныКомпанииНаСервере(ТабДок);
    ТабДок.Показать();
    КонецПроцедуры

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

      • Doremi_2020

        Благодарю за разъяснение, эту важную разницу между получаемыми результатами не понимала.

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

  10. Doremi_2020

    Добрый день, нашла таблицу Управление итогами в “Управление торговым предприятием для Украины”, редакция 1.2. Она совсем другая, другие колонки, только одна заполнена. Но больше удивило то, что там только 2 регистра бухгалтерии, остальные регистры накопления. Регистров сведений нет. Может что-то не то нашла?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  11. pasha71042

    Здравствуйте!
    Возник вопрос по условиям в запросах: Условия в секции ГДЕ выполняются последовательно?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

  12. pasha71042

    Здравствуйте!
    Объясните, пожалуйста, как используются и что означают колонки в таблице “Управление итогами”. Когда нужно что-то менять в этой таблице? И часто ли?
    Заранее спасибо.

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  13. NataliyaF

    Добрый вечер!
    Практическое задание 24, посмотрите, возможен ли такой вариант решения:

    ВЫБРАТЬ
        ЦеныНоменклатурыСрезПоследних.Номенклатура,
        СУММА(ВЫБОР
                КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен = &Закупочная
                    ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
                ИНАЧЕ 0
            КОНЕЦ) КАК ЦЗ,
        СУММА(ВЫБОР
                КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен = &Розничная
                    ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
                ИНАЧЕ 0
            КОНЕЦ) КАК ЦР
    ПОМЕСТИТЬ ВТ
    ИЗ
        РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних

    СГРУППИРОВАТЬ ПО
        ЦеныНоменклатурыСрезПоследних.Номенклатура
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ВТ.Номенклатура,
        ВТ.ЦЗ,
        ВТ.ЦР,
        ВЫБОР
            КОГДА ВТ.ЦЗ = 0
                ТОГДА NULL
            ИНАЧЕ 100 * (ВТ.ЦР - ВТ.ЦЗ) / ВТ.ЦЗ
        КОНЕЦ КАК ПроцентНаценки
    ИЗ
        ВТ КАК ВТ
    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

  14. Жибек Абдылдаева

    Здравствуйте, вопрос по видео 7-3-5, мы указываем дату начала и дата конец 11/01/2012/12/00/00, запрос нам возвращает только движения по одному документу, но в базе есть еще 2 документа на эту же дату с точностью до секунды, почему запрос и их не включил

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  15. AlexeyBlinov

    Добрый день!
    Небольшое замечание/пожелание: в практическом задании № 27 говорится о периоде задаваемом пользователем (см. вложение), а в видео-примере решения – период отсутствует.

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  16. Рустам

    1. Где взять демо версию 1С Бухгалтерия 1С ЗУП?
    2. В регистрах бухгалтерии в виртуальных таблицах группировка также происходит по измерениям автоматически, т.е. не нужно использовать группировку?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  17. Рустам

    Практическое задание №24. Не оптимальнее ли использовать следующий запрос, который выполняется на 50% быстрее?

    ВЫБРАТЬ
        ЦеныНоменклатурыСрезПоследнихЗакуп.Номенклатура КАК Номенклатура,
        ЦеныНоменклатурыСрезПоследнихЗакуп.Цена КАК ЦенаЗакупочная,
        ЦеныНоменклатурыСрезПоследнихРозница.Цена КАК ЦенаРозничная,
        (ЦеныНоменклатурыСрезПоследнихРозница.Цена / ЦеныНоменклатурыСрезПоследнихЗакуп.Цена - 1) * 100 КАК Процент
    ИЗ
        РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен.Наименование = &РозничнаяЦена) КАК ЦеныНоменклатурыСрезПоследнихРозница
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен.Наименование = &ЗакупочнаяЦена) КАК ЦеныНоменклатурыСрезПоследнихЗакуп
            ПО (ЦеныНоменклатурыСрезПоследнихЗакуп.Номенклатура = ЦеныНоменклатурыСрезПоследнихРозница.Номенклатура)

    УПОРЯДОЧИТЬ ПО
        ЦеныНоменклатурыСрезПоследнихЗакуп.Номенклатура.Наименование
    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

      • Ирина Жирнова

        А если в данном варианте применять не внутреннее, а полное соединение таблиц?

        ВЫБРАТЬ
            ЗакупочнаяЦена.Номенклатура КАК Номенклатура,
            ЕСТЬNULL(ЗакупочнаяЦена.Цена, 0) КАК ЦенаЗакупочная,
            ЕСТЬNULL(РозничнаяЦена.Цена, 0) КАК ЦенаРозничная,
            100 * (РозничнаяЦена.Цена - ЗакупочнаяЦена.Цена) / ЗакупочнаяЦена.Цена КАК Наценка
        ИЗ
            РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ЗакупочнаяЦена) КАК ЗакупочнаяЦена
                ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &РозничнаяЦена) КАК РозничнаяЦена
                ПО (ЗакупочнаяЦена.Номенклатура = РозничнаяЦена.Номенклатура)
        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

          • Ирина Жирнова

            Понятно, спасибо. Да, про расчет наценки упущение.

            • Василий Ханевич


              (текст комментария доступен только участникам Мастер-группы)

  18. serj-1976
    ВЫБРАТЬ
        ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
        ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаЗакупочная,
        ЦеныНоменклатурыСрезПоследних1.Цена КАК ЦенаРозничная,
        100 * (ЦеныНоменклатурыСрезПоследних1.Цена - ЦеныНоменклатурыСрезПоследних.Цена) / ЦеныНоменклатурыСрезПоследних.Цена КАК ПроцентНаценки
    ИЗ
        РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен.Наименование = "Закупочная Цена") КАК ЦеныНоменклатурыСрезПоследних
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен.Наименование = "Розничная Цена") КАК ЦеныНоменклатурыСрезПоследних1
            ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ЦеныНоменклатурыСрезПоследних1.Номенклатура

    Добрый день! Скажите на 24 задание Такой Запрос не проще работать будет? Ведь он одним запросом идет. Вроде данные корректные получаются.

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

      • serj-1976

        Спасибо! Я понял ,что данные попадут не все в запрос, а только те у которых установлены обязательно обе цены.Если я хочу выбрать все данные нужно делать разными запросами.
        НЕ совсем понял что проверять на NULL, если нет ни одной позиции Номенклатуры в базе у которой установлены 2 цены?

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

          • serj-1976
            ВЫБРАТЬ
                ЦенаЗакупочная.Номенклатура КАК Номенклатура,
                ЦенаЗакупочная.Цена КАК ЦенаЗакупочная,
                ЕСТЬNULL(NULL, 0) КАК ЦенаРозничная
            ПОМЕСТИТЬ ЦенаПоступление
            ИЗ
                РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &Закупочная) КАК ЦенаЗакупочная

            ОБЪЕДИНИТЬ ВСЕ

            ВЫБРАТЬ
                ЦенаРозничная.Номенклатура,
                ЕСТЬNULL(NULL, 0),
                ЦенаРозничная.Цена
            ИЗ
                РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &Розничная) КАК ЦенаРозничная
            ;

            ////////////////////////////////////////////////////////////////////////////////
            ВЫБРАТЬ
                НоменклатураО.Ссылка КАК Номенклатура,
                СУММА(ЕСТЬNULL(ЦенаПоступление.ЦенаЗакупочная, 0)) КАК ЦенаЗакупочная,
                СУММА(ЕСТЬNULL(ЦенаПоступление.ЦенаРозничная, 0)) КАК ЦенаРозничная
            ПОМЕСТИТЬ БезНаценки
            ИЗ
                Справочник.Номенклатура КАК НоменклатураО
                    ЛЕВОЕ СОЕДИНЕНИЕ ЦенаПоступление КАК ЦенаПоступление
                    ПО (ЦенаПоступление.Номенклатура.Ссылка = НоменклатураО.Ссылка)
            ГДЕ
                НЕ НоменклатураО.ПометкаУдаления
                И НЕ НоменклатураО.ЭтоГруппа

            СГРУППИРОВАТЬ ПО
                НоменклатураО.Ссылка
            ;

            ////////////////////////////////////////////////////////////////////////////////
            ВЫБРАТЬ
                БезНаценки.Номенклатура КАК Номенклатура,
                БезНаценки.ЦенаЗакупочная КАК ЦенаЗакупочная,
                БезНаценки.ЦенаРозничная КАК ЦенаРозничная,
                ВЫБОР
                    КОГДА БезНаценки.ЦенаЗакупочная > 0
                        ТОГДА (БезНаценки.ЦенаРозничная - БезНаценки.ЦенаЗакупочная) / БезНаценки.ЦенаЗакупочная * 100
                    ИНАЧЕ 0
                КОНЕЦ КАК Наценка
            ИЗ
                БезНаценки КАК БезНаценки
          • serj-1976

            Добрый вечер ! Скажите Данный запрос оптимальный если я хочу проверить цены на весь справочник номенклатуры. Спасибо!

            • Василий Ханевич


              (текст комментария доступен только участникам Мастер-группы)

  19. Eichen

    Здравствуйте, вопрос по главе “Параметры виртуальной таблицы остатков” (стр. 204) методического пособия к курсу.

    При построении этой виртуальной таблицы могут использоваться параметры.
    Насколько я понял, параметр Субконто предназначен для установления отбора записей регистра по видам субконто, а параметр Условие – по значениям субконто.

    Правильно ли я понимаю, что один вид субконто может иметь несколько значений?
    Например, вид субконто Контрагенты может иметь значения Поставщики, Покупатели, Банки (СправочникСсылка.Поставщики, СправочникСсылка.Покупатели, СправочникСсылка.Банки).

    Или один вид субконто всегда имеет строго одно значение ?
    Например, вид субконто Склады имеет значение Склады (СправочникСсылка.Склады)

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

  20. Eichen

    Здравствуйте, вопрос по главе “Структура регистра бухгалтерии” (стр. 195) методического пособия к курсу.

    Основная таблица регистра бухгалтерии содержит такие поля как ИзмерениеДт, ИзмерениеКт, РесурсДт и РесурсКт.

    Скажите, пожалуйста, на основании чего они появляются и почему они небалансовые (что измерения, что ресурсы)?

    Моё предположение, что как-то это связано с признаками учета, определенными в плане счетов.

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

      • Eichen

        Василий, количество имеет смысл только для счета Товары при условии, что по счету Товары активирован признак учета Количественный?
        Тогда поле КоличествоДт будет иметь некое числовое значение, иначе – нет?

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

  21. Eichen

    Здравствуйте, вопрос по главе “Устройство виртуальной таблицы остатков” (стр. 167) методического пособия к курсу.

    Правильно ли я понял, что остатки по виртуальной таблице остатков регистра накопления определяются системой исходя из двух таблиц самой базы данных – основная таблица регистра накопления и таблица итогов?

    Причем если используются текущие итоги, то остаток на конкретную дату определяется путем корректировки текущих итогов на 01.11.3999 таблицы итогов через движения (приход, расход) основной таблицы регистра накопления до этой конкретной даты, например 01.09.2020 ?

    Если текущие итоги не используются, то остаток на конкретную дату (например, 01.09.2020) определяется путем корректировки последних итогов таблицы итогов (итоги до 01.09.2020) движениями основной таблицы регистра накопления от даты последних итогов (например, 25.08.2020) до 01.09.2020?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

      • Eichen

        Василий, исходя из этого предложения

         получаются итоги на 01.04.2012, а не на 01.03.2012

        ,а также того, что мне известно из теории, я прихожу к выводу, что таблица итогов хранит остатки на 1-е число каждого месяца текущего и прошлых годов, по которым велся учет, а также будущих годов вплоть до 01.11.3999.

        Правильно ли я понял?

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

  22. Eichen

    Здравствуйте, вопрос по практическому заданию 22.

    При выполнении задания, я наложил условие отбора на виртуальную таблицу (Снимок 1).
    В результате помимо Иванова и Романова попал еще и Мищенко, поскольку он имеет в названии должности слово “Руководитель”, однако это не последняя запись по Мищенко в “Кадровой истории” (Снимок 2) и по идее она не должна была попасть в результат выполнения запроса .
    Почему она все-таки попала?

    • Eichen

      В практическом задании 23 есть ответ на мой вопрос.
      Прошу игнорировать его.

      • Василий Ханевич


        (текст комментария доступен только участникам Мастер-группы)

  23. Юлия Чубукова

    Здравствуйте!
    Спасибо за полные ответы с примерами на вопросы в предыдущей теме.

    Следующее решение практикума №24 будет правильным?

    ВЫБРАТЬ
    Закуп.Номенклатура КАК НоменклатураЗакуп,
    Закуп.Цена КАК ЦенаЗакуп
    ПОМЕСТИТЬ ВТ_Закуп
    ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК Закуп
    ГДЕ
    Закуп.ТипЦен = &Закуп
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    Продажа.Номенклатура КАК НоменклатураПродажа,
    Продажа.Цена КАК ЦенаПродажа
    ПОМЕСТИТЬ ВТ_Продажа
    ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК Продажа
    ГДЕ
    Продажа.ТипЦен = &Продажа
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    Закуп.НоменклатураЗакуп КАК НоменклатураЗакуп,
    Закуп.ЦенаЗакуп КАК ЦенаЗакуп,
    Продажа.НоменклатураПродажа КАК НоменклатураПродажа,
    Продажа.ЦенаПродажа КАК ЦенаПродажа,
    ВЫБОР
    КОГДА Закуп.ЦенаЗакуп ЕСТЬ НЕ NULL
    И Закуп.ЦенаЗакуп 0
    ТОГДА 100 * (Продажа.ЦенаПродажа – Закуп.ЦенаЗакуп) / Закуп.ЦенаЗакуп
    КОНЕЦ КАК Процент
    ИЗ
    ВТ_Закуп КАК Закуп
    ПОЛНОЕ СОЕДИНЕНИЕ ВТ_Продажа КАК Продажа
    ПО Закуп.НоменклатураЗакуп = Продажа.НоменклатураПродажа

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

      • Юлия Чубукова

        Спасибо, сняли все мой вопросы. У нас PostgreSQL, учту рекомендацию.

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

  24. U

    Доброго времени суток.
    Скажите, почему по одной из самых важных тем – по регистрам бухгалтерии – каркасная конфигурация, которая была в комплекте материалов, не содержит ни одного объекта-примера? (ни одного регистра бухгалтерии, ни одного плана счетов)

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  25. U

    Доброго времени суток. Вернулся, наконец, к курсу, и что хочу сказать: я, в основном, ради методов оптимизации курс прохожу, и думаю, что из разных вариантов выполнения тестовых задач вы не зря выбираете один, и хотелось бы пояснений, почему. Но с пояснениями тут плохо: например, в модуле 7 в решении для задания 24, вместо подзапроса с объединением (данные из которого сразу же групировались бы и суммировались), данные (не для поиска, не для соединения, а просто для объединения) помещаются во временную таблицу, и уже при выборке из нее производится группировка и суммирование. Есть на это какая-то причина, при суммировании СУБД как-то используется статистика по ВТ для оптимизации, или что?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  26. 87konstantin@mail.ru

    Здравствуйте, есть некий регистр сведений из которого хочу получить уникальные значения по одному или нескольким измерениям.
    Вариант 1:

    "ВЫБРАТЬ
    |   РегистрСведенийТест.Тест КАК Тест
    |ИЗ
    |   РегистрСведений.РегистрСведенийТест КАК РегистрСведенийТест
    |
    |СГРУППИРОВАТЬ ПО
    |   РегистрСведенийТест.Тест"

    Вариант 2:

    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    |   РегистрСведенийТест.Тест КАК Тест
    |ИЗ
    |   РегистрСведений.РегистрСведенийТест КАК РегистрСведенийТест"

    Какой вариант предпочтительнее?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  27. cojko

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

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

      • cojko

        не совсем понял, а зачем брать и ссылку и представлениев запрос – получается двойная работа . и ссылку получаем и еще и ее представление. логично же оставить просто ссылку тогда уж

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

          • cojko

            спасибо за пояснение. изыините у меня вопросы по 7 модулю концу его. там обхясняется работа с регистром бухгалтерии и расчета. посоветуете. где можно с нуля оснознать их суть? потому что скондочка на итповых решениях, не зная что такое бухгалтерия и зарплата в принципе, не очень понятно

            • Василий Ханевич


              (текст комментария доступен только участникам Мастер-группы)

              • cojko

                окей, понял, спасибо. а то чеснто сказать на веру тяжко воспринимаю тот факт, что регистр бухгалтерии нельзя воспроизвести регистром накопления. ведь в чем проблема двойную запись вести вообще в любом из регистров – измерения есть везде. ляпай не хочу, а при проводке доков, просто подставляй внужное место дт и кт и субконто.

                • Василий Ханевич


                  (текст комментария доступен только участникам Мастер-группы)

                    • Василий Ханевич


                      (текст комментария доступен только участникам Мастер-группы)

  28. aldoro

    Добрый день.
    Вопрос смешан с блоком 1. Задал в седьмом т.к. Первый в большей степени по общим вопросам.
    В блоке 1 на странице 27 сказано
    Платформа сначала получает текущие остатки регистра (остатки на текущую дату), которые хранятся в таблице итогов на дату 01.11.3999 00:00:00, затем корректирует эти остатки в соответствии с записями из таблицы движений за период с даты получения остатков по дату текущих остатков.
    Но это вроде же только один из возможных случаев, когда запрос СУБД будет сформирован таким образом.
    Такой случай как раз приведен в первом примере из блока 7 стр. 167
    По большому счету это же наверно зависит от того что на текущий момент имеется в таблице итогов, и на какую дату мы берем остатки
    Если к примеру взять полностью первый пример блока 7 и поменять в нем только саму дату среза итогов на 05.03.2012
    Разве оптимизатор не предпочтет выбрать итоги на 01.03.2012 а потом прибавить к ним выборку из таблицы движений за период с 1.03.2012 по 04.03.2012 23:59:59
    И запрос СУБД уже будет похож на второй пример с отключенными текущими итогами, хотя текущие итоги по прежнему включены.
    Либо к примеру для даты 25.02.2012
    по идее быстрее выбрать итоги на 01.03.2012 а потом отнять от них выборку из таблицы движений за период с 25.02.2012 по 29.02.2012 23:59:59

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  29. Andrey Shchelkunov

    Добрый день. Вопрос по решению Практического задания №25. Я решил его через функцию. Табличный документ создаю на сервере и функция возвращает его на клиента. В решении преподавателя табличный документ создается на клиенте, передается на сервер, а потом возвращается на клиента. Вопрос: Зачем ТабДок создавать на клиенте и передавать его на сервер, если можно без этого обойтись?

    Процедура Сформировать(Команда)
       
       
        ТабДок = СформироватьНаСервере();
        ТабДок.Показать();
    КонецПроцедуры
    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  30. ivan0vdd

    Здравствуйте!

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

    Спасибо.

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  31. gabriela

    Здравствуйте! Задание 23.
    Когда в параметрах ВТ делаем отбор по должности получаем все записи из регистра, а если сделать такой же отбор но по сотруднику (“мищенко”) выдает только последние. Т.е. разница между условие в параметрах ВТ и условие в запросе действует только на ресурс, а на измерение не распространяется, правильно?

    • Калиниченко Дмитрий


      (текст комментария доступен только участникам Мастер-группы)

  32. vlro61

    Здравствуйте. Вопрос по заданию 24. Можно ли вычислять процент наценки непосредственно в запросе, и что лучше использовать в данном задании: вложенный запрос или виртуальные таблицы?
    Спасибо.

    ВЫБРАТЬ
        ВложенныйЗапрос.Товар КАК Товар,
        СУММА(ВложенныйЗапрос.ЦенаЗакупочная) КАК ЦенаЗакупочная,
        СУММА(ВложенныйЗапрос.ЦенаРозничная) КАК ЦенаРозничная,
        (СУММА(ВложенныйЗапрос.ЦенаРозничная) - СУММА(ВложенныйЗапрос.ЦенаЗакупочная)) / СУММА(ВложенныйЗапрос.ЦенаЗакупочная) * 100 КАК ПроцентНаценки
    ИЗ
        (ВЫБРАТЬ
            ИсходныеДанные.Номенклатура КАК Товар,
            ИсходныеДанные.Цена КАК ЦенаЗакупочная,
            0 КАК ЦенаРозничная
        ИЗ
            РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦеныЗакупочная) КАК ИсходныеДанные
       
        ОБЪЕДИНИТЬ ВСЕ
       
        ВЫБРАТЬ
            ЦеныНоменклатурыСрезПоследних.Номенклатура,
            0,
            ЦеныНоменклатурыСрезПоследних.Цена
        ИЗ
            РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦеныРозничная) КАК ЦеныНоменклатурыСрезПоследних) КАК ВложенныйЗапрос

    СГРУППИРОВАТЬ ПО
        ВложенныйЗапрос.Товар
    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  33. alex_m

    Добрый день!
    Просьба проконсультировать – в практическом задании №27 хочу сразу в запросе указать товар или услуга, такой запрос выдает ноль записей

    ВЫБРАТЬ
        ПродажиОбороты.Контрагент КАК Контрагент,
        ПродажиОбороты.СуммаОборот КАК СуммаОборот,
        ПродажиОбороты.Номенклатура.ВидНоменклатуры КАК НоменклатураВидНоменклатуры
    ИЗ
        РегистрНакопления.Продажи.Обороты(, , Авто, ) КАК ПродажиОбороты
    ГДЕ
        ПродажиОбороты.Номенклатура.ВидНоменклатуры.Ссылка = "Товар"

    Вопрос можно решить через “Порядок”:

    .....
    ГДЕ
        ПродажиОбороты.Номенклатура.ВидНоменклатуры.Порядок = 0

    Но хочется разобраться как можно сделать через указание “Товар”

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  34. Андрей

    Добрый вечер!
    В уроке Query-7-3-AccntRg-3 Вы рассказываете про параметр Субконто. При этом в поле Условие Вы пишите: Организация = &Организация, а в поле Субконто Вы пишите: &Субконто. А почему не Субконто = &Субконто ?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  35. Андрей

    Добрый день!
    Не понятно объяснение про методы Движения и ДвиженияИГраницыПериодов. При выборе метода Движения запрос получает 17 записей, а при выборе ДвиженияИГраницыПериодов получаем 36 записей. Почему 36, а не 19? Ведь интервал включает две даты: дату начала периода и дату окончания периода. То есть две даты. Получается, что должно получиться 19 записей, а получилось 36 почему-то…
    Поясните, пожалуйста!

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  36. DIMAS16189

    Добрый день, в задании № 24 не проще ли было соединить таблицы РегистрСведений.ЦеныНоменклатуры.СрезПоследних между собой, чтобы получить две колонки цен, вместо объединения, ведь тогда не надо прибегать к функциям группировки и суммирования полей?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

      • DIMAS16189

        Благодарю за исчерпывающий ответ.
        Еще вопрос: почему Вы используете при решении задания 26 в запросе функцию ПРЕДСТАВЛЕНИЕ() вместо поля Контрагент.Представление?

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

  37. asmut

    Приветствую.

    Условие: выберем данные с 13.01.2019 по 15.03.2019

    1. Оборотный – собирает данные с 13.01.2019 по 31.01.2019 (включительно) по активным записям + берет готовые итоги (из таблицы “Итоги”) за февраль + с 01.03.2019 по 15.03.2019 снова по активным записям собирает данные
    2. Остаточный – собирает с 13.01.2019 по 15.03.2019 по активным записям

    Вопрос №1: Верно ли понимаю, что в остаточном нет рассчитанных оборотов, и там всегда происходит выборка по активным записям?
    Вопрос №2: Верно ли построить два регистра для одного документа если использование оборотов и остатков приблизительно в равных долях будет использоваться?
    Вопрос №3: Является ли ошибкой на экзамене на 1С:Специалист пункт 2? (Если в ваших курсах по “1С: Специалист” получу эту информацию. тогда не актуален ответ)

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  38. zubarev

    Добрый день! Почему-то после создания второго запроса на закладке Объединения и помещения запроса в ВТ на закладке Дополнительно, на закладке Таблицы и поля не появляется временная таблица. Все делал в точности как в видеоролике решения наставника

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  39. Tihonidy

    Необходимо получить остатки рег.накопления. Возьмем Виртуальную таблицу Остатки (см. видео урок Query-7-2-AccumRg-2). Есть три типа значения периода Виртуальной таблицы Остатки: Дата, МоментВремени, Граница.
    Как задать “период -Граница” при использовании Виртуальной таблицы рег.накопления Остатки в Модуле?

    • Ольга Шапкина


      (текст комментария доступен только участникам Мастер-группы)

        • Алексей Катеринич


          (текст комментария доступен только участникам Мастер-группы)

  40. ZhenyBash

    Добрый день! Практическое задание №24. Вы используете объединение запросов. А такой вариант решения задачи неправильный?

    ВЫБРАТЬ
        ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Товар,
        ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаЗакупочная
    ПОМЕСТИТЬ ВТ_Закуп
    ИЗ
        РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен.Наименование ПОДОБНО "%закупочная%") КАК ЦеныНоменклатурыСрезПоследних
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Товар,
        ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаРозничная
    ПОМЕСТИТЬ ВТ_Розн
    ИЗ
        РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен.Наименование ПОДОБНО "%розничная%") КАК ЦеныНоменклатурыСрезПоследних
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ВТ_Закуп.Товар КАК Товар,
        ВТ_Закуп.ЦенаЗакупочная КАК ЦенаЗакупочная,
        ВТ_Розн.ЦенаРозничная КАК ЦенаРозничная,
        (ВТ_Розн.ЦенаРозничная - ВТ_Закуп.ЦенаЗакупочная) * 100 / ВТ_Закуп.ЦенаЗакупочная КАК ПроцентНаценки
    ИЗ
        ВТ_Закуп КАК ВТ_Закуп
            ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Розн КАК ВТ_Розн
            ПО (ВТ_Закуп.Товар = ВТ_Розн.Товар)
    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  41. Ravenor

    Вторая часть таблицы. не заметил что сразу не прикрепилась

  42. Ravenor

    Здравствуйте! Привожу в качестве примера таблицу с движениями по регистру расчета “Начисления” , сделанные документом “Начисление зарплаты и взносов”. Выбирая данный документ в предложенной обработке я получаю пустой результат запроса. Когда же в запросе вместо виртуальной таблицы выбираю основную, получаю результат , аналогичный скриншоту. Поэтому мне и стало интересно по каким причинам то что работает у вас не работает у меня .
    Для чистоты эксперимента пробовал выбирать все документы делающие движения по данному регистру и везде получал пустые значения

    • AlexeyDubrovin

      У Вас в движениях по документу только вид оплаты Оклад. У оклада нет базы для начисления, поэтому ничего из виртуальной таблицы БазаНачисления и не выбралось. Эта таблица используется для расчета базы для видов начисления

  43. Ravenor

    Добрый день!
    Использовал рассматриваемую в теме обработку “База(Query-7-4-CalcRg-3)” на реальной базе ЗУП 3.1 (3.1.9.205, 8.3.14.1694)и результат получаю пустой, хотя если делаю выборку по основной таблице регистра, данные есть. С чем может быть связано такое поведение?

    • AlexeyDubrovin

      Добрый день.
      Покажите данные из Вашей базы, которые, по-вашему мнению, должны попадать

Комментарии закрыты