Тестовое задание на должность 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

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

----

ИТОГИ

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

ПО

ОБЩИЕ

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

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

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

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

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

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

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

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

ИТОГИ

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

ПО

ОБЩИЕ,

Склад,

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

 

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

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

См. также

SALE! 20%

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

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

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

13000 10400 руб.

02.09.2020    122100    670    389    

714

Для чего используют конструкцию запроса "ГДЕ ЛОЖЬ" в СКД на примере конфигурации 1С:ERP

Запросы СКД Платформа 1С v8.3 Запросы Система компоновки данных 1С:ERP Управление предприятием 2 Бесплатно (free)

В типовых конфигурациях разработчики компании 1С иногда используют в отчетах, построенных на СКД, такую конструкцию, как "ГДЕ ЛОЖЬ". Такая конструкция говорит о том, что данные в запросе не будут получены совсем. Для чего же нужен тогда запрос?

13.02.2024    5742    KawaNoNeko    23    

23

Набор-объект для СКД по тексту или запросу

Запросы СКД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    2000    2    Yashazz    0    

29

Запрос 1С copilot

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

Пишем на человеческом языке, что нам надо, и получаем текст запроса на языке 1С. Используются большие языковые модели (LLM GPT) от OpenAI или Яндекс на выбор.

5 стартмани

15.01.2024    6284    31    mkalimulin    25    

50

PrintWizard: поддержка представлений ЗУП в конструкторе

Инструментарий разработчика Запросы Платформа 1С v8.3 Бесплатно (free)

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

14.12.2023    1742    vandalsvq    7    

29

Объектная модель запроса "Схема запроса" 2

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

Далеко уже не новый тип данных "Схема запроса". Статья о том, как использовать его "попроще". Примеры создания текста запроса с нуля и изменение имеющегося запроса.

06.12.2023    5388    user1923546    26    

43

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

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

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

11.10.2023    16179    skovpin_sa    14    

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

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