Для начала создаем документ, в котором будут храниться наши заказы.
В моём случае это "График спецтехники".
Чтобы нам создать такой же вид, как на скриншоте, мы будем использовать форму списка.
Нужно понять следующее:
Календарь слева нужен для удобного интерактивного взаимодействия, проще говоря, нажали на число и в среднем списке выводятся заказы на этот день. А правый динамический список необходим для отображения всех заказов.
Поэтому в средний список мы выводим то, что находится в объектах правого списка. (Почему нельзя было вывести только один список? Мне показалось такое решение просто симпатичнее и нагляднее).
Список реквизитов, которые находятся в документе:
Пояснение:
ДатаДень - (в принципе можно, я думаю, было прицепить к стандартному реквизиту, но решил оставить эту для простоты разработки).
Переходим в форму списка. Нам необходимо добавить реквизит формы Календарь (тип: дата), и средний список (динамический)
Располагаем их в таком же порядке и теперь настроим их так, чтобы мы получали необходимую информацию.
1. Календарь, чтобы он принял такую форму, нужно открыть палитру свойств и задать Поле календаря.
2. График. Так как это динамический список, нужно задать ему произвольный запрос
ВЫБРАТЬ
ГрафикРаботыТехники.Техника КАК Техника,
ГрафикРаботыТехники.ВремяС КАК ВремяС,
ГрафикРаботыТехники.ВремяПо КАК ВремяПо,
ГрафикРаботыТехники.ДатаДень КАК ДатаДень,
ГрафикРаботыТехники.Клиент КАК Клиент,
ГрафикРаботыТехники.Комментарий КАК Комментарий,
ГрафикРаботыТехники.ВыполнениеЗаказа КАК ВыполнениеЗаказа
ИЗ
Документ.ГрафикРаботыТехники КАК ГрафикРаботыТехники
ГДЕ
ГрафикРаботыТехники.ДатаДень = &Календарь
Также нам нужно указать основную таблицу "Документ.ГрафикРаботыТехники", чтобы строки заказов на день были кликабельны.
Чтобы у нас отрабатывал код по нажатию на календарь и дата при открытии была текущая, необходимо в модуле формы сделать следующее:
&НаКлиенте
Процедура КалендарьПриАктивизацииДаты(Элемент)
График.Параметры.УстановитьЗначениеПараметра("Календарь",Календарь);
//Передача даты в форму эдемента
ПередачаДатыСтр = Новый Структура;
ПередачаДатыСтр.Вставить("ТекДатаКалендаря",Календарь);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Календарь = ТекущаяДата();
График.Параметры.УстановитьЗначениеПараметра("Календарь",Календарь);
КонецПроцедуры
Теперь при нажатии на дату слева в колонке посередине будет наш заказ на данную дату. В списке справа можно также добавить условное редактирование по цвету, чтобы выделялись выполненные заказы.
P.S.
Это моя первая статья в таком роде, возможно, я что-то не учёл, поэтому буду рад вашим комментариям, особенно благодарственным, если смог кому-нибудь помочь. Спасибо за внимание!