а в чем разница между этим вариантом и если соединить в запросе с остатками и вывести поле остаток на форму? И спасибо за этот вариант и за то что Вы делаете!
Тоже интересно, потому что по идеи если всё сделать в одном запросе будет более быстрее, чем делать запрос и в цикле делать обход. Хотелось бы услышать ответ или разницы нет?
@@Максим-ж6ы8швыше уже ответили. Соединение с виртуальной таблицей приведет к выборке всех записей этой таблицы и уже потом наложится фильтр. Это очень тяжёлая операция
@@ConstWel Не согласна. Докажите. Делаем в запросе дин. списка левое соединие с виртуальной таблицей. и все, и не надо городить огород. Может я не поняла. Но вы берете и для таблицы товаров (у меня например миллион записей, это маркет плейс) и получаете остатки для всей таблицы? и потом делаете скролл, и опять получаете?
@@КатеринаЧернова-ж4к с чем не согласна? Со стандартами фирмы 1С? С тем что соединение с виртуальной таблицей ещё и без использования её параметров это плохо?
Доброго времени прошел небольшой курс, курс примерно такой: основы программирования 1с хранение справочной информации программная работа с объектами работа с формами, управляемые формы запросы в 1с печатные формы достаточно ли этого, что бы пробовать идти на стажировку ?
Достаточно, если вас сразу не кинут в свободное плавание без наставника...так как в реале все иначе, но вы хоть уже подкованы базовыми знаниями, я так вообще уже работая стала только изучать это всё
@@denvladimir немного не так. Запрос берёт данные из таблиц. И формирует эту таблицу перед выводом её на форму. Обращение к таблице остатков в СУБД в любом случае будет. И ошибки при изменении формы не будет. Но тут вопрос быстродоействия. Что бы понять, что быстрее работает, дополнение запроса левым соединением или решение Ивана надо замеры делать. Причем, желательно на базе где номенклатуры хотя бы тысяч пять.
@@РахмановТимур-п4р В динамическом списке данные считываются порциями одним запросом. Что быстрее, считать часть данных одним запросов с соединением к остаткам, или после считывания данных, еще (по сути, запрос в цикле) отдельно получить остатки по считанным строкам?
Спасибо, Иван! Видео познавательное, правда есть минусы у такого подхода. Не работает сортировка, отбор, как пишут люди. Да и вообще насколько это оптимально выполнять 2 запроса? В каких-то случаях может это и допустимо писать форму таким образом, но все же только если часто остатки не нужны. А так я бы по старинке левым соединением все сделал
Это как альтернативный вариант изменения самого запроса динамического списка(когда через соединение с таблицей остатков сразу) ? или всё таки этот вариант должен считается предпочтительным ? и почему ? Спасибо.
Остатки это виртуальная таблица? Ты знаешь как работает виртуальная таблица? Для левого соединения будут выбраны остатки по ВСЕМУ регистру и только потом будет ограничено левым соединением. MS SQL иногда такое нормально оптимизирует но чаще нет чем да. С PG это вообще гарантированно проблемы. Просто запомните уже НЕЛЬЗЯ использовать виртуальные таблицы без отбора внутри виртуальной таблицы.
@@You2Ber42 очень интересно, а в контексте импортозамещения и важно. А если передать в качестве параметра ВТ массив из отображаемых элементов номенклатуры, так можно? На самом деле интересует производительность разных подходов, когда справочник номенклатуры за 30тыс элементов перевалил.
@@DimaKoovikin можно вот только в запросе дин. списка у тебя нет массива отображаемых элементов. 30 тыс это совсем мало, на таких объемах можно и не забивать голову.
@@DimaKoovikinиспользовать виртуальные таблицы в динамических списках нельзя и даже бессмысленно. Так как временная таблица выберет все записи. А динамический список работает порциями. Это ещё хуже чем левое соединение с виртуальной таблицей
Почему все пишут что запрос можно , соединить - да можно , но не всегда это возможно , такой способ тоже должен быть когда нет возможности написать запрос. Да и кажется что если изначально в динамическом списке сложный запрос, то такой способ предпочтительнее для баз которые на поддержке, т.к. после обновления лазить и выяснять и переписывать запрос - долго. А тут пустое поле в запросе и процедура в модуле формы, которую всегда можно просто скопировать в не зависимости от того как поменялся исходный запрос при обновлении
Как раз в отличии от просто левого соединения с вирт. таблицей остатков нагрузка будет минимальная. Данные считываются порциями по 40 элементов. Отбор остатков происходит с фильтром внутри вирт. табицы, т.е. там реально перебирается всего 40 строк. Даже если в справочнике 10 млрд записей, и в остатках 1000Млрд, работать это будет точно так же быстро. Я вот смотрю здоровые все мужики в комментах, а ведь вы чьи то коллеги, пишите код, получаете за него деньги :)))) При этом каких то базовых вещей не понимаете.
Вот! Сама идея вывести остатки вроде логичная и не криминальная. Но! Это начало пути в никуда. Тут надо сказать пользователям стоп и научить пользоваться отчетами))) они этого не любят, но я гну свою линию. Потому что потом захотят отбор, сортировку, группировку и так далее
Есть еще ошибка, вы должны были ограничить поле остаток, указав что его нельзя использовать для сортировки и отбора. Это конечно не красная ошибка но типовая и это желательно показывать.
А если товар находится на разных складах. то колонка в списке уже не поможет, а за частую так и бывает что один и тот же товар может лежать на складе вспомогательного производства и готовой продукции и вообще ордерный склад в ячейке например.
Минус такого подхода, что нельзя делать отбор или поиск. Технически там останется 0. Плюс нельзя будет сделать отбор показывать только товары с положительным остатком. Да и не стал бы делать запросы на каждое получение данных, уж лучше сразу брать левым соединением с остатками РН. //========== Как идею для видео (делал аналогичное сам, потому и предлагаю): тема с расширениями - доработать ДС (с произвольным запросом) через схему запроса и программным добавлением колонок в ДС. Актуально для доработки в типовых конфигурациях, где может измениться запрос разработчиками конфигурации, и не хочется терять типовой функционал получения типовых данных, да и текст запроса не придется менять. Я делал изменение списка Заказ клиента в доработанной конфигурации - был добавлен документ и на основании его делается документ заказа клиента. Был доработан запрос ДС с полем типа Булево и выводилась иконка. Все изменения в расширении с полностью программным формированием элементов формы.
Значительно быстрее и оптимальнее. Вам бы подучить теорию не по роликам. Почитайте материалы для экзамена 1С:Эксперт. Сдавать не обязательно, но хотя бы глупых вопросов не будете задавать. Как можно работать 1С разработчиком и не знать как устроены виртуальные таблицы. Неужели настолько все похуй?
На практике, левое соединение работает быстрее, чем эти костыли. При скроле тормозит такая обработка, на больших данных. Если засунуть отбор в параметр виртуальной таблице, помимо соединения. С Пустым параметром Период, регистра накопления, будет работать еще быстрее. Примерно так: ВЫБРАТЬ СправочникНоменклатура.Ссылка КАК Ссылка, СправочникНоменклатура.ПометкаУдаления КАК ПометкаУдаления, СправочникНоменклатура.Код КАК Код, СправочникНоменклатура.Наименование КАК Наименование, СправочникНоменклатура.Предопределенный КАК Предопределенный, СправочникНоменклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных, ОстаткиОстатки.СуммаОстаток КАК СуммаОстаток ИЗ Справочник.Номенклатура КАК СправочникНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Остатки.Остатки( , Номенклатура В (ВЫБРАТЬ Номенклатура.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура)) КАК ОстаткиОстатки ПО СправочникНоменклатура.Ссылка = ОстаткиОстатки.Номенклатура
а можно ещё оптимизировать. Таблицу поместить во временную и использовать в качестве параметров в следующей временной для остатков, чтобы не делать соединение с виртуальной таблицей. Так будет работать оптимально и быстро
@@Forest_dahfksd при выводе в динамическом списке он и так обрабатывает все, что бы найти первый элемен порции и последний. Зависит от поля сортировки. Поэтому часто простые дин.списки тормозят при сортировке по не индексируемому полю
как 1С все замудрила и усложнила. Скорее всего тут сложности изза директивы На СервереБезКонтекста. Ее надо заменить На Сервере и тогда можно упростить такие задачи.
А при таком способе отбор по этой колонке не возможен. И редактирование самого запроса динамического списка является более логичным чем через колонку которую потом заполнять отдельно надо.
@@bafometik вот это да!! т.е. Если Условие1 И Условие2 .... условие2 не будет проверяться???? Вы действительно программируете, или случайно ответ написали?
Я понимаю, что смысл видео - рассказать про обработчик "ПриПолученииДанныхНаСервере". Но пример выбран крайне не удачный. Конкретно эту задачу правильно решить редактированием запроса динамического списка - получать остаток сразу запросом, ну и условным оформлением.
Сам механизм - хорошо рассказан, но пример не самый удачный с точки зрения реализации... Вместо того, чтобы сразу формировать таблицу с нужными данными, и сразу залавать правила УО - делать это отдельным запросом с последующим циклом и принудительным заланием оформления - не самый оптимальный вариант
например это может быть не остаток, а баланс контрагента, и вычислять весь баланс по всем контрагентам не нужно, слишком затратно, достаточно только по тем кого показывает в данный момент в списке
@@AlexSolk и не всё можно в sql 1с вычислить, уж очень унылый sql твм. например с датами работать нельзя, например, мне нужно выделить даты если месяц от текущего дня одним цветом если 40 дней еще более явно выделить
Никогда так не делайте! Если у вас есть динамический список, то все эти остатки получаются путем редактирования запроса динамического цикла, не через эту цыганщину. Так же для выделения цветом (и т.п.) есть такая штука как Условное оформление. Вам бы за такое сразу не сдал на экзамене по платформе влепили. А подобное извращение применялось в неуправляемых формах в отсутствии динамических списков.
Почитал комментарии... 90% пишут про левое соединение с виртуальной таблицей остатков. Я персонально сначала некоторым ответил, но вас тьма. Это откуда столько в индустрии появилось "умников"? Была какая то скидка на курсы от скилбокса? Ну не верю я что человек у которого профессия 1С:Разаработчик и который за это деньги получает может не знать во что выливается левое соединение с виртуальными таблицами. Это же надо вообще не понимать как и что устроено. Ладно когда джун после 2х месячных курсов такую дич пишет, но неужели тут все комментаторы такие? Это как вообще?
@Zayac_vlc не в этом суть, даже реальные таблицы итогов могут быть большими. Суть в понимании того что такое левое соединение и в том чем этот подход отличается от использования соедений в самом дин. Списке.
@@You2Ber42 В динамическом списке обычная порционная выборка, ограничения накладываются в самом sql-запросе. При обращении к виртуальной таблице остатков без указания периода (как в данном случае) запрос идет на таблицу итогов, в которой текущие остатки хранятся физически. Тяжесть запроса от этого не больше, чем от добавления в список реквизита поля (Поставщик.Наименование).
Да не серчай ты так. Пока в таблице мало строк, это не вызывает проблем, только лёгкое неудобство. А не все работают в компаниях с количеством транзакций 100к+ каждый месяц. Вот и делают самым очевидным образом, как на курсах учили. А в мире 1С ИТС читать не принято, и не учат. Хотя в последнее время вроде как ситуация меняется
сколько ошибок при вводе текста, да уж писать на русском код такое себе удовольствие, русская раскладка клавиатуры совсем не оптимизирована. и почему так быстро у вас все работает, у меня по 5 минут отладка с конфигуратора запускается на рабочей базе.
@@TRIALEX3 1) А зачем делать 2 запроса, если можно сделать 1? 2) Левое соединение можно делать в фигурных скобках и тогда, если поле не выбрано, то и левого соединения не будет.
Какой же дурдом эта 8-ка. Всё делается чтобы упростить, а здесь по сравнению с 7-кой просто идиотизм. В 7 ке это бы заняло пару строк текста, и так с любой задачей, в 8-ке приходиться писать в 10 раз больше 🤦♂️
@AlexSolk а почему на ты? Ты мне кто, друг что ли? В 7-ке есть метод глобального контекста Регистры, вставляешь элемент формы текст и формулу - всë! 8ка - тупизм! Всё в мире делается чтобы упростить, здесь же простейшую задачу делаешь раз в 5 дольше чем на 7-ке
@@user-hn9ts3lu8pУпрощают не производство, а конечный продукт. Чтобы ты мог с мобильного устройства, с того же телефона в 1С работать. Для этого и созданы динамические списки, чего ты даже 10500 строками кода на клюшках не реализуешь. И это требует других подходов в программировании.
@@olegshpilevoy дичь это ваш снеговик. 7-ка была для "людей", а 8-ка это просто выкачивание денег. В 7-ке всë было просто и доступно, 8-ка это полный тупизм. Всë в мире делается для облегчения, 8-ка же тупая!
Как всегда, Иван на высоте. Четко, коротко, лаконично!
В этом варианте не работает сортировка, отбор по этому полю. Поэтому рекомендуется программно отключать возможность сортировки, отбора.
Сделал такую реализацию в Заказе в форме выбора) - Иван ты просто супер)
Как раз задача стоит добавить колонки в форму списка. Выручил)) спасибо большое!
Шикарно! Спасибо, Иван!
Спасибо за вашу работу! 15 мин. , а самому голову ламать можно целый день.😀
Спасибо за видео. Познавательно. Хотя обычно делаю в самом динамическом списке формы. Но знание этого способа лишним не будет.
Иван все просто и на высоте.!!! Лайк как обычно_)
Иван, большое спасибо!
топ, как всегда ! и очень полезно )
Спасибо, Иван, было полезно узнать!😊
Лайк! Жалко у вас нет времени на новые трансляции, всегда смотрю с большим интересом.
Спасибо за видео полезное.
отлично , всегда запрос редактировал , не знал про такой способ , возможно в каких-то случаях он больше подойдет
вообще всегда так надо делать, а запрос редачить менее производительно.
Просто супер, это получается можно вместо табличной части использовать в обработках
Отучился у Ивана и сейчас работаю у франчайзи. Большое ему спасибо! Как всегда он на высоте =)
Здравствуйте! сколько вам лет ? и на сколько на ваш взгляд есть проблема с возрастом при трудоустройстве
Уже подписан. Спасибо большое за Ваши видео!
Маэстро ⚡👍
а в чем разница между этим вариантом и если соединить в запросе с остатками и вывести поле остаток на форму? И спасибо за этот вариант и за то что Вы делаете!
Тоже интересно, что работает быстрее: заполнение доп полей через события или соединение таблиц в самом запросе?
Тоже интересно, потому что по идеи если всё сделать в одном запросе будет более быстрее, чем делать запрос и в цикле делать обход. Хотелось бы услышать ответ или разницы нет?
@@Максим-ж6ы8швыше уже ответили. Соединение с виртуальной таблицей приведет к выборке всех записей этой таблицы и уже потом наложится фильтр. Это очень тяжёлая операция
@@ConstWel Не согласна. Докажите. Делаем в запросе дин. списка левое соединие с виртуальной таблицей. и все, и не надо городить огород. Может я не поняла. Но вы берете и для таблицы товаров (у меня например миллион записей, это маркет плейс) и получаете остатки для всей таблицы? и потом делаете скролл, и опять получаете?
@@КатеринаЧернова-ж4к с чем не согласна? Со стандартами фирмы 1С? С тем что соединение с виртуальной таблицей ещё и без использования её параметров это плохо?
Очень полезно, большое спасибо.
Спасибо 🙃
🔥спасибо!
супер
Доброго времени
прошел небольшой курс, курс примерно такой:
основы программирования 1с
хранение справочной информации
программная работа с объектами
работа с формами, управляемые формы
запросы в 1с
печатные формы
достаточно ли этого, что бы пробовать идти на стажировку ?
Дерзайте
Достаточно, если вас сразу не кинут в свободное плавание без наставника...так как в реале все иначе, но вы хоть уже подкованы базовыми знаниями, я так вообще уже работая стала только изучать это всё
Видео ТОП
а если в товарах будет = 0, то возврата же не будет?
ахаха) меня за такие фокусы бухгалтера расцеловывают!
Прекрасно, Маэстро! Но я делаю проще, прямо через произвольный запрос, пристыковываю таблицу остатков...
При таком подходе запрос будет выполняться всегда, даже если убрать видимость остатков)
@@РахмановТимур-п4р могу ошибиться, но, думаю, тут как с СКД. Если поля нет в выборке для вывода, то компоновщик это поле удалит из запроса.
@@denvladimir немного не так. Запрос берёт данные из таблиц. И формирует эту таблицу перед выводом её на форму. Обращение к таблице остатков в СУБД в любом случае будет. И ошибки при изменении формы не будет. Но тут вопрос быстродоействия. Что бы понять, что быстрее работает, дополнение запроса левым соединением или решение Ивана надо замеры делать. Причем, желательно на базе где номенклатуры хотя бы тысяч пять.
@@disselite Динамический список все 5 000 товаров не опрашивает. Порциями.
@@РахмановТимур-п4р В динамическом списке данные считываются порциями одним запросом. Что быстрее, считать часть данных одним запросов с соединением к остаткам, или после считывания данных, еще (по сути, запрос в цикле) отдельно получить остатки по считанным строкам?
Круто, спасибо.
Лайк и комментарий в поддержку канала😎
Прикольно, спасибо!
Подскажите, где можно сказать демо базу из видео?
Спасибо, Иван! Видео познавательное, правда есть минусы у такого подхода. Не работает сортировка, отбор, как пишут люди. Да и вообще насколько это оптимально выполнять 2 запроса?
В каких-то случаях может это и допустимо писать форму таким образом, но все же только если часто остатки не нужны. А так я бы по старинке левым соединением все сделал
Добрый день. Подскажите пожалуйста, а почему просто не изменить запрос динамического списка?
Это как альтернативный вариант изменения самого запроса динамического списка(когда через соединение с таблицей остатков сразу) ? или всё таки этот вариант должен считается предпочтительным ? и почему ? Спасибо.
Круто
лайк не глядя
Отрицательные красным можно через условное форматирование сделать.
Нельзя если мы используем получение данных, на момент оформления списка в этом поле еще 0.
@@You2Ber42 Да. Вы правы.
Такая методика для обычных форм была, для 8.2. А для 8.3 гораздо проще сделать левое соединение к основному запросу динамического списка.
Остатки это виртуальная таблица? Ты знаешь как работает виртуальная таблица?
Для левого соединения будут выбраны остатки по ВСЕМУ регистру и только потом будет ограничено левым соединением.
MS SQL иногда такое нормально оптимизирует но чаще нет чем да. С PG это вообще гарантированно проблемы.
Просто запомните уже НЕЛЬЗЯ использовать виртуальные таблицы без отбора внутри виртуальной таблицы.
@@You2Ber42 очень интересно, а в контексте импортозамещения и важно. А если передать в качестве параметра ВТ массив из отображаемых элементов номенклатуры, так можно? На самом деле интересует производительность разных подходов, когда справочник номенклатуры за 30тыс элементов перевалил.
@@DimaKoovikin можно вот только в запросе дин. списка у тебя нет массива отображаемых элементов. 30 тыс это совсем мало, на таких объемах можно и не забивать голову.
@@DimaKoovikin так это как раз и сделал автор
@@DimaKoovikinиспользовать виртуальные таблицы в динамических списках нельзя и даже бессмысленно. Так как временная таблица выберет все записи. А динамический список работает порциями. Это ещё хуже чем левое соединение с виртуальной таблицей
В этом способе не работает отбор по полю, есть ли возможность это исправить?
Как показать количество товаров по группировкам в динамическом списке?
Поиск работает? По остаткам?
Почему все пишут что запрос можно , соединить - да можно , но не всегда это возможно , такой способ тоже должен быть когда нет возможности написать запрос. Да и кажется что если изначально в динамическом списке сложный запрос, то такой способ предпочтительнее для баз которые на поддержке, т.к. после обновления лазить и выяснять и переписывать запрос - долго. А тут пустое поле в запросе и процедура в модуле формы, которую всегда можно просто скопировать в не зависимости от того как поменялся исходный запрос при обновлении
Ок, классно! А сколько будет открываться такой список если в справочнике 120 000 элементов? и порядка 30-40 пользователей нон-стоп этот список юзают?
Как раз в отличии от просто левого соединения с вирт. таблицей остатков нагрузка будет минимальная.
Данные считываются порциями по 40 элементов. Отбор остатков происходит с фильтром внутри вирт. табицы, т.е. там реально перебирается всего 40 строк. Даже если в справочнике 10 млрд записей, и в остатках 1000Млрд, работать это будет точно так же быстро.
Я вот смотрю здоровые все мужики в комментах, а ведь вы чьи то коллеги, пишите код, получаете за него деньги :)))) При этом каких то базовых вещей не понимаете.
А как в этом способе передать параметр с формы, чтобы сделать остатки по выбранному складу?
Теперь пользователи хотят сортировку по добавленному столбцу. Иван как это сделать?? ))
Вот! Сама идея вывести остатки вроде логичная и не криминальная. Но! Это начало пути в никуда. Тут надо сказать пользователям стоп и научить пользоваться отчетами))) они этого не любят, но я гну свою линию. Потому что потом захотят отбор, сортировку, группировку и так далее
Есть еще ошибка, вы должны были ограничить поле остаток, указав что его нельзя использовать для сортировки и отбора.
Это конечно не красная ошибка но типовая и это желательно показывать.
да, в таком случае отбор будет работать только для отображаемого списка, а не для всего.
Иван, у вас будет курс на айронскилс по администрированию, где вы будете про СУБД и сервер рассказывать? я бы записался.
А если товар находится на разных складах. то колонка в списке уже не поможет, а за частую так и бывает что один и тот же товар может лежать на складе вспомогательного производства и готовой продукции и вообще ордерный склад в ячейке например.
Минус такого подхода, что нельзя делать отбор или поиск. Технически там останется 0. Плюс нельзя будет сделать отбор показывать только товары с положительным остатком. Да и не стал бы делать запросы на каждое получение данных, уж лучше сразу брать левым соединением с остатками РН.
//==========
Как идею для видео (делал аналогичное сам, потому и предлагаю): тема с расширениями - доработать ДС (с произвольным запросом) через схему запроса и программным добавлением колонок в ДС. Актуально для доработки в типовых конфигурациях, где может измениться запрос разработчиками конфигурации, и не хочется терять типовой функционал получения типовых данных, да и текст запроса не придется менять. Я делал изменение списка Заказ клиента в доработанной конфигурации - был добавлен документ и на основании его делается документ заказа клиента. Был доработан запрос ДС с полем типа Булево и выводилась иконка. Все изменения в расширении с полностью программным формированием элементов формы.
Способ интересный, но я бы сразу сделал соединение таблиц в запросе динамического списка. Или ваш способ отрабатывает быстрее?
Значительно быстрее и оптимальнее. Вам бы подучить теорию не по роликам. Почитайте материалы для экзамена 1С:Эксперт. Сдавать не обязательно, но хотя бы глупых вопросов не будете задавать.
Как можно работать 1С разработчиком и не знать как устроены виртуальные таблицы. Неужели настолько все похуй?
@@You2Ber42 а как Вы стали 1с разработчиком и в какой момент Вашей карьеры обрели знания конкретно по этому вопросу? Просто интересно, без негатива.
На практике, левое соединение работает быстрее, чем эти костыли. При скроле тормозит такая обработка, на больших данных. Если засунуть отбор в параметр виртуальной таблице, помимо соединения. С Пустым параметром Период, регистра накопления, будет работать еще быстрее. Примерно так:
ВЫБРАТЬ
СправочникНоменклатура.Ссылка КАК Ссылка,
СправочникНоменклатура.ПометкаУдаления КАК ПометкаУдаления,
СправочникНоменклатура.Код КАК Код,
СправочникНоменклатура.Наименование КАК Наименование,
СправочникНоменклатура.Предопределенный КАК Предопределенный,
СправочникНоменклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных,
ОстаткиОстатки.СуммаОстаток КАК СуммаОстаток
ИЗ
Справочник.Номенклатура КАК СправочникНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Остатки.Остатки(
,
Номенклатура В
(ВЫБРАТЬ
Номенклатура.Ссылка КАК Ссылка
ИЗ
Справочник.Номенклатура КАК Номенклатура)) КАК ОстаткиОстатки
ПО СправочникНоменклатура.Ссылка = ОстаткиОстатки.Номенклатура
а можно ещё оптимизировать. Таблицу поместить во временную и использовать в качестве параметров в следующей временной для остатков, чтобы не делать соединение с виртуальной таблицей. Так будет работать оптимально и быстро
А если в справочнике Номенклатура тысячи элементов? Запрос будет отрабатывать для всех хотя на экране всего несколько десятков элементов.
@@Forest_dahfksd при выводе в динамическом списке он и так обрабатывает все, что бы найти первый элемен порции и последний. Зависит от поля сортировки. Поэтому часто простые дин.списки тормозят при сортировке по не индексируемому полю
а почему нельзя сделать в самом запросе динамич списка?
Следующее видео надо по преобразованию динамического списка в таблицу значений
Зачем? Это же типовая операция СКД. Которая к тому же практически не нужна
как 1С все замудрила и усложнила. Скорее всего тут сложности изза директивы На СервереБезКонтекста. Ее надо заменить На Сервере и тогда можно упростить такие задачи.
А при таком способе отбор по этой колонке не возможен. И редактирование самого запроса динамического списка является более логичным чем через колонку которую потом заполнять отдельно надо.
Ждём в ВК.
сдаётся мне что если в поиск вбить какую-нибудь ерунду, чтобы не нашлись товары, то вывалится ошибка
Нет, была проверка на количество товаров > 0
@tihonkadavercian2589 и что? Там второе условие сразу же стоит, и если товаров нет, то второе условие вызовет ошибку
@@ЖораФридман-о9я первое условие выдаст Ложь и второе условие даже не будет проверяться
@@bafometik вот это да!! т.е. Если Условие1 И Условие2 .... условие2 не будет проверяться???? Вы действительно программируете, или случайно ответ написали?
@@ЖораФридман-о9я погугли "1с Оператор И спотыкается на лжи, а оператор ИЛИ спотыкается на правде"
Давай лучше миниатюры картинок товаров запилим в список.
Я понимаю, что смысл видео - рассказать про обработчик "ПриПолученииДанныхНаСервере". Но пример выбран крайне не удачный. Конкретно эту задачу правильно решить редактированием запроса динамического списка - получать остаток сразу запросом, ну и условным оформлением.
не будет тормозить список если в регистре будет много записей?
и ничего про то почему нельзя получить остатки в запросе динамического списка
Сам механизм - хорошо рассказан, но пример не самый удачный с точки зрения реализации...
Вместо того, чтобы сразу формировать таблицу с нужными данными, и сразу залавать правила УО - делать это отдельным запросом с последующим циклом и принудительным заланием оформления - не самый оптимальный вариант
пример некорректный. для такого случая доработка запроса дин списка. и отбор не будет работать для таких полей. и в цикле заполнение.
Зачем эти танцы с бубном, если можно просто присоединить остатки в запросе динамического списка и настроить условное оформление?
например это может быть не остаток, а баланс контрагента, и вычислять весь баланс по всем контрагентам не нужно, слишком затратно, достаточно только по тем кого показывает в данный момент в списке
@lexxkrt друг мой это и есть основная функция динамического списка. Он не считает всё, он считает только то, что на экране.
@@AlexSolk нет, он связывает по джойнам все таблицы и считывает все данные
@@AlexSolk и не всё можно в sql 1с вычислить, уж очень унылый sql твм. например с датами работать нельзя, например, мне нужно выделить даты если месяц от текущего дня одним цветом если 40 дней еще более явно выделить
Никогда так не делайте! Если у вас есть динамический список, то все эти остатки получаются путем редактирования запроса динамического цикла, не через эту цыганщину. Так же для выделения цветом (и т.п.) есть такая штука как Условное оформление. Вам бы за такое сразу не сдал на экзамене по платформе влепили. А подобное извращение применялось в неуправляемых формах в отсутствии динамических списков.
никогда не слушайте никогдаторов, как правило они не разбираются в вопросе
Почитал комментарии... 90% пишут про левое соединение с виртуальной таблицей остатков. Я персонально сначала некоторым ответил, но вас тьма.
Это откуда столько в индустрии появилось "умников"?
Была какая то скидка на курсы от скилбокса?
Ну не верю я что человек у которого профессия 1С:Разаработчик и который за это деньги получает может не знать во что выливается левое соединение с виртуальными таблицами.
Это же надо вообще не понимать как и что устроено.
Ладно когда джун после 2х месячных курсов такую дич пишет, но неужели тут все комментаторы такие?
Это как вообще?
Чё ты стонешь? Напиши нормально
Если тебе нужны текущие остатки, то обращение идет к физической таблице итогов.
@Zayac_vlc не в этом суть, даже реальные таблицы итогов могут быть большими. Суть в понимании того что такое левое соединение и в том чем этот подход отличается от использования соедений в самом дин. Списке.
@@You2Ber42 В динамическом списке обычная порционная выборка, ограничения накладываются в самом sql-запросе. При обращении к виртуальной таблице остатков без указания периода (как в данном случае) запрос идет на таблицу итогов, в которой текущие остатки хранятся физически. Тяжесть запроса от этого не больше, чем от добавления в список реквизита поля (Поставщик.Наименование).
Да не серчай ты так. Пока в таблице мало строк, это не вызывает проблем, только лёгкое неудобство.
А не все работают в компаниях с количеством транзакций 100к+ каждый месяц.
Вот и делают самым очевидным образом, как на курсах учили.
А в мире 1С ИТС читать не принято, и не учат.
Хотя в последнее время вроде как ситуация меняется
сколько ошибок при вводе текста, да уж писать на русском код такое себе удовольствие, русская раскладка клавиатуры совсем не оптимизирована. и почему так быстро у вас все работает, у меня по 5 минут отладка с конфигуратора запускается на рабочей базе.
Иван, не эффективно, есть способ лучше
Как сделать неправильно от специалиста фирмы 1С. Почему не изменить запрос динсписка, как рекомендуется фирмой 1С? Зачем городить велосипед?
ну типа если поле отключено - зачем его запрашивать из базы.
@@TRIALEX3 если бы ты знал принцип работы СКД не писал бы чушь. Если нет вывода данных то нет обращения к данным.
@@uppinua А если бы ты был хоть чуточку вежливее то был бы нормальным человеком а не самовлюбленным болваном. Но что поделаешь.
@@TRIALEX3
1) А зачем делать 2 запроса, если можно сделать 1?
2) Левое соединение можно делать в фигурных скобках и тогда, если поле не выбрано, то и левого соединения не будет.
Есть одна загвоздка, фирма 1С крайне не рекомендует как говоришь ты. :)
Какой же дурдом эта 8-ка. Всё делается чтобы упростить, а здесь по сравнению с 7-кой просто идиотизм. В 7 ке это бы заняло пару строк текста, и так с любой задачей, в 8-ке приходиться писать в 10 раз больше 🤦♂️
Сделай на клюшках динамический список, потом поговорим об упрощении
@AlexSolk а почему на ты? Ты мне кто, друг что ли?
В 7-ке есть метод глобального контекста Регистры, вставляешь элемент формы текст и формулу - всë! 8ка - тупизм! Всё в мире делается чтобы упростить, здесь же простейшую задачу делаешь раз в 5 дольше чем на 7-ке
@@user-hn9ts3lu8pУпрощают не производство, а конечный продукт. Чтобы ты мог с мобильного устройства, с того же телефона в 1С работать. Для этого и созданы динамические списки, чего ты даже 10500 строками кода на клюшках не реализуешь. И это требует других подходов в программировании.
О! Свидетели клюшек подъехали😊 Слава богу, я наконец-то избавился от поддержки семерки. Это дичь использовать ее в наше время.
@@olegshpilevoy дичь это ваш снеговик. 7-ка была для "людей", а 8-ка это просто выкачивание денег. В 7-ке всë было просто и доступно, 8-ка это полный тупизм. Всë в мире делается для облегчения, 8-ка же тупая!