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

แชร์
ฝัง
  • เผยแพร่เมื่อ 28 ส.ค. 2024
  • Собеседование на программиста 1С.
    Задача 2. Регистр сведений - последний и предпоследний срез.
    Онлайнкурс Старт в программирование в 1С
    domrachev.ru/t...
    Полный курс доступен по ссылке
    domrachev.ru/i...
    Телеграм канал
    t.me/domrachev...
    1С - продажа, внедрение, обслуживание: domrachev.ru/
    Бухгалтерское обслуживание: 1cbo.domrachev...
    #обучение #уроки #1С #1C #Домрачев #Домрачевконсалтинг
    #обучение1С #уроки1С #собеседование #задача #программирование

ความคิดเห็น • 71

  • @alm6543
    @alm6543 2 หลายเดือนก่อน +3

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

    • @domrachevconsulting
      @domrachevconsulting  2 หลายเดือนก่อน +1

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

    • @alm6543
      @alm6543 2 หลายเดือนก่อน

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

  • @zapivahinzapivahin3474
    @zapivahinzapivahin3474 5 หลายเดือนก่อน

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

  • @user-el6ip1rd5t
    @user-el6ip1rd5t 12 วันที่ผ่านมา

    Предложу свой вариант решения на оценку профессионалов:
    &НаСервере
    Процедура ВыполнитьКомандуНаСервере()
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | КурсыВалют.Валюта КАК Валюта,
    | КурсыВалют.Период КАК Период,
    | КурсыВалют.Курс КАК Курс
    |ИЗ
    | РегистрСведений.КурсыВалют КАК КурсыВалют
    |ГДЕ
    | КурсыВалют.Период

  • @domrachevconsulting
    @domrachevconsulting  ปีที่แล้ว +3

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

  • @olegshpilevoy
    @olegshpilevoy 10 หลายเดือนก่อน +3

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

    • @domrachevconsulting
      @domrachevconsulting  10 หลายเดือนก่อน +1

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

    • @user-qp2nd7xc9d
      @user-qp2nd7xc9d 3 หลายเดือนก่อน

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

    • @user-qp2nd7xc9d
      @user-qp2nd7xc9d 3 หลายเดือนก่อน

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

  • @underwaterdigital505
    @underwaterdigital505 4 หลายเดือนก่อน +1

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

    • @domrachevconsulting
      @domrachevconsulting  4 หลายเดือนก่อน

      Курса нет в справочнике

  • @MsMcGoblin1
    @MsMcGoblin1 2 หลายเดือนก่อน

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

  • @evgenievgeni2016
    @evgenievgeni2016 7 หลายเดือนก่อน +1

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

    • @domrachevconsulting
      @domrachevconsulting  7 หลายเดือนก่อน +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-vv9yz5cp2m
    @user-vv9yz5cp2m 2 หลายเดือนก่อน

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

    • @domrachevconsulting
      @domrachevconsulting  2 หลายเดือนก่อน

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

    • @user-vv9yz5cp2m
      @user-vv9yz5cp2m 2 หลายเดือนก่อน +1

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

    • @domrachevconsulting
      @domrachevconsulting  หลายเดือนก่อน

      @@user-vv9yz5cp2m Добрый день. Пожалуйста. Приведите пример. (сюда даже вставьте - если все верно то перезапишу видео). За год было столько хейта - и никто толком ничего не выдал - я бы только рад хорошему решению. Пока работы на два месяца вперед - не смогу уделить время преверить вашу идею (еще раз повторю - пишут комментарии - и они ни о чем).

    • @user-vv9yz5cp2m
      @user-vv9yz5cp2m หลายเดือนก่อน

      @@domrachevconsulting
      ВЫБРАТЬ ПЕРВЫЕ 2
      КурсыВалют.Валюта КАК Валюта,
      КурсыВалют.Курс КАК Курс,
      КурсыВалют.Период КАК Период
      ИЗ
      РегистрСведений.КурсыВалют КАК КурсыВалют
      ГДЕ
      КурсыВалют.Валюта = &Евро
      ОБЪЕДИНИТЬ ВСЕ
      ВЫБРАТЬ ПЕРВЫЕ 2
      КурсыВалют.Валюта,
      КурсыВалют.Курс,
      КурсыВалют.Период
      ИЗ
      РегистрСведений.КурсыВалют КАК КурсыВалют
      ГДЕ
      КурсыВалют.Валюта = &Доллар
      УПОРЯДОЧИТЬ ПО
      Валюта,
      Период УБЫВ

    • @user-vv9yz5cp2m
      @user-vv9yz5cp2m หลายเดือนก่อน

      @@domrachevconsulting
      ВЫБРАТЬ ПЕРВЫЕ 2

      КурсыВалют.Валюта КАК Валюта,
      КурсыВалют.Курс КАК Курс,

      КурсыВалют.Период КАК Период
      ИЗ

      РегистрСведений.КурсыВалют КАК КурсыВалют
      ГДЕ

      КурсыВалют.Валюта = &Евро
      ОБЪЕДИНИТЬ ВСЕ
      ВЫБРАТЬ ПЕРВЫЕ 2

      КурсыВалют.Валюта,

      КурсыВалют.Курс,

      КурсыВалют.Период
      ИЗ

      РегистрСведений.КурсыВалют КАК КурсыВалют
      ГДЕ

      КурсыВалют.Валюта = &Доллар
      УПОРЯДОЧИТЬ ПО

      Валюта,
      Период УБЫВ

  • @user-nh1ur9cu6x
    @user-nh1ur9cu6x 10 หลายเดือนก่อน +1

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

    • @AlexSolk
      @AlexSolk 9 หลายเดือนก่อน +1

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

    • @user-nh1ur9cu6x
      @user-nh1ur9cu6x 8 หลายเดือนก่อน +3

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

    • @AlexSolk
      @AlexSolk 8 หลายเดือนก่อน +1

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

    • @domrachevconsulting
      @domrachevconsulting  8 หลายเดือนก่อน +2

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

    • @AlexSolk
      @AlexSolk 8 หลายเดือนก่อน

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

  • @evgeniuxp2evgeniuxp234
    @evgeniuxp2evgeniuxp234 8 หลายเดือนก่อน +1

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

    • @domrachevconsulting
      @domrachevconsulting  8 หลายเดือนก่อน +1

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

  • @AlexSolk
    @AlexSolk 9 หลายเดือนก่อน +1

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

    • @user-ol1es9pm9v
      @user-ol1es9pm9v 9 หลายเดือนก่อน

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

    • @AlexSolk
      @AlexSolk 9 หลายเดือนก่อน

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

    • @user-ol1es9pm9v
      @user-ol1es9pm9v 9 หลายเดือนก่อน

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

    • @AlexSolk
      @AlexSolk 9 หลายเดือนก่อน

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

    • @domrachevconsulting
      @domrachevconsulting  8 หลายเดือนก่อน +2

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

  • @alextsyzman5032
    @alextsyzman5032 9 หลายเดือนก่อน +1

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

  • @YardenVokerol
    @YardenVokerol 6 หลายเดือนก่อน +1

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