В работе с 1С нужна определенная осторожность и внимательность :)
Порой даже стандартные, рекомендуемые методы могут привести к некорректному результату.
Простая задача: нужно отобрать из регистра сведений информацию о сотрудниках и их должностях.
Каковы стандартные рекомендации? – использовать условия отбора через параметры виртуальной таблицы, потому что это быстрее.
Логично? – Да.
Но результат может оказаться в корне неверным.
Сегодняшнее видео – как раз про такой случай.
- задать отбор в параметрах виртуальной таблицы
- выполнить отбор через обычное условие в запросе
И мы на примере увидим, что хотя первый вариант работает быстрее, но результат может быть неправильным.
А второй вариант, хотя в целом работает медленнее – но дает нам именно то, что просили.
Хотя, безусловно, в 1С нет правильного и неправильного, есть инструментарий, которым нужно уметь пользоваться : )
Итак, предлагаем за 9 минут разобрать – в чем отличие между исполнением отбора через условие в запросе или условие в параметрах виртуальной таблице.
Приятного просмотра!
- 00:00 – Общее описание задачи по работе с параметрами виртуальных таблиц (ВТ)
- 00:26 – Задание отбора в параметрах ВТ и в условиях запроса
- 01:15 – Демонстрация отличий в отборах через условия и через параметры ВТ
- 04:06 – Объяснение результатов
- 06:04 – Последовательность выполнения действий в рамках запроса
- 08:00 – Как делать правильно: ставить параметры в условиях запроса или в параметрах виртуальных таблиц?
P.S.
Понимать, как работают запросы и уметь их строить - обязательный навык для всех, кто дорабатывает и внедряет 1С.
После курса Вы сможете:
- Строить сложные запросы с несколькими источниками данных
- Уверенно задействовать вложенные запросы и временные таблицы
- Использовать встроенный язык для обработки результатов запроса
- Учитывать особенности соединений и объединений нескольких таблиц.
- Разрабатывать запросы на уровне задач Аттестации 1С:Специалист по платформе.
Отлично. На таблицу регистра наложили условие ( убрали часть строк – часть истории по сотруднику) и сделали запрос среза последних. В итоге неверный результат.
А в каких случаях надо делать и не надо так делать и почему так произошло – ни слова :-))).
Для наглядности можно строки было бы подсветить, которые уберутся из за первого условия к виртуальной таблице… А так – поняли те, кто и так понимает как все работает….
Добрый день.
Рассмотрите следующую аналогию:
Я рассказал в курсе про два разных механизма: соединения и объединения, но не сказал, в каких случаях надо делать и не надо так делать. Причина в том, что это 2 разных механизма, в каждом конкретном случае надо думать, какой способ использовать.
Я рассказал про два разных механизма установки условий. Пример наглядно показывает, что условия можно ставить двумя разными способами, и работать будет по разному. В каждом конкретном случае надо думать, какой использовать.
Почему произошло – по причине того, что в разном порядке запросе обрабатываются условие отбора и соединение таблиц. В ролике об этом сказано.
По моему, эту особенность разбирал Евгений еще лет 10 назад, толи в профессиональном курсе, толи в бесплатках каких то к нему еще на старом сайте. Евгений вообще давал столько материала, что видео нужно пересматривать каждые полгода. Теперь таких курсов уже нет, победил маркетинг… старые курсы уже не в продаже. Тема по запросам уже настолько баянистая, что сложно найти свежий вопрос в этой теме. Может кортежи? А может и их раньше рассматривали. Ну тогда дали бы рекомендации по применению реальной таблицы среза последних или не применения ее, например, чисто из-за некоторой новизны данной вазможности
Алексей, тут не в маркетинге дело :)
Нельзя же записать курс 10 лет назад и забыть обо всем. Любой новый человек откроет видео, увидит формы и даты 2012-го года – и закроет в ужасе. Почему? Потому что это выглядит откровенно устаревшим. И говорить “нет-нет, все работает так же” – это такое…
И это Вы помните, что было 10 лет назад, а есть масса людей, которые пришли в профессию в этом году – повториться для них не будет лишним :)
Плюс, как ни крути, платформа тоже не стоит на месте.
Поэтому старые курсы снимаются с продаж, записываются новые – по мере сил и свободной воли авторов.
Можно, конечно, попробовать приковать Евгения к батарее и заставить переписать курсы 2010-2013 годов – только он не дается :)) Свободная воля и все такое.
По поводу рекомендации по применению реальной таблицы среза последних или не применения ее услышали, автору передадим, спасибо! : )
Особенностей тут никаких нет).
1. Нужно понимать различие между измерениями и ресурсами.
2. Понимать как получается срез последних – фактический это левое соединение. Есть исключение, когда используется фактическая таблица среза.
Урок про “запомните и делайте так”. А нужно рассказать механизм получения и тогда все станет понятно.
Добрый день. Цель ролика показать различие в механизмах запроса. Что параметры виртуальной таблицы не дублируют условие запроса.
Тем кто эту тонкость знали приятно почувствовать себя крутым.
Те кто не знали вряд ли поняли причину)
Автору в любом случае спасибо.
Активностью публики поражен)
Спасибо за отзыв! :)
Считаю, что очень зря автор уходит от упоминания ресурсов и измерений – именно эти понятия и определяют структуру виртуальной таблицы “СрезПоследних”. Измерения не меняются в срезах, поэтому на них можно накладывать отборы, для того, чтобы получить значение ресурса на момент “СЕЙЧАС”, как сказано в условиях задачи. А вот ресурсы меняются в виртуальной таблице, поэтому нужно понимать, что отбор по ресурсу в отборах виртуальной таблицы делает результат выборки некорректным по отношению к условию задачи.
Вроде как раньше, в прежних версиях платформы, нельзя было в виртуальной таблице делать отбор по ресурсам, это какое-то новомодное веяние.
Добрый день. Цель была показать различия в механизмах, что отборы в параметрах ВТ не дублируют условие в запросе. Как и зачем этим пользоваться потом, это отдельная тема, связанная уже не с запросами, а с регистрами.
Зря потраченные 9 минут. Цель ролика заманить на курс, а не объяснить причины расхождений.
Цель ролика – показать, что следование правилам без понимания иногда приводит к потере времени на удивление. Да, он ‘новичковый”, но мы все когда-то были новичками.
Рассказали бы почему такая “особенность”: что запрос к виртуальной таблице – это фактически 2 запроса к реальной таблице, и условие, которое указано в скобках накладывается на одну из таблиц, поэтому при их соединении получается такой результат, а условие ГДЕ накладывается на записи уже после соединения этих таблиц.
А не просто “есть особенность”…
Цель ролика это не объять необъятное, а обратить внимание на разницу в работе. Что есть 2 разных механизма, они работают по-разному. Каждый из них “правильный” если применяется к месту.
Все таки стоило объяснить, что оба запроса не просто правильные, а в чем смысл логики результата каждого.
в одном – кто сейчас занимает должность
в другом – кто последним занимал должность
Да нет тут смысла. Есть 2 разных механизма запроса и пример, который эту разницу демонстрирует. Если Вы эту разницу видите, то цель ролика достигнута.
Видимо, цель ролика – просто показать, что это «не баг, а фича», а не рассказать почему так получается..
Да. Дать первичное представление достаточное для начала дальнейшего изучения. И проиллюстрировать наглядно те формальные требования, которые есть при работе с регистрами.
Автор не делает различия между измерением (Сотрудник) и ресурсом (Должность).
Не кажется странным вообще накладывать отбор по ресурсу в параметрах виртуальной таблицы?
Сама логика регистра сведений это хранить некий результат (ресурс) в разрезе измерений. А в видео мы на результат, который хотим получить, заранее накладываем определенный отбор.
Кстати, для программного варианта СрезПоследних в синтакс-помощнике упоминаются только измерения и реквизиты.
(необязательный)
Тип: Структура.
Структура, содержащая отбор по измерениям и реквизитам регистра.
Тема, на мой взгляд, раскрыта не до конца.
Автор специально уходит от упоминания ресурсов или измерений. Смысл ролика в том, что есть 2 разных механизма запроса и пример, который эту разницу демонстрирует. Если Вы эту разницу видите, значит либо цель ролика достигнута, либо Вы и так это знали.
Михаил хотел сказать, что параметрами виртуальной таблицы необходимо пользоваться, когда надо наложить отборы именно по измерениям, а уже потом из получившегося множества записей отобрать нужные по ресурсу.
и зачем автор специально уходит от понимания измерения и ресурсов? это как раз-таки тут и важно! он должен был бы сделать акцент именно на это!
Есть причина, а есть следствие. Причина это то, что в запросах 2 разных механизма. Следствие этого отбор по измерениям в параметрах вт. Ролик про причины. И на уровне таблиц, с которыми работает запрос, понятия измерений, ресурсов и реквизитов в данном случае не важны. Так же, например, когда делается соединение. Соединение происходит по полям вне зависимости от того измерение это или нет.
+
Очень полезно знать! Спасибо!!
Да, действительно очень полезное видео!
Большое спасибо!
Мне кажется, это пример не по заявленной теме. Это нюанс работы регистра сведений. При чем, если измерений больше одного. Ясно, что срез.. работает по совокупности измерений.
Пример показывает работу 2х разных механизмов. Это не зависит от количества измерений и вида регистра. Есть 2 разных механизма, они работают по разному. Надо брать тот, который в данном конкретном случае нужен.
Добрый день.
Так может просто не стоит использовать отбор в виртуальной таблице по ресурсам?
Посмотрите пример. Показаны варианты, когда в одном случае надо использовать параметры ВТ, а в другом случае надо использовать условие запроса. 2 разных механизма, каждый нужен для своих целей
И для какой цели может понадобится делать отбор в виртуальной таблице среза по ресурсу?
Да какая разница, ресурс или нет? Есть 2 разных механизма, надо понимать разницу в их работе. Здесь эта разница явно видна разница. Всё. Точка. На этом пример закончен. Нельзя рассказать всё в рамках одного короткого ролика.
Так это правильное замечание, что тему имело смысл чуть раскрыть и дополнить, что без отбора по изменениям надо задуматься стоит ли делать отбор по ресурсу. Редко встречал задачи корректным результатом которых будет отбор по ресурсу без отбора по изменениям в параметрах Вирт таблицы периодического регистра сведений. Ну а в целом видео действительно полезное, чтобы каждый кто посмотрел задумался и закрепил знания.
Я специально ухожу от понятий измерения и ресурсы. Эти понятия связаны со структурой объекта, которую надо отдельно разбирать. Данный же курс посвящен запросам, причем большей частью для людей, которые не очень глубоко в теме вообще. Поэтому цель была именно обратить внимание на то, что есть разные возможности, они все “правильные”. Только это предполагает изучение еще большого числа сопутствующих тем, чтобы понять, когда и какой механизм применять
Так возможности и будут разными от того, по измерению или ресурсу будет отбор. Человек должен понимать, что он делает в запросе, а не просто тыкать во все возможные поля в конструкторе. Возможности есть разные и некоторые из них как раз таки “неправильные”.
Нет. Не правильно. Зависит не от того, ресурс это или измерение, а от того, что работает по разному.
Дмитрий, никогда не пробовали рассматривать регистр сведений как некий многомерный (многоуровневый) массив?
я прекрасно понял, что Вы упор делаете на то, что в одном случае сначала делается срез, а потом отбор; а в другом – сначала отбор, а потом срез.
на мой взгляд это само собой следует из самих этих виртуальных таблиц, что сначала выполняется условие (отбор), который накладывается на ВТ, а потом уже происходит срез, остатки или что-то ещЁ из полученного множества после отбора.
я думаю, в данном видео нужно обратить внимание зрителей на то, где какие данные хранятся в представленном регистре сведений, то есть измерения и ресурсы. и демонстративно показать, что накладывать условия отбора в ВТ на ресурсы технически можно, но в таком случае результат будет отличным от ожидаемого. и следом же сказать, что различия между двумя способами отбора.
Курс посвящен работе с запросами. Поместить в один курс все невозможно. Ролик демонстрирует очевидный для Вас момент, но очевиден он далеко не всем. Цель ролика показать что есть 2 разных механизма, это не дублирование и не случайность. Все остальное это отдельная большая тема связанная с устройством объектов, с методологией их использования. Но это уже не имеет прямого отношения к запросам!
Интересно, конечно, но в начале длительное вступление. в конце тоже затянули.
в периодическом регистре сведений в срезе последних делать условие в таблице на реквизит это вообще не по-христиански
Реквизиты вообще не используются. Эти “затянутые” начало и конец в моем понимании представляют главную ценность ролика
Прекрасное видео. Прекрасное!!!!! + однозначно преподавателям и авторам.
Рады, что видео было полезно.
В курсе еще интереснее!
А если наложить отбор на параметры ВТ, а потом еще на секцию где, у нас получается 2 таблицы СрезПоследних: первая из ВТ с параметрами, а потом из нее делаем так же срез и условие в секции где?
Добрый день. Не очень понятен вопрос, о чем вообще идет речь?
Виртуальная таблица формируется платформой на основании данных регистра. Построить виртуальную таблицу на основании каких – то других данных невозможно. Откуда и как получаются две таблицы непонятно.
Что и с какой целью Вы хотите сделать?
Хочу наложить отборы на параметры ВТ и в секции ГДЕ. Как будет работать запрос в таком случае?
Добрый день. В начале будет с формирована виртуальная таблица, согласно условиям в ее параметрах. После этого к ней применится условие, описанное в секции ГДЕ.