Тестовое задание на должность 1С мидл в крупную компанию (собеседование)

26.12.22

Разработка - Запросы

Вычисление количества дней товаров на складе - собеседование. Тестирование на вакансию 1С программист. Во вложении каркасная база + текст решения. И название организации.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
каркасная база для теста
.dt 205,56Kb
1
1 Скачать (2 SM) Купить за 2 150 руб.
название организации, решение в документе word
.doc 14,50Kb
0
0 Скачать (2 SM) Купить за 2 150 руб.

Существует регистр накопления "Остатки Номенклатуры" (структура ниже).

 

Наполнение регистра:

Период

Регистратор

Номенклатура

Склад

Количество

31.01.2020 01:00:00

Приходная накладная ПН-0001

Лаваш

Сочи

100,000

01.01.2021 00:00:01

Приходная накладная ПН-0001

Хлеб

Радужный

100,000

03.01.2021 15:00:00

Расходная накладная РН-0001

Хлеб

Радужный

10,000

03.01.2021 16:00:00

Приходная накладная ПН-0002

Лаваш

Радужный

3,000

04.01.2021 17:00:00

Расходная накладная РН-0002

Хлеб

Радужный

90,000

06.01.2021 01:00:00

Приходная накладная ПН-0003

Хлеб

Сочи

50,000

07.01.2021 14:00:00

Приходная накладная ПН-0004

Хлеб

Радужный

90,000

07.01.2021 14:30:00

Расходная накладная РН-0003

Лаваш

Радужный

1,000

08.01.2021 17:00:00

Расходная накладная РН-0004

Хлеб

Радужный

90,000

10.01.2021 01:00:00

Расходная накладная РН-0005

Хлеб

Сочи

50,000

11.01.2021 14:00:00

Приходная накладная ПН-0005

Хлеб

Радужный

150,000

 

Суть задачи:

Требуется вычислить количество дней присутствия товаров на складах в разрезе склад/номенклатура за период с 01.01.2021 по 10.01.2021 колько дней каждый товар, присутствовавший за заданный интервал на складах, находился на них). Днем присутствия считается любой день из периода, в который товар находился на складе, без ограничения полный день или часть дня.

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

 

Ограничения:

1. Использование платформы 1С:Предприятие 8.3.20.1674 или старше. Каркасная база для выполнения прилагается.

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

3. СКД в решении использоваться не должен

4. Оценка решения производится с точки зрения производительности на больших объемах данных.

 

Структура регистра «Остатки Номенклатуры»:

Регистраторы: Приходная накладная (вид движения приход), Расходная накладная (вид движения расход)

Измерения: Номенклатура (Справочник.Номенклатура), Склад (Справочник.Склады).

Ресурсы: Количество (Число(15,3)).

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

Основные пожелания, что нужно сделать одним запросом без циклов, полный день считается днем присутствия. Подсказка, что есть регистр Сведений в предложенной дт, называется диапазон дат, и его можно использовать. 

 

Решение:

Вся фишка в том,что мы берем проверочный день,и если есть остаток на начало или конец этого дня, это в любом случае это =1 день хранения, поэтому нам лучше взять таблицу ОстаткиНоменклатуры.ОстаткиИОбороты , где можно взять ресурс Начальный остаток на день и конечный остаток, и если хотя бы один из них больше 0 то, это будет «1» день хранения на складе, периодичность в таблице выберем день.

ВЫБРАТЬ

НАЧАЛОПЕРИОДА(ОстаткиНоменклатурыОстаткиИОбороты.Период, ДЕНЬ) КАК Период,

ОстаткиНоменклатурыОстаткиИОбороты.Склад КАК Склад,

ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура КАК Номенклатура,

ОстаткиНоменклатурыОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,

ОстаткиНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток

ИЗ

РегистрНакопления.ОстаткиНоменклатуры.ОстаткиИОбороты(&ДатаН, &ДатаК, День, , ) КАК ОстаткиНоменклатурыОстаткиИОбороты

Получилась такая табличка, где видно остатки на день , причем где остатков не было, дни не вошли,что нам и нужно. Теперь добавим переменную «ХранениеДней» и сделаем условие,что если остатки есть,то она возвращает 1 ,и делаем итоги по ней ,все это добавим в запрос :

ВЫБОР

КОГДА ОстаткиНоменклатурыОстаткиИОбороты.КоличествоНачальныйОстаток > 0

ИЛИ ОстаткиНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток > 0

ТОГДА 1

ИНАЧЕ 0

КОНЕЦ КАК ХранениеДней

----

ИТОГИ

СУММА(ХранениеДней)

ПО

ОБЩИЕ

Теперь мы имеем общие цифры,

осталось сгруппировать и разделить по номенклатуре и складу :

СГРУППИРОВАТЬ ПО

ОстаткиНоменклатурыОстаткиИОбороты.Склад,

ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура,

ОстаткиНоменклатурыОстаткиИОбороты.КоличествоНачальныйОстаток,

ОстаткиНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток,

НАЧАЛОПЕРИОДА(ОстаткиНоменклатурыОстаткиИОбороты.Период, ДЕНЬ)

ИТОГИ

СУММА(ХранениеДней)

ПО

ОБЩИЕ,

Склад,

Номенклатура

 

В итоге соединяем все и получаем наши цифры по хранению на складах в днях.

Собеседование тестирование задача для вакансии программист тест

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159471    874    399    

861

Запросы Программист Бесплатно (free)

Увидел cheatsheet по SQL и захотелось нарисовать подобное, но про запросы.

18.10.2024    9882    sergey279    18    

64

Запросы Программист Платформа 1С v8.3 Запросы Конфигурации 1cv8 Бесплатно (free)

Столкнулся с интересной ситуацией, которую хотел бы разобрать, ввиду её неочевидности. Речь пойдёт про использование функции запроса АВТОНОМЕРЗАПИСИ() и проблемы, которые могут возникнуть.

11.10.2024    5172    XilDen    36    

80

Запросы Программист Запросы Бесплатно (free)

Отлаживая взаимодействие с базой данных, мы регулярно сталкиваемся с зависающими или подозрительно долго выполняющимися обращениями, негативно влияющими на производительность. О том, как в PostgreSQL выявить подозрительные запросы, основываясь на доступной о них информации, расскажем в статье.

16.08.2024    7903    user1840182    5    

28

Математика и алгоритмы Запросы Программист Платформа 1С v8.3 Запросы Бесплатно (free)

Рассмотрим быстрый алгоритм поиска дублей с использованием hash функции по набору полей шапки и табличных частей.

08.07.2024    2394    ivanov660    9    

22

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

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

15.05.2024    8687    implecs_team    6    

47

Запросы Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Часто поступают задачи по произвольному распределению общих сумм. После распределения иногда пропадают копейки. Суть решения добавить АвтоНомерЗаписи() в ВТ распределения, и далее используя функции МАКСИМУМ или МИНИМУМ можем положить разницу копеек в первую или последнюю строку знаменателя распределения.

11.04.2024    3391    andrey_sag    10    

36
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. pyrkin_vanya 493 26.12.22 11:30 Сейчас в теме
Решение: (в любом случае многие могут сделать более лаконичные, я решил так, прошу не бросаться палками, а подсказать, если можно лучше сделать).

За 2 стратмани, это чето новенькое)
2. пользователь 26.12.22 12:02
Сообщение было скрыто модератором.
...
3. dvsidelnikov 73 26.12.22 12:03 Сейчас в теме
5. mikl79 119 26.12.22 13:22 Сейчас в теме
4. mikl79 119 26.12.22 13:20 Сейчас в теме
Добрый день.
Вы хотите чтобы вам по возможности подсказали, но сами выставляете Стартмани )
Советую все таки в тексте публикации привести своё решение.
6. SerVer1C 815 26.12.22 13:22 Сейчас в теме
Не могу не пропиарить более интересный тест: https://infostart.ru/public/403411/
7. gonnahard 26.12.22 22:29 Сейчас в теме
8. evn-zorin 33 28.12.22 12:00 Сейчас в теме
(7)все верно, уже давно всё обкатано, главное знать, где найти)
9. Cyberhawk 135 29.12.22 14:20 Сейчас в теме
варианты со срезом (детализацией) регистра по периоду менее 1 дня рассматриваться в качестве решения не будут, как нерабочие на больших объемах данных
Странное требование, ведь обращение к виртуальной таблице с любой периодичностью меньше чем "Месяц" уже никаких отличий в производительности иметь не будет, т.к. остатки будут считаться с задействованием (зачитыванием) таблицы движений. И уже неважно, указали мы периодичность "День", "Секунда" или "Запись" - из БД будет зачитано одинаковое кол-во записей...
12. Arabo_xv 5 29.12.22 20:52 Сейчас в теме
(9) Вы не совсем правы. Вы не учитываете возможность создания агрегатов.
Для регистра можно создать агрегат с произвольной (ну не совсем с произвольным там список, но он покрывает практически все запросы) периодичностью хранения итогов.
В высоконагруженных системах использование агрегатов практически обязательно.
13. Cyberhawk 135 29.12.22 21:37 Сейчас в теме
(12) Агрегаты только для оборотных регистров, а в задаче, судя по всему, остаточный.
10. svn_kirov 29.12.22 18:40 Сейчас в теме
почему нельзя было итоговый текст запроса в решении написать, а только какие-то куски его? нечитаемо
11. Arabo_xv 5 29.12.22 20:40 Сейчас в теме
В данном решении есть неточность.
По условию даже если остатков нет, а были движения по товару такой день тоже надо засчитывать. При обращении к таблице ОстаткиИОбороты вы можете не получить строчку для подсчета (для операций где приход и приход с - для ресурса итог будет 0 и если не было остатка на начала периода вы не получите запись в результате запроса).
Возможно именно знание этого и хотели проверить у кандидата на позицию.
14. al_zzz 301 30.12.22 20:48 Сейчас в теме
(11)тоже сразу пришел в голову этот момент. Сначала в условии так и написано, а потом, в описании решения тут же следует упрощение от программиста, что если есть остатки на начало и конец.
На практике часто приходится пытать заказчиков, что они имеют ввиду под "был в наличии в этот день" и подобных формулировок. И результаты такого выяснения порой удивляют.
lordguard; +1 Ответить
16. lordguard 37 09.01.23 09:33 Сейчас в теме
(14)
(14)вы правы ,сразу об этом не подумал,исправлю
15. Rans 6 31.12.22 11:11 Сейчас в теме
Делал подобный запрос, в результате будут отсутствовать периоды, в которых не было движений по товару. Приходится соединять с календарём чтобы в запросе присутствовал каждый день
lordguard; +1 Ответить
17. quazare 3801 09.03.23 08:03 Сейчас в теме
а сколько времени давалось на данное задание?
18. quazare 3801 09.03.23 08:05 Сейчас в теме
и миддл - это сколько в деньгах сейчас?
Оставьте свое сообщение