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

26.12.22

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

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

Скачать файлы

Наименование Файл Версия Размер
каркасная база для теста
.dt 205,56Kb
0
.dt 205,56Kb Скачать
название организации, решение в документе word
.doc 14,50Kb
0
.doc 14,50Kb Скачать

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

 

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

Период

Регистратор

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

Склад

Количество

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

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

----

ИТОГИ

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

ПО

ОБЩИЕ

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

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

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

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

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

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

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

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

ИТОГИ

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

ПО

ОБЩИЕ,

Склад,

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

 

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

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

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

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

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

12000 руб.

02.09.2020    101844    564    385    

610

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    13598    skovpin_sa    14    

82

Нахождение уникальных наборов строк таблицы запросом

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

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

23.07.2023    5097    tormozit    79    

39

Структура запроса

Инструментарий разработчика Запросы Платформа 1С v8.3 Запросы Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

21.06.2023    4726    53    obmailok    35    

53

MS SQL Server: изучаем планы запросов

Запросы HighLoad оптимизация Запросы Бесплатно (free)

Многие знают, что для ускорения работы запроса нужно «изучить план». При этом сам план обычно обескураживает: куча разноцветных иконок и стрелочек; ничего не понятно, но очень интересно! Аналитик производительности Александр Денисов на конференции Infostart Event 2021 Moscow Premiere рассказал, как выполняется план запроса и что нужно сделать, чтобы с его помощью находить проблемы производительности.

20.06.2023    10889    Филин    37    

101

Как собрать отладчиком отдельные части запроса в один

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

Подробное описание функционала загрузки данных запроса из отладчика в консоли "Анализатор сложных запросов".

21.03.2023    3879    manuel    2    

20

Все консоли запросов для 1С

Запросы Бесплатно (free)

Список всех популярных обработок.

17.03.2023    24892    kuzyara    75    

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

За 2 стратмани, это чето новенькое)
2. пользователь 26.12.22 12:02
Сообщение было скрыто модератором.
...
3. dvsidelnikov 61 26.12.22 12:03 Сейчас в теме
На работу то взяли?
5. mikl79 117 26.12.22 13:22 Сейчас в теме
(3), видимо нет
4. mikl79 117 26.12.22 13:20 Сейчас в теме
Добрый день.
Вы хотите чтобы вам по возможности подсказали, но сами выставляете Стартмани )
Советую все таки в тексте публикации привести своё решение.
6. SerVer1C 729 26.12.22 13:22 Сейчас в теме
Не могу не пропиарить более интересный тест: https://infostart.ru/public/403411/
7. gonnahard 26.12.22 22:29 Сейчас в теме
evn-zorin; TMV; kasper076; +3 Ответить
8. evn-zorin 32 28.12.22 12:00 Сейчас в теме
(7)все верно, уже давно всё обкатано, главное знать, где найти)
9. Cyberhawk 134 29.12.22 14:20 Сейчас в теме
варианты со срезом (детализацией) регистра по периоду менее 1 дня рассматриваться в качестве решения не будут, как нерабочие на больших объемах данных
Странное требование, ведь обращение к виртуальной таблице с любой периодичностью меньше чем "Месяц" уже никаких отличий в производительности иметь не будет, т.к. остатки будут считаться с задействованием (зачитыванием) таблицы движений. И уже неважно, указали мы периодичность "День", "Секунда" или "Запись" - из БД будет зачитано одинаковое кол-во записей...
12. Arabo_xv 5 29.12.22 20:52 Сейчас в теме
(9) Вы не совсем правы. Вы не учитываете возможность создания агрегатов.
Для регистра можно создать агрегат с произвольной (ну не совсем с произвольным там список, но он покрывает практически все запросы) периодичностью хранения итогов.
В высоконагруженных системах использование агрегатов практически обязательно.
13. Cyberhawk 134 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 303 30.12.22 20:48 Сейчас в теме
(11)тоже сразу пришел в голову этот момент. Сначала в условии так и написано, а потом, в описании решения тут же следует упрощение от программиста, что если есть остатки на начало и конец.
На практике часто приходится пытать заказчиков, что они имеют ввиду под "был в наличии в этот день" и подобных формулировок. И результаты такого выяснения порой удивляют.
lordguard; +1 Ответить
16. lordguard 35 09.01.23 09:33 Сейчас в теме
(14)
(14)вы правы ,сразу об этом не подумал,исправлю
15. Rans 6 31.12.22 11:11 Сейчас в теме
Делал подобный запрос, в результате будут отсутствовать периоды, в которых не было движений по товару. Приходится соединять с календарём чтобы в запросе присутствовал каждый день
lordguard; +1 Ответить
17. quazare 3491 09.03.23 08:03 Сейчас в теме
а сколько времени давалось на данное задание?
18. quazare 3491 09.03.23 08:05 Сейчас в теме
и миддл - это сколько в деньгах сейчас?
Оставьте свое сообщение