Имя: Пароль:
1C
1С v8
Выбор периода представленного месяцами
,
0 krasa_polina
 
11.04.13
13:53
Всем, доброго времени суток!
У созданного документа есть табличная часть, где хранится период для каждой записи. Для пользователя создана колонка не привязанная к данным.

При выборе из списка обращаюсь к процедуре в модуле РаботаСДиалогами:

Процедура НачалоВыбораИзСпискаПредставленияПериодаРегистрации(Элемент, СтандартнаяОбработка, ПериодРегистрации, ЭтаФорма, НачальноеЗначение = Неопределено) Экспорт

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

Все бы хорошо, период меняется и сохраняется, но! при двойном клике на ячейку в нее попадает последнее выбранное из списка значение, при выходе из ячейки, возвращается то что действительно записано. Не могу найти момент, когда значение меняется, ибо на ПриАктивацииЯчейки оно уже не верное.
Есть у кого какие мысли?
1 mikecool
 
11.04.13
14:00
выбрать тип колонки = СтандартныйПериод не будет выходом проще?
2 krasa_polina
 
11.04.13
14:02
Мне нужно чтобы был выпадающий список: Январь 2012, Февраль 2012 и т.д. такая вот красота нужна ) как проще варианты-то есть, а как именно так сделать ) на крайняк могу сама без модуля список формировать, но хочется разобраться откуда здесь такое волшебство )
3 krasa_polina
 
11.04.13
14:24
Задачка решилась, но как-то коряво %)

Процедура ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   
   Если Не ЗначениеЗаполнено(ДанныеСтроки.Дата) Тогда
       ДанныеСтроки.Дата = ТекущаяДата();
   КонецЕсли;
   
   ОформлениеСтроки.Ячейки.ПредставлениеПериодаРегистрации.Значение = РаботаСДиалогами.ПолучитьПредставлениеПериодаРегистрации(ДанныеСтроки.Дата);
   
КонецПроцедуры


Процедура ТоварыПередНачаломИзменения(Элемент, Отказ)
   
   Элемент.ТекущаяКолонка.ЭлементУправления.Значение = РаботаСДиалогами.ПолучитьПредставлениеПериодаРегистрации(Элемент.ТекущиеДанные.Дата);
   
КонецПроцедуры

Оформляю в одной процедуре, а пишу в другой.. красота )) у кого есть варианты лучше, можете предлагать, а пока пусть так работает ))
2 + 2 = 3.9999999999999999999999999999999...