Имя: Пароль:
1C
 
записать данные в объект.
0 userqwerty
 
04.11.19
16:08
Всем привет. Подскажите как записать данные в объект, Я в 1с относительно недавно, новенькая так сказать.
&НаКлиенте
Процедура ДалееНачало(Команда)
    
    Если Объект.СвойстваДвери.Количество() = 0 Тогда
        КонструктивПриИзмененииНаСервере();
        Если Объект.СвойстваДвери.Количество() = 0 Тогда
            Возврат;
        КонецЕсли;    
    КонецЕсли;    
    Элементы.Начало.Видимость = Ложь;
    
    ПолучитьБазу();
    
    ПолучитьНазваниеПоМатериалам();
    ДалееНачалоНаСервере();
    Объект.Записать();

КонецПроцедуры

&НаСервере
Процедура ДалееНачалоНаСервере()
    
    ДокОбъект = РеквизитФормыВЗначение("Объект");
    ДокОбъект.ШиринаПолотна = ДокОбъект.База.Ширина;
    ДокОбъект.ВысотаПолотна = ДокОбъект.База.Высота;

нужно записать ДокОбъект.ШиринаПолотна и ДокОбъект.ВысотаПолотна
в режиме отладки там значения есть, а в пользовательском там пусто.

    
    

КонецПроцедуры
1 hhhh
 
04.11.19
16:16
&НаСервере
Процедура ДалееНачалоНаСервере()
    
    Объект.ШиринаПолотна = Объект.База.Ширина;
    Объект.ВысотаПолотна = Объект.База.Высота;


КонецПроцедуры
2 userqwerty
 
04.11.19
16:26
(1) значения в отладке есть, а в пользовательском нет, мне кажется гдето надо обновить форму, или я не права:?
3 rozer76
 
04.11.19
16:28
(2) ну так обратно значениевреквизит формы надо еще
4 userqwerty
 
04.11.19
16:29
(3) это как?
5 rozer76
 
04.11.19
16:32
ЗначениеВРеквизитФормы(ДокОбъект, "Объект");
6 Фрэнки
 
04.11.19
16:33
(4) Когда пишется
ДокОбъект = РеквизитФормыВЗначение("Объект");

Это получается отдельный экземпляр, который возникает из данных, находившихся в реквизите "Объект"
Дальше с этими полученными данными происходят всякие манипуляции, а вот обратно (в клиентскую форму) ничего не передается.
7 userqwerty
 
04.11.19
16:36
(6) поняла, спасибо. и как в клиентскую форму потом получить с сервера?
8 rozer76
 
04.11.19
16:36
(4) да и не надо тебе так - см(1), как ты делаешь это когда надо метод объекта вызвать и надо сам объект получить
9 userqwerty
 
04.11.19
16:37
я же на клиенте вызвала процедуру , которая мне все считает на сервере.
10 userqwerty
 
04.11.19
16:39
(8) скажите пример, как должно быть, а то я уже как блондинка три часа перед компом сижу))
11 hhhh
 
04.11.19
16:40
(9) там всё автоматически, всё должно высветиться и так. Объект виден и на клиенте и на сервере. В этом вся и фишка.
12 hhhh
 
04.11.19
16:40
(10) как в (1)

и еще Объект.Записать();  выкинь.
13 userqwerty
 
04.11.19
16:42
(12) обновить отображение данных на клиенте надо?
14 hhhh
 
04.11.19
16:43
(13) не надо.
15 Фрэнки
 
04.11.19
16:45
(7) перед завершением процедуры на сервере сделать вызов из (5)
т.е. этот вызов работает парно


&НаСервере
Процедура ДалееНачалоНаСервере()
    
    ДокОбъект = РеквизитФормыВЗначение("Объект");
.
.
.
    ЗначениеВРеквизитФормы(ДокОбъект, "Объект");
КонецПроцедуры


з.ы. Лично я часто использую версию как в (1), т.к. нормальных развернутых причин, которые запрещают так делать, нигде не нашел.
16 RomanYS
 
04.11.19
17:00
(15) Таких причин нет и быть не может. Причины нужны как раз для конвертации данных формы в объект и обратно и они указаны (8).
17 rozer76
 
04.11.19
17:02
(10) "скажите, напишите за меня" так не правильно- нужно отличать когда тебе нужны данные ФОРМЫ на сервере а когда нужен ОБЪЕКТ. В данном случае тебе не нужен объект т.к. не нужны экспортные методы и вся обработка в форме
18 rozer76
 
04.11.19
17:06
Проще тебе заполнить что  РеквизитФормыВЗначение это как ПолучитьОбъект() но заполнить его не данныии из базы а данными формы.
19 userqwerty
 
04.11.19
17:34
Опять то же самое

&НаКлиенте
Процедура ДалееНачало(Команда)
    
    Если Объект.СвойстваДвери.Количество() = 0 Тогда
        КонструктивПриИзмененииНаСервере();
        Если Объект.СвойстваДвери.Количество() = 0 Тогда
            Возврат;
        КонецЕсли;    
    КонецЕсли;    
    Элементы.Начало.Видимость = Ложь;
    ПолучитьБазу();
    ПолучитьНазваниеПоМатериалам();
    ДалееНачалоНаСервере();
    
КонецПроцедуры

&НаСервере
Процедура ДалееНачалоНаСервере()
    
    ДокОбъект = РеквизитФормыВЗначение("Объект");
    ДокОбъект.ШиринаПолотна = ДокОбъект.База.Ширина;
    ДокОбъект.ВысотаПолотна = ДокОбъект.База.Высота;
   ЗначениеВРеквизитФормы(ДокОбъект, "Объект");

КонецПроцедуры

вот код, ДокОбъект.ШиринаПолотна и ДокОбъект.ВысотаПолотна данные при отладке есть, а в пользовательском режиме нет.
20 userqwerty
 
04.11.19
17:34
(18)
ДокОбъект.ШиринаПолотна = ЭтаФорма.Ширина?
21 Сияющий в темноте
 
04.11.19
17:37
обновить отображение данных?
22 userqwerty
 
04.11.19
17:57
(21) как?
23 userqwerty
 
04.11.19
17:58
ЭтаФорма.ОбновитьОтображениеДанных();? на клиенте не работает.
24 userqwerty
 
04.11.19
18:08
ДЖЕНТЛЬМЕНЫ??? ПОМОГИТЕ ПОЖАЛУЙСТА.
25 RomanYS
 
04.11.19
18:18
(24) сделай как в (1) и проверь, что элементы формы привязаны к данным
26 userqwerty
 
04.11.19
18:22
(25) проверила, привязаны, а дальше что делать то?(((
27 RomanYS
 
04.11.19
18:40
(26) конфигурация учебная? Выложи на файлопомойку
28 catena
 
05.11.19
05:49
(26)А (1) игнорируется намеренно или есть какие-то религиозные причины?
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой