Вход | Регистрация
 
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/

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