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

2023 ж. 10 Жел.
25 885 Рет қаралды

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

Пікірлер
  • как уже отмечал ранее, у ваших роликов есть огромный недостаток - они очень редко выходят. очень понятно, очень наглядно, очень познавательно.

    @alexandrshulgin82@alexandrshulgin825 ай бұрын
    • потому что это средство привлечение на курсы, а не курс. спасибо что хоть чем-то делится действенным

      @ser.sinyavin@ser.sinyavin5 ай бұрын
    • @@ser.sinyavin Причем то чем он делится, это не "действенное" а унылая рутина, про которую можно почитать в любой желтой книжке по разработке 1с

      @user-qh5kv3lq9t@user-qh5kv3lq9t5 ай бұрын
    • @@user-qh5kv3lq9t ну хзхз. Его набор шаблонов доп. обработок прям для меня палочка-выручалочка. Очень часто пользуюсь.

      @TRIALEX3@TRIALEX35 ай бұрын
    • ​@@TRIALEX3 где взять эти шаблоны?

      @Trixter-kh9tb@Trixter-kh9tb4 ай бұрын
    • @@Trixter-kh9tb в одном из видео на канале. Что то про доп обработки в названии.

      @TRIALEX3@TRIALEX34 ай бұрын
  • ISNULL Иван!! ISNULL ты открыл мне глаза, сколько же я страдал с этим естьnull

    @ggguuiis@ggguuiis5 ай бұрын
  • Доклад хорош. Четко, без слов-паразитов, всяких "э-э", "а-а.." и тому подобного. Изложение звучит так, будто неоднократно отрепетировано - все по полкам, слушается легко. Забрел сюда случайно, к программированию в 1С не имею отношения, но считаю нужным отметить высокое качество подачи материала. Досмотрел до конца. Практически ничего не понял, но было интересно . Успехов в вашем деле!

    @nikolakoval7294@nikolakoval72945 ай бұрын
    • Спасибо огромное за комментарий)

      @ironskills-1c@ironskills-1c4 ай бұрын
  • Блин, видео вообще огонь! Словно мед в уши, кода ревью по 1С в ютубе нет, пожалуйста, продолжайте делать дальше такие видосы)

    @MrTorfable@MrTorfable4 ай бұрын
    • Спасибо) Будем развивать эту тему)

      @ironskills-1c@ironskills-1c4 ай бұрын
  • Работаю программистом 1с около 5 лет. хоть и знал о таких моментах, но все же посмотреть было очень интересно и познавательно! Спасибо!

    @dmitrym4022@dmitrym40224 ай бұрын
    • Аналогично. Иногда пересматриваю старые видео этого канала, чтобы освежить память в каких-то нюансах или даже узнать какую-нибудь тонкость, но которую я не знал.

      @Shade45One45@Shade45One454 ай бұрын
    • Спасибо за комментарий)

      @ironskills-1c@ironskills-1c4 ай бұрын
  • Не, ну это база!) На любом собесе спрашивают про методы оптимизации запросов. Я бы посмотрел по оптимизации запросов отдельное видео) Может, узнаю чего нового)

    @Shade45One45@Shade45One455 ай бұрын
  • Спасибо! Знал, что обращение к реквизитам через точку - bad practices, но впервые получил превосходное и внятное объяснение, почему.

    @user-de2fl8cs7o@user-de2fl8cs7o4 ай бұрын
  • Спасибо большое, Иван!

    @user-mh7is7zr2w@user-mh7is7zr2w5 ай бұрын
  • Лучшая подача материала. Спасибо!

    @user-fy7ps1qy1f@user-fy7ps1qy1f5 ай бұрын
  • Отличное видео. 👍 Пожалуйста, можно рубрику "не пиши так" почаще?)

    @user-wv6vu7wn8d@user-wv6vu7wn8d5 ай бұрын
    • Поддерживаю! Классная рубрика будет, если введете на постоянной основе. Иван, спасибо!

      @Rarogg@Rarogg4 ай бұрын
    • Классная идея, спасибо, будем развивать эту тему)

      @ironskills-1c@ironskills-1c4 ай бұрын
    • @@ironskills-1c ещё просьба. Очень было интересно, когда Вы анализировали запрос со стороны sql. Было бы здорово, если бы Вы рассказали как настраивать трассировку и как её анализировать.

      @user-wv6vu7wn8d@user-wv6vu7wn8d4 ай бұрын
  • Нужно сделать ещё видео с такими же примера с индексацией.

    @WhoAmI-sx6fb@WhoAmI-sx6fb4 ай бұрын
  • Спасибо большон, очень годный выпуск, хочется еще!

    @user-pw6df6wh1l@user-pw6df6wh1l4 ай бұрын
  • Доступно и наглядно были показаны ошибки. А также сравнительная разница, выполнения обработки между двумя вариантами. Супер.

    @den2033@den20334 ай бұрын
  • Как всегда супер! Спасибо Иван!

    @user-vq6wu3sr6l@user-vq6wu3sr6l4 ай бұрын
  • Спасибо, весьма познавательно и наглядно.

    @cybermetalyogurt@cybermetalyogurt5 ай бұрын
  • Спасибо! Как всегда всё понятно и очень наглядно.

    @a34svob@a34svob4 ай бұрын
  • Спасибо! Продолжайте!

    @kalambur729@kalambur7294 ай бұрын
  • Ура!!! Новое видео, спасибо большое! :)

    @user-lr1ly7mk2y@user-lr1ly7mk2y5 ай бұрын
  • Сделай пожалуйста полноценный курс по оптимизации кода и в целом 1с.

    @SPORTSNEWS-er2gy@SPORTSNEWS-er2gy4 ай бұрын
  • Иван, привет! Спасибо тебе за твой труд! Я твой фанат.)

    @user-sg8cf3jd3k@user-sg8cf3jd3k5 ай бұрын
    • Спасибо)

      @ironskills-1c@ironskills-1c4 ай бұрын
  • Спасибо, Иван! Заставка 🔥

    @natalyagovorova390@natalyagovorova3905 ай бұрын
    • Спасибо)

      @ironskills-1c@ironskills-1c4 ай бұрын
  • Спасибо большое, Иван! Классный ролик, отличная подача - 👍! Непонятно, то ли футболка такая, то ли качаццо начал?)))

    @Ivanov_Ivan_11111@Ivanov_Ivan_111115 ай бұрын
  • 1. Зачем делать пакетный запрос? Можно же сразу объединить данные. 2. Почему не добавить артикул сразу в третьем запросе? Зачем его тянуть из первого? 3. Зачем обход результата в цикле? Нельзя сразу выгрузить результат запроса и загрузить его в таблицу без обхода?

    @dmitry7828@dmitry78284 ай бұрын
    • тоже не понятно. даже если первый делать пакетом, то во втором сразу можно левым соединением и артикул получить. хорошо, что я больше не занимаюсь 1С. Но смотря такие видосы - думаешь правильно ли всё делал. какие-то излишние движения, которые путают.

      @TheJabberwahh@TheJabberwahh4 ай бұрын
    • Видимо, если брать артикул в третьем соединении через точку от ссылки на справочник, то это будет лишним левым соединением; а в первом запросе данные и так из этого справочника тянутся. Но места в оперативке будет занято больше, это да...на хранение всех ВТ.

      @user-sd9oc4qh2c@user-sd9oc4qh2c4 ай бұрын
    • Спасибо за комментарий) По поводу пакетного запроса: соединения с подзапросами и виртуальными таблицами - одна из причин неоптимальной работы запросов: its.1c.ru/db/metod8dev#content:5842:hdoc:vtable_join Метод Выгрузить() при большой таблице может привести к ошибке "Не хватает памяти", т.к. таблица значений создается в оперативной памяти. Обход выборки в этом плане оптимальнее) Но для маленьких таблиц Выгрузить() тоже можно использовать)

      @ironskills-1c@ironskills-1c4 ай бұрын
  • Иван, как всегда супер подробно 👍.

    @user-kq9zl3ct7q@user-kq9zl3ct7q5 ай бұрын
  • Полезно! Побольше бы таких видео.

    @The-hi5uw@The-hi5uw3 ай бұрын
  • Спасибо ! как всегда - Шикарно !

    @user-xs1pn1je2p@user-xs1pn1je2p4 ай бұрын
  • Класс. Не знал про точку, что еще и к табличным частям запросы сформируются. Думал только один запрос сформируется на все реквизиты, а оно еще хуже оказывается :D

    @MotoCrankshaft@MotoCrankshaft5 ай бұрын
  • Классная подача материала, толково и легко смотрится.

    @gigabyte1c@gigabyte1c3 ай бұрын
  • Спасибо, наглядно и познавательно

    @KvartaE@KvartaE4 ай бұрын
  • Шикарно. Как раз делаю обработку точь в точь 😅 в принципе знал про табу на запросы в циклах, но теперь супер подробно все понял)) спс)

    @sanyaDjan@sanyaDjan5 ай бұрын
  • Как новичку в программировании, такие кейсы очень полезны. Спасибо!

    @user-rn2ml9lp7b@user-rn2ml9lp7b5 ай бұрын
  • Наглядно, познавательно. Спасибо :)

    @user-fy3tr8if5p@user-fy3tr8if5p4 ай бұрын
  • Спасибо. Знал, что так нельзя делать, но до конца не понимал почему.

    @user-os3ev4sm1r@user-os3ev4sm1r5 ай бұрын
  • Идеальное объяснение!!!🎉

    @maxglu7165@maxglu71655 ай бұрын
  • Вижу новый видос, автоматом ставлю лайк и перехожу к просмотру😅👍

    @1C-Developer@1C-Developer5 ай бұрын
  • Спасибо, полезно!

    @igorb.4917@igorb.49175 ай бұрын
  • Круто! Хорошо было бы побольше делать такое видео

    @user-fd3us7xj3r@user-fd3us7xj3r5 ай бұрын
  • 2 вывода. Докладчик - умница, а 1с - козлы. При обращении через точку к реквизиту хватило бы одного запроса к SQL. То есть сами 1с заложили бомбу замедленного действия.

    @anatoliykalinin6855@anatoliykalinin68554 ай бұрын
    • И в чем же 1с козлы?)

      @KirPlastelinin@KirPlastelinin4 ай бұрын
  • Спасибо, друг! Очень наглядно.

    @RuslanKhamidoullin@RuslanKhamidoullin4 ай бұрын
  • Как обычно, всё до делу! Ребята, у Ивана должна быть личная жизнь и время на заработок!

    @user-ig7db3xc1h@user-ig7db3xc1h5 ай бұрын
  • Приятно наблюдать то как растет аудитория и телеграмм группа, а мой путь начинался с Отчеты за 14 дней) Успехов, и больших свершений

    @schooldemetre@schooldemetre5 ай бұрын
    • Спасибо огромное!)

      @ironskills-1c@ironskills-1c4 ай бұрын
  • Большое спасибо! Про вредность запросов в цикле знал давно. Но вот, что обращение через точку это тоже запрос, а точнее еще несколько запросов - не знал. Буду перелопачивать отчетики с целью оптимизации!

    @Tocamax@Tocamax4 ай бұрын
  • Отлично! Хоть и все это знаю и это понятно, но все равно - Спасибо

    @vika5247@vika52474 ай бұрын
  • мне кажется информация, на уровне топ. и подача и полезность.

    @user-fr7pq5qg7u@user-fr7pq5qg7u4 ай бұрын
  • Я конечно знал, что перебор в цикле это зло, но вот как делать временные таблицы в запросе знаю плохо, но теперь уже буду тренироваться. Огромное спасибо!

    @sinystas@sinystas4 ай бұрын
  • Этот контент надо рекомендовать всем программистам, а не только 1с

    @user-px7mv3dg4h@user-px7mv3dg4h4 ай бұрын
  • Круто Наглядно!!! Класс

    @gusoneshgames9172@gusoneshgames91724 ай бұрын
  • Отлично и наглядно, спаибо. А есть видео по настройке трассировки в профайлере?

    @DimaVort@DimaVort4 ай бұрын
  • ммм Запрос в цикле...мой любимый инструмент в старых конфигурациях)))Сейчас маленько поумнел - стараюсь так больше не делать) Спасибо за видео!

    @TRIALEX3@TRIALEX35 ай бұрын
    • Когда заказчик мудрит и на ходу меняет задачу, то я часто именно так намеренно делаю. Хрен с ней с производительностью, но с отладкой в разы меньше заморочек.

      @user-xe9wz9ir9s@user-xe9wz9ir9s5 ай бұрын
  • Спасибо, правда давно это знал, но для новичков самое то. Можно было еще добавить что через БСП можно получить значение реквизита через ОбщегоНазначения.ЗначениеРеквизитаОбъекта, а так все супер как всегда 👍🏻👍🏻👍🏻

    @IvanRSH@IvanRSH5 ай бұрын
    • Да, тоже ожидал что в ролике про это уточнят, но тут в целом это и не требуется, да и использование функции в таком случае все равно будет равносильно запросу в цикле. Тогда уже лучше использовать ЗначениеРеквизитаОбъектов, где в качестве параметра передадим массив ссылок, тогда запрос выполнится единожды.

      @user-in2jn2tu6c@user-in2jn2tu6c5 ай бұрын
    • @@user-in2jn2tu6c ЗначениеРеквизитаОбъектов получит Соответствие в котором в цикле придется делать поиск. Соответствие, конечно, индексировано, но я бы все равно так не писал в данном кейсе. Ну а то, что ЗначениеРеквизитаОбъекта использовать в цикле нельзя - однозначно.

      @andreysmirnov6345@andreysmirnov63454 ай бұрын
  • Вот точно так были написаны подключаемые обработки для обмена с планшетами у популярного продукта мобильной торговли Агент+. Обмены с Эвотором написаны аналогично.

    @zabaluev@zabaluev5 ай бұрын
  • Спасибо

    @jeepwork@jeepwork4 ай бұрын
  • Спасибо за лайфхаки, как сделать нечто плохое, если тебя увольняют ))) надеюсь не пригодится! Даже в голову не приходило такое страшное писать за 10 лет

    @slitov11@slitov115 ай бұрын
  • Хорошее видео, хотелось бы еще таких видео, по типичным ошибкам новичков (и не только). Но есть один нюанс, заходишь в типовую конфигурацию и видишь там запрос в цикле)

    @mika091@mika0914 ай бұрын
    • Да ну, вроде в типовых там чистейший код. А что за конфигурация можно узнать?

      @MrTorfable@MrTorfable4 ай бұрын
    • @@MrTorfable Точно видел в рознице, правда старой 2.2 и еще, вроде, в УНФ

      @mika091@mika0914 ай бұрын
    • близко нет​@@MrTorfable

      @Dima-ko6ub@Dima-ko6ubАй бұрын
    • @@Dima-ko6ub да, тоже нашёл несколько странных строчек кода в типовой конфигурации

      @MrTorfable@MrTorfableАй бұрын
    • @@MrTorfable с опытом найдешь еще больше))

      @Dima-ko6ub@Dima-ko6ubАй бұрын
  • Я морально пострадал от запроса в цикле

    @lexrz3254@lexrz32544 ай бұрын
    • ИМХО, если команда разработки небольшая, то в конфигураторе работать удобнее)

      @ironskills-1c@ironskills-1c4 ай бұрын
  • Я знал, что нельзя писать запрос внутри цикла. Но для меня стало новостью, что получение реквизит через точку - тоже плохая идея. Спасибо за очень полезное видео!

    @saidkamolxonn@saidkamolxonn4 ай бұрын
  • Иван, моё почтение! А о внешних компонентах когда замолвите слово? 😊

    @user-bm8qb7sn7r@user-bm8qb7sn7r5 ай бұрын
    • Немного позже, но сделаем)

      @ironskills-1c@ironskills-1c4 ай бұрын
  • Хороший видосик. посмотреть чутка что под капотом.

    @iBotMan@iBotMan4 ай бұрын
  • Спасибо, было полезно. Есть ли у postgreSQL аналог профилера sql server? Какие посоветуете? У нас база на постриге в системе линукс

    @andreyshapat@andreyshapat5 ай бұрын
  • Делал делаю и буду делать))

    @user-bb9tp6tm7o@user-bb9tp6tm7o5 ай бұрын
  • У нас бухгалтерша была Надя. Я говорю ей: код написан неоптимально, надо переписать, а то он будет делаться долго. На что она мне отвечает: "Главное не руками делать отчет" 😆

    @user-ny5pp9oh1c@user-ny5pp9oh1c4 ай бұрын
    • 😀

      @ironskills-1c@ironskills-1c4 ай бұрын
    • А бывает и так: оптимизируешь какой-то код так, что он начинает выполняться не 30 секунд, а 1 секунду, а от пользователя получаешь: "а почему оно теперь ничего не делает?".

      @YuriyKolosov@YuriyKolosov4 ай бұрын
  • А зачем нужно было в цикле добавлять по одной строке, если можно было результат запроса выгрузить и загрузить в табличную часть. Это дало бы еще больший прирост скорости

    @alexsallivan5302@alexsallivan53024 ай бұрын
    • не дало бы

      @TresModiosVir@TresModiosVir4 ай бұрын
  • Наглядненько.

    @user-fn3sd6gl5n@user-fn3sd6gl5n2 ай бұрын
  • Блин, "ну, это же двоечка для девочек". Практически самые основы.

    @user-ow9sf4ee9y@user-ow9sf4ee9y5 ай бұрын
  • Наверное большая часть ваших подписчиков это знает, так как это прям база. Лайк конечно поставил, но хотелось бы темы по зрелищней о том как не стоит писать.

    @user-yx3ni8qy2i@user-yx3ni8qy2i4 ай бұрын
    • Будем записывать ещё на эту тему))

      @ironskills-1c@ironskills-1c4 ай бұрын
  • Наконец-то кто-то понятно объясняет стажёрам как нужно писать код в 1с. 15 лет в 1с. Лет 7 назад занимался код ревью на должности начальника отдела. На небольших базах гавнокод не заметен, а если у вас реально большая высоко нагруженная база, это всё жизненно необходимо. Так как сервер просто колом встаёт от такого когда, если он в том месте которое выполняется по 10 раз в секунду разными пользователями. Тогда время всех запросоа начинает увеличиваться и то что работало за 2с начинает работать за 10с плюс блокировки, и в какой-то момент достигается критическая масса гавнокода и бам! Всё встало. Поэтому код ревью нужен.

    @figa5107@figa51072 ай бұрын
    • Спасибо большое за комментарий!) Да, подобные ошибки в коде на маленьких базах особо и незаметны, а вот на больших базах могут привести к большим проблемам)

      @ironskills-1c@ironskills-1cАй бұрын
  • Зачем вообще столько временных таблиц? Никто из тех кто это показывает, не говорит, что они пишутся на диск, еще и индексы под них создаются. А это тоже время. В данном случае вполне хватило бы одной ВТ.

    @valexweb@valexweb5 ай бұрын
    • Видимо потому что разница в 3мс с вашим вариантом при этом объеме данных уже не имеет значения.

      @user-ur4ik5dj7x@user-ur4ik5dj7x5 ай бұрын
    • Не пишутся они на диск. На диск сброс может быть только если памяти не хватает, но таким образом и при сортировке таблица может на диск сброситься

      @ArtemB91@ArtemB91Ай бұрын
  • Сразу возникает следующие выпросы: 1) Если мы выполняет следующий код: Номенклатура = Справочники.Номенклатура.НайтиПоКоду(Код); Массив.Добавить(Номенклатура.Артикул); Массив.Добавить(Номенклатура.Наименование); Тогда при обращении к каждому полю (Артикул и Наименование) будет выполняться по 3 запроса? 2) Чем хороши конструкции: НайтиПоКоду(), НайтиПоНаименованию(), НайтиПоНомеру() и т.д. -- они довольно лаконичны. Но получается, используя их, нам не стоит обращаться к полям полученной ссылки. Т.е. если в дальнейшем у нас появляется необходимость обращаться к полям полученной ссылки, лучше вместо данной конструкции сразу писать полноценный запрос, что увеличивает количество строк кода и снижает его читаемость. Есть возможность это как-то обойти не сильно увеличивая количество строк кода?

    @meduska-tyan@meduska-tyan5 ай бұрын
    • Если используется БСП, то "ОбщегоНазначения.ЗначениеРеквизитаОбъекта" - опять же в случае если не используется цикл, иначе лучше запросом дергать по списку

      @sergeyn2956@sergeyn29565 ай бұрын
    • Посмотрите ролик на этом же канале про БСП, там упоминались процедуры "ПолучитьЗначениеРеквизита" и "ПолучитьЗначенияРеквизитов". Нужные вам реквизиты вы заранее получаете в структуру, к которой потом обращаетесь - вместо того, чтобы делать при каждом обращении все новые и новые запросы к базе данных

      @helmetson652@helmetson6525 ай бұрын
    • @@helmetson652 , спасибо, посмотрел эти функции. В них создаётся запрос исходя из метаданных ссылки и выполняется запрос с получением всех реквизитов.

      @meduska-tyan@meduska-tyan5 ай бұрын
    • @@sergeyn2956 , спасибо!

      @meduska-tyan@meduska-tyan5 ай бұрын
    • 1) нет. Для этого все реквизиты и выбираются, чтобы не делать несколько запросов. Условно говоря, объект полностью загружается из БД при первом обращении через точку. И обращение к другим реквизитам уже не приводит к новым запросам.

      @PTolkachev@PTolkachev5 ай бұрын
  • 👍

    @pillowanalyst@pillowanalyst5 ай бұрын
  • отличное наглядное пояснение, можно сразу кидать ссылку непонимающим. Но это фигня. Я уже столкнулся с вложенными подзапросами, обращающимися ТЧ документа за все время учета, временныем таблицами с запросом обращения к регистру, у которого в условии мало того что куча вложенных Выбор-Когда-Тогда, так еще и это: Когда Не Таблица.Серия ЕСТЬ NULL Тогда НЕ Таблица.Серия В (Выбрать ...), где вложенный запрос - это этот же из временной таблицы, только с доп условием Когда-Тогда в секции где... И все это в одной обработке, где таких пакетов запросов 4 и различаются они лишь незначительно условиями. а еще есть в ней 2 одинаковых пакета запросов, которые отличаются 2мя доп реквизитами и по факту объединяют первые 4 пакета запросов. И каждый пакет формируется по всей базе заново, тк человек наверно не знает МВТ. Если что, по времени обработка отрабатывает на сервере минуты 3-5. На ПК в файловой копии минут 50. А после недавнего обновления, оптимизация всего этого садо-мазо при трансляции в скуль стала хуже и некоторые вложенные запросы начали выполняться так как и должны: в цикле, из за чего обработка работает на клиент-серверной базе 1.5 часа. Поэтому мне уже как-то безразлично разыменование через точку. И вообще, я не знаю особо конфигурацию и сгорел в попытках разобрать все это дерьмо и поисках ответов на вопросы зачем и нахрена. Но я по прежнему не готов последовать совету "не трож, оно работает" коллег прекрасно зная что "оно меня сожрет". Сорян за крик души, я новичок в 1с, но не думал, что есть люди настолько новичковее меня.

    @ORLANGUR3k@ORLANGUR3k5 ай бұрын
    • Спасибо что поделились опытом) Да, в чужом коде часто можно встретить "интересные" решения))

      @ironskills-1c@ironskills-1c4 ай бұрын
  • Всегда так писал все в запросе делал.

    @denissazanov615@denissazanov6154 ай бұрын
  • Быстрее будет не пакетным запросом, а просто левым срединением к виртуальной таблице. Таблица ьез параметра, значит просто приклеит таблицу итогов, без всяких заморочек

    @mendicator4319@mendicator43193 ай бұрын
  • Пишите по старому, чтобы бухгалтер смогла сходить и попить чаю!! Иначе она будет все время работать и кое-кого ненавидеть.

    @3dportableinc64@3dportableinc644 ай бұрын
    • Да, с бухгалтерами надо дружить :)

      @ironskills-1c@ironskills-1c4 ай бұрын
  • Есть еще много много боли от кода настоящих талантливых программистов. Запросы в цикле - это так. Классика жанра. Например есть замечательные кодеры, которые вводят других в заблуждение не так называя переменные или реквизиты. Условные операторы лесенкой. Лепят все в одной процедуре, когда ее надо дробить и прочее и прочее и прочее... Можно целый выпуск сънять о том, как не надо кодить.

    @mikasfree6371@mikasfree63714 ай бұрын
    • Да, отличная идея) Спасибо большое за комментарий)

      @ironskills-1c@ironskills-1c4 ай бұрын
  • В данном конкретном случае убрал бы цикл к чертям. Таблица.Загрузить(Запрос.Выполнить().Выгрузить()). И это кстати и приучает всё и всегда получать сразу в одном запросе.

    @user-qd1ws7vy6z@user-qd1ws7vy6z5 ай бұрын
    • Да, но при большом объеме данных метод Выгрузить() может привести к нехватке памяти, т.к. данные загружаются в оперативную память) Через выборку - более щадящий режим, хоть и кода больше писать надо)

      @ironskills-1c@ironskills-1c4 ай бұрын
  • В некоторых случая без запросов в цикле никак...пример, отправка данных на сайт интернет магазина. Если делать гиганскую выборку "всего отправляемого" происходит вылет по оперативной памяти. Поэтому инфа сначала дробится на части, а потом запросами в цикле получается и отправляется

    @mendicator4319@mendicator43193 ай бұрын
    • Спасибо за комментарий) Да, действительно, есть задачи, где запрос в цикле используется, главное, чтобы это был осознанный выбор разработчика)

      @ironskills-1c@ironskills-1cАй бұрын
    • 1С не ставить табу на запросы в цикле. Если задача требует такого подхода, то минимальным обязательным требованием является создание запроса за рамками цикла.

      @user-gj6sy4wi6k@user-gj6sy4wi6kАй бұрын
  • Давно так пишу, не используя обращение через точку так как известна эта проблема, кстати 1с все это читает для кэширования и повторное обращение уже идет в кеш. Есть ли у вас возможность рассмотреть кеш таблицы 1с? Кажется в БСП что-то имеется на эту тему, тоесть вычисление нужной строки в "Таблице значений" по какой то кеш функции, было бы познавательно

    @Evgeniy_Masharov@Evgeniy_Masharov5 ай бұрын
    • Спасибо за идею для новых роликов)

      @ironskills-1c@ironskills-1c4 ай бұрын
  • Спасибо за ролик, некоторые полезные вещи подчерпнул. Только один вопрос. Зачем создавать вторую временную таблицу для выборки регистра? Почему нельзя сразу соединить Справочник.Товары с регистром остатков в одном запросе?

    @ivanvetrov9835@ivanvetrov98355 ай бұрын
    • Чтобы проиндексировать поле Номенклатура. Тогда итоговый запрос будет выполняться в разы быстрее. Хотя можно поставить ее с левой стороны, а справа первую проиндексированную таблицу. Но это надо проверять. И желательно на больших объемах.

      @tvk1969@tvk19695 ай бұрын
    • Потому что если виртуальная таблица собирает данные из нескольких физических таблиц, то на уровне SQL это реализуется как подзапрос к этим таблицам и в нашем запросе получается соединение с подзапросом, которое очень сильно зависит от разных условий(актуальности статистики, типа СУБД и т.д.) и может работать нестабильно, поэтому лучше выбрать данные регистра во временную таблицу и проиндексировать её.

      @user-wp6cw6iy7q@user-wp6cw6iy7q5 ай бұрын
    • Тогда еще такое: почерпнул без Д

      @inspirationeveryday775@inspirationeveryday7754 ай бұрын
  • Ну то что не надо запросов в цикле делать это очевидно. Плюс скажу что в итоге я бы не использовал временные таблицы потому что они тут излишни, можно просто добавить отбор в параметры таблицы регистра.

    @Vladnet@Vladnet4 ай бұрын
    • Соединение с подзапросами и виртуальными таблицами - одна из причин неоптимальной работы запросов: its.1c.ru/db/metod8dev#content:5842:hdoc:vtable_join

      @ironskills-1c@ironskills-1c4 ай бұрын
    • Не совсем понятно про "не использовать временные таблицы". Тут без них не обойтись. Если хотите соединить выборку из справочника сразу с виртуальными таблицами, то это "неуд" по знанию работы запросов. Если Вы имеете в виду, что надо было условие на номенклатуру поставить в параметры виртуальной таблицы то сразу два "неуд", тк см пункт первый плюс, по условию, номенклатура должна присутствовать вся из выбранной категории плюс её остатки, а итогом бы стала только та, у которой есть остатки

      @user-gj6sy4wi6k@user-gj6sy4wi6kАй бұрын
  • четко и понятно. спасибо!

    @user-hd2hn3pe5j@user-hd2hn3pe5j4 ай бұрын
  • Напрашивалось использование "ЗаполнитьЗначенияСвойств" - при заполнении табчасти обработки

    @helmetson652@helmetson6525 ай бұрын
    • В этом как раз и преимущество подачи материала от Ивана - Он не перегружает и не вываливает разом все свои знания на новичков. Про ЗаполнитьЗначенияСвойств у него на курсе есть отдельный блок.

      @user-ur4ik5dj7x@user-ur4ik5dj7x5 ай бұрын
  • спасибо, это на самом деле очень важно учитывать для нормального программиста

    @user-jt5rx1dv9j@user-jt5rx1dv9j5 ай бұрын
  • Это всё отлично только вот продукты 1С это странность какая-то в плане скорости работы. Эти постоянные жалобы, да ей не понятно какое оборудования надо что-бы она как-то вменяемо работала. Эти динамические списки.... Как-то пришлось переделывать список номенклатуры на толстую форму потому-что невозможно работать.

    @user-mc9pt3dm6c@user-mc9pt3dm6c3 ай бұрын
  • Виртуальные таблицы не надо индексировать (если они уж не совсем гигантские). Если вы делаете индексирование на ВТ, она "сбрасывается на винт" на сервере. Без индекса ВТ "живет" в оперативке.

    @Duhmen66@Duhmen664 ай бұрын
    • виртуальные таблицы лучше индексировать. потому что на больших объемах - это просто необходимо, а на маленьких - этими затратами можно пренебречь

      @TresModiosVir@TresModiosVir4 ай бұрын
    • Большой объем ВТ это сколько??@@TresModiosVir

      @Duhmen66@Duhmen664 ай бұрын
    • Спасибо за комментарий) Да, с индексированием тут все действительно не однозначно. Даже при большой таблице индексирование может не дать ускорения) Есть стандарт #std777, где фирма 1С не рекомендует индексировать маленькие таблицы (менее 1000 записей): its.1c.ru/db/v8std/content/777/hdoc

      @ironskills-1c@ironskills-1c4 ай бұрын
  • где научиться анализировать запросы с профайлером SQL ?

    @arshanskiysergey2791@arshanskiysergey27915 ай бұрын
    • Не на этом канале😂

      @user-bp1fm9vl7m@user-bp1fm9vl7m5 ай бұрын
  • А вот у меня вопрос - как изменится время выполнения, если не помещать остатки из регистра в вт, а сразу во втором пакете соединять вт_товары с выборкой из регистра?

    @Dsident@Dsident4 ай бұрын
  • Возможно мой вопрос покажется нелепым, но я только учусь, а зачем при выборе остатков мы делаем подзапрос и выбираем только номенклатуру из первой таблицы, ведь при левом соединении и так в итоговую таблицу попадут остатки только по номенклатуре из первой таблицы?

    @mebelsam2138@mebelsam21384 ай бұрын
    • Чтобы не получать остатки по всей номенклатуре. Чем больше таблица остатков, тем дольше будет происходить ее соединение.

      @andreysmirnov6345@andreysmirnov63454 ай бұрын
    • В стандартах 1С не рекомендуется делать соединения с виртуальными таблицами. Сначала нужно поместить данные виртуальной таблицы во временную, а потом временную соединять.

      @user-jy8ux2ml2x@user-jy8ux2ml2x4 ай бұрын
    • @@user-jy8ux2ml2x Понял, спасибо

      @mebelsam2138@mebelsam21384 ай бұрын
  • Иду в школу IRONSKILLS

    @user-gf4ko5pt8q@user-gf4ko5pt8q2 ай бұрын
  • Эммм только начал изучать, и у меня возник вопрос зачем цикл для заполнения табличной части, разве нет способа заполнить скажем так ТаблицаюЗаполнить(ВыборкаТовары), ну это как пример, думаю что долждны быть какието еще параметры. скажем сотриторва в табличной части по наименованию.

    @shogun7sk@shogun7sk4 ай бұрын
  • Проблема обращения через точку - не проблема программиста, а только кривых рук разработчиков платформы... Если я явно указываю через точку нужный мне реквизит, за каким они достают все поля объекта? Почему бы не сделать как положено - вытаскивать только нужный параметр через точку... Чтобы все знали про БСП?.. Чтобы запутать врагов?... неясно...

    @alex0xFFFF@alex0xFFFF5 ай бұрын
    • Тут идея скорее всего была такая: "давайте будем получать, на всякий пожарный, сразу все данные, потому что разработчик может написать так: Артикул = Номенклатура.Артикул; Код = Номенклатура.Код; и тогда сильно вырастет количество запросов к базе" :)

      @ironskills-1c@ironskills-1c4 ай бұрын
    • @@ironskills-1c так это идея или это так и работает? Что говорит документация?))

      @Shamil_Kulakhmetov@Shamil_Kulakhmetov4 ай бұрын
  • Добрый день. Вопрос по теме. Давно использую схему получения данных запросом через временные таблицы (как у вас в ролике), но обращаю внимание что во многих разработках и типовых конфах для решения аналогичных задач используются вложенные запросы. Как по мне, вложенные запросы это неудобная для работы и отладки технология. До сих пор не понял имеет ли это смысл и эффект, либо можно не париться и делать всё через временные таблицы?

    @user-xe9wz9ir9s@user-xe9wz9ir9s5 ай бұрын
    • Насколько я помню, MS SQL вложенные запросы обрабатывает быстрее, чем виртуальные таблицы

      @user-xe1xk1ex2f@user-xe1xk1ex2f5 ай бұрын
    • Вроде как наоборот-временный приветствуются больше. А вложенные используются сейчас в специфических случаях, вроде условий в виртуальных таблицах, как это можно увидеть в видео. Автор канала с свое время на курсе об этом рассказывал подробно помню.

      @TRIALEX3@TRIALEX35 ай бұрын
  • Где можно скачать консоль кода ironskills ?

    @azat2909@azat29095 ай бұрын
    • Скоро выпустим ролик про инструменты программиста)

      @ironskills-1c@ironskills-1c4 ай бұрын
  • Где ссылка на эту обработку - консольку?

    @kimWimp@kimWimp4 ай бұрын
  • Спасибо, хотя и не узнал нового, вопрос, в данном примере если заменить предварительную выборку элементов с помещением в ВТ на единый запрос с соединением первой таблицы , как изменилась бы скорость? Свой ответ знаю, интересен ответ других людей и Автора

    @andreyv3432@andreyv34324 ай бұрын
    • Соединение с подзапросами, а также с виртуальными таблицами - одна из причин неоптимальной работы запросов: its.1c.ru/db/metod8dev#content:5842:hdoc:vtable_join

      @ironskills-1c@ironskills-1c4 ай бұрын
    • ​@@ironskills-1cсоздание виртуальной таблицы - дорогая операция. Классически задача решается через левое соединение. Все преимущество вирт.таблиц при указании фильтра превратится в тыкву при размере, скажем, 100к записей, а при 100к*100к будет совсем грустно, в то время как левому соединению будет это безразлично.

      @Yngvarr@Yngvarr3 ай бұрын
  • Запрос конечно хорош. но, я бы все условия в параметры виртуальной таблицы запихал, все поля заполнил бы в самом запросе и сделал: таблица.Загрузить(Запрос.Выполнить.Выгрузить()). Код намного короче и понятнее читается и работает быстрее.

    @user-pf7rd3ws8q@user-pf7rd3ws8q5 ай бұрын
    • Брат, ждем от тебя подобного ролика с объяснениями, брат

      @user-pw6df6wh1l@user-pw6df6wh1l4 ай бұрын
    • брат ты знаешь что за выгрузить() расстреливают на месте без суда?

      @Sa000Nya@Sa000Nya4 ай бұрын
    • @@Sa000Nya а почему выгрузить() хуже, чем выбрать()?

      @YuriyKolosov@YuriyKolosov4 ай бұрын
  • динозавры вымерли на версии 8.3 😂😂😂

    @talgis4169@talgis41695 ай бұрын
  • Запрос без временных таблиц будет еще оптимальнее

    @user-kb4ye5fw8p@user-kb4ye5fw8p4 ай бұрын
  • А можно где то скачать вашу консоль кода?

    @TimonkinMV@TimonkinMV5 ай бұрын
    • Мы делали на основе вот этой: github.com/salexdv/bsl_console

      @ironskills-1c@ironskills-1c4 ай бұрын
  • Вот бы вы еще показали, что временные таблицы надо уничтожать после использования...

    @helmetson652@helmetson6525 ай бұрын
    • Не надо. Они сами уничтожаются, если не используется МВТ.

      @YuriyKolosov@YuriyKolosov4 ай бұрын
  • Как Rjkbxtcndj превратилось в Количество в конструкторе?

    @SergeySemendyaev@SergeySemendyaev3 ай бұрын
KZhead