Программист 1С, не пиши так!

  Рет қаралды 25,431

IRONSKILLS - Курсы по 1С

IRONSKILLS - Курсы по 1С

4 ай бұрын

🔴Очень частая ошибка начинающих программистов 1С.
💥 Записаться на курс "Программист 1С: с нуля до профи": ironskills.by/kursi/programmi...
Поддержать канал:
donate.stream/ya410011655962993
✅Подписывайтесь на наш канал чтобы первыми получать новые видео.
#1с #ironskills #1с_бсп
---
С уважением, команда IRONSKILLS

Пікірлер: 260
@alexandrshulgin82
@alexandrshulgin82 4 ай бұрын
как уже отмечал ранее, у ваших роликов есть огромный недостаток - они очень редко выходят. очень понятно, очень наглядно, очень познавательно.
@ser.sinyavin
@ser.sinyavin 4 ай бұрын
потому что это средство привлечение на курсы, а не курс. спасибо что хоть чем-то делится действенным
@user-qh5kv3lq9t
@user-qh5kv3lq9t 4 ай бұрын
@@ser.sinyavin Причем то чем он делится, это не "действенное" а унылая рутина, про которую можно почитать в любой желтой книжке по разработке 1с
@TRIALEX3
@TRIALEX3 4 ай бұрын
@@user-qh5kv3lq9t ну хзхз. Его набор шаблонов доп. обработок прям для меня палочка-выручалочка. Очень часто пользуюсь.
@Trixter-kh9tb
@Trixter-kh9tb 4 ай бұрын
​@@TRIALEX3 где взять эти шаблоны?
@TRIALEX3
@TRIALEX3 4 ай бұрын
@@Trixter-kh9tb в одном из видео на канале. Что то про доп обработки в названии.
@nikolakoval7294
@nikolakoval7294 4 ай бұрын
Доклад хорош. Четко, без слов-паразитов, всяких "э-э", "а-а.." и тому подобного. Изложение звучит так, будто неоднократно отрепетировано - все по полкам, слушается легко. Забрел сюда случайно, к программированию в 1С не имею отношения, но считаю нужным отметить высокое качество подачи материала. Досмотрел до конца. Практически ничего не понял, но было интересно . Успехов в вашем деле!
@ironskills-1c
@ironskills-1c 4 ай бұрын
Спасибо огромное за комментарий)
@ggguuiis
@ggguuiis 4 ай бұрын
ISNULL Иван!! ISNULL ты открыл мне глаза, сколько же я страдал с этим естьnull
@MrTorfable
@MrTorfable 4 ай бұрын
Блин, видео вообще огонь! Словно мед в уши, кода ревью по 1С в ютубе нет, пожалуйста, продолжайте делать дальше такие видосы)
@ironskills-1c
@ironskills-1c 4 ай бұрын
Спасибо) Будем развивать эту тему)
@dmitrym4022
@dmitrym4022 4 ай бұрын
Работаю программистом 1с около 5 лет. хоть и знал о таких моментах, но все же посмотреть было очень интересно и познавательно! Спасибо!
@Shade45One45
@Shade45One45 4 ай бұрын
Аналогично. Иногда пересматриваю старые видео этого канала, чтобы освежить память в каких-то нюансах или даже узнать какую-нибудь тонкость, но которую я не знал.
@ironskills-1c
@ironskills-1c 4 ай бұрын
Спасибо за комментарий)
@Shade45One45
@Shade45One45 4 ай бұрын
Не, ну это база!) На любом собесе спрашивают про методы оптимизации запросов. Я бы посмотрел по оптимизации запросов отдельное видео) Может, узнаю чего нового)
@user-wv6vu7wn8d
@user-wv6vu7wn8d 4 ай бұрын
Отличное видео. 👍 Пожалуйста, можно рубрику "не пиши так" почаще?)
@Rarogg
@Rarogg 4 ай бұрын
Поддерживаю! Классная рубрика будет, если введете на постоянной основе. Иван, спасибо!
@ironskills-1c
@ironskills-1c 4 ай бұрын
Классная идея, спасибо, будем развивать эту тему)
@user-wv6vu7wn8d
@user-wv6vu7wn8d 4 ай бұрын
@@ironskills-1c ещё просьба. Очень было интересно, когда Вы анализировали запрос со стороны sql. Было бы здорово, если бы Вы рассказали как настраивать трассировку и как её анализировать.
@user-fy7ps1qy1f
@user-fy7ps1qy1f 4 ай бұрын
Лучшая подача материала. Спасибо!
@den2033
@den2033 4 ай бұрын
Доступно и наглядно были показаны ошибки. А также сравнительная разница, выполнения обработки между двумя вариантами. Супер.
@user-de2fl8cs7o
@user-de2fl8cs7o 4 ай бұрын
Спасибо! Знал, что обращение к реквизитам через точку - bad practices, но впервые получил превосходное и внятное объяснение, почему.
@a34svob
@a34svob 4 ай бұрын
Спасибо! Как всегда всё понятно и очень наглядно.
@user-mh7is7zr2w
@user-mh7is7zr2w 4 ай бұрын
Спасибо большое, Иван!
@cybermetalyogurt
@cybermetalyogurt 4 ай бұрын
Спасибо, весьма познавательно и наглядно.
@user-vq6wu3sr6l
@user-vq6wu3sr6l 4 ай бұрын
Как всегда супер! Спасибо Иван!
@user-pw6df6wh1l
@user-pw6df6wh1l 4 ай бұрын
Спасибо большон, очень годный выпуск, хочется еще!
@gigabyte1c
@gigabyte1c 2 ай бұрын
Классная подача материала, толково и легко смотрится.
@MotoCrankshaft
@MotoCrankshaft 4 ай бұрын
Класс. Не знал про точку, что еще и к табличным частям запросы сформируются. Думал только один запрос сформируется на все реквизиты, а оно еще хуже оказывается :D
@user-rn2ml9lp7b
@user-rn2ml9lp7b 4 ай бұрын
Как новичку в программировании, такие кейсы очень полезны. Спасибо!
@user-sg8cf3jd3k
@user-sg8cf3jd3k 4 ай бұрын
Иван, привет! Спасибо тебе за твой труд! Я твой фанат.)
@ironskills-1c
@ironskills-1c 4 ай бұрын
Спасибо)
@The-hi5uw
@The-hi5uw 3 ай бұрын
Полезно! Побольше бы таких видео.
@user-lr1ly7mk2y
@user-lr1ly7mk2y 4 ай бұрын
Ура!!! Новое видео, спасибо большое! :)
@user-kq9zl3ct7q
@user-kq9zl3ct7q 4 ай бұрын
Иван, как всегда супер подробно 👍.
@user-os3ev4sm1r
@user-os3ev4sm1r 4 ай бұрын
Спасибо. Знал, что так нельзя делать, но до конца не понимал почему.
@sanyaDjan
@sanyaDjan 4 ай бұрын
Шикарно. Как раз делаю обработку точь в точь 😅 в принципе знал про табу на запросы в циклах, но теперь супер подробно все понял)) спс)
@WhoAmI-sx6fb
@WhoAmI-sx6fb 4 ай бұрын
Нужно сделать ещё видео с такими же примера с индексацией.
@kalambur729
@kalambur729 4 ай бұрын
Спасибо! Продолжайте!
@natalyagovorova390
@natalyagovorova390 4 ай бұрын
Спасибо, Иван! Заставка 🔥
@ironskills-1c
@ironskills-1c 4 ай бұрын
Спасибо)
@user-xs1pn1je2p
@user-xs1pn1je2p 4 ай бұрын
Спасибо ! как всегда - Шикарно !
@KvartaE
@KvartaE 4 ай бұрын
Спасибо, наглядно и познавательно
@1C-Developer
@1C-Developer 4 ай бұрын
Вижу новый видос, автоматом ставлю лайк и перехожу к просмотру😅👍
@maxglu7165
@maxglu7165 4 ай бұрын
Идеальное объяснение!!!🎉
@dmitry7828
@dmitry7828 4 ай бұрын
1. Зачем делать пакетный запрос? Можно же сразу объединить данные. 2. Почему не добавить артикул сразу в третьем запросе? Зачем его тянуть из первого? 3. Зачем обход результата в цикле? Нельзя сразу выгрузить результат запроса и загрузить его в таблицу без обхода?
@TheJabberwahh
@TheJabberwahh 4 ай бұрын
тоже не понятно. даже если первый делать пакетом, то во втором сразу можно левым соединением и артикул получить. хорошо, что я больше не занимаюсь 1С. Но смотря такие видосы - думаешь правильно ли всё делал. какие-то излишние движения, которые путают.
@user-sd9oc4qh2c
@user-sd9oc4qh2c 4 ай бұрын
Видимо, если брать артикул в третьем соединении через точку от ссылки на справочник, то это будет лишним левым соединением; а в первом запросе данные и так из этого справочника тянутся. Но места в оперативке будет занято больше, это да...на хранение всех ВТ.
@ironskills-1c
@ironskills-1c 4 ай бұрын
Спасибо за комментарий) По поводу пакетного запроса: соединения с подзапросами и виртуальными таблицами - одна из причин неоптимальной работы запросов: its.1c.ru/db/metod8dev#content:5842:hdoc:vtable_join Метод Выгрузить() при большой таблице может привести к ошибке "Не хватает памяти", т.к. таблица значений создается в оперативной памяти. Обход выборки в этом плане оптимальнее) Но для маленьких таблиц Выгрузить() тоже можно использовать)
@RuslanKhamidoullin
@RuslanKhamidoullin 4 ай бұрын
Спасибо, друг! Очень наглядно.
@user-ig7db3xc1h
@user-ig7db3xc1h 4 ай бұрын
Как обычно, всё до делу! Ребята, у Ивана должна быть личная жизнь и время на заработок!
@user-fy3tr8if5p
@user-fy3tr8if5p 3 ай бұрын
Наглядно, познавательно. Спасибо :)
@Ivanov_Ivan_11111
@Ivanov_Ivan_11111 4 ай бұрын
Спасибо большое, Иван! Классный ролик, отличная подача - 👍! Непонятно, то ли футболка такая, то ли качаццо начал?)))
@user-px7mv3dg4h
@user-px7mv3dg4h 4 ай бұрын
Этот контент надо рекомендовать всем программистам, а не только 1с
@Tocamax
@Tocamax 4 ай бұрын
Большое спасибо! Про вредность запросов в цикле знал давно. Но вот, что обращение через точку это тоже запрос, а точнее еще несколько запросов - не знал. Буду перелопачивать отчетики с целью оптимизации!
@schooldemetre
@schooldemetre 4 ай бұрын
Приятно наблюдать то как растет аудитория и телеграмм группа, а мой путь начинался с Отчеты за 14 дней) Успехов, и больших свершений
@ironskills-1c
@ironskills-1c 4 ай бұрын
Спасибо огромное!)
@user-fd3us7xj3r
@user-fd3us7xj3r 4 ай бұрын
Круто! Хорошо было бы побольше делать такое видео
@igorb.4917
@igorb.4917 4 ай бұрын
Спасибо, полезно!
@vika5247
@vika5247 4 ай бұрын
Отлично! Хоть и все это знаю и это понятно, но все равно - Спасибо
@user-fr7pq5qg7u
@user-fr7pq5qg7u 4 ай бұрын
мне кажется информация, на уровне топ. и подача и полезность.
@sinystas
@sinystas 4 ай бұрын
Я конечно знал, что перебор в цикле это зло, но вот как делать временные таблицы в запросе знаю плохо, но теперь уже буду тренироваться. Огромное спасибо!
@gusoneshgames9172
@gusoneshgames9172 4 ай бұрын
Круто Наглядно!!! Класс
@SPORTSNEWS-er2gy
@SPORTSNEWS-er2gy 4 ай бұрын
Сделай пожалуйста полноценный курс по оптимизации кода и в целом 1с.
@TRIALEX3
@TRIALEX3 4 ай бұрын
ммм Запрос в цикле...мой любимый инструмент в старых конфигурациях)))Сейчас маленько поумнел - стараюсь так больше не делать) Спасибо за видео!
@user-xe9wz9ir9s
@user-xe9wz9ir9s 4 ай бұрын
Когда заказчик мудрит и на ходу меняет задачу, то я часто именно так намеренно делаю. Хрен с ней с производительностью, но с отладкой в разы меньше заморочек.
@saidkamolxonn
@saidkamolxonn 4 ай бұрын
Я знал, что нельзя писать запрос внутри цикла. Но для меня стало новостью, что получение реквизит через точку - тоже плохая идея. Спасибо за очень полезное видео!
@mika091
@mika091 4 ай бұрын
Хорошее видео, хотелось бы еще таких видео, по типичным ошибкам новичков (и не только). Но есть один нюанс, заходишь в типовую конфигурацию и видишь там запрос в цикле)
@MrTorfable
@MrTorfable 4 ай бұрын
Да ну, вроде в типовых там чистейший код. А что за конфигурация можно узнать?
@mika091
@mika091 4 ай бұрын
@@MrTorfable Точно видел в рознице, правда старой 2.2 и еще, вроде, в УНФ
@Dima-ko6ub
@Dima-ko6ub Ай бұрын
близко нет​@@MrTorfable
@MrTorfable
@MrTorfable Ай бұрын
@@Dima-ko6ub да, тоже нашёл несколько странных строчек кода в типовой конфигурации
@Dima-ko6ub
@Dima-ko6ub Ай бұрын
@@MrTorfable с опытом найдешь еще больше))
@IvanRSH
@IvanRSH 4 ай бұрын
Спасибо, правда давно это знал, но для новичков самое то. Можно было еще добавить что через БСП можно получить значение реквизита через ОбщегоНазначения.ЗначениеРеквизитаОбъекта, а так все супер как всегда 👍🏻👍🏻👍🏻
@user-in2jn2tu6c
@user-in2jn2tu6c 4 ай бұрын
Да, тоже ожидал что в ролике про это уточнят, но тут в целом это и не требуется, да и использование функции в таком случае все равно будет равносильно запросу в цикле. Тогда уже лучше использовать ЗначениеРеквизитаОбъектов, где в качестве параметра передадим массив ссылок, тогда запрос выполнится единожды.
@andreysmirnov6345
@andreysmirnov6345 4 ай бұрын
@@user-in2jn2tu6c ЗначениеРеквизитаОбъектов получит Соответствие в котором в цикле придется делать поиск. Соответствие, конечно, индексировано, но я бы все равно так не писал в данном кейсе. Ну а то, что ЗначениеРеквизитаОбъекта использовать в цикле нельзя - однозначно.
@slitov11
@slitov11 4 ай бұрын
Спасибо за лайфхаки, как сделать нечто плохое, если тебя увольняют ))) надеюсь не пригодится! Даже в голову не приходило такое страшное писать за 10 лет
@zabaluev
@zabaluev 4 ай бұрын
Вот точно так были написаны подключаемые обработки для обмена с планшетами у популярного продукта мобильной торговли Агент+. Обмены с Эвотором написаны аналогично.
@iBotMan
@iBotMan 4 ай бұрын
Хороший видосик. посмотреть чутка что под капотом.
@jeepwork
@jeepwork 4 ай бұрын
Спасибо
@user-fn3sd6gl5n
@user-fn3sd6gl5n 2 ай бұрын
Наглядненько.
@anatoliykalinin6855
@anatoliykalinin6855 4 ай бұрын
2 вывода. Докладчик - умница, а 1с - козлы. При обращении через точку к реквизиту хватило бы одного запроса к SQL. То есть сами 1с заложили бомбу замедленного действия.
@KirPlastelinin
@KirPlastelinin 3 ай бұрын
И в чем же 1с козлы?)
@DimaVort
@DimaVort 4 ай бұрын
Отлично и наглядно, спаибо. А есть видео по настройке трассировки в профайлере?
@user-yx3ni8qy2i
@user-yx3ni8qy2i 4 ай бұрын
Наверное большая часть ваших подписчиков это знает, так как это прям база. Лайк конечно поставил, но хотелось бы темы по зрелищней о том как не стоит писать.
@ironskills-1c
@ironskills-1c 4 ай бұрын
Будем записывать ещё на эту тему))
@andreyshapat
@andreyshapat 4 ай бұрын
Спасибо, было полезно. Есть ли у postgreSQL аналог профилера sql server? Какие посоветуете? У нас база на постриге в системе линукс
@user-bb9tp6tm7o
@user-bb9tp6tm7o 4 ай бұрын
Делал делаю и буду делать))
@3dportableinc64
@3dportableinc64 4 ай бұрын
Пишите по старому, чтобы бухгалтер смогла сходить и попить чаю!! Иначе она будет все время работать и кое-кого ненавидеть.
@ironskills-1c
@ironskills-1c 4 ай бұрын
Да, с бухгалтерами надо дружить :)
@lexrz3254
@lexrz3254 4 ай бұрын
Я морально пострадал от запроса в цикле
@ironskills-1c
@ironskills-1c 4 ай бұрын
ИМХО, если команда разработки небольшая, то в конфигураторе работать удобнее)
@user-ny5pp9oh1c
@user-ny5pp9oh1c 4 ай бұрын
У нас бухгалтерша была Надя. Я говорю ей: код написан неоптимально, надо переписать, а то он будет делаться долго. На что она мне отвечает: "Главное не руками делать отчет" 😆
@ironskills-1c
@ironskills-1c 4 ай бұрын
😀
@YuriyKolosov
@YuriyKolosov 4 ай бұрын
А бывает и так: оптимизируешь какой-то код так, что он начинает выполняться не 30 секунд, а 1 секунду, а от пользователя получаешь: "а почему оно теперь ничего не делает?".
@user-ow9sf4ee9y
@user-ow9sf4ee9y 4 ай бұрын
Блин, "ну, это же двоечка для девочек". Практически самые основы.
@ORLANGUR3k
@ORLANGUR3k 4 ай бұрын
отличное наглядное пояснение, можно сразу кидать ссылку непонимающим. Но это фигня. Я уже столкнулся с вложенными подзапросами, обращающимися ТЧ документа за все время учета, временныем таблицами с запросом обращения к регистру, у которого в условии мало того что куча вложенных Выбор-Когда-Тогда, так еще и это: Когда Не Таблица.Серия ЕСТЬ NULL Тогда НЕ Таблица.Серия В (Выбрать ...), где вложенный запрос - это этот же из временной таблицы, только с доп условием Когда-Тогда в секции где... И все это в одной обработке, где таких пакетов запросов 4 и различаются они лишь незначительно условиями. а еще есть в ней 2 одинаковых пакета запросов, которые отличаются 2мя доп реквизитами и по факту объединяют первые 4 пакета запросов. И каждый пакет формируется по всей базе заново, тк человек наверно не знает МВТ. Если что, по времени обработка отрабатывает на сервере минуты 3-5. На ПК в файловой копии минут 50. А после недавнего обновления, оптимизация всего этого садо-мазо при трансляции в скуль стала хуже и некоторые вложенные запросы начали выполняться так как и должны: в цикле, из за чего обработка работает на клиент-серверной базе 1.5 часа. Поэтому мне уже как-то безразлично разыменование через точку. И вообще, я не знаю особо конфигурацию и сгорел в попытках разобрать все это дерьмо и поисках ответов на вопросы зачем и нахрена. Но я по прежнему не готов последовать совету "не трож, оно работает" коллег прекрасно зная что "оно меня сожрет". Сорян за крик души, я новичок в 1с, но не думал, что есть люди настолько новичковее меня.
@ironskills-1c
@ironskills-1c 4 ай бұрын
Спасибо что поделились опытом) Да, в чужом коде часто можно встретить "интересные" решения))
@user-bm8qb7sn7r
@user-bm8qb7sn7r 4 ай бұрын
Иван, моё почтение! А о внешних компонентах когда замолвите слово? 😊
@ironskills-1c
@ironskills-1c 4 ай бұрын
Немного позже, но сделаем)
@denissazanov615
@denissazanov615 4 ай бұрын
Всегда так писал все в запросе делал.
@alexsallivan5302
@alexsallivan5302 4 ай бұрын
А зачем нужно было в цикле добавлять по одной строке, если можно было результат запроса выгрузить и загрузить в табличную часть. Это дало бы еще больший прирост скорости
@TresModiosVir
@TresModiosVir 4 ай бұрын
не дало бы
@figa5107
@figa5107 2 ай бұрын
Наконец-то кто-то понятно объясняет стажёрам как нужно писать код в 1с. 15 лет в 1с. Лет 7 назад занимался код ревью на должности начальника отдела. На небольших базах гавнокод не заметен, а если у вас реально большая высоко нагруженная база, это всё жизненно необходимо. Так как сервер просто колом встаёт от такого когда, если он в том месте которое выполняется по 10 раз в секунду разными пользователями. Тогда время всех запросоа начинает увеличиваться и то что работало за 2с начинает работать за 10с плюс блокировки, и в какой-то момент достигается критическая масса гавнокода и бам! Всё встало. Поэтому код ревью нужен.
@ironskills-1c
@ironskills-1c Ай бұрын
Спасибо большое за комментарий!) Да, подобные ошибки в коде на маленьких базах особо и незаметны, а вот на больших базах могут привести к большим проблемам)
@mikasfree6371
@mikasfree6371 4 ай бұрын
Есть еще много много боли от кода настоящих талантливых программистов. Запросы в цикле - это так. Классика жанра. Например есть замечательные кодеры, которые вводят других в заблуждение не так называя переменные или реквизиты. Условные операторы лесенкой. Лепят все в одной процедуре, когда ее надо дробить и прочее и прочее и прочее... Можно целый выпуск сънять о том, как не надо кодить.
@ironskills-1c
@ironskills-1c 4 ай бұрын
Да, отличная идея) Спасибо большое за комментарий)
@ivanvetrov9835
@ivanvetrov9835 4 ай бұрын
Спасибо за ролик, некоторые полезные вещи подчерпнул. Только один вопрос. Зачем создавать вторую временную таблицу для выборки регистра? Почему нельзя сразу соединить Справочник.Товары с регистром остатков в одном запросе?
@tvk1969
@tvk1969 4 ай бұрын
Чтобы проиндексировать поле Номенклатура. Тогда итоговый запрос будет выполняться в разы быстрее. Хотя можно поставить ее с левой стороны, а справа первую проиндексированную таблицу. Но это надо проверять. И желательно на больших объемах.
@user-wp6cw6iy7q
@user-wp6cw6iy7q 4 ай бұрын
Потому что если виртуальная таблица собирает данные из нескольких физических таблиц, то на уровне SQL это реализуется как подзапрос к этим таблицам и в нашем запросе получается соединение с подзапросом, которое очень сильно зависит от разных условий(актуальности статистики, типа СУБД и т.д.) и может работать нестабильно, поэтому лучше выбрать данные регистра во временную таблицу и проиндексировать её.
@inspirationeveryday775
@inspirationeveryday775 4 ай бұрын
Тогда еще такое: почерпнул без Д
@mendicator4319
@mendicator4319 2 ай бұрын
Быстрее будет не пакетным запросом, а просто левым срединением к виртуальной таблице. Таблица ьез параметра, значит просто приклеит таблицу итогов, без всяких заморочек
@pillowanalyst
@pillowanalyst 4 ай бұрын
👍
@Evgeniy_Masharov
@Evgeniy_Masharov 4 ай бұрын
Давно так пишу, не используя обращение через точку так как известна эта проблема, кстати 1с все это читает для кэширования и повторное обращение уже идет в кеш. Есть ли у вас возможность рассмотреть кеш таблицы 1с? Кажется в БСП что-то имеется на эту тему, тоесть вычисление нужной строки в "Таблице значений" по какой то кеш функции, было бы познавательно
@ironskills-1c
@ironskills-1c 4 ай бұрын
Спасибо за идею для новых роликов)
@meduska-tyan
@meduska-tyan 4 ай бұрын
Сразу возникает следующие выпросы: 1) Если мы выполняет следующий код: Номенклатура = Справочники.Номенклатура.НайтиПоКоду(Код); Массив.Добавить(Номенклатура.Артикул); Массив.Добавить(Номенклатура.Наименование); Тогда при обращении к каждому полю (Артикул и Наименование) будет выполняться по 3 запроса? 2) Чем хороши конструкции: НайтиПоКоду(), НайтиПоНаименованию(), НайтиПоНомеру() и т.д. -- они довольно лаконичны. Но получается, используя их, нам не стоит обращаться к полям полученной ссылки. Т.е. если в дальнейшем у нас появляется необходимость обращаться к полям полученной ссылки, лучше вместо данной конструкции сразу писать полноценный запрос, что увеличивает количество строк кода и снижает его читаемость. Есть возможность это как-то обойти не сильно увеличивая количество строк кода?
@sergeyn2956
@sergeyn2956 4 ай бұрын
Если используется БСП, то "ОбщегоНазначения.ЗначениеРеквизитаОбъекта" - опять же в случае если не используется цикл, иначе лучше запросом дергать по списку
@helmetson652
@helmetson652 4 ай бұрын
Посмотрите ролик на этом же канале про БСП, там упоминались процедуры "ПолучитьЗначениеРеквизита" и "ПолучитьЗначенияРеквизитов". Нужные вам реквизиты вы заранее получаете в структуру, к которой потом обращаетесь - вместо того, чтобы делать при каждом обращении все новые и новые запросы к базе данных
@meduska-tyan
@meduska-tyan 4 ай бұрын
@@helmetson652 , спасибо, посмотрел эти функции. В них создаётся запрос исходя из метаданных ссылки и выполняется запрос с получением всех реквизитов.
@meduska-tyan
@meduska-tyan 4 ай бұрын
@@sergeyn2956 , спасибо!
@PTolkachev
@PTolkachev 4 ай бұрын
1) нет. Для этого все реквизиты и выбираются, чтобы не делать несколько запросов. Условно говоря, объект полностью загружается из БД при первом обращении через точку. И обращение к другим реквизитам уже не приводит к новым запросам.
@Vladnet
@Vladnet 4 ай бұрын
Ну то что не надо запросов в цикле делать это очевидно. Плюс скажу что в итоге я бы не использовал временные таблицы потому что они тут излишни, можно просто добавить отбор в параметры таблицы регистра.
@ironskills-1c
@ironskills-1c 4 ай бұрын
Соединение с подзапросами и виртуальными таблицами - одна из причин неоптимальной работы запросов: its.1c.ru/db/metod8dev#content:5842:hdoc:vtable_join
@user-gj6sy4wi6k
@user-gj6sy4wi6k 23 күн бұрын
Не совсем понятно про "не использовать временные таблицы". Тут без них не обойтись. Если хотите соединить выборку из справочника сразу с виртуальными таблицами, то это "неуд" по знанию работы запросов. Если Вы имеете в виду, что надо было условие на номенклатуру поставить в параметры виртуальной таблицы то сразу два "неуд", тк см пункт первый плюс, по условию, номенклатура должна присутствовать вся из выбранной категории плюс её остатки, а итогом бы стала только та, у которой есть остатки
@user-gf4ko5pt8q
@user-gf4ko5pt8q 2 ай бұрын
Иду в школу IRONSKILLS
@user-jt5rx1dv9j
@user-jt5rx1dv9j 4 ай бұрын
спасибо, это на самом деле очень важно учитывать для нормального программиста
@user-hd2hn3pe5j
@user-hd2hn3pe5j 4 ай бұрын
четко и понятно. спасибо!
@user-xe9wz9ir9s
@user-xe9wz9ir9s 4 ай бұрын
Добрый день. Вопрос по теме. Давно использую схему получения данных запросом через временные таблицы (как у вас в ролике), но обращаю внимание что во многих разработках и типовых конфах для решения аналогичных задач используются вложенные запросы. Как по мне, вложенные запросы это неудобная для работы и отладки технология. До сих пор не понял имеет ли это смысл и эффект, либо можно не париться и делать всё через временные таблицы?
@user-xe1xk1ex2f
@user-xe1xk1ex2f 4 ай бұрын
Насколько я помню, MS SQL вложенные запросы обрабатывает быстрее, чем виртуальные таблицы
@TRIALEX3
@TRIALEX3 4 ай бұрын
Вроде как наоборот-временный приветствуются больше. А вложенные используются сейчас в специфических случаях, вроде условий в виртуальных таблицах, как это можно увидеть в видео. Автор канала с свое время на курсе об этом рассказывал подробно помню.
@andreyv3432
@andreyv3432 4 ай бұрын
Спасибо, хотя и не узнал нового, вопрос, в данном примере если заменить предварительную выборку элементов с помещением в ВТ на единый запрос с соединением первой таблицы , как изменилась бы скорость? Свой ответ знаю, интересен ответ других людей и Автора
@ironskills-1c
@ironskills-1c 4 ай бұрын
Соединение с подзапросами, а также с виртуальными таблицами - одна из причин неоптимальной работы запросов: its.1c.ru/db/metod8dev#content:5842:hdoc:vtable_join
@Yngvarr
@Yngvarr 3 ай бұрын
​@@ironskills-1cсоздание виртуальной таблицы - дорогая операция. Классически задача решается через левое соединение. Все преимущество вирт.таблиц при указании фильтра превратится в тыкву при размере, скажем, 100к записей, а при 100к*100к будет совсем грустно, в то время как левому соединению будет это безразлично.
@mendicator4319
@mendicator4319 2 ай бұрын
В некоторых случая без запросов в цикле никак...пример, отправка данных на сайт интернет магазина. Если делать гиганскую выборку "всего отправляемого" происходит вылет по оперативной памяти. Поэтому инфа сначала дробится на части, а потом запросами в цикле получается и отправляется
@ironskills-1c
@ironskills-1c Ай бұрын
Спасибо за комментарий) Да, действительно, есть задачи, где запрос в цикле используется, главное, чтобы это был осознанный выбор разработчика)
@user-gj6sy4wi6k
@user-gj6sy4wi6k 23 күн бұрын
1С не ставить табу на запросы в цикле. Если задача требует такого подхода, то минимальным обязательным требованием является создание запроса за рамками цикла.
@shogun7sk
@shogun7sk 4 ай бұрын
Эммм только начал изучать, и у меня возник вопрос зачем цикл для заполнения табличной части, разве нет способа заполнить скажем так ТаблицаюЗаполнить(ВыборкаТовары), ну это как пример, думаю что долждны быть какието еще параметры. скажем сотриторва в табличной части по наименованию.
@Dsident
@Dsident 4 ай бұрын
А вот у меня вопрос - как изменится время выполнения, если не помещать остатки из регистра в вт, а сразу во втором пакете соединять вт_товары с выборкой из регистра?
@valexweb
@valexweb 4 ай бұрын
Зачем вообще столько временных таблиц? Никто из тех кто это показывает, не говорит, что они пишутся на диск, еще и индексы под них создаются. А это тоже время. В данном случае вполне хватило бы одной ВТ.
@user-ur4ik5dj7x
@user-ur4ik5dj7x 4 ай бұрын
Видимо потому что разница в 3мс с вашим вариантом при этом объеме данных уже не имеет значения.
@ArtemB91
@ArtemB91 Ай бұрын
Не пишутся они на диск. На диск сброс может быть только если памяти не хватает, но таким образом и при сортировке таблица может на диск сброситься
@alex0xFFFF
@alex0xFFFF 4 ай бұрын
Проблема обращения через точку - не проблема программиста, а только кривых рук разработчиков платформы... Если я явно указываю через точку нужный мне реквизит, за каким они достают все поля объекта? Почему бы не сделать как положено - вытаскивать только нужный параметр через точку... Чтобы все знали про БСП?.. Чтобы запутать врагов?... неясно...
@ironskills-1c
@ironskills-1c 4 ай бұрын
Тут идея скорее всего была такая: "давайте будем получать, на всякий пожарный, сразу все данные, потому что разработчик может написать так: Артикул = Номенклатура.Артикул; Код = Номенклатура.Код; и тогда сильно вырастет количество запросов к базе" :)
@Shamil_Kulakhmetov
@Shamil_Kulakhmetov 3 ай бұрын
@@ironskills-1c так это идея или это так и работает? Что говорит документация?))
@talgis4169
@talgis4169 4 ай бұрын
динозавры вымерли на версии 8.3 😂😂😂
@user-kb4ye5fw8p
@user-kb4ye5fw8p 4 ай бұрын
Запрос без временных таблиц будет еще оптимальнее
@user-mc9pt3dm6c
@user-mc9pt3dm6c 3 ай бұрын
Это всё отлично только вот продукты 1С это странность какая-то в плане скорости работы. Эти постоянные жалобы, да ей не понятно какое оборудования надо что-бы она как-то вменяемо работала. Эти динамические списки.... Как-то пришлось переделывать список номенклатуры на толстую форму потому-что невозможно работать.
@helmetson652
@helmetson652 4 ай бұрын
Напрашивалось использование "ЗаполнитьЗначенияСвойств" - при заполнении табчасти обработки
@user-ur4ik5dj7x
@user-ur4ik5dj7x 4 ай бұрын
В этом как раз и преимущество подачи материала от Ивана - Он не перегружает и не вываливает разом все свои знания на новичков. Про ЗаполнитьЗначенияСвойств у него на курсе есть отдельный блок.
@mebelsam2138
@mebelsam2138 4 ай бұрын
Возможно мой вопрос покажется нелепым, но я только учусь, а зачем при выборе остатков мы делаем подзапрос и выбираем только номенклатуру из первой таблицы, ведь при левом соединении и так в итоговую таблицу попадут остатки только по номенклатуре из первой таблицы?
@andreysmirnov6345
@andreysmirnov6345 4 ай бұрын
Чтобы не получать остатки по всей номенклатуре. Чем больше таблица остатков, тем дольше будет происходить ее соединение.
@user-jy8ux2ml2x
@user-jy8ux2ml2x 3 ай бұрын
В стандартах 1С не рекомендуется делать соединения с виртуальными таблицами. Сначала нужно поместить данные виртуальной таблицы во временную, а потом временную соединять.
@mebelsam2138
@mebelsam2138 3 ай бұрын
@@user-jy8ux2ml2x Понял, спасибо
@arshanskiysergey2791
@arshanskiysergey2791 4 ай бұрын
где научиться анализировать запросы с профайлером SQL ?
@user-bp1fm9vl7m
@user-bp1fm9vl7m 4 ай бұрын
Не на этом канале😂
@user-qd1ws7vy6z
@user-qd1ws7vy6z 4 ай бұрын
В данном конкретном случае убрал бы цикл к чертям. Таблица.Загрузить(Запрос.Выполнить().Выгрузить()). И это кстати и приучает всё и всегда получать сразу в одном запросе.
@ironskills-1c
@ironskills-1c 4 ай бұрын
Да, но при большом объеме данных метод Выгрузить() может привести к нехватке памяти, т.к. данные загружаются в оперативную память) Через выборку - более щадящий режим, хоть и кода больше писать надо)
@user-pf7rd3ws8q
@user-pf7rd3ws8q 4 ай бұрын
Запрос конечно хорош. но, я бы все условия в параметры виртуальной таблицы запихал, все поля заполнил бы в самом запросе и сделал: таблица.Загрузить(Запрос.Выполнить.Выгрузить()). Код намного короче и понятнее читается и работает быстрее.
@user-pw6df6wh1l
@user-pw6df6wh1l 4 ай бұрын
Брат, ждем от тебя подобного ролика с объяснениями, брат
@Sa000Nya
@Sa000Nya 4 ай бұрын
брат ты знаешь что за выгрузить() расстреливают на месте без суда?
@YuriyKolosov
@YuriyKolosov 4 ай бұрын
@@Sa000Nya а почему выгрузить() хуже, чем выбрать()?
@azat2909
@azat2909 4 ай бұрын
Где можно скачать консоль кода ironskills ?
@ironskills-1c
@ironskills-1c 4 ай бұрын
Скоро выпустим ролик про инструменты программиста)
@SergeyShuchkin
@SergeyShuchkin 3 ай бұрын
я из мира MySQL/MariaDB, зачем временные таблицы? Почему нельзя объединить номенклатуру и остатки одним запросом?
@panalike
@panalike 4 ай бұрын
все таки и разрабам 1с платформы можно было заморочиться и более умно конвертировать запросы платформы к БД. Например, почему бы и не сделать так чтобы запросы в цикле собирались в промежуточный буфер, а потом этот единый запрос оптимизировался, и уже подавался к БД
@user-xe9wz9ir9s
@user-xe9wz9ir9s 4 ай бұрын
То, что при обращении через точку, из базы вытаскивается тонна лишней ботвы, то это однозначно косяк платформы.
@helmetson652
@helmetson652 4 ай бұрын
@@user-xe9wz9ir9s это косяк недоученных разрабов, а не платформы
@TRIALEX3
@TRIALEX3 4 ай бұрын
@@helmetson652 Почему? Разраб однозначно говорит - дай мне код по ссылке. 1С говорит скулю - дай мне ВСЕ по ссылке, хотя мог бы получить ТОЛЬКО код. Где логика?
@rafikov_aleksandr
@rafikov_aleksandr 4 ай бұрын
@@TRIALEX3По-моему, 1С делает запрос ко всем данным ссылки, кэширует их, и если в следующей строке программист захочет еще и наименование, то 1С уже отдает его из кэша. Кэш какое-то время хранится.
@TRIALEX3
@TRIALEX3 4 ай бұрын
@@rafikov_aleksandr именно так и происходит. Я просто указал на то, что получать и кешировать только запрашиваемые данные это логично и этого ожидаешь от программы. И поэтому когда говорят что виноваты прогеры что 1с вместо получения только 1 реквизита, который прогер и запрашивает, получает ВСЕ - это для меня странно.
@SergeySemendyaev
@SergeySemendyaev 2 ай бұрын
Как Rjkbxtcndj превратилось в Количество в конструкторе?
@kimWimp
@kimWimp 4 ай бұрын
Где ссылка на эту обработку - консольку?
@helmetson652
@helmetson652 4 ай бұрын
Вот бы вы еще показали, что временные таблицы надо уничтожать после использования...
@YuriyKolosov
@YuriyKolosov 4 ай бұрын
Не надо. Они сами уничтожаются, если не используется МВТ.
Варианты работы базой 1С:  файловый и клиент-серверный
27:05
Инструменты программиста 1С
15:23
IRONSKILLS - Курсы по 1С
Рет қаралды 25 М.
Угадайте концовку😂
00:11
Poopigirl
Рет қаралды 4 МЛН
Which one will take more 😉
00:27
Polar
Рет қаралды 25 МЛН
Суд над Бишимбаевым. 24 апреля | ОНЛАЙН
7:26:50
Асинхронные функции в 1С
16:42
IRONSKILLS - Курсы по 1С
Рет қаралды 22 М.
Как живётся программисту 1С в DNS?
9:35
DNS | Информационная служба
Рет қаралды 36 М.
1С:Предприятие.Элемент. Выпуск №2. Шаблонные приложения
10:36
Курсы 1С и экзамены (1С:Учебный центр №1)
Рет қаралды 2 М.
Стандарты разработки в 1С
15:56
IRONSKILLS - Курсы по 1С
Рет қаралды 22 М.
Как прочитать JSON в 1С
18:46
IRONSKILLS - Курсы по 1С
Рет қаралды 26 М.
Суть 1С программирования за 25 минут
26:44
Желтый клуб — 1С программирование
Рет қаралды 301 М.
Угадайте концовку😂
00:11
Poopigirl
Рет қаралды 4 МЛН