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