Добрый день.
Не понимаю как записать в регистр сведений запись, работая с ней через МенеджерЗаписи добавленый на форму.
Есть 3 регистра сведений и им на форме соответствуют шапка и 2 табличных части:
НастройкиРасчета - шапка
УсловияРасчета - условия расчета
ШкалаРасчета - шапка расчета
(скриншот 1);
Есть обработка с помощью которой заносится информация о поставщике, периодичности и тд и привязанных к этой записи условия расчета по определенным контрагентам и шкала расчета. Табличные части "условия" и "шкала" тоже записываются в регистры сведений, но с ними проблем нет, они записываются как наборы.
Но шапка этой формы должна записываться как отдельная запись.
При команде "записать", я иду на сервер и записываю регистры. Для каждого реквизита формы есть алгоритм
Если ЗначениеЗаполнено(ПериодичностьРасчета) Тогда
НастройкиРасчетаSC.ПериодичностьРасчета = ПериодичностьРасчета;
Иначе
НастройкиРасчетаSC.ПериодичностьРасчета = Перечисления.Периодичность.ПустаяСсылка();
КонецЕсли;
и так далее для каждого элемента шапки формы.
Запись шапки таким образом не происходит. Подсмотрел такое решение в этой теме.
Работаю с РС в таком ключе первый раз. Если глянуть тип МенеджераЗаписи отладчиком, то тип у него "ДанныеФормыСтруктура" (скриншот 2).
Решил так:
При открытии формы, создается менеджер записи и из запроса в него записываются данные и находится запись, которая записывается в реквизит формы:
ВыборкаНастройкиРасчетаSC = Результаты[4].Выбрать();
МенеджерЗаписи = РегистрыСведений.НастройкиРасчетаSC.СоздатьМенеджерЗаписи();
Если ВыборкаНастройкиРасчетаSC.Следующий() Тогда
ЗаполнитьЗначенияСвойств(МенеджерЗаписи, ВыборкаНастройкиРасчетаSC);
МенеджерЗаписи.Прочитать();
ЗначениеВРеквизитФормы(МенеджерЗаписи, "НастройкиРасчетаSC");
КонецЕсли;
Решил так:
При открытии формы, создается менеджер записи и из запроса в него записываются данные и находится запись, которая записывается в реквизит формы:
ВыборкаНастройкиРасчетаSC = Результаты[4].Выбрать();
МенеджерЗаписи = РегистрыСведений.НастройкиРасчетаSC.СоздатьМенеджерЗаписи();
Если ВыборкаНастройкиРасчетаSC.Следующий() Тогда
ЗаполнитьЗначенияСвойств(МенеджерЗаписи, ВыборкаНастройкиРасчетаSC);
МенеджерЗаписи.Прочитать();
ЗначениеВРеквизитФормы(МенеджерЗаписи, "НастройкиРасчетаSC");
КонецЕсли;