Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Регистр Сведений Чтение Запись значений с формы

Регистр Сведений Чтение Запись значений  с формы
Я
   AkimovEv
 
01.05.19 - 14:35
Курил интернет и так ничего не заработало. всё вроде вокруг да около и никак.
есть регистр сведений ев_ЭтапыРаботПоИнжКоммуникациям   непериодический и независимый

в нём есть ФормаЗаписи и там поля Договор - ссылка на договорконтрагента
ЭлементыФормы.ЭлектрикаНаружняя;
ЭлементыФормы.ЭлектрикаВнутренняя1;
ЭлементыФормы.ЭлектрикаВнутренняя2;
ЭлементыФормы.Септик;
ЭлементыФормы.Отопление;
ЭлементыФормы.ВодоснабжениеКанализация;

я вызываю эту форму из другой формы ОткрытьМодально()
меняю галочки и потом мне надо записать измененное состояние этих галок. Уникальность записи происходит по договору.
постонно ругается на то что такая запись уже есть.

мой код:
в форме регистра
Процедура ПередЗаписью(Отказ)
    //запись изменений в регистр
    ТекЗапись = РегистрыСведений.ев_ЭтапыРаботПоИнжКоммуникациям.СоздатьМенеджерЗаписи();
    
    ТекЗапись.ЭлектрикаНаружняя = ЭлементыФормы.ЭлектрикаНаружняя;
    ТекЗапись.ЭлектрикаВнутренняя1 = ЭлементыФормы.ЭлектрикаВнутренняя1;
    ТекЗапись.ЭлектрикаВнутренняя2 = ЭлементыФормы.ЭлектрикаВнутренняя2;
    ТекЗапись.Септик = ЭлементыФормы.Септик;
    ТекЗапись.Отопление = ЭлементыФормы.Отопление;
    ТекЗапись.ВодоснабжениеКанализация = ЭлементыФормы.ВодоснабжениеКанализация;
    
    Попытка
        ТекЗапись.Записать();
    Исключение
    КонецПопытки;        //конец записи в регистр
КонецПроцедуры

Процедура ПриЗаписи(Отказ)
    ТекЗапись = РегистрыСведений.ев_ЭтапыРаботПоИнжКоммуникациям.СоздатьМенеджерЗаписи();
    
    ТекЗапись.ЭлектрикаНаружняя = ЭлементыФормы.ЭлектрикаНаружняя;
    ТекЗапись.ЭлектрикаВнутренняя1 = ЭлементыФормы.ЭлектрикаВнутренняя1;
    ТекЗапись.ЭлектрикаВнутренняя2 = ЭлементыФормы.ЭлектрикаВнутренняя2;
    ТекЗапись.Септик = ЭлементыФормы.Септик;
    ТекЗапись.Отопление = ЭлементыФормы.Отопление;
    ТекЗапись.ВодоснабжениеКанализация = ЭлементыФормы.ВодоснабжениеКанализация;
    ТекЗапись.Записать();
    
КонецПроцедуры


никак не работает :(
считывание изначального состояния записи в регистре я елаю запросом. там всё пашет
 
 
   AkimovEv
 
1 - 01.05.19 - 14:36
не понятно вообще где писать код записи в регистр. в форме документа откуда вызов происходит или в форме регистра
   PuhUfa
 
2 - 01.05.19 - 14:47
Так ты форму то небось открываешь для новой записи, а не существующей. Вот тебе и ругается
   AkimovEv
 
3 - 01.05.19 - 15:03
для новой всё работает и записывает.
мне надо открыть для существующей записи по измерению Договор
   D_E_S_131
 
4 - 01.05.19 - 15:46
(3) А что-то в коде у Вас измерение "Договор" нигде и не упоминается.
   AkimovEv
 
5 - 01.05.19 - 17:02
Странно, но заработало :)

//существующая запись 

Ключ = Новый Структура();
Ключ.Вставить("Договор", Расшифровка.ЗаказПокупателя.ДоговорКонтрагента);

Выборка = РегистрыСведений.ев_ЭтапыРаботПоИнжКоммуникациям.Выбрать(Ключ);
Если выборка.Следующий() Тогда
Запись=  Выборка.ПолучитьМенеджерЗаписи();
Запись.Прочитать();
ФормаЗаписи = Запись.ПолучитьФорму("ФормаЗаписи");
ФормаЗаписи.Открыть();
   AkimovEv
 
6 - 01.05.19 - 17:05
как я понял обязательно надо сначала Прочитать() иначе доступ к записи в регистре не открывается вообще. типа режим просмотр.
после прочитать() можно с записью делать всё что хочешь
   zehn
 
7 - 01.05.19 - 17:55
(0) > в нём есть ФормаЗаписи и там поля Договор - ссылка на договорконтрагента

В форме записи регистра сведений есть основной реквизит типа РегистрСведенийМенеджерЗаписи. Который очень хорошо читается и пишется платформенно.
Или ты наколхозил что-то своеобразное?
   AkimovEv
 
8 - 02.05.19 - 08:02
(7) делал  через менеджерЗаписи....программа постоянно ругалась, что такая запись уже есть!
   hhhh
 
9 - 02.05.19 - 09:07
(8) потому что пустой договор ты туда передавал

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.