Итак...поступила мне задача - создать документ где можно выставить явку или не явку человека на рабочее место, делать особо было нечего и я решил не глядя на стандартные ЗУПы и т.д. написать все с нуля.
Во первых потому что в стандартных конфигах пока разберешься голову сломаешь, а во вторых стало интересно как это можно реализовать.
Итак ближе к делу -
1) Создал документ и накидал в него реквизиты - все на скринах.
2)Создал форму дока и вот тут стало интересно - необходимо было вывести в заголовке столбца день недели и дату в зависимости от текущего месяца, да и еще раскрасить выходные красненьким.
Сделал так -
&НаСервере
Процедура РасставитьДаты(ДатаДока)
СброситьВидимостьИЦвета(); // Скрываем все колонки и делаем в всех серый цвет
Год = Формат(Год(ДатаДока),"ЧГ="); // Выбираем год
Месяц = Формат(Месяц(ДатаДока),"ЧЦ=2; ЧВН="); // Выбираем месяц
Для Сч = 1 По День(КонецМесяца(ДатаДока)) Цикл //Запускаем цикл по количество дней в месяце
Число = Формат(СЧ,"ЧЦ=2; ЧВН="); // выбираем число
ДатаДня = Дата(""+Год+""+Месяц+""+Число); // получаем дату
ДеньНедели = Перечисления.ДниНедели.Получить(ДеньНедели(ДатаДня)-1); // получаем день недели
НазваниеРеквизита = "ДоскаДень" + СЧ; // Получаем имя столбца
Элементы[НазваниеРеквизита].Заголовок = ""+ ДеньНедели + "" + Символы.ПС + Число; //устанавливаем название столбца
Элементы[НазваниеРеквизита].Видимость = Истина;// делаем столбец видимым
Если ДеньНедели(ДатаДня) = 6 Или ДеньНедели(ДатаДня) = 7 Тогда // раскрашиваем выходные
Элементы[НазваниеРеквизита].ЦветФона = WebЦвета.Красный;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура СброситьВидимостьИЦвета()
Для Сч = 1 По 31 Цикл
НазваниеРеквизита = "ДоскаДень" + СЧ;
Элементы[НазваниеРеквизита].Видимость = Ложь;
Элементы[НазваниеРеквизита].ЦветФона = WebЦвета.Серый;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
РасставитьДаты(Объект.Дата);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если Не Параметры.Ключ.Пустая() Тогда
РасставитьДаты(Объект.Дата);
Иначе
РасставитьДаты(ТекущаяДата());
КонецЕсли;
КонецПроцедуры
Приведен полный код обработки.