1С СКД. Использование менеджера временных таблиц.

Поделиться
HTML-код
  • Опубликовано: 13 дек 2022
  • Рассматривается использование менеджера временных таблиц при формировании отчета на СКД для оптимизации запросов к серверу баз данных. Пример замены запроса в наборах данных на общую временную таблицу с использованием regex.
    Если вам нравится то что я делаю,
    вы можете поддержать канал =)
    карта мир сбер. 2202 2067 4136 1385
    Телеграмм t.me/FastAbout1s
    Dzen dzen.ru/fastabout1s
    ВК fastabout1s
    Материалы из видео fastabout1s.ru/
    #скдМенеджерВременнойТаблицы
    #1сСкдМенеджерВременныхТаблиц
    #1суроки
    #видеоурок1с
    #бесплатныеуроки1с
  • НаукаНаука

Комментарии • 23

  • @Allesli
    @Allesli 5 месяцев назад +1

    я в захваті! яка чудова манера викладання, чітке подання. дуже вдячна авторові відео!

    • @fastAbout1s
      @fastAbout1s  5 месяцев назад

      Дякую за відгук =)

  • @user-xl4dz9ee7p
    @user-xl4dz9ee7p 5 месяцев назад +2

    Случайно нашел ваши видео. Очень на уровне! Продолжайте в том же духе!

  • @user-cf5zs8lm5s
    @user-cf5zs8lm5s 6 месяцев назад +1

    Интересно, новая для меня возможность. Я раньше выходил из ситуации передачей таблицы значений в качестве параметра запроса в СКД

    • @fastAbout1s
      @fastAbout1s  6 месяцев назад

      Да, стало проще

  • @andreywonttell4016
    @andreywonttell4016 Год назад

    Спасибо за ролик. Я бы предположил что данная технология полезна не столько для отчётов, сколько для использования СКД для пользовательских отборов или для решений подобных "печати этикеток и ценников" в типовой ут.

    • @fastAbout1s
      @fastAbout1s  Год назад

      Теоретически можно найти разные применения

  • @fflakonoff1
    @fflakonoff1 Год назад +1

    Подписался на тебя, так как сейчас учусь на 1С-программиста, что могу сказать сейчас по поводу твоих видео - интересно, конечно, но пока ничего не понятно ☺. Но видно, что ты круто соображаешь в этой теме 👍

    • @fastAbout1s
      @fastAbout1s  Год назад +2

      Спасибо! =) Если вы только начинаете учится, будет сложновато для восприятия. Но скоро, дойдете и до этого уровня, если не бросите учиться. В реальной работе это точно пригодится.

    • @fflakonoff1
      @fflakonoff1 Год назад

      @@fastAbout1s сколько вы уже в 1С-е?

    • @fastAbout1s
      @fastAbout1s  Год назад +3

      10 лет

    • @fflakonoff1
      @fflakonoff1 Год назад

      @@fastAbout1s а лет вам сколько, если не секрет?

    • @fastAbout1s
      @fastAbout1s  Год назад +2

      38

  • @savoshin
    @savoshin 10 месяцев назад

    Пните в нужном направлении, как решить задачу с помощью СКД (и можно ли вообще): есть два комплекта Комплект1 = болт+гайка, и Комплект2 = болт+шайба. На складе 10 болтов, 10 гаек и 10 шайб. Можно ли с помощью СКД получить отчет который покажет что на складе
    10 Комплект1 и 10 шайб
    или (не важно)
    10 Комплект2 и 10 гаек?

    • @fastAbout1s
      @fastAbout1s  10 месяцев назад +1

      Можно. Но получается не особо просто. Сделать первую временную таблицу, в ней соединить таблицу остатков с таблицей комплектующий и высчитать количество комплекста. Потом еще раз соединиться с остатками и высчитать сколько осталось. На словах сложно объяснить, проще запрос написать.
      ВЫБРАТЬ
      КомплКомплектующие.Ссылка КАК Комплект,
      МИНИМУМ(ОстОстатки.КолОстаток / КомплКомплектующие.Кол) КАК КолвоКомплекта
      ПОМЕСТИТЬ втКомплекты
      ИЗ
      Справочник.Компл.Комплектующие КАК КомплКомплектующие
      ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Ост.Остатки КАК ОстОстатки
      ПО КомплКомплектующие.Ном = ОстОстатки.Ном
      СГРУППИРОВАТЬ ПО
      КомплКомплектующие.Ссылка
      ;
      ////////////////////////////////////////////////////////////////////////////////
      ВЫБРАТЬ
      втКомплекты.Комплект КАК Комплект,
      ОстОстатки.Ном КАК Ном,
      втКомплекты.КолвоКомплекта КАК КолвоКомплекта,
      ОстОстатки.КолОстаток - ЕСТЬNULL(КомплКомплектующие.Кол, 0) * ЕСТЬNULL(втКомплекты.КолвоКомплекта, 0) КАК Остаток
      ИЗ
      втКомплекты КАК втКомплекты
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Ост.Остатки КАК ОстОстатки
      ПО (ИСТИНА)
      ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Компл.Комплектующие КАК КомплКомплектующие
      ПО (ОстОстатки.Ном = КомплКомплектующие.Ном)
      И втКомплекты.Комплект = КомплКомплектующие.Ссылка
      В структуре отчета сделать две группировки, комплекск и для его ресурса КолвоКомплекта агрегатная функция МАКСИМУМ или МИНИМУМ все равно. И вложенные делатальные записи. Тогда в обчете будет такой вывод: Комплект, кол-во комплекста который можно собрать из остатков и под комплектом остаток, который остался после сборки каждого коплекта

    • @savoshin
      @savoshin 10 месяцев назад

      @@fastAbout1s насколько я понял выведутся в отчет оба комплекта, а в том-то и задача, что бы вывелся один комплект (любой) плюс "номенклатура", которая оказалась лишней, что бы у продажников не возникло ложное "ощущение", что они могу продать оба комплекта одновременно. Продажа идет исключительно в комплектах, при этом и производство из этого отчета должно понимать, что они "накосячили" и не укомплектовали 10 комплектов болтами, при производстве 10-ти болтов им все равно какой из комплектов на складе не укомплектован.

    • @fastAbout1s
      @fastAbout1s  10 месяцев назад

      По моему не целесообразно тратить время на решение таких задач чисто на запросе. Запросом надо вытянуть данные, сколько остатков, сколько можно собрать комплектов, а потом уже кодом дописать более сложные проверки. Ну если хочется вывести это на СКД, то передать уже готовый расчёт в СКД через объект таблица значений. Возможно и можно придумать чисто на запросе, но вопрос в оправданности себестоимости такой разработки. Если день думать как его сделать, и потом его ещё сложно будет поддерживать и дорабатывать другим программистам. Я против решений, когда в запрос загоняют сложную логику. Это сложнее потом читать и дорабатывать. К тому же, чем сложнее запрос, тем больше вероятности что планировщик подберет менее оптимальный план выполннения, так как ему будет сложно понять большой и сложный запрос. И в целом он будет выполняться дольго. В итоге одни минусы: Писать такие запросы - дольше, поминать и дорабатывать - дольше, выполняться они будут дольше, потому что на сложные запросы планировкищу сложнее подобрать хороший план запроса.
      Из стандартов разработки от 1С:
      "2. С другой стороны, не следует пытаться любой ценой перенести выполнение задачи в СУБД. СУБД обычно оптимизирует и выполняет простые запросы более эффективно, чем сложные.
      2.1. Следует рассмотреть альтернативные меры:
      по подготовке различных (более простых, частных) текстов запроса в зависимости от предусловий и значений параметров запроса - вместо отправки в СУБД одного большого универсального запроса;
      по более эффективной постобработке данных, выбранных запросом из СУБД, на стороне сервера 1С:Предприятия средствами встроенного языка.
      2.2. При разработке запросов нужно быть уверенным, что они использует эффективные планы выполнения запросов. Для сложных запросов СУБД с высокой вероятностью выберет неправильный план выполнения запроса, что особенно актуально для СУБД DB2, PostgreSQL и Oracle.
      Поэтому не следует неоправданно усложнять запрос"