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

Записать данные в тч из формы ввода данных

Записать данные в тч из формы ввода данных
Я
   lg2marvel
 
26.07.19 - 16:24
Добрый день!
Нужно редактирование табличной части сделать в форме документа.
Открываю форму: ОткрытьФорму("Документ._КЕ_ЖурналУчетаРабочегоВремени.Форма.ФормаРедактированиеДанныхУчетаВремениЗаДень", П, ЭтотОбъект,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ДеньРедактирования = Параметры.Дата;
    НомерСтроки = Параметры.НомерСтроки;
    Ссылка = Параметры.Ссылка;

В форме заполняю реквизиты формы, теперь нужно записать изменения в табличную часть. И тут возникают проблемы. Я пытаюсь напрямую записать в Объект
Ссылка.ДанныеОВремени[НомерСтроки]["ВремяНачала"+НомерДня] = Дата(Год(ДеньРедактирования),Месяц(ДеньРедактирования),День(ДеньРедактирования),
            Час(ВремяНачала),Минута(ВремяНачала),Секунда(ВремяНачала));

Но выдает ошибку Поле объекта недоступно для записи (ВремяНачала2)

Как правильно сохранить значения?
 
 
   hhhh
 
1 - 26.07.19 - 16:28
(0) так вы "Ссылка." уберите. в ссылку не пишут, только в объект
   lg2marvel
 
2 - 26.07.19 - 16:34
(1) Я пытаюсь записать из общей формы. Ссылка есть Объект:
П.Вставить("Ссылка",Объект.Ссылка);
 
Если уберу ссылка, то Переменная не определена (ДанныеОВремени)
   hhhh
 
3 - 26.07.19 - 16:39
(2) Объект.Ссылка это не объект. Это ссылка. А в ссылку записать невозможно. делайте тогда Ссылка.ПолучитьОбъект()
   lg2marvel
 
4 - 26.07.19 - 16:50
(3) Да, действительно, в ссылку нельзя записывать.
Но, блин, почему-то не записывает. Отрабатывает без ошибок, но в тч не записывает

&НаКлиенте
Процедура Ок(Команда)
    ЗаписатьДанные();
    ЭтаФорма.Закрыть();
КонецПроцедуры

&НаСервере
Процедура ЗаписатьДанные()
    Если ЗначениеЗаполнено(ВремяНачала) И ЗначениеЗаполнено(ВремяКонца) Тогда    
        Ссылка.ПолучитьОбъект().ДанныеОВремени[НомерСтроки]["ВремяНачала"+НомерДня] = Дата(Год(ДеньРедактирования),Месяц(ДеньРедактирования),День(ДеньРедактирования),
            Час(ВремяНачала),Минута(ВремяНачала),Секунда(ВремяНачала));
        Ссылка.ПолучитьОбъект().ДанныеОВремени[НомерСтроки]["ВремяОкончания"+НомерДня] = Дата(Год(ДеньРедактирования),Месяц(ДеньРедактирования),День(ДеньРедактирования),
            Час(ВремяКонца),Минута(ВремяКонца),Секунда(ВремяКонца));
    
    Иначе
        Сообщить("Необходимо заполнить время начала работы и время окончания!");
    КонецЕсли;    
КонецПроцедуры
   hhhh
 
5 - 26.07.19 - 16:53
(4) тут у вас полный бардак пока, получаете 2 объекта зачем-то. И ни один из них не записываете обратно.
   lg2marvel
 
6 - 26.07.19 - 17:07
(5)
&НаСервере
Процедура ЗаписатьДанные()
    ДокументОбъект = Ссылка.ПолучитьОбъект();
    Если ЗначениеЗаполнено(ВремяНачала) И ЗначениеЗаполнено(ВремяКонца) Тогда    
        ДокументОбъект.ДанныеОВремени[НомерСтроки]["ВремяНачала"+НомерДня] = Дата(Год(ДеньРедактирования),Месяц(ДеньРедактирования),День(ДеньРедактирования),
            Час(ВремяНачала),Минута(ВремяНачала),Секунда(ВремяНачала));
        ДокументОбъект.ДанныеОВремени[НомерСтроки]["ВремяОкончания"+НомерДня] = Дата(Год(ДеньРедактирования),Месяц(ДеньРедактирования),День(ДеньРедактирования),
            Час(ВремяКонца),Минута(ВремяКонца),Секунда(ВремяКонца));
    
    Иначе
        Сообщить("Необходимо заполнить время начала работы и время окончания!");
    КонецЕсли;    
    ДокументОбъект.Записать();
КонецПроцедуры    

Так сохраняет значения, но что-то подстказывает что это в корне не правильно, так как при попытке провести документ выдает ошибку что Данные были изменены или удалены другим пользователем.
   lg2marvel
 
7 - 26.07.19 - 17:09
Можно ли при закрытии формы перенести данные в реквизит как будто реквизит изменился руками? и при несохранении документа соотетвтсвенно документ должен остаться в первоначальном виде.
   lg2marvel
 
8 - 26.07.19 - 17:29
По сути хотелось бы передать структурой данные как при открытии формы,ю только при ее закрытии
   lg2marvel
 
9 - 26.07.19 - 17:47
Ага, кажется нашел, при закрытии формы сделать оповестить и передать в параметре значения.
https://forum.infostart.ru/forum9/topic75180/

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