Тестовое задание на должность 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С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    129495    700    390    

749

Как посмотреть итоговый запрос в отчете СКД

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

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

15.05.2024    2456    implecs_team    4    

30

Пропорциональное распределение в запросе с использованием АвтоНомерЗаписи()

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

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

11.04.2024    2604    andrey_sag    10    

32

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

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

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

13.02.2024    6292    KawaNoNeko    23    

26

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

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

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

1 стартмани

31.01.2024    2280    2    Yashazz    0    

31

Запрос 1С copilot

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

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

15.01.2024    7092    39    mkalimulin    32    

53

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

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

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

14.12.2023    2013    vandalsvq    7    

29

Консоль запросов УФ 8.3.2.24.12 (мод от Dr.Zombi)

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

Работа с запросом и СКД, Полная поддержка пакетных запросов, временных таблиц. Главное скорость отладки запроса и данных, а красота вторична.

1 стартмани

07.12.2023    3474    52    DrZombi    54    

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

За 2 стратмани, это чето новенькое)
2. пользователь 26.12.22 12:02
Сообщение было скрыто модератором.
...
3. dvsidelnikov 68 26.12.22 12:03 Сейчас в теме
5. mikl79 119 26.12.22 13:22 Сейчас в теме
4. mikl79 119 26.12.22 13:20 Сейчас в теме
Добрый день.
Вы хотите чтобы вам по возможности подсказали, но сами выставляете Стартмани )
Советую все таки в тексте публикации привести своё решение.
6. SerVer1C 775 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 311 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 3656 09.03.23 08:03 Сейчас в теме
а сколько времени давалось на данное задание?
18. quazare 3656 09.03.23 08:05 Сейчас в теме
и миддл - это сколько в деньгах сейчас?
Оставьте свое сообщение