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