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

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

Пікірлер: 260

  • @alexandrshulgin82
    @alexandrshulgin825 ай бұрын

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

  • @ser.sinyavin

    @ser.sinyavin

    5 ай бұрын

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

  • @user-qh5kv3lq9t

    @user-qh5kv3lq9t

    5 ай бұрын

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

  • @TRIALEX3

    @TRIALEX3

    5 ай бұрын

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

  • @Trixter-kh9tb

    @Trixter-kh9tb

    4 ай бұрын

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

  • @TRIALEX3

    @TRIALEX3

    4 ай бұрын

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

  • @ggguuiis
    @ggguuiis4 ай бұрын

    ISNULL Иван!! ISNULL ты открыл мне глаза, сколько же я страдал с этим естьnull

  • @nikolakoval7294
    @nikolakoval72945 ай бұрын

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

  • @ironskills-1c

    @ironskills-1c

    4 ай бұрын

    Спасибо огромное за комментарий)

  • @MrTorfable
    @MrTorfable4 ай бұрын

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

  • @ironskills-1c

    @ironskills-1c

    4 ай бұрын

    Спасибо) Будем развивать эту тему)

  • @dmitrym4022
    @dmitrym40224 ай бұрын

    Работаю программистом 1с около 5 лет. хоть и знал о таких моментах, но все же посмотреть было очень интересно и познавательно! Спасибо!

  • @Shade45One45

    @Shade45One45

    4 ай бұрын

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

  • @ironskills-1c

    @ironskills-1c

    4 ай бұрын

    Спасибо за комментарий)

  • @Shade45One45
    @Shade45One455 ай бұрын

    Не, ну это база!) На любом собесе спрашивают про методы оптимизации запросов. Я бы посмотрел по оптимизации запросов отдельное видео) Может, узнаю чего нового)

  • @user-de2fl8cs7o
    @user-de2fl8cs7o4 ай бұрын

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

  • @user-mh7is7zr2w
    @user-mh7is7zr2w5 ай бұрын

    Спасибо большое, Иван!

  • @user-fy7ps1qy1f
    @user-fy7ps1qy1f4 ай бұрын

    Лучшая подача материала. Спасибо!

  • @user-wv6vu7wn8d
    @user-wv6vu7wn8d4 ай бұрын

    Отличное видео. 👍 Пожалуйста, можно рубрику "не пиши так" почаще?)

  • @Rarogg

    @Rarogg

    4 ай бұрын

    Поддерживаю! Классная рубрика будет, если введете на постоянной основе. Иван, спасибо!

  • @ironskills-1c

    @ironskills-1c

    4 ай бұрын

    Классная идея, спасибо, будем развивать эту тему)

  • @user-wv6vu7wn8d

    @user-wv6vu7wn8d

    4 ай бұрын

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

  • @WhoAmI-sx6fb
    @WhoAmI-sx6fb4 ай бұрын

    Нужно сделать ещё видео с такими же примера с индексацией.

  • @user-pw6df6wh1l
    @user-pw6df6wh1l4 ай бұрын

    Спасибо большон, очень годный выпуск, хочется еще!

  • @den2033
    @den20334 ай бұрын

    Доступно и наглядно были показаны ошибки. А также сравнительная разница, выполнения обработки между двумя вариантами. Супер.

  • @user-vq6wu3sr6l
    @user-vq6wu3sr6l4 ай бұрын

    Как всегда супер! Спасибо Иван!

  • @cybermetalyogurt
    @cybermetalyogurt5 ай бұрын

    Спасибо, весьма познавательно и наглядно.

  • @a34svob
    @a34svob4 ай бұрын

    Спасибо! Как всегда всё понятно и очень наглядно.

  • @kalambur729
    @kalambur7294 ай бұрын

    Спасибо! Продолжайте!

  • @user-lr1ly7mk2y
    @user-lr1ly7mk2y5 ай бұрын

    Ура!!! Новое видео, спасибо большое! :)

  • @SPORTSNEWS-er2gy
    @SPORTSNEWS-er2gy4 ай бұрын

    Сделай пожалуйста полноценный курс по оптимизации кода и в целом 1с.

  • @user-sg8cf3jd3k
    @user-sg8cf3jd3k5 ай бұрын

    Иван, привет! Спасибо тебе за твой труд! Я твой фанат.)

  • @ironskills-1c

    @ironskills-1c

    4 ай бұрын

    Спасибо)

  • @natalyagovorova390
    @natalyagovorova3905 ай бұрын

    Спасибо, Иван! Заставка 🔥

  • @ironskills-1c

    @ironskills-1c

    4 ай бұрын

    Спасибо)

  • @Ivanov_Ivan_11111
    @Ivanov_Ivan_111115 ай бұрын

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

  • @dmitry7828
    @dmitry78284 ай бұрын

    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 Метод Выгрузить() при большой таблице может привести к ошибке "Не хватает памяти", т.к. таблица значений создается в оперативной памяти. Обход выборки в этом плане оптимальнее) Но для маленьких таблиц Выгрузить() тоже можно использовать)

  • @user-kq9zl3ct7q
    @user-kq9zl3ct7q5 ай бұрын

    Иван, как всегда супер подробно 👍.

  • @The-hi5uw
    @The-hi5uw3 ай бұрын

    Полезно! Побольше бы таких видео.

  • @user-xs1pn1je2p
    @user-xs1pn1je2p4 ай бұрын

    Спасибо ! как всегда - Шикарно !

  • @MotoCrankshaft
    @MotoCrankshaft5 ай бұрын

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

  • @gigabyte1c
    @gigabyte1c3 ай бұрын

    Классная подача материала, толково и легко смотрится.

  • @KvartaE
    @KvartaE4 ай бұрын

    Спасибо, наглядно и познавательно

  • @sanyaDjan
    @sanyaDjan4 ай бұрын

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

  • @user-rn2ml9lp7b
    @user-rn2ml9lp7b5 ай бұрын

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

  • @user-fy3tr8if5p
    @user-fy3tr8if5p4 ай бұрын

    Наглядно, познавательно. Спасибо :)

  • @user-os3ev4sm1r
    @user-os3ev4sm1r5 ай бұрын

    Спасибо. Знал, что так нельзя делать, но до конца не понимал почему.

  • @maxglu7165
    @maxglu71654 ай бұрын

    Идеальное объяснение!!!🎉

  • @1C-Developer
    @1C-Developer5 ай бұрын

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

  • @igorb.4917
    @igorb.49175 ай бұрын

    Спасибо, полезно!

  • @user-fd3us7xj3r
    @user-fd3us7xj3r4 ай бұрын

    Круто! Хорошо было бы побольше делать такое видео

  • @anatoliykalinin6855
    @anatoliykalinin68554 ай бұрын

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

  • @KirPlastelinin

    @KirPlastelinin

    4 ай бұрын

    И в чем же 1с козлы?)

  • @RuslanKhamidoullin
    @RuslanKhamidoullin4 ай бұрын

    Спасибо, друг! Очень наглядно.

  • @user-ig7db3xc1h
    @user-ig7db3xc1h4 ай бұрын

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

  • @schooldemetre
    @schooldemetre4 ай бұрын

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

  • @ironskills-1c

    @ironskills-1c

    4 ай бұрын

    Спасибо огромное!)

  • @Tocamax
    @Tocamax4 ай бұрын

    Большое спасибо! Про вредность запросов в цикле знал давно. Но вот, что обращение через точку это тоже запрос, а точнее еще несколько запросов - не знал. Буду перелопачивать отчетики с целью оптимизации!

  • @vika5247
    @vika52474 ай бұрын

    Отлично! Хоть и все это знаю и это понятно, но все равно - Спасибо

  • @user-fr7pq5qg7u
    @user-fr7pq5qg7u4 ай бұрын

    мне кажется информация, на уровне топ. и подача и полезность.

  • @sinystas
    @sinystas4 ай бұрын

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

  • @user-px7mv3dg4h
    @user-px7mv3dg4h4 ай бұрын

    Этот контент надо рекомендовать всем программистам, а не только 1с

  • @gusoneshgames9172
    @gusoneshgames91724 ай бұрын

    Круто Наглядно!!! Класс

  • @DimaVort
    @DimaVort4 ай бұрын

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

  • @TRIALEX3
    @TRIALEX35 ай бұрын

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

  • @user-xe9wz9ir9s

    @user-xe9wz9ir9s

    5 ай бұрын

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

  • @IvanRSH
    @IvanRSH5 ай бұрын

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

  • @user-in2jn2tu6c

    @user-in2jn2tu6c

    4 ай бұрын

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

  • @andreysmirnov6345

    @andreysmirnov6345

    4 ай бұрын

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

  • @zabaluev
    @zabaluev5 ай бұрын

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

  • @jeepwork
    @jeepwork4 ай бұрын

    Спасибо

  • @slitov11
    @slitov115 ай бұрын

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

  • @mika091
    @mika0914 ай бұрын

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

  • @MrTorfable

    @MrTorfable

    4 ай бұрын

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

  • @mika091

    @mika091

    4 ай бұрын

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

  • @Dima-ko6ub

    @Dima-ko6ub

    Ай бұрын

    близко нет​@@MrTorfable

  • @MrTorfable

    @MrTorfable

    Ай бұрын

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

  • @Dima-ko6ub

    @Dima-ko6ub

    Ай бұрын

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

  • @lexrz3254
    @lexrz32544 ай бұрын

    Я морально пострадал от запроса в цикле

  • @ironskills-1c

    @ironskills-1c

    4 ай бұрын

    ИМХО, если команда разработки небольшая, то в конфигураторе работать удобнее)

  • @saidkamolxonn
    @saidkamolxonn4 ай бұрын

    Я знал, что нельзя писать запрос внутри цикла. Но для меня стало новостью, что получение реквизит через точку - тоже плохая идея. Спасибо за очень полезное видео!

  • @user-bm8qb7sn7r
    @user-bm8qb7sn7r4 ай бұрын

    Иван, моё почтение! А о внешних компонентах когда замолвите слово? 😊

  • @ironskills-1c

    @ironskills-1c

    4 ай бұрын

    Немного позже, но сделаем)

  • @iBotMan
    @iBotMan4 ай бұрын

    Хороший видосик. посмотреть чутка что под капотом.

  • @andreyshapat
    @andreyshapat5 ай бұрын

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

  • @user-bb9tp6tm7o
    @user-bb9tp6tm7o5 ай бұрын

    Делал делаю и буду делать))

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

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

  • @ironskills-1c

    @ironskills-1c

    4 ай бұрын

    😀

  • @YuriyKolosov

    @YuriyKolosov

    4 ай бұрын

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

  • @alexsallivan5302
    @alexsallivan53024 ай бұрын

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

  • @TresModiosVir

    @TresModiosVir

    4 ай бұрын

    не дало бы

  • @user-fn3sd6gl5n
    @user-fn3sd6gl5n2 ай бұрын

    Наглядненько.

  • @user-ow9sf4ee9y
    @user-ow9sf4ee9y5 ай бұрын

    Блин, "ну, это же двоечка для девочек". Практически самые основы.

  • @user-yx3ni8qy2i
    @user-yx3ni8qy2i4 ай бұрын

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

  • @ironskills-1c

    @ironskills-1c

    4 ай бұрын

    Будем записывать ещё на эту тему))

  • @figa5107
    @figa51072 ай бұрын

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

  • @ironskills-1c

    @ironskills-1c

    Ай бұрын

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

  • @valexweb
    @valexweb5 ай бұрын

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

  • @user-ur4ik5dj7x

    @user-ur4ik5dj7x

    5 ай бұрын

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

  • @ArtemB91

    @ArtemB91

    Ай бұрын

    Не пишутся они на диск. На диск сброс может быть только если памяти не хватает, но таким образом и при сортировке таблица может на диск сброситься

  • @meduska-tyan
    @meduska-tyan5 ай бұрын

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

  • @sergeyn2956

    @sergeyn2956

    5 ай бұрын

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

  • @helmetson652

    @helmetson652

    5 ай бұрын

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

  • @meduska-tyan

    @meduska-tyan

    5 ай бұрын

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

  • @meduska-tyan

    @meduska-tyan

    5 ай бұрын

    @@sergeyn2956 , спасибо!

  • @PTolkachev

    @PTolkachev

    5 ай бұрын

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

  • @pillowanalyst
    @pillowanalyst5 ай бұрын

    👍

  • @ORLANGUR3k
    @ORLANGUR3k4 ай бұрын

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

  • @ironskills-1c

    @ironskills-1c

    4 ай бұрын

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

  • @denissazanov615
    @denissazanov6154 ай бұрын

    Всегда так писал все в запросе делал.

  • @mendicator4319
    @mendicator43193 ай бұрын

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

  • @3dportableinc64
    @3dportableinc644 ай бұрын

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

  • @ironskills-1c

    @ironskills-1c

    4 ай бұрын

    Да, с бухгалтерами надо дружить :)

  • @mikasfree6371
    @mikasfree63714 ай бұрын

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

  • @ironskills-1c

    @ironskills-1c

    4 ай бұрын

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

  • @user-qd1ws7vy6z
    @user-qd1ws7vy6z4 ай бұрын

    В данном конкретном случае убрал бы цикл к чертям. Таблица.Загрузить(Запрос.Выполнить().Выгрузить()). И это кстати и приучает всё и всегда получать сразу в одном запросе.

  • @ironskills-1c

    @ironskills-1c

    4 ай бұрын

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

  • @mendicator4319
    @mendicator43193 ай бұрын

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

  • @ironskills-1c

    @ironskills-1c

    Ай бұрын

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

  • @user-gj6sy4wi6k

    @user-gj6sy4wi6k

    Ай бұрын

    1С не ставить табу на запросы в цикле. Если задача требует такого подхода, то минимальным обязательным требованием является создание запроса за рамками цикла.

  • @Evgeniy_Masharov
    @Evgeniy_Masharov5 ай бұрын

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

  • @ironskills-1c

    @ironskills-1c

    4 ай бұрын

    Спасибо за идею для новых роликов)

  • @ivanvetrov9835
    @ivanvetrov98355 ай бұрын

    Спасибо за ролик, некоторые полезные вещи подчерпнул. Только один вопрос. Зачем создавать вторую временную таблицу для выборки регистра? Почему нельзя сразу соединить Справочник.Товары с регистром остатков в одном запросе?

  • @tvk1969

    @tvk1969

    5 ай бұрын

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

  • @user-wp6cw6iy7q

    @user-wp6cw6iy7q

    5 ай бұрын

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

  • @inspirationeveryday775

    @inspirationeveryday775

    4 ай бұрын

    Тогда еще такое: почерпнул без Д

  • @Vladnet
    @Vladnet4 ай бұрын

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

  • @ironskills-1c

    @ironskills-1c

    4 ай бұрын

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

  • @user-gj6sy4wi6k

    @user-gj6sy4wi6k

    Ай бұрын

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

  • @user-hd2hn3pe5j
    @user-hd2hn3pe5j4 ай бұрын

    четко и понятно. спасибо!

  • @helmetson652
    @helmetson6525 ай бұрын

    Напрашивалось использование "ЗаполнитьЗначенияСвойств" - при заполнении табчасти обработки

  • @user-ur4ik5dj7x

    @user-ur4ik5dj7x

    5 ай бұрын

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

  • @user-jt5rx1dv9j
    @user-jt5rx1dv9j5 ай бұрын

    спасибо, это на самом деле очень важно учитывать для нормального программиста

  • @user-mc9pt3dm6c
    @user-mc9pt3dm6c3 ай бұрын

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

  • @Duhmen66
    @Duhmen664 ай бұрын

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

  • @TresModiosVir

    @TresModiosVir

    4 ай бұрын

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

  • @Duhmen66

    @Duhmen66

    4 ай бұрын

    Большой объем ВТ это сколько??@@TresModiosVir

  • @ironskills-1c

    @ironskills-1c

    4 ай бұрын

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

  • @arshanskiysergey2791
    @arshanskiysergey27915 ай бұрын

    где научиться анализировать запросы с профайлером SQL ?

  • @user-bp1fm9vl7m

    @user-bp1fm9vl7m

    5 ай бұрын

    Не на этом канале😂

  • @Dsident
    @Dsident4 ай бұрын

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

  • @mebelsam2138
    @mebelsam21384 ай бұрын

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

  • @andreysmirnov6345

    @andreysmirnov6345

    4 ай бұрын

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

  • @user-jy8ux2ml2x

    @user-jy8ux2ml2x

    4 ай бұрын

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

  • @mebelsam2138

    @mebelsam2138

    4 ай бұрын

    @@user-jy8ux2ml2x Понял, спасибо

  • @user-gf4ko5pt8q
    @user-gf4ko5pt8q2 ай бұрын

    Иду в школу IRONSKILLS

  • @shogun7sk
    @shogun7sk4 ай бұрын

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

  • @alex0xFFFF
    @alex0xFFFF5 ай бұрын

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

  • @ironskills-1c

    @ironskills-1c

    4 ай бұрын

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

  • @Shamil_Kulakhmetov

    @Shamil_Kulakhmetov

    4 ай бұрын

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

  • @user-xe9wz9ir9s
    @user-xe9wz9ir9s5 ай бұрын

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

  • @user-xe1xk1ex2f

    @user-xe1xk1ex2f

    5 ай бұрын

    Насколько я помню, MS SQL вложенные запросы обрабатывает быстрее, чем виртуальные таблицы

  • @TRIALEX3

    @TRIALEX3

    5 ай бұрын

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

  • @azat2909
    @azat29095 ай бұрын

    Где можно скачать консоль кода ironskills ?

  • @ironskills-1c

    @ironskills-1c

    4 ай бұрын

    Скоро выпустим ролик про инструменты программиста)

  • @kimWimp
    @kimWimp4 ай бұрын

    Где ссылка на эту обработку - консольку?

  • @andreyv3432
    @andreyv34324 ай бұрын

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

  • @ironskills-1c

    @ironskills-1c

    4 ай бұрын

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

  • @Yngvarr

    @Yngvarr

    3 ай бұрын

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

  • @user-pf7rd3ws8q
    @user-pf7rd3ws8q5 ай бұрын

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

  • @user-pw6df6wh1l

    @user-pw6df6wh1l

    4 ай бұрын

    Брат, ждем от тебя подобного ролика с объяснениями, брат

  • @Sa000Nya

    @Sa000Nya

    4 ай бұрын

    брат ты знаешь что за выгрузить() расстреливают на месте без суда?

  • @YuriyKolosov

    @YuriyKolosov

    4 ай бұрын

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

  • @talgis4169
    @talgis41694 ай бұрын

    динозавры вымерли на версии 8.3 😂😂😂

  • @user-kb4ye5fw8p
    @user-kb4ye5fw8p4 ай бұрын

    Запрос без временных таблиц будет еще оптимальнее

  • @TimonkinMV
    @TimonkinMV5 ай бұрын

    А можно где то скачать вашу консоль кода?

  • @ironskills-1c

    @ironskills-1c

    4 ай бұрын

    Мы делали на основе вот этой: github.com/salexdv/bsl_console

  • @helmetson652
    @helmetson6525 ай бұрын

    Вот бы вы еще показали, что временные таблицы надо уничтожать после использования...

  • @YuriyKolosov

    @YuriyKolosov

    4 ай бұрын

    Не надо. Они сами уничтожаются, если не используется МВТ.

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

    Как Rjkbxtcndj превратилось в Количество в конструкторе?

Келесі