8.х Ввод месяца и года на форме

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Neon_tmn, 2 ноя 2010.

  1. TopicStarter Overlay
    Neon_tmn
    Offline

    Neon_tmn Опытный в 1С

    Регистрация:
    7 окт 2009
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте. Не могу понять как сделать выбор месяца и года без числа.
    то есть например так "Январь 2010".
    Мне понравилось как сделано в ЗиУП 8.1. в табеле учета рабочего времени, но там поппутно куча функций, когда копирую себе на обработку этот элемент ввода, то появляются разные ошибки, одно не найдено, другое не найдено, а там еще взаимосвязь с колонками табеля идет. Помогите выделить только то что нужно, мне не обязательно как в табеле учета рабочего времени, мне главное выделить только месяц и год, день вообще не нужно показывать.
    За пример буду очень благодарен.
  2. UnNone
    Offline

    UnNone Опытный в 1С

    Регистрация:
    21 мар 2007
    Сообщения:
    148
    Симпатии:
    0
    Баллы:
    26
    Получим что-то по типу такого:
    На форме создаем полеввода, строкового значение, с галочками на кнопке регулирования и выбора.
    Код:
    Перем ТекЗначение;
    
    Процедура ПриОткрытии()
    ТекЗначение = текущаядата();
    КонецПроцедуры
    
    Процедура ПолеВвода10НачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
    ВыборПериода(Элемент, СтандартнаяОбработка, ТекЗначение);
    КонецПроцедуры
    
    Процедура ВыборПериода(Элемент, СтандартнаяОбработка, ПериодРегистрации)
    
    СтандартнаяОбработка = ложь;
    НачальноеЗначение = ПериодРегистрации;
    
    СписокВыбора = Новый СписокЗначений;
    НачалоТекущегоГода = НачалоГода(НачальноеЗначение);
    НачалоПрошлогоГода = НачалоГода(НачалоТекущегоГода - 1);
    СписокВыбора.Добавить(НачалоПрошлогоГода, (Формат(НачалоПрошлогоГода, "ДФ='yyyy'") + "..."));
    НачалоМесяцаЗаполнения = НачалоТекущегоГода;
    ЭлементПоУмолчанию = Неопределено;
    Для а = 1 По 12 Цикл
    ДобавленныйЭлемент = СписокВыбора.Добавить(НачалоМесяцаЗаполнения, ПолучитьПредставлениеПериодаРегистрации(НачалоМесяцаЗаполнения));
    Если НачальноеЗначение = НачалоМесяцаЗаполнения Тогда
    ЭлементПоУмолчанию = ДобавленныйЭлемент;
    КонецЕсли; 
    НачалоМесяцаЗаполнения = ДобавитьМесяц(НачалоМесяцаЗаполнения, 1);
    КонецЦикла;
    НачалоСледующегоГода = КонецГода(НачалоТекущегоГода) + 1;
    СписокВыбора.Добавить(НачалоСледующегоГода, (Формат(НачалоСледующегоГода, "ДФ='yyyy'") + "..."));
    
    ВыбранныйЭлемент = ВыбратьИзСписка(СписокВыбора, Элемент, ЭлементПоУмолчанию);
    
    Если ВыбранныйЭлемент = Неопределено Тогда
    Возврат;
    ИначеЕсли Год(ВыбранныйЭлемент.Значение) <> Год(НачальноеЗначение) Тогда
    ВыборПериода(Элемент, СтандартнаяОбработка, ВыбранныйЭлемент.Значение);
    Возврат;
    КонецЕсли;
    элемент.Значение = ВыбранныйЭлемент.представление;
    ТекЗначение = ВыбранныйЭлемент.значение;
    Конецпроцедуры
    
    Функция ПолучитьПредставлениеПериодаРегистрации(ПериодРегистрации)
    Возврат Формат(ПериодРегистрации, "ДФ='MMMM yyyy'");
    КонецФункции
    
    Процедура ПолеВвода10Регулирование(Элемент, Направление, СтандартнаяОбработка)
    // Вставить содержимое обработчика.
    СтандартнаяОбработка = Ложь;
    
    Если Направление = 1 Тогда
    ПериодРегистрации = КонецМесяца(ТекЗначение) + 1;
    ИначеЕсли Направление = -1 Тогда
    ПериодРегистрации = НачалоМесяца(ТекЗначение - 1);
    КонецЕсли;
    элемент.Значение = ПолучитьПредставлениеПериодаРегистрации(ПериодРегистрации);
    ТекЗначение = ПериодРегистрации;
    КонецПроцедуры
    
    
  3. TopicStarter Overlay
    Neon_tmn
    Offline

    Neon_tmn Опытный в 1С

    Регистрация:
    7 окт 2009
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    Благодарю. Работает как кремлевские часы.

Поделиться этой страницей