Нагуглил решение на этом сайте, но оно было под УФ, и получение именно даты из поля выбора на форме реализовано было как-то не по мне, слишком много кода. Я так и не разобрался 🙂
Переделал по своему и выкладываю сюда вам, в надежде заработать немного поинтов 🙂
Не знаю, нужно в таком случае тут указывать ссылку или нет, но укажу.. http://infostart.ru/public/167549/
Чтобы сделать такой выпадающий список, нужно добавить реквизит с типом значения — «Дата»
Но на форму не добавляйте его при помощи визарда, так как он добавит вам «Поле ввода», а просто сами вручную добавьте на форму элемент — «Поле выбора».
…и привяжите его к вашему реквизиту.
Сам список мы будем заполнять при открытии формы, а вот реализацю смены года будем делать в момент обработки выбора.
Итак, событие мы привязали к процедуре в модуле формы. Сам список формируется следующей процедурой:
Процедура СформироватьСписокВыбораМесяца(Знач Год)
Год = Число(Год);
СписокВыбора = ЭлементыФормы.Месяц.СписокВыбора;
СписокВыбора.Очистить();
//Формирование СЗ
СписокВыбора.Добавить(Формат(Год-1, "ЧГ=0"), Формат(Год-1, "ЧГ=0"));
Для М = 1 По 12 Цикл
СформДата = Дата(Год, М, 1);
Наим = Формат(СформДата, "ДФ='ММММ гггг""г.""'");
СписокВыбора.Добавить(СформДата, Наим);
КонецЦикла;
СписокВыбора.Добавить(Формат(Год+1, "ЧГ=0"), Формат(Год+1, "ЧГ=0"));
КонецПроцедуры
Формирование списка мы будем вызывать из процедуры «При открытии», чтобы список сразу был заполнен, и текущий месяц был уже выбран..
Процедура ПриОткрытии()
СформироватьСписокВыбораМесяца(Год(ТекущаяДата()));
Месяц = ЭлементыФормы.Месяц.СписокВыбора[Месяц(ТекущаяДата())].Значение;
КонецПроцедуры
И так-же будем формировать список заного каждый раз, когда переходим на другой год в момент выбора
Процедура МесяцОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Пока СтрДлина(ВыбранноеЗначение) = 4 Цикл
СформироватьСписокВыбораМесяца(?(ТипЗнч(ВыбранноеЗначение) = Тип("ЭлементСпискаЗначений"),ВыбранноеЗначение.Представление,ВыбранноеЗначение));
ВыбранноеЗначение = ЭтаФорма.ВыбратьИзСписка(Элемент.СписокВыбора, Элемент);
КонецЦикла;
ВыбранноеЗначение = ?(ТипЗнч(ВыбранноеЗначение) = Тип("ЭлементСпискаЗначений"),ВыбранноеЗначение.Значение,ВыбранноеЗначение);
КонецПроцедуры
Не нужно больше ничего выдумывать, в реквизите — «Месяц» у нас уже хранится дата начала выбранного месяца 🙂
Ну в общем-то и всё 🙂 Надеюсь не сильно утомил.. Может, кому-нибудь, да помогу #k8SjZc9Dxk_______#k8SjZc9Dxk
Нужно было заглянуть в типовые конфигурации(ЗУП,УПП1.3), поискать реквизит «ПериодРегистрации».
Велосипед знатный.
А как заглянуть? Они денег стоят так-то..
В ЗУПе 2.5 раздел «процедуры и функции для обеспечения ввода даты как месяца» модуля «работа с диалогами». На других конфигурацих скорее всего примерно также, как написали выше ищите ПериодРегистрации)
Реквизит ПериодРегистрации — тип Дата. Поле ввода — тип Строка
Если коротко и вырезать лишнее будет примерно:
Показать
Тут реализовано изменение стрелочками, а не списком, да и вручную можно ввести. Как по мне весьма удобней, чем крутить длинный список.
PS. Халявы не будет! Ваш покорный слуга Тёмный 🙂
А мне нравится, даже если и «велосипед». Типовые решения хороши, но иногда полезно написать что то и самому оригинальное.
Есть варианты и получше. В том числе и на infostart’е
Добрый день,
вы пишите
а как получить эту дату начала?
разобралась спасибо.
спасибо. пригодился Ваш «Велосипед» 🙂
(7)Ой спасибо 🙂 Приятно слышать 🙂
Надо будет ещё заняться.. а то делаешь порой по работе велосипедов много разных и мопедов, а выкладывать лень 🙂