Собеседование на программиста 1С. Задача 2. Регистр сведений - последний и предпоследний срез.

Поділитися
Вставка
  • Опубліковано 23 чер 2023
  • Собеседование на программиста 1С.
    Задача 2. Регистр сведений - последний и предпоследний срез.
    Онлайнкурс Старт в программирование в 1С
    domrachev.ru/training/
    Полный курс доступен по ссылке
    domrachev.ru/interview/
    Телеграм канал
    t.me/domrachev_consulting
    1С - продажа, внедрение, обслуживание: domrachev.ru/
    Бухгалтерское обслуживание: 1cbo.domrachev.ru/
    #обучение #уроки #1С #1C #Домрачев #Домрачевконсалтинг
    #обучение1С #уроки1С #собеседование #задача #программирование

КОМЕНТАРІ • 55

  • @alm6543
    @alm6543 8 днів тому +2

    Ролик можно раза в 2 сократить, если использовать создание запросов с обработкой данных.

    • @domrachevconsulting
      @domrachevconsulting  8 днів тому +1

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

    • @alm6543
      @alm6543 8 днів тому

      @@domrachevconsulting Вам спасибо за ролики.

  • @zapivahinzapivahin3474
    @zapivahinzapivahin3474 3 місяці тому

    Сделайте запрос чтобы он выдавал курс валюты на дату документа поступление товаров в разрезе товаров, часто спрашивают и по дате планирования по этой поставке. Спасибо.

  • @MsMcGoblin1
    @MsMcGoblin1 6 днів тому

    Курс рубля пропал - а это тоже валюта

  • @user-vv9yz5cp2m
    @user-vv9yz5cp2m День тому

    Отсортировать таблицу регистра по периоду по убыванию и выбрать ПЕРВЫЕ 2 + условие по валюте нужной наложить

    • @domrachevconsulting
      @domrachevconsulting  21 годину тому

      Привет. И выведет из 10 валют 2 первые валюты и актуальные курсы на дату)

    • @user-vv9yz5cp2m
      @user-vv9yz5cp2m 20 годин тому

      @@domrachevconsulting привет. Я ведь указал, что условие по валюте нужно наложить. Так что выведет две записи по одной валюте. Если нужно по нескольким валютам получить, что можно через конструкцию объединить все это сделать. Сортировки можно не бояться, в таблице есть индекс по периоду.

  • @domrachevconsulting
    @domrachevconsulting  Рік тому +3

    Друзья. Скажите, пожалуйста, нужно выкладывать данные обработки куда-нибудь?

  • @olegshpilevoy
    @olegshpilevoy 8 місяців тому +3

    Немного искусственная задачка. Можно условие перефразировать на выбрать два последних курса в разрезе валют. Завтра могут решить выбрать три или четыре последних курса. Проще выбрать все курсы, сделать Итоги с сортировкой убывания по периоду. Потом в цикле обойти выборку по группировке валюта и выводить столько сколько нужно последних курсов.

    • @domrachevconsulting
      @domrachevconsulting  8 місяців тому +1

      Да. согласен с курсами может и надуманно. С другими данными это может быть нормально. Надо давать зарядку мозгу.

    • @user-qp2nd7xc9d
      @user-qp2nd7xc9d Місяць тому

      Почему не выводится курс рубля?

    • @user-qp2nd7xc9d
      @user-qp2nd7xc9d Місяць тому

      Если для валюты всего одна запись в регистре, что будет?

  • @underwaterdigital505
    @underwaterdigital505 2 місяці тому +1

    А зачем вам регистр сведений, если вы в конечном итоге лезете в справочник и берете оттуда курс?

  • @evgenievgeni2016
    @evgenievgeni2016 5 місяців тому +1

    Ну так себе. Оставляем в регистре только курсы на одну дату, и запрос вообще ничего не выдаст. Вообще строк не будет. Я бы вас не взял на работу после такого решения😂

    • @domrachevconsulting
      @domrachevconsulting  5 місяців тому +1

      Приглашаем к нам на работу. Удаленно. проектно. до 300 000 рублей в мес.
      Требования ниже:
      Грейд: Middle
      Порядок работы: Удаленно
      Режим работы: Full time
      Дата привлечения: 15.01.2024г.
      Срок привлечения: до 31.12.2024г.
      Система: 1С: ERP УХ + Горнодобывающее производство
      Описание проекта:
      Внедрение 1С: ERP УХ + Горнодобывающее производство
      ❗Требование к специалисту:
      Обязательно:
      Опыт разработки в 1С: Предприятие 8.3, управляемые формы.
      Опыт разработки внешних механизмов в 1С: Предприятие 8.3 (обработки, отчеты, печатные формы).
      Опыт работы в проектной команде более 3-х человек разработчиков.
      Опыт разработки в 1С: Предприятие 8.3 в конфигурации 1С: ERP 2.5 / УТ 11 / КА 2 / ERP УХ 3.1.
      Опыт работы с хранилищем 1С
      Приветствуется:
      Опыт доработки типовых и разработки новых шаблонов RLS.
      Опыт разработки интеграции конфигураций 1С с другими системами.
      Опыт работы с Git репозиторием.
      Опыт решения задач повышения скорости запросов, с использованием профайлера или др. средств MS SQL.
      Сертификат специалиста по платформе 1С Предприятие 8.3.

  • @user-nh1ur9cu6x
    @user-nh1ur9cu6x 8 місяців тому +1

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

    • @AlexSolk
      @AlexSolk 7 місяців тому +1

      А что должно быть по вашему? Выведется одна запись, если у нее период меньше или равен даты среза.
      Запрос такая штука, что он пытается получить все данные, которые соответствуют условиям, а если их нет.... ну чтож, сам он их придумывать не будет.
      Если ты думаешь, что будет ошибка, то ее не будет. Просто во втором методе Сообщить выведутся пустые значения.

    • @user-nh1ur9cu6x
      @user-nh1ur9cu6x 6 місяців тому +3

      @@AlexSolk казалось бы, вроде умный человек, а несет какую-то пургу. На будущее, если пытаетесь принизить собеседника, то хотя бы убедитесь, что ваша позиция крепка, а то сейчас это выглядит как попытка пукнуть в лужу. Ну что же, раз кто-то не догнал, когда ему прямо написали ошибку в запросы - объясню, у тебя стоит внутреннее соединение во временной таблицы "ПредпоследниеДаты", при этом условие на больше (а не больше или равно), таким образом если запись в разрезе валюты одна, то в данной ВТ будет просто пусто, так как соединение не отработает, и далее у тебя также используется Внутреннее соединение, что приводит просто к пустому результату запроса. Откуда вы только беретесь доморощенные гуру.

    • @AlexSolk
      @AlexSolk 6 місяців тому +1

      @@user-nh1ur9cu6x прошу прощения. Видео смотрел побыстрому и с телефона, поэтому не заметил, что автор поставил внутренние соединение.
      Такая грубейшая ошибка мне даже в голову не пришла.

    • @domrachevconsulting
      @domrachevconsulting  6 місяців тому +2

      Почему ошибка? если хотите подискутировать обоснуйте. Код рабочий.

    • @AlexSolk
      @AlexSolk 6 місяців тому

      @@domrachevconsulting потому что пока у вас есть валюты, по которым несколько значений курсов, все работает. Введите новую валюту, задав ей только один текущий курс и ваше внутреннее соединение не выведет эту строку. Соединение неверное.

  • @evgeniuxp2evgeniuxp234
    @evgeniuxp2evgeniuxp234 6 місяців тому +1

    Перемудрил. Логика перемешена. Такой код лучше переписать, а не сопровождать.

    • @domrachevconsulting
      @domrachevconsulting  6 місяців тому +1

      Добрый день. Выкладывайте текст запроса. посмотрим.) у меня на сопровождении был код (куда даже я не залазил - работал корректно - все довольны - я занимался другими задачами. Переписывать (делать рефакторинг) все что не нравится - здоровья и денег работодателя не хватит)

  • @alextsyzman5032
    @alextsyzman5032 7 місяців тому +1

    Пока не работаю программистом, надеюсь устроиться стажером. Но хочу выдать свой вариант данного решения, так как в задаче нет конкретизации с какой таблицы брать: или основной таблицы или из срезов. Я взял из основной. Итак текст запроса :
    ВЫБРАТЬ ПЕРВЫЕ 2
    КурсыВалют.Период КАК Период,
    КурсыВалют.Валюта КАК Валюта
    ПОМЕСТИТЬ ВременнаяТаблица
    ИЗ
    РегистрСведений.КурсыВалют КАК КурсыВалют
    ГДЕ
    КурсыВалют.Период < &Дата
    УПОРЯДОЧИТЬ ПО
    Период УБЫВ
    ;
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ВременнаяТаблица.Период КАК Период,
    ВременнаяТаблица.Валюта КАК Валюта,
    КурсыВалют.Курс КАК Курс
    ИЗ
    ВременнаяТаблица КАК ВременнаяТаблица
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
    ПО ВременнаяТаблица.Период = КурсыВалют.Период
    Прошу работающих в этой области спецов дать оценку и прокомментировать.

  • @AlexSolk
    @AlexSolk 7 місяців тому +1

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

    • @user-ol1es9pm9v
      @user-ol1es9pm9v 7 місяців тому

      Да, я тоже не понял зачем третья таблица если нужный курс уже есть во второй. По поводу поверия, а кто нибудь это вообще обстоятельно тестировал? Есть статьи на тему?

    • @AlexSolk
      @AlexSolk 7 місяців тому

      @@user-ol1es9pm9v я тестировал. На больших таблицах разница во времени чуть ли не в 10 раз

    • @user-ol1es9pm9v
      @user-ol1es9pm9v 7 місяців тому

      @@AlexSolk А в план запроса смотрел? Почему так?

    • @AlexSolk
      @AlexSolk 7 місяців тому

      @@user-ol1es9pm9v в подробности я не вдавался. Мне когда-то сказали об этом эффекте на одном собеседовании, я потом проверил замер производительности на больших таблицах, разницу заметил.

    • @domrachevconsulting
      @domrachevconsulting  6 місяців тому +2

      Нельзя здесь сделать две таблицы (если считаете что можно - предлагайте решения). в вашем решении выше. нельзя вывести курс из-за агрегатной функции МАКСИМУМ!

  • @yardenvokerol4253
    @yardenvokerol4253 4 місяці тому +1

    ВЫБРАТЬ
    КурсыВалютСрезПоследних.Валюта КАК Валюта,
    КурсыВалютСрезПоследних.Период КАК ПоследнийПериод,
    КурсыВалютСрезПоследних.Курс КАК ПоследнийКурс,
    естьNULL(КурсыВалют.Период,ДАТАВРЕМЯ(1,1,1)) КАК ПредПоследнийПериод,
    естьNULL(КурсыВалют.Курс,0) КАК ПредПоследнийКурс
    ИЗ
    (ВЫБРАТЬ
    КурсыВалютСрезПоследних.Валюта КАК Валюта,
    КурсыВалютСрезПоследних.Период КАК Период,
    КурсыВалютСрезПоследних.Курс КАК Курс,
    МАКСИМУМ(КурсыВалют.Период) КАК ПериодДо
    ИЗ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, ) КАК КурсыВалютСрезПоследних
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
    ПО КурсыВалют.Валюта = КурсыВалютСрезПоследних.Валюта И КурсыВалют.Период < КурсыВалютСрезПоследних.Период
    СГРУППИРОВАТЬ ПО
    КурсыВалютСрезПоследних.Валюта,
    КурсыВалютСрезПоследних.Период,
    КурсыВалютСрезПоследних.Курс
    ) КАК КурсыВалютСрезПоследних
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
    ПО (КурсыВалют.Валюта = КурсыВалютСрезПоследних.Валюта И КурсыВалют.Период = КурсыВалютСрезПоследних.ПериодДо)