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

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

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

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

Как правильно сохранить значения?
1 hhhh
 
26.07.19
16:28
(0) так вы "Ссылка." уберите. в ссылку не пишут, только в объект
2 lg2marvel
 
26.07.19
16:34
(1) Я пытаюсь записать из общей формы. Ссылка есть Объект:
П.Вставить("Ссылка",Объект.Ссылка);

Если уберу ссылка, то Переменная не определена (ДанныеОВремени)
3 hhhh
 
26.07.19
16:39
(2) Объект.Ссылка это не объект. Это ссылка. А в ссылку записать невозможно. делайте тогда Ссылка.ПолучитьОбъект()
4 lg2marvel
 
26.07.19
16:50
(3) Да, действительно, в ссылку нельзя записывать.
Но, блин, почему-то не записывает. Отрабатывает без ошибок, но в тч не записывает

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

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

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