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

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

Пікірлер: 46

  • @zapivahinzapivahin3474
    @zapivahinzapivahin3474Ай бұрын

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

  • @domrachevconsulting
    @domrachevconsulting10 ай бұрын

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

  • @alextsyzman5032
    @alextsyzman50325 ай бұрын

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

  • @olegshpilevoy
    @olegshpilevoy6 ай бұрын

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

  • @domrachevconsulting

    @domrachevconsulting

    6 ай бұрын

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

  • @underwaterdigital505
    @underwaterdigital505Ай бұрын

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

  • @domrachevconsulting

    @domrachevconsulting

    21 күн бұрын

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

  • @yardenvokerol4253
    @yardenvokerol42532 ай бұрын

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

  • @user-nh1ur9cu6x
    @user-nh1ur9cu6x6 ай бұрын

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

  • @AlexSolk

    @AlexSolk

    5 ай бұрын

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

  • @user-nh1ur9cu6x

    @user-nh1ur9cu6x

    5 ай бұрын

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

  • @AlexSolk

    @AlexSolk

    5 ай бұрын

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

  • @domrachevconsulting

    @domrachevconsulting

    4 ай бұрын

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

  • @AlexSolk

    @AlexSolk

    4 ай бұрын

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

  • @evgenievgeni2016
    @evgenievgeni20164 ай бұрын

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

  • @domrachevconsulting

    @domrachevconsulting

    4 ай бұрын

    Приглашаем к нам на работу. Удаленно. проектно. до 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.

  • @evgeniuxp2evgeniuxp234
    @evgeniuxp2evgeniuxp2344 ай бұрын

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

  • @domrachevconsulting

    @domrachevconsulting

    4 ай бұрын

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

  • @AlexSolk
    @AlexSolk5 ай бұрын

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

  • @user-ol1es9pm9v

    @user-ol1es9pm9v

    5 ай бұрын

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

  • @AlexSolk

    @AlexSolk

    5 ай бұрын

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

  • @user-ol1es9pm9v

    @user-ol1es9pm9v

    5 ай бұрын

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

  • @AlexSolk

    @AlexSolk

    5 ай бұрын

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

  • @domrachevconsulting

    @domrachevconsulting

    4 ай бұрын

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

Келесі