Инженерный тур. 2 этап
На втором этапе предлагаются к решению пять задач. Они направлены на разработку приложения для автоматизации бизнес-процессов предприятия деревообрабатывающей отрасли. Все задачи взаимосвязаны и решаются последовательно.
Результатом выполнения всех пяти задач должно являться приложение, отвечающее требованиям в задании.
Основное требование к приложению — оно должно работать офлайн. Вариант «сервер плюс оболочка» не принимается.
Представьте, что вы работаете в крупной ИТ-компании и создаете эффективные интеллектуальные системы управления, которые помогают реализовывать новые идеи и возможности в тех бизнесах и задачах, которыми ваши заказчики занимаются.
Ваш новый заказчик — ЗАО «Лесозавод №10 Белка» — лесопильный завод, который производит разные виды лесопродукции:
- сырые пиломатериалы;
- сухие пиломатериалы;
- различные виды обработанных изделий: строганые доски, рейки, брус;
- пеллеты (вид твердого топлива цилиндрической формы из спрессованных отходов сельскохозяйственного производства).
Заказчику необходима эффективная система управления, которая бы позволила автоматизировать деятельность различных служб предприятия и повысить эффективность взаимодействия между ними.
В результате многочисленных встреч и обсуждений сформировалась структура системы управления. Разработка такой системы была поделена на задачи, которые должны решать команды программистов компании. Вы — одна из этих команд, и часть задач досталась вам.
Успехов!
Лесопильный завод «Лесозавод №10 Белка» делится на несколько служб предприятия. Основные службы — это коммерческая, производственная и технологическая.
- Коммерческая служба принимает заказы от покупателей на разные виды лесопродукции.
- Задача службы производства — диспетчеризация и выпуск лесопродукции.
- Служба технолога контролирует состояние производственных линий и станков.
Требуется разработать приложение для автоматизации лесопильного завода, реализовать возможность регистрации заказов на лесопродукцию от клиентов сотрудниками коммерческой службы.
- Создать приложение для управления лесопильным заводом. Разделить его на разделы для служб: коммерческая, производственная и технологическая.
- Создать объект для хранения информации о видах лесопродукции. Информация о видах лесопродукции должна быть доступна сотрудникам коммерческой службы, сотрудникам службы производства и службы технолога.
- Создать объект для хранения информации о клиентах завода — потребителях лесопродукции. Информация о клиентах должна быть доступна сотрудникам коммерческой службы.
Создать объект для регистрации заказа от клиента на лесопродукцию. Заказы на лесопродукцию должны быть доступны сотрудникам коммерческой службы, сотрудникам службы производства. В заказе на лесопродукцию должна отражаться следующая информация:
- дата регистрации заказа;
- дата, к которой требуется выпустить лесопродукцию (не может быть меньше или равна даты регистрации заказа);
- информация о клиенте-заказчике;
- вид лесопродукции, который требуется клиенту;
- количество лесопродукции (для удобства измеряем в штуках);
- дополнительная информация о заказе (произвольное текстовое описание);
- статус заказа (Черновик, Согласован клиентом, Принят в производство и Выполнен).
При регистрации заказа от клиента необходимо проверять его заполнение: заказ в статусе Согласован клиентом можно зарегистрировать, только если в нем указаны информация о клиенте, виде лесопродукции и количестве заказываемой лесопродукции. По умолчанию заказ на лесопродукцию создается со статусом Черновик.
В перечне заказов клиента на лесопродукцию необходимо сделать цветовое выделение в зависимости от условий:
- заказ в статусе Черновик не имеет цветового выделения;
- заказ в статусе Согласован клиентом имеет оранжевое цветовое выделение;
- заказ в статусе Принят в производство имеет желтое цветовое выделение;
- заказ в статусе Выполнен имеет зеленое цветовое выделение.
- Ввести шесть видов лесопродукции из легенды.
- Ввести не менее двух клиентов лесозавода.
Ввести три заказа со статусом Согласован клиентом с видами лесопродукции:
- сырые пиломатериалы;
- сухие пиломатериалы;
- рейки.
Основной ход решения на базе 1С:Предприятие 8:
- Создать информационную базу для разработки приложения.
- В конфигураторе сразу создать три подсистемы: Коммерческая служба, Служба технолога, Коммерческая служба.
- Создать справочник Виды лесопродукции со стандартными реквизитами, поместить его во все три подсистемы.
Создать справочник Клиенты со стандартными реквизитами, поместить его в подсистему Коммерческая служба.
Рис. 1.1.Создать документ Заказ на лесопродукцию с реквизитами, указанными в постановке задачи, рис. 1.1:
- Реализовать алгоритм проверки правильности заполнения реквизита Дата выпуска лесопродукции, дата должна быть больше даты регистрации заказа (даты документа).
- Для хранения статусов заказа необходимо создать перечисление Статусы заказа на лесопродукцию.
- Реализовать заполнение по умолчанию поля Статус заказа — должно сразу проставляться значение Черновик.
- Реализовать проверку заполнения реквизитов при проведении документа Заказ на лесопродукцию со статусом Согласован клиентом.
Структура документа будет выглядеть следующим образом, см. рис. 1.1.
Внешний вид документа на рис. 1.2.
Рис. 1.2.Реализовать выделение цветом в списке документов Заказ на лесопродукцию. Для этого необходимо создать форму списка документа Заказ клиента — рис. 1.3.
Рис. 1.3.На открывшейся форме находим свойство реквизита Список — Настройка списка: рис. 1.4.
Рис. 1.4.В появившемся окне выбираем вкладку Настройки, а в ней вкладку — Условное оформление. По кнопке
добавляем новый элемент условного оформления. В поле оформления выбираем цвет фона для заказов в статусе Согласован с клиентом — рис. 1.5
Рис. 1.5.В качестве условия оформления указываем, что статус заказа должен быть равен Согласован с клиентом, рис. 1.6.
Рис. 1.6.В колонке Оформляемые поля ничего не указываем, так как нам нужно выделить всю строку.
Аналогичное условное оформление делаем для статусов заказа Принят в производство и Черновик — рис. 1.7.
Рис. 1.7.Заполнить приложение данными согласно постановке задачи:
Видеоразбор задачи: https://dzen.ru/video/watch/67a2ff7b26d5cb05b05205d1.
| Критерий | Балл |
|---|---|
| Функционал | |
| Создание приложения | 6 |
| Приложение разбито на три раздела: Коммерческая служба, Служба производства, Служба технолога | 2 |
| Создан функционал для хранения информации о видах лесопродукции | 4 |
| Виды лесопродукции доступны сотрудникам коммерческой службы, сотрудникам службы производства и службы технолога | 1 |
| Создан функционал для хранения информации о клиентах | 2 |
| Информация о клиентах доступна только в разделе Коммерческая служба | 1 |
| Создан объект Заказы на лесопродукцию | 4 |
| Объект Заказы на лесопродукцию доступен в разделах Коммерческая служба, Служба производства | 1 |
| В Заказе на лесопродукцию есть информация о дате регистрации заказа (если формат не является датой, убирается 0,5 балла) | 1 |
| В Заказе на лесопродукцию есть информация о дате выполнения заказа (если формат не является датой, убирается 0,5 балла) | 1 |
| При выборе даты выполнения заказа, меньшей или равной дате регистрации заказа, выходит предупреждение об ошибке ввода (дата выполнения заказа должна быть больше даты регистрации) | 4 |
| В Заказе на лесопродукцию есть информация о клиенте, которая проставляется из объекта Клиенты (если подстановки из объекта клиента нет, убирается 1 балл) | 2 |
| В Заказе на лесопродукцию есть информация о виде лесопродукции, которая проставляется из объекта Виды лесопродукции (если подстановки из объекта клиента нет, убирается 1 балл) | 2 |
| В Заказе на лесопродукцию есть многострочное поле Описание заказа (если поле не многострочное, убирается 0,5) | 1 |
| Создано поле Статус заказа с выбором значения из списка | 3 |
| По умолчанию при создании заказа на лесопродукцию в поле Статус заказа проставлено значение по умолчанию — черновик | 3 |
| При регистрации заказа на лесопродукцию в статусе Согласован клиентом осуществляется проверка заполнения полей Клиент, Вид лесопродукции, Количество продукции | 5 |
| Реализовано выделение цветами заказов на лесопродукцию в их списке согласно постановке задачи | 5 |
| Заполнение данными | |
| Виды лесопродукции за каждый введенный вид — 0,5, максимально — 3 | 3 |
| Клиенты, за каждого клиента — 0,5, максимально — 1 | 1 |
| Заказы на лесопродукцию, за каждый заказ — 1,5, максимально — 3 | 3 |
| Итого: | 55 |
Производственная служба лесопильного завода состоит из нескольких цехов:
- лесопильный цех;
- сушильный комплекс;
- цех строжки и обработки;
- пеллетный цех.
Цеха, в свою очередь, делятся на рабочие участки.
Лесопильный цех:
- лесопильная линия № 1 (используется для распиловки тонкомеров, например, реек);
- лесопильная линия № 2 (используется для распиловки среднего леса).
Сушильный комплекс:
- сушильная камера № 1;
- сушильная камера № 2;
- сушильная камера № 3;
- сушильная камера № 4.
Цех строжки и обработки:
- линия строжки № 1 (используется для строжки тонкомеров);
- линия строжки № 2 (используется для строжки среднего леса);
- линия строжки № 3 (используется для строжки среднего леса).
Пеллетный цех:
- дробилка;
- сушилка;
- гранулятор № 1;
- гранулятор № 2.
Для нашей задачи условимся, что любая продукция изготавливается с начальной стадии.
- Для изготовления сырого пиломатериала используется лесопильный цех.
- Для изготовления сухого пиломатериала используются лесопильный цех и сушильная камера.
Для изготовления реек, досок и бруса используются:
- лесопильный цех;
- сушильная камера;
- цех строжки и дообработки.
- Для изготовления пеллет используется пеллетный цех.
Служба производства на основании информации о заказах клиентов на лесопродукцию формирует задания на производство лесопродукции.
Служба технолога на основании информации о заданиях на производство лесопродукции формирует задания на подготовку/оснастку производственных линий и станков.
Требуется реализовать возможность регистрации заданий на производство лесопродукции сотрудниками службы производства и регистрации заданий на подготовку/оснастку производственных линий и станков сотрудниками службы технолога.
- Создать объект для хранения информации о цехах лесопильного завода. Информация должна быть доступна сотрудникам служб производства и технолога.
- Создать объект для хранения информации о рабочих участках цехов завода (каждый участок принадлежит определенному цеху, то есть объекты для хранения информации о цехах и участках должны быть связаны между собой). Добавить возможность хранения описания характеристик рабочего участка. Информация о рабочих участках завода должна быть доступна сотрудникам службы производства и службы технолога.
Создать объект для регистрации задания на производство лесопродукции. Задания на производство лесопродукции должны быть доступны сотрудникам службы производства и сотрудникам службы технолога. В задании на производство лесопродукции должна отражаться следующая информация:
- дата регистрации задания;
- дата, с которой требуется начать выполнять задание на производство (должна быть больше даты регистрации задания);
- заказ на лесопродукцию, по которому регистрируется задание на производство;
- вид лесопродукции, который требуется изготовить;
- количество лесопродукции;
- цеха, которые будут задействованы в изготовлении лесопродукции (для одного вида лесопродукции можно использовать несколько цехов);
- дополнительная информация о задании (произвольное текстовое описание, многострочное поле).
- при регистрации задания на производство лесопродукции у заказа на лесопродукцию статус меняется на Принят в производство.
Задание на производство можно зарегистрировать только по заказу на лесопродукцию со статусом Согласовано клиентом.
Также необходимо реализовать проверку заполнения всех полей задания на производство, кроме поля Дополнительная информация о задании.
Создать объект для регистрации задания на подготовку/оснастку рабочего участка. Задания на подготовку должны быть доступны сотрудникам службы технолога. В задании на подготовку должна отражаться следующая информация:
- дата регистрации задания;
- дата, когда требуется выполнить подготовку/оснастку рабочего участка;
- задание на производство, на основании которого подготавливается рабочий участок;
- рабочий участок, который требуется подготовить;
- информация о том, что нужно настроить на рабочем участке (произвольное текстовое описание, многострочное поле);
- статус задания (Создано и Выполнено); объект создается изначально в статусе Создан.
Необходимо реализовать проверку заполнения всех полей задания на производство, кроме многострочного поля с информацией.
При регистрации задания на подготовку/оснастку рабочих участков должна выполняться проверка, что подготовка участка будет выполнена не позднее даты, с которой должно начинаться изготовление лесопродукции.
Создать рабочий стол для сотрудников службы технолога для работы с заданиями на подготовку/оснастку рабочих участков. На рабочем столе должны отображаться задания в статусе Создано. Рядом с заданием должна выводиться информация о дате подготовки рабочего участка, рабочем участке и описание того, что требуется настроить на рабочем участке. На рабочем столе необходимо реализовать отбор по цеху лесопильного завода.
Усложнение: на рабочем столе сделать цветовое разделение в зависимости от условий:
- задание имеет красное цветовое выделение, если дата подготовки рабочего участка совпадает с датой начала изготовления лесопродукции;
- задание имеет желтое цветовое выделение, если подготовка рабочего участка запланирована накануне начала изготовления лесопродукции.
- Ввести сведения о цехах и рабочих участках лесозавода (информацию взять из описания задачи).
- По созданным ранее трем заказам клиента необходимо создать три задания на производство лесопродукции для разных цехов.
- По каждому из трех заданий на производство необходимо создать задания на подготовку/оснастку соответствующих рабочих участков (подумайте, какие рабочие участки понадобятся для трех видов лесопродукции, которые заказали клиенты: сырые пиломатериалы, сухие пиломатериалы, рейки).
Основной ход решения на базе 1С:Предприятие 8.
- Создать справочник Производственные цеха.
Создать справочник Рабочие участки (владельцем этого справочника будет справочник Производственные цеха): рис. 1.11.
Рис. 1.11.Создать документ Задание на производство с реквизитами, указанными в постановке задачи: рис. 1.12.
Рис. 1.12.Реализовать возможность создания задания на производство вводом на основании заказа на лесопродукцию: рис. 1.13.
Рис. 1.13.Реализовать проверку заполнения всех полей, кроме многострочного поля, где вводится дополнительная информация. Для этого у каждого реквизита (на закладке Данные) необходимо установить значение свойства Проверка заполнения — Выдавать ошибку: рис. 1.14.
Рис. 1.14.Реализовать проверку даты выполнения (она должна быть больше даты регистрации задания). Алгоритм будем делать в Модуле объекта: рис. 1.15.
Рис. 1.15.Проверку будем осуществлять перед записью документа. Для этого в Модуле объекта нужно выбрать соответствующую процедуру — Перед записью: рис. 1.16.
Рис. 1.16.Программный код процедуры будет выглядеть как на рис. 1.17.
Рис. 1.17.
Создать документ Задание на подготовку рабочего участка с реквизитами согласно постановке задачи, осуществить проверку заполнения полей и проверку правильности указания даты выполнения.
Вид документа в пользовательском режиме: рис. 1.18.
Рис. 1.18.Структура документа в конфигураторе: рис. 1.19.
Рис. 1.19.Проверка правильности указания даты выполнения делается в модуле объекта документа Задание на подготовку участка. Программный код будет выглядеть как на рис. 1.20.
Рис. 1.20.Реализовать интерфейс — рабочий стол для удобной работы с заданиями на подготовку рабочих участков. Реализация может быть на личное усмотрение. Внешне рабочий стол может выглядеть примерно как на рис. 1.21.
Рис. 1.21.В нашем решении он реализован в виде формы списка документа Задание на подготовку рабочего участка: рис. 1.22, 1.23.
Рис. 1.22.Рис. 1.23.
Видеоразбор задачи: https://dzen.ru/video/watch/67a3233079a95e5d4ed28138.
| Критерий | Балл |
|---|---|
| Функционал | |
| Создан функционал для хранения информации о цехах лесозавода | 1 |
| Информация о цехах доступна в разделах Служба производства и Служба технолога | 1 |
| Создан функционал для хранения информации о рабочих участках | 1 |
| Информация о рабочих участках доступна в разделах Служба производства и Служба технолога | 1 |
| Реализована взаимосвязь объектов для хранения информации о цехах и хранения информации о рабочих участков | 3 |
| Есть возможность добавления характеристик рабочих участков | 2 |
| Создан функционал для хранения информации о заданиях на производство | 3 |
| Объект для хранения заданий на производство связан с объектом заказ на лесопродукцию | 3 |
| Задание на производство можно зарегистрировать только на основании заказа на лесопродукцию в статусе Согласовано клиентом | 10 |
| В задании на производство есть дата регистрации задания (за неверный формат убирается 0,5) | 1 |
| В задании на производство есть дата выполнения задания (за неверный формат убирается 0,5) | 1 |
| Реализована проверка правильности заполнения даты выполнения (она должна быть больше даты регистрации задания на производство) | 4 |
| В задании на производство есть информация о заказе на лесопродукцию, на основании которого регистрируется задание на производство | 1 |
| В задании на производство есть информация о виде лесопродукции (за неверный формат убирается 0,5) | 1 |
| В задании на производство есть информация о количестве лесопродукции (за неверный формат убирается 0,5) | 1 |
| В задании на производство указана информация о цехах (за неверный формат убирается 1 балл, если в задании можно указать только один цех, убирается 1,5) | 3 |
| В задании на производство есть многострочное поле, куда вводится доп. информация и описание (за неверный формат убирается 0,5) | 1 |
| При регистрации задания на производство меняется статус связанного с ним заказа на лесопродукцию на Принят в производство | 10 |
| Есть проверка заполнения полей в задании на производство, кроме многострочного поля (за каждое забытое поле — минус 1 балл) | 6 |
| Создан функционал для хранения информации о заданиях на подготовку участка | 3 |
| Реализована связь между заданием на производство и заданием на подготовку рабочего участка | 3 |
| В задании на подготовку участка есть дата регистрации задания (за неверный формат убирается 0,5) | 1 |
| В задании на подготовку участка есть дата выполнения задания (за неверный формат убирается 0,5) | 1 |
| Реализована проверка правильности заполнения даты выполнения (она должна быть больше даты регистрации задания на подготовку участка) | 4 |
| В задании на подготовку участка есть информация о связанном с ним задании на производство | 1 |
| В задании на подготовку участка есть информация об участке, который надо подготовить (за неверный формат убирается 0,5) | 1 |
| В задании на подготовку участка есть многострочное поле для описания, что нужно сделать на участке (за неверный формат поля убирается 0,5) | 1 |
| В задании на подготовку участка есть поле Статус с выбором варианта Создано или Выполнено | 3 |
| Задание на подготовку участка первоначально создается в статусе Создано | 3 |
| Есть проверка заполнения полей в задании на подготовку участка, кроме многострочного поля (за каждое забытое поле — минус 1 балл) | 6 |
| При регистрации задания на подготовку рабочего участка осуществляется проверка, что дата выполнения подготовки меньше срока изготовления лесопродукции, указанного в заказе на лесопродукцию | 10 |
| Создан Рабочий стол, где должны отображаться задания на подготовку рабочих участков | 5 |
| На рабочем столе отображаются задания на подготовку в статусе Создано | 4 |
| Рядом с заданием отображается информация о дате выполнения | 2 |
| Рядом с заданием на подготовку участка отображается информация о рабочем участке | 2 |
| Рядом с заданием на подготовку участка отображается описание того, что нужно сделать | 2 |
| На рабочем столе реализован отбор по цеху | 4 |
| Реализовано цветовое разделение участков в зависимости от условий, описанных в задании | 5 |
| Заполнение данными | |
| Заполнены цеха и участки согласно заданию (если заполнение полностью соответствует — 7 баллов, частично — 3) | 7 |
| По трем заказам созданы задания на производство (за каждое задание 1 балл) | 3 |
| Созданы задания на подготовку участков, проверяем, правильно ли выбраны участки, за каждое верное созданное задание — 2 балла | 12 |
| Итого: | 125 |
Служба производства на основании информации о заданиях на производство лесопродукции и заданиях на подготовку/оснастку производственных линий и станков формирует задания на конкретные смены. Задание на смену выдается на рабочий участок, после этого считается, что рабочий участок будет занят под конкретное задание на смену и будет производить конкретный вид лесопродукции.
Требуется реализовать возможность регистрации заданий на смену сотрудниками службы производства.
Создать объект для регистрации задания на смену. Объект должен быть доступен в разделах Служба производства и Служба технолога. Задание на смену должно быть привязано к заданию на производство лесопродукции и содержать следующую информацию:
- дата создания;
- вид лесопродукции;
- количество лесопродукции;
- смена, в которую будет выполняться задание (для простоты берем, что смена — это день, то есть здесь указывается конкретная дата, например, смена: 25.10.2024);
- рабочий участок;
- дополнительное описание (произвольное текстовое описание, многострочное поле).
- Реализовать выбор рабочего участка из списка свободных на указанную смену.
- Для регистрации задания на смену все поля, кроме дополнительного описания, должны быть заполнены.
Сотрудникам службы производства при регистрации заданий на смену важно видеть, какие рабочие участки в какие смены свободны/заняты, поэтому требуется реализовать такой объект (доступен в разделе Служба производства). Также для удобства необходимо сделать так, чтобы из этого рабочего стола можно было создать задание на смену, выбрав свободный участок. Способы реализации — на усмотрение разработчика, например:
- рабочий стол, который показывает свободные рабочие участки на выбранную смену, с возможностью регистрации задания на смену;
- календарь, в котором за выбранный период отображаются свободные и занятые рабочие участки.
Усложнение. У рабочих участков есть ограничения, которые влияют на производство лесопродукции. Ограничения связаны с производительностью того или иного оборудования, которое используется на участке. На участках лесозавода используется оборудование со следующей производительностью.
Название участка Производительность в смену, шт. Лесопильная линия № 1 50 Лесопильная линия № 2 100 Сушильная камера № 1 50 Сушильная камера № 2 60 Сушильная камера № 3 80 Сушильная камера № 4 85 Линия строжки № 1 50 Линия строжки № 2 80 Линия строжки № 3 100 Например, ограничение сушильных камер — это их вместимость (это означает, что в сушильную камеру можно поместить не более определенного объема сырого пиломатериала), ограничение лесопильных линий — это скорость работы (это означает, что линия не может напилить более определенного объема пиломатериала за смену). Для более рационального использования рабочих участков их стараются использовать всю смену, поэтому возникают ситуации, когда в течение одной смены на рабочем участке будут изготавливаться разные виды лесопродукции.
Требуется дополнить механизм регистрации заданий на смену функциональностью по следующим требованиям:
- У рабочих участков добавить возможность указания производственного ограничения.
При регистрации задания на смену проверять, будет ли рабочий участок занят полностью в течение смены.
Если рабочий участок будет занят полностью, то он остается недоступным для размещения в нем других заданий на смену (как было описано ранее).
Если рабочий участок будет занят не полностью, то нужно предоставить сотрудникам службы производства зарегистрировать задание на этот рабочий участок на часть смены. В этом случае рабочий участок остается частично доступным, и в течение смену может быть занят несколькими заданиями на смену (с учетом производственного ограничения рабочего участка).
- Если же количество лесопродукции в задании на смену превышает производственные мощности рабочего участка, необходимо вывести соответствующее предупреждение.
- По заданиям на производство создать задания на смену.
- Заполнить ограничения рабочих участков.
Основной ход решения на базе 1С:Предприятие 8.
Создать документ Задание на смену со всеми реквизитами, указанными в задании, рис. 1.24.
Рис. 1.24.В разделе Служба производства создать рабочий стол или календарь, где показываются свободные участки. Реализация на личное усмотрение, примерный вид календаря на рис. 1.25.
Рис. 1.25.Реализован он был через обработку, рис. 1.26.
Рис. 1.26.Была создана форма обработки, рис. 1.27.
Рис. 1.27.Процедуры модуля формы приведены ниже.
1C&НаКлиенте Процедура ЗаполнитьРасписание(Команда) РабочиеДаты = ПолучитьСписокРабочихДней(); Если ЕстьМастерВБригаде() И НЕ СотрудникиВходятВДругиеБригады() И НЕ СотрудникиОтносятсяКДругомуЦеху() И НЕ ПересеченияВРасписании() Тогда ЗаписатьДанныеВРасписание(); КонецЕсли; КонецПроцедуры &НаСервере Функция ПересеченияВРасписании() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Расписание.Дата КАК Дата, | Расписание.РабочийУчасток КАК РабочийУчасток, | Расписание.НомерБригады КАК НомерБригады |ИЗ | РегистрСведений.Расписание КАК Расписание |ГДЕ | Расписание.Дата В(&СписокДат) | И Расписание.РабочийУчасток = &РабочийУчасток | И Расписание.НомерБригады <> &НомерБригады | |СГРУППИРОВАТЬ ПО | Расписание.НомерБригады, | Расписание.Дата, | Расписание.РабочийУчасток"; Запрос.УстановитьПараметр("НомерБригады", Объект.НомерБригады); Запрос.УстановитьПараметр("РабочийУчасток", Объект.РабочийУчасток); Запрос.УстановитьПараметр("СписокДат", РабочиеДаты.ВыгрузитьЗначения()); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Возврат Ложь; КонецЕсли; ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить(СтрШаблон("%1 рабочий участок %2 уже занят бригадой %3." "Расписание не может быть сформировано.", Формат(ВыборкаДетальныеЗаписи.Дата,"ДЛФ=D"), ВыборкаДетальныеЗаписи.РабочийУчасток, ВыборкаДетальныеЗаписи.НомерБригады)); КонецЦикла; Возврат Истина; КонецФункции &НаСервере Функция СотрудникиОтносятсяКДругомуЦеху() НесоответствиеЦехов = Ложь; Для каждого Строка Из Объект.СоставБригады.Выгрузить(,"Сотрудник") Цикл Если Строка.Сотрудник.Владелец <> Объект.ВидБригады.Владелец Тогда Сообщить(СтрШаблон("Сотрудник %1 не может входить в состав бригады %2, поскольку он относится к цеху %3." "Расписание не может быть сформировано.", Строка.Сотрудник, Объект.ВидБригады, Строка.Сотрудник.Владелец)); НесоответствиеЦехов = Истина; КонецЕсли; Если Строка.Сотрудник.Владелец <> Объект.РабочийУчасток.Владелец Тогда Сообщить(СтрШаблон("Сотрудник %1 не может выполнять работы на участке %2, поскольку он относится к цеху %3." "Расписание не может быть сформировано.", Строка.Сотрудник, Объект.РабочийУчасток, Строка.Сотрудник.Владелец)); НесоответствиеЦехов = Истина; КонецЕсли; КонецЦикла; Возврат НесоответствиеЦехов; КонецФункции &НаСервере Функция СотрудникиВходятВДругиеБригады() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Расписание.Сотрудник КАК Сотрудник, | Расписание.НомерБригады КАК НомерБригады |ИЗ | РегистрСведений.Расписание КАК Расписание |ГДЕ | Расписание.Сотрудник В(&МассивСотрудников) | И Расписание.НомерБригады <> &НомерБригады | |СГРУППИРОВАТЬ ПО | Расписание.Сотрудник, | Расписание.НомерБригады"; Запрос.УстановитьПараметр("МассивСотрудников", Объект.СоставБригады.Выгрузить(, "Сотрудник")); Запрос.УстановитьПараметр("НомерБригады", Объект.НомерБригады); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Возврат Ложь; КонецЕсли; ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить(СтрШаблон("Сотрудник %1 значится в бригаде %2." "Расписание не может быть сформировано.", ВыборкаДетальныеЗаписи.Сотрудник, ВыборкаДетальныеЗаписи.НомерБригады)); КонецЦикла; Возврат Истина; КонецФункции &НаСервере Функция ЕстьМастерВБригаде() Если КоличествоМастеров = 0 Тогда Сообщить("В бригаде должен быть хотя бы один мастер!" "Расписание не может быть сформировано."); Возврат Ложь; ИначеЕсли КоличествоМастеров > 1 Тогда Сообщить("В бригаде не может быть более одного мастера!" "Расписание не может быть сформировано."); Возврат Ложь; КонецЕсли; Возврат Истина; КонецФункции &НаСервере Функция ПолучитьСписокРабочихДней() СписокДат = Новый СписокЗначений(); РабочийДень = Объект.ДатаНачалаРаботы; ПоследнийДень = ДобавитьМесяц(РабочийДень, 1); ЗавтраРабочийДень = Истина; Пока РабочийДень <= ПоследнийДень Цикл СписокДат.Добавить(РабочийДень); Если Объект.РежимРаботы = Перечисления.РежимыРаботы.ОдинЧерезОдин Тогда РабочийДень = РабочийДень + 2 * 86400; ИначеЕсли Объект.РежимРаботы = Перечисления.РежимыРаботы.ДваЧерезДва Тогда Если ЗавтраРабочийДень Тогда РабочийДень = РабочийДень + 86400; ЗавтраРабочийДень = Ложь; Иначе РабочийДень = РабочийДень + 3 * 86400; ЗавтраРабочийДень = Истина; КонецЕсли; КонецЕсли; КонецЦикла; Возврат СписокДат; КонецФункции &НаСервере Процедура ЗаписатьДанныеВРасписание() Для каждого РабочийДень Из РабочиеДаты Цикл Для каждого Строка Из Объект.СоставБригады Цикл НоваяЗапись = РегистрыСведений.Расписание.СоздатьМенеджерЗаписи(); НоваяЗапись.Дата = РабочийДень.Значение; НоваяЗапись.РабочийУчасток = Объект.РабочийУчасток; НоваяЗапись.Сотрудник = Строка.Сотрудник; НоваяЗапись.НомерБригады = Объект.НомерБригады; НоваяЗапись.Записать(); КонецЦикла; КонецЦикла; Сообщить("Расписание заполнено!"); КонецПроцедуры &НаКлиенте Процедура СоставБригадыМастерПриИзменении(Элемент) ЭтоМастер = Элементы.СоставБригады.ТекущиеДанные.Мастер; Если ЭтоМастер Тогда КоличествоМастеров = КоличествоМастеров + 1; Иначе КоличествоМастеров = КоличествоМастеров - 1; КонецЕсли; КонецПроцедурыСоздать возможность введения ограничений производственных участков. Для регистрации ограничений рабочих участков был использован регистр сведений, рис. 1.28, 1.29.
Рис. 1.28.
Рис. 1.29.У измерения Рабочий участок тип данных СправочникСсылка.РабочиеУчастка.
Реализовать алгоритм, который позволяет использовать участок еще раз, если требуемое количество лесопродукции меньше производительности за смену. Для фиксации данных о требуемой мощности участков за смену потребуется регистр накопления, рис. 1.30.
Рис. 1.30.Регистратором данных этого регистра будет документ Задание на смену, рис. 1.31.
Рис. 1.31.Алгоритм записи данных регистр делается через конструктор движения документа Задание на смену, рис. 1.32.
Рис. 1.32.Проверка ограничений делается в модуле объекта документа Задание на смену в обработчике ОбработкаПроведения, рис. 1.33.
Рис. 1.33.Полный программный код процедуры ОбработкаПроведения (вместе с алгоритмом, заданным конструктором движения).
1CПроцедура ОбработкаПроведения(Отказ, Режим) // регистр ПроизводительностьРабочихУчастковЗаСмену Движения.ПроизводительностьРабочихУчастковЗаСмену.Записывать = Истина; Движение = Движения.ПроизводительностьРабочихУчастковЗаСмену.Добавить(); Движение.Период = Дата; Движение.Смена = Смена; Движение.РабочийУчасток = РабочийУчасток; Движение.Производительность = Количество; Движения.ПроизводительностьРабочихУчастковЗаСмену.Записать(); Движения.ПроизводительностьРабочихУчастковЗаСмену.БлокироватьДляИзменения = Истина; Отбор1 = Новый Структура("РабочийУчасток", РабочийУчасток); МаксПроизводительность = РегистрыСведений.МаксимальнаяПроизводительностьРабочихУчастков.Получить(Отбор1).Производительность; Если МаксПроизводительность = 0 Тогда Сообщить("Не задана максимальная производственная мощность выбранного рабочего участка!" "Невозможно зарегистрировать задание на смену!"); Отказ = Истина; Возврат; КонецЕсли; Отбор2 = Новый Структура("РабочийУчасток,Смена", РабочийУчасток, Смена); ФактПроизводительность = РегистрыНакопления.ПроизводительностьРабочихУчастковЗаСмену.Обороты(,, Отбор2).Получить(0).Производительность; Остаток = МаксПроизводительность - ФактПроизводительность; Если Остаток < 0 Тогда Сообщить("На текущую смену уже достигнут предел использования выбранного участка!"); Отказ = Истина; КонецЕсли; КонецПроцедуры
Видеоразбор задачи: https://dzen.ru/video/watch/67a349e8d50dbe55bf479da5.
| Критерий | Балл |
|---|---|
| Функционал | |
| Создан объект для регистрации задания на смену | 3 |
| В задании на смену есть дата создания (за неверный формат минус 0,5) | 1 |
| В задании на смену есть информация о виде лесопродукции (за неверный формат минус 0,5) | 1 |
| В задании на смену есть информация о количестве лесопродукции (за неверный формат минус 0,5) | 1 |
| В задании на смену есть информация о смене, формат дата (за неверный формат минус 0,5) | 1 |
| В задании на смену есть информация о рабочем участке (за неверный формат минус 0,5) | 1 |
| В задании на смену есть многострочное поле для описания задания (за неверный формат минус 0,5) | 1 |
| Реализована проверка заполнения всех полей, кроме многострочного поля (за каждое пропущенное поле минус балл) | 5 |
| Реализован выбор участка из списка свободных на указанную дату (смену) | 5 |
| Создан рабочий стол/календарь, где отображаются свободные участки на определенную дату (смену) | 30 |
| Из рабочего стола/календаря можно создать задание на смену | 10 |
| Есть возможность заполнения ограничений для рабочих участков | 10 |
| При регистрации задания на смену реализована возможность проверки производственных ограничений; если количество лесопродукции за смену больше, чем производственные ограничения выбранной линии, необходимо вывести предупреждение | 20 |
| Если количество лесопродукции в задании на смену меньше чем производственное ограничение участка, то участок можно использовать в смену еще раз, при этом возможное количество будет равно производственному ограничению минус количество лесопродукции уже зарегистрированного задания на смену | 30 |
| Заполнение данными | |
| Созданы задания на смену на основании заказов на производство, проверяем, правильно ли выбраны участки, за каждое верное созданное задание — 2 балла | 12 |
| Введены ограничения для производственных участков (1 балл за каждое ограничение) | 9 |
| Итого (максимально): | 140 |
На лесозаводе работают разные бригады сотрудников. Сотрудники относятся к цехам (например, сотрудник лесопильного цеха может работать на любой лесопильной линии лесопильного цеха, но не может работать в сушильном комплексе). В каждой бригаде должен присутствовать сотрудник-мастер (это начальник бригады). На лесопильном заводе для бригад ежемесячно составляется расписание работы.
Требуется разработать механизм регистрации работы бригад лесопильного завода.
Сразу обращаем внимание на то, что работа бригад не связана с заданиями на смену. Задание на смену будет выдано той бригаде, которая работает на участке согласно расписанию.
- Создать новый раздел приложения Персонал, новые объекты из данного задания должны быть доступны в новом разделе.
Создать объекты для хранения информации:
- о видах бригад (бригада по распиловке, бригада по сушке, бригада по обработке, бригада паллетного цеха);
- о сотрудниках.
Создать объект для регистрации расписания работы бригады. В этом объекте должна быть отображена следующая информация:
- номер бригады;
- вид бригады;
- рабочий участок;
- дата начала работы бригады;
- сменный режим работы: смены 1/1 (день работают, день отдыхают) или 2/2 (два дня работают, два дня отдыхают);
- состав бригады (с указанием мастера).
В зависимости от выбранного сменного режима работы заполняются даты работы бригады в расписании. Приложение не должно разрешать зарегистрировать расписание работы бригады, если:
- в бригаде нет мастера;
- хотя бы один из указанных сотрудников входит в другую бригаду;
- хотя бы один из указанных сотрудников относится к другому цеху;
- на выбранный рабочий участок на указанные даты уже назначена другая бригада.
- Заполните информацию о видах бригад — четыре вида, по одному виду для каждого цеха.
- Заполните информацию о сотрудниках (не менее 12 записей).
Создайте расписание работы разных бригад:
- расписание работы бригады по распиловке с вариантом работы 1/1;
- расписание работы бригады по сушке с вариантом работы 1/1;
- расписание работы бригады по дообработке с вариантом работы 2/2.
Основной ход решения на базе 1С:Предприятие 8.
- Создать новую подсистему Персонал.
- Создать справочник Сотрудники со стандартными реквизитами.
- Создать справочник Виды бригад со стандартными реквизитами.
Создать объект Расписание работы бригады с реквизитами согласно заданию. На рис. 1.34 реализация этого с помощью регистра сведений (можно было использовать документ).
Рис. 1.34.В регистре будут храниться только измерения, рис. 1.35.
Рис. 1.35.Вид регистра для пользователя, рис. 1.36.
Рис. 1.36.Реализовать заполнение расписания на месяц при выборе варианта смены 1/1 день или 2/2 дня.
Заполнение расписания осуществляется с помощью соответствующей обработки — Заполнение расписания работы бригады. Ее внешний вид для пользователя на рис. 1.37.
Рис. 1.37.Форма обработки выглядит так, как на рис. 1.38.
Рис. 1.38.Приводим полный программный код модуля формы этой обработки.1C&НаКлиенте Процедура ЗаполнитьРасписание(Команда) РабочиеДаты = ПолучитьСписокРабочихДней(); Если ЕстьМастерВБригаде() И НЕ СотрудникиВходятВДругиеБригады() И НЕ СотрудникиОтносятсяКДругомуЦеху() И НЕ ПересеченияВРасписании() Тогда ЗаписатьДанныеВРасписание(); КонецЕсли; КонецПроцедуры &НаСервере Функция ПересеченияВРасписании() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Расписание.Дата КАК Дата, | Расписание.РабочийУчасток КАК РабочийУчасток, | Расписание.НомерБригады КАК НомерБригады |ИЗ | РегистрСведений.Расписание КАК Расписание |ГДЕ | Расписание.Дата В(&СписокДат) | И Расписание.РабочийУчасток = &РабочийУчасток | И Расписание.НомерБригады <> &НомерБригады | |СГРУППИРОВАТЬ ПО | Расписание.НомерБригады, | Расписание.Дата, | Расписание.РабочийУчасток"; Запрос.УстановитьПараметр("НомерБригады", Объект.НомерБригады); Запрос.УстановитьПараметр("РабочийУчасток", Объект.РабочийУчасток); Запрос.УстановитьПараметр("СписокДат", РабочиеДаты.ВыгрузитьЗначения()); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Возврат Ложь; КонецЕсли; ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить(СтрШаблон("%1 рабочий участок %2 уже занят бригадой %3." "Расписание не может быть сформировано.", Формат(ВыборкаДетальныеЗаписи.Дата,"ДЛФ=D"), ВыборкаДетальныеЗаписи.РабочийУчасток, ВыборкаДетальныеЗаписи.НомерБригады)); КонецЦикла; Возврат Истина; КонецФункции &НаСервере Функция СотрудникиОтносятсяКДругомуЦеху() НесоответствиеЦехов = Ложь; Для каждого Строка Из Объект.СоставБригады.Выгрузить(,"Сотрудник") Цикл Если Строка.Сотрудник.Владелец <> Объект.ВидБригады.Владелец Тогда Сообщить(СтрШаблон("Сотрудник %1 не может входить в состав бригады %2, поскольку он относится к цеху %3." "Расписание не может быть сформировано.", Строка.Сотрудник, Объект.ВидБригады, Строка.Сотрудник.Владелец)); НесоответствиеЦехов = Истина; КонецЕсли; Если Строка.Сотрудник.Владелец <> Объект.РабочийУчасток.Владелец Тогда Сообщить(СтрШаблон("Сотрудник %1 не может выполнять работы на участке %2, поскольку он относится к цеху %3." "Расписание не может быть сформировано.", Строка.Сотрудник, Объект.РабочийУчасток, Строка.Сотрудник.Владелец)); НесоответствиеЦехов = Истина; КонецЕсли; КонецЦикла; Возврат НесоответствиеЦехов; КонецФункции &НаСервере Функция СотрудникиВходятВДругиеБригады() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Расписание.Сотрудник КАК Сотрудник, | Расписание.НомерБригады КАК НомерБригады |ИЗ | РегистрСведений.Расписание КАК Расписание |ГДЕ | Расписание.Сотрудник В(&МассивСотрудников) | И Расписание.НомерБригады <> &НомерБригады | |СГРУППИРОВАТЬ ПО | Расписание.Сотрудник, | Расписание.НомерБригады"; Запрос.УстановитьПараметр("МассивСотрудников", Объект.СоставБригады.Выгрузить(, "Сотрудник")); Запрос.УстановитьПараметр("НомерБригады", Объект.НомерБригады); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Возврат Ложь; КонецЕсли; ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить(СтрШаблон("Сотрудник %1 значится в бригаде %2." "Расписание не может быть сформировано.", ВыборкаДетальныеЗаписи.Сотрудник, ВыборкаДетальныеЗаписи.НомерБригады)); КонецЦикла; Возврат Истина; КонецФункции &НаСервере Функция ЕстьМастерВБригаде() Если КоличествоМастеров = 0 Тогда Сообщить("В бригаде должен быть хотя бы один мастер!" "Расписание не может быть сформировано."); Возврат Ложь; ИначеЕсли КоличествоМастеров > 1 Тогда Сообщить("В бригаде не может быть более одного мастера!" "Расписание не может быть сформировано."); Возврат Ложь; КонецЕсли; Возврат Истина; КонецФункции &НаСервере Функция ПолучитьСписокРабочихДней() СписокДат = Новый СписокЗначений(); РабочийДень = Объект.ДатаНачалаРаботы; ПоследнийДень = ДобавитьМесяц(РабочийДень, 1); ЗавтраРабочийДень = Истина; Пока РабочийДень <= ПоследнийДень Цикл СписокДат.Добавить(РабочийДень); Если Объект.РежимРаботы = Перечисления.РежимыРаботы.ОдинЧерезОдин Тогда РабочийДень = РабочийДень + 2 * 86400; ИначеЕсли Объект.РежимРаботы = Перечисления.РежимыРаботы.ДваЧерезДва Тогда Если ЗавтраРабочийДень Тогда РабочийДень = РабочийДень + 86400; ЗавтраРабочийДень = Ложь; Иначе РабочийДень = РабочийДень + 3 * 86400; ЗавтраРабочийДень = Истина; КонецЕсли; КонецЕсли; КонецЦикла; Возврат СписокДат; КонецФункции &НаСервере Процедура ЗаписатьДанныеВРасписание() Для каждого РабочийДень Из РабочиеДаты Цикл Для каждого Строка Из Объект.СоставБригады Цикл НоваяЗапись = РегистрыСведений.Расписание.СоздатьМенеджерЗаписи(); НоваяЗапись.Дата = РабочийДень.Значение; НоваяЗапись.РабочийУчасток = Объект.РабочийУчасток; НоваяЗапись.Сотрудник = Строка.Сотрудник; НоваяЗапись.НомерБригады = Объект.НомерБригады; НоваяЗапись.Записать(); КонецЦикла; КонецЦикла; Сообщить("Расписание заполнено!"); КонецПроцедуры &НаКлиенте Процедура СоставБригадыМастерПриИзменении(Элемент) ЭтоМастер = Элементы.СоставБригады.ТекущиеДанные.Мастер; Если ЭтоМастер Тогда КоличествоМастеров = КоличествоМастеров + 1; Иначе КоличествоМастеров = КоличествоМастеров - 1; КонецЕсли; КонецПроцедуры
| Критерий | Балл |
|---|---|
| Функционал | |
| Создана новая подсистема Персонал | 1 |
| Создан объект для хранения информации о видах бригад | 1 |
| Объект для хранения информации о видах бригад помещен в подсистему Персонал | 1 |
| Создан объект для хранения информации о сотрудниках | 1 |
| Объект для хранения информации о сотрудниках помещен в подсистему Персонал | 1 |
| Создан объект для хранения информации о расписании работы бригады на месяц | 3 |
| Объект для хранения информации о расписании работы бригады на месяц помещен в подсистему Персонал | 1 |
| В расписании работы на месяц указан номер бригады, строка (за неверный формат минус 0,5) | 1 |
| В расписании работы бригады указан вид бригады (за неверный формат минус 0,5) | 1 |
| В расписании работы бригады указан рабочий участок (за неверный формат минус 0,5) | 1 |
| В расписании указана дата начала работы бригады (за неверный формат минус 0,5) | 1 |
| В расписании есть поле для указания варианта работы бригады с выбором одного из двух вариантов 1/1 или 2/2 | 2 |
| В расписании есть поле для указания состава бригады (состав выбирается из списка сотрудников) | 5 |
| В составе бригады есть возможность указания мастера (мастером можно назначить только одного сотрудника, если можно признак указать у нескольких убирается половина баллов) | 4 |
| В расписании есть поле для заполнения дат работы бригады (календарь работы бригады) | 6 |
| Календарь работы бригады заполняется автоматически в соответствии с датой начала работы бригады и в зависимости от выбранного варианта работы бригады | 15 |
| Реализована проверка заполнения мастера в составе бригады — без мастера расписание не регистрируется. | 6 |
| Реализована проверка пересечения сотрудников в разных бригадах (сотрудник входит только в одну бригаду) | 10 |
| Реализована проверка соответствия сотрудников цеху (если сотрудник работает в сушильном цехе, его нельзя включить в бригаду по распиловке) | 10 |
| Реализована проверка участка (на выбранный участок уже назначена другая бригада) | 10 |
| Заполнение данными | |
| Заполнена информация о четырех видах бригад (минус 0,5 за отсутствие одного вида) | 2 |
| Заполнить информацию о 12 сотрудниках (минус 0,5 за каждого незаполненного сотрудника) | 6 |
| Создать расписание бригады по распиловке с вариантом работы 1/1 | 3 |
| Создать расписание бригады по сушке с вариантом работы 1/1 | 3 |
| Создать расписание бригады по дообработке с вариантом работы 2/2 | 3 |
| Итого (максимально): | 100 |
Сотрудники должны иметь возможность ознакомиться со своим рабочим календарем — посмотреть расписание работ бригад.
Требуется разработать механизм составления расписания работы бригад лесопильного завода.
Выведите расписание работы бригад. В расписании должна отображаться информация:
- о днях расписания;
- о рабочих участках;
- о бригадах, назначенных на рабочие участки.
Просмотр расписания должен быть доступен в разделе приложения Персонал.
- Усложнение: реализовать возможность просмотра расписания по конкретному цеху.
- Усложнение: реализовать возможность просмотра расписания по конкретному сотруднику.
- Усложнение: реализовать в расписании вывод информации о задании на смену, которое выдано на рабочий участок.
Основной ход решения на базе 1С:Предприятие 8.
Создать отчет Расписание работы бригад Лесозавода. Вариант реализации отчета может быть любым, в соответствии со знаниями и навыками участника — можно использовать стандартный объект Отчет и Схему компоновки данных. Можно использовать объект Обработка с выводом информации в Макет — вариантов может быть много. Отчет был создан через специальный объект, который так и называется — Отчеты, рис. 1.39.
Рис. 1.39.В открывшемся окне схемы компоновки данных создадим новый набор данных при помощи запроса. Сам запрос создадим при помощи конструктора, рис. 1.40.
Рис. 1.40.Запрос будет пакетным, рис. 1.41.
Рис. 1.41.Таблицы первого пакета запроса, рис. 1.42.
Рис. 1.42.Второй пакет запроса, рис. 1.43.
Рис. 1.43.На закладке Условия второго пакета запроса зададим условие выбора данных, рис. 1.44.
Рис. 1.44.Третий пакет запроса, рис. 1.45.
Рис. 1.45.Поскольку тут две таблицы, нужно указать, как они взаимосвязаны (закладка Связи), рис. 1.46.
Рис. 1.46.Рис. 1.47.Нажимаем, ОК, запрос сформирован. Далее на закладке Настройки схемы компоновки данных нужно настроить сам отчет. Это также делается с помощью специального конструктора, рис. 1.47.
В отчет добавить отбор по цеху и сотруднику, делается также на закладке Настройки схемы компоновки данных, рис. 1.48.
Рис. 1.48.Итоговый вид отчета для пользователя, рис. 1.49.
Видеоразбор задачи: https://dzen.ru/video/watch/67a35775f0df3a28fc8abf9b.
Рис. 1.49.
| Критерий | Балл |
|---|---|
| Функционал | |
| Есть объект для вывода расписания работы бригад | 5 |
| Объект для вывода расписания помещен в раздел Персонал | 1 |
| В отчете можно указать период просмотра расписания | 5 |
| В отчете есть информация о датах внутри выбранного просмотра расписания | 5 |
| В отчете есть информация о рабочих участках | 5 |
| В отчете есть информация о бригадах, которые работают на дату (внутри выбранного периода) на рабочем участке соответственно расписанию каждой бригады | 10 |
| В расписании реализован отбор по цеху | 5 |
| Есть еще один вариант просмотра расписания — по конкретному сотруднику | 10 |
| В расписании отображается задание на смену, выданное на рабочий участок на дату | 10 |
| Внешний вид отчета — колонки и строки правильно отрегулированы по ширине и высоте | 7 |
| В отчете нет лишних символов, знаков, букв, внешний вид аккуратен | 7 |
| Итого (максимально): | 70 |




































