Имя: Пароль:
1C
 
Установка значения в модуле формы и получение его в модуле объекта
0 NIGHTHUNTER
 
15.09.21
09:04
Внешний отчет. Устанавливаю значение в модуле формы, и значение реквизита формы и значение реквизита объекта.

Но потом в модуле объекта, в этом реквизите нет значения. Как правильно его там получить?

Установка в модуле формы:
    ЭтотОбъект.ИмяМакетаРеквФ    = РезультатВыбора.Значение;
    //
    ВнешнийОтчет                 = РеквизитФормыВЗначение("Отчет");    
    ВнешнийОтчет.ИмяМакетаРеквОб = РезультатВыбора.Значение;

Получение в модуле объекта:

Как получить эти значения в модуле объекта внешнего отчета?
1 NIGHTHUNTER
 
15.09.21
09:05
В модуле объекта,

ЭтотОбъект.ИмяМакетаРеквОб

пусто, хотя устанавливалось в модуле формы.
2 Ненавижу 1С
 
гуру
15.09.21
09:11
ЭтотОбъект.Отчет.ИмяМакетаРеквФ    = РезультатВыбора.Значение;
    //
    ВнешнийОтчет                 = РеквизитФормыВЗначение("Отчет");    
    ПолучаемоеЗначение = ВнешнийОтчет.ИмяМакетаРеквОб;
3 acht
 
15.09.21
09:20
(2) ИмяМакетаРеквФ, ИмяМакетаРеквОб - какая, в сущности, разница. Сейчас мы его взорвем =)

В форме на сервере:
ВнешнийОтчет = РеквизитФормыВЗначение("Отчет");    
ВнешнийОтчет.МоеЗначение = РезультатВыбора.Значение;
ВнешнийОтчет.МойМетод();

В модуле отчета:
Перем МоеЗначение Экспорт
Процедура МойМетод()
    Сообщить(МоеЗначение);
КонецПроцедуры
4 NIGHTHUNTER
 
15.09.21
09:25
(2) В модуле объекта там пусто.

То есть при открытии формы. В модуле формы там устанавливается значение. А потом при нажатии кнопки в открытой уже форме,
в модуле объекта, в этом значении пусто.
5 Ненавижу 1С
 
гуру
15.09.21
09:35
(4) короче, надо заполнять реквизит именно объекта
(3) не заметил, что у него они называются по разному
6 acht
 
15.09.21
09:37
7 NIGHTHUNTER
 
15.09.21
09:46
вот, провожу тест.
При открытии внешнего отчета, в модуле формы, -

http://joxi.ru/KAx3R4VTvwYQL2

потом в модуле объекта, внешнего отчета там пусто (((

http://joxi.ru/YmEbex8CBLezg2
8 NIGHTHUNTER
 
15.09.21
09:48
(7) ну то есть ЭтотОбъект.ИмяМакетаРеквФ - там не доступен, а в ЭтотОбъект.ИмяМакетаРеквОб - пусто
9 NIGHTHUNTER
 
15.09.21
09:50
Если тут все заполнилось

http://joxi.ru/KAx3R4VTvwYQL2

Как это получить в модуле объекта?
10 acht
 
15.09.21
09:52
(9) Об этом тебе расскажут в части "Взаимодействие модуля формы с модулями объектов и менеджеров" курса.
11 ДенисЧ
 
15.09.21
09:52
Вот смотри. Ты реквизитФормыВЗначение() сделал, данные написал. А обратно объект кто будет пихать? Откуда взял, туда и положи, раз уж так перанусно ходишь...
12 NIGHTHUNTER
 
15.09.21
09:53
(2) ЭтотОбъект.Отчет - тут вообще нет никаких реквизитов
13 NIGHTHUNTER
 
15.09.21
09:54
(11) Рк, сейчас попробую.
14 NIGHTHUNTER
 
15.09.21
09:56
(11) Так ли будет?

    ВнешнийОтчет                 = РеквизитФормыВЗначение("Отчет");    
    ВнешнийОтчет.ИмяМакетаРеквОб = РезультатВыбора.Значение;
    ЗначениеВРеквизитФормы(ВнешнийОтчет.ИмяМакетаРеквОб, "ИмяМакетаРеквОб");
15 acht
 
15.09.21
09:58
(11) Ну все, Денис. Взялся - возись =]
16 NIGHTHUNTER
 
15.09.21
09:59
ВнешнийОтчет                 = РеквизитФормыВЗначение("Отчет");    
    ВнешнийОтчет.ИмяМакетаРеквОб = РезультатВыбора.Значение;
    ЗначениеВРеквизитФормы(ВнешнийОтчет, "Отчет");
    //ЗначениеВРеквизитФормы(ВнешнийОтчет.ИмяМакетаРеквОб, "ИмяМакетаРеквОб");


ошибку выдает

по причине:
Недопустимое значение параметра (параметр номер '2')

вроде же все правильно!
17 acht
 
15.09.21
10:01
Андрей, у тебя ж в этом году юбилей -  30 лет. Сколько из них ты уже с 1С мучаешся?
Может, пока не поздно, ну его, а?
18 Ненавижу 1С
 
гуру
15.09.21
10:06
не надо там РеквизитФормыВЗначение
сразу в форме заполняй реквизит объекта:

ЭтотОбъект.Отчет.ИмяМакетаРеквОб = ...
19 acht
 
15.09.21
10:16
Я бы вообще дополнительные свойства настроек компоновщика использовал. Они, собственно, для этого и предназначены.
20 ptiz
 
15.09.21
10:19
(0)  РеквизитФормыВЗначение("Отчет") - этот код создаёт из Данных формы Новый экземпляр Объекта. Ты или должен его обратно превратить Объект в Данные формы, либо тут же, в этой же процедуре использовать этот экземпляр объекта. По-твоему коду непонятно - что ты дальше делаешь с этим экземпляром.
21 NIGHTHUNTER
 
15.09.21
10:31
(18) тут нет никаких реквизитов http://joxi.ru/DrlGP4NfGdevLA
22 NIGHTHUNTER
 
15.09.21
10:33
(20) Я задал реквизиту значение, затем хочу сохранить его

ВнешнийОтчет                 = РеквизитФормыВЗначение("Отчет");    
ВнешнийОтчет.ИмяМакетаРеквОб = РезультатВыбора.Значение;
ЗначениеВРеквизитФормы(ВнешнийОтчет, "Отчет");

что не так в этой инструкции

ЗначениеВРеквизитФормы(ВнешнийОтчет, "Отчет");
23 NIGHTHUNTER
 
15.09.21
10:34
(20) как будет правильно превратить, Объект в данные формы?
24 vicof
 
15.09.21
10:42
Поколдовать, епта
25 NIGHTHUNTER
 
15.09.21
10:44
(20) я же так и делаю, но идет ошибка

ВнешнийОтчет                 = РеквизитФормыВЗначение("Отчет");    
ВнешнийОтчет.ИмяМакетаРеквОб = РезультатВыбора.Значение;
ЗначениеВРеквизитФормы(ВнешнийОтчет, "Отчет");

по причине:
Недопустимое значение параметра (параметр номер '2')
26 NIGHTHUNTER
 
15.09.21
10:47
(11) я вот делаю в (25), как правильно?
27 ptiz
 
15.09.21
10:49
(25) Какие типы значений у ВнешнийОтчет.ИмяМакетаРеквОб и РезультатВыбора.Значение ? Посмотри в отладчике.
28 runoff_runoff
 
15.09.21
10:50
(0) ответ в (19)
29 NIGHTHUNTER
 
15.09.21
10:55
(27) строка, это название макета

http://joxi.ru/BA08ePMCvqdXYA
30 NIGHTHUNTER
 
15.09.21
10:56
(28) Мне они не известны, делаю пока по найденному примеру, но столкнулся что в нем не все работает.
Пробую разрешить это.

А (19) вообще не знакомо.
31 runoff_runoff
 
15.09.21
11:01
(30) структура Отчет.КомпоновщикНастроек.ДополнительныеСвойства
32 NIGHTHUNTER
 
15.09.21
11:20
(31) пустая структура, или даже 3 структуры, что с ними делать?

http://joxi.ru/RmznO4eijV71Xm

я хочу просто передать значение и получить его, из реквизиты формы или объекта.
33 NIGHTHUNTER
 
15.09.21
11:23
вот есть пример, он работает http://joxi.ru/bmo5Q4kU7lwa0A

почему мой код не работает ?
34 hhhh
 
15.09.21
11:25
(33) в этом примере реквизиты не присваиваются.
35 NIGHTHUNTER
 
15.09.21
11:57
(34) вот это не работает

ВнешнийОтчет                 = РеквизитФормыВЗначение("Отчет");    
ВнешнийОтчет.ИмяМакетаРеквОб = РезультатВыбора.Значение;
ЗначениеВРеквизитФормы(ВнешнийОтчет, "Отчет");

как последнюю строку задать что бы работала?

Там задается значение реквизита. Как мне сделать что бы увидеть результат?
36 runoff_runoff
 
15.09.21
12:01
Отчет.КомпоновщикНастроек.ДополнительныеСвойства.Вставить("ИмяМакетаРеквОб", "ФакинЧикенШит");
37 NIGHTHUNTER
 
15.09.21
12:05
(36) Так, так , так .... сойчас испробую. Спасибо вам. За продвижение вопроса!!!! Буду испытывать!
38 NIGHTHUNTER
 
15.09.21
12:08
(36) Один момент, - такого нет Отчет.КомпоновщикНастроек.ДополнительныеСвойства

Есть

Отчет.КомпоновщикНастроек.Настройки.ДополнительныеСвойства
Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства
Отчет.КомпоновщикНастроек.ФиксированныеНастройки.ДополнительныеСвойства

прав ли я что ваш пример вызовет ошибку?
39 NIGHTHUNTER
 
15.09.21
12:08
(36) в какую структуру все же вставлять?
40 Вафель
 
15.09.21
12:10
(39) ну возьми первую
41 NIGHTHUNTER
 
15.09.21
12:10
(40) пробую!
42 NIGHTHUNTER
 
15.09.21
13:03
При открытии отчета, в структуру значение прописалось

http://joxi.ru/eAObaQlC6GqRQ2

но при формировании, в модуле объекта, нет этого значения ((((

http://joxi.ru/n2Yl73nC70dKRm
43 Kassern
 
15.09.21
13:11
(42) нда...Только что спецом даже проверил. Все работает!
Скорее всего у тебя в коде при компановке настройки сбрасываются или переопределяются.
44 NIGHTHUNTER
 
15.09.21
13:15
(43) понятно, как бы это определить!
45 Kassern
 
15.09.21
13:17
46 NIGHTHUNTER
 
15.09.21
13:18
(43) Спасибо, да это работает. В самый конец перенес строку

    ИсточникНастроек   = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресВремХран);
    Отчет.КомпоновщикНастроек.Инициализировать(ИсточникНастроек);
    Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
    //
    Отчет.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("ИмяМакета", РезультатВыбора.Значение);    
КонецПроцедуры
47 Kassern
 
15.09.21
13:18
(44) ну так встань ты точкой останова в начале процедуры и посмотри передается или нет)
48 Kassern
 
15.09.21
13:18
(46) ну вот
49 NIGHTHUNTER
 
15.09.21
13:37
(48) да они там перетирались видимо у меня.

Да это работает.

То есть выявилось. что создаешь хоть реквизит формы, хоть реквизит объекта, в модуле объекта его не увидеть?
50 Kassern
 
15.09.21
13:44
(49) ну так всегда и было, реквизиты формы доступны лишь на форме. Модуль объекта о них ни слухом ни духом.
А по поводу реквизита объекта - все нормально передается без всяких проблем.
Создаешь реквизит, на форме Отчет.ТвойРеквизит="Бла бла бла";
Потом в модуле объекта просто обращаешься ТвойРеквизит, он будет твое значение содержать.
51 Kassern
 
15.09.21
13:45
(50) реквизит создаешь у объекта, а не на форме, чтобы так работало.
52 Kassern
 
15.09.21
13:45
(49) в итоге выяснилось, что у вас большие проблемы с УФ)
53 hhhh
 
15.09.21
14:19
(51) не работает так. там реально пусто в процедуре ПриКомпоновкеРезультата. Потому что это 2 разных объекта.
54 Kassern
 
15.09.21
14:25
(53) я только что проверял, все работает
55 Kassern
 
15.09.21
14:29
(53) онли фо ю) https://ibb.co/f4L2pnz
56 hhhh
 
15.09.21
14:43
(54) Тогда что не так у тс? Родился под несчастливой звездой?
57 Kassern
 
15.09.21
14:53
(56) да хз что там у него. Значит как то не так заполняет либо плавает в понятиях.
58 NIGHTHUNTER
 
15.09.21
15:39
(57) у меня нет такого реквизита http://joxi.ru/L21NePvtzDx8nA

у отчета он есть http://joxi.ru/BA08ePMCvqXJYA
59 Kassern
 
15.09.21
15:43
(58) сравни свое обращение к реквизиту объекта и мое и найди различие
60 NIGHTHUNTER
 
15.09.21
15:57
(59)

задавать я смог только так

    ВнешнийОтчет                 = РеквизитФормыВЗначение("Отчет");    
    ВнешнийОтчет.ИмяМакетаРеквОб = РезультатВыбора.Значение;

и потом его нет в при компоновке результата в модуле объекта

а вы просто задаете Отчет.Тестовый =

у меня в Отчет. нет реквизита моего, хлотя он есть у объекта http://joxi.ru/BA08ePMCvqXJYA
61 Kassern
 
15.09.21
15:59
(60) по кнопке на форме на сервере ты же можешь тупо написать Отчет.ИмяМакетаРеквОб ="Бла бла" ?
А дальше при компоновке просто обратиться к ИмяМакетаРеквОб
62 Kassern
 
15.09.21
16:01
(60) в твоем случае основной реквизит формы это отчет? Он жирным выделен в реквизитах формы. Для внешнего отчета у него тип ВнешнийОтчет.ИмяОтчета.
63 Kassern
 
15.09.21
16:02
вот к нему и обращаешься на форме чтобы заполнить реквизит объекта. А в модуле объекта на прямую обращаешься к реквизитам объекта.
64 NIGHTHUNTER
 
15.09.21
16:18
(61) нет там в Отчет. реквизитов
65 NIGHTHUNTER
 
15.09.21
16:21
(62) ну да http://joxi.ru/8AnQDeGsoKk4K2

Только Отчет как у вас не содержит реквизитов там
66 NIGHTHUNTER
 
15.09.21
16:25
http://joxi.ru/krDbeX8CgdXVJ2

тестовый , как у вас Отчет.Тестовый =
тут не присвоится.
67 runoff_runoff
 
15.09.21
16:29
(66) у него форма своя, а не общая.. для общей не работает..
68 Kassern
 
15.09.21
16:30
(67) а он общую форму ковырял?) Я думал вообще у него своя форма со своим блекджеком и....
69 NIGHTHUNTER
 
15.09.21
16:31
(67) Ясно.

(68) По примеру делаю. Там нужно было взять общую форму БСП.
70 NIGHTHUNTER
 
15.09.21
16:33
Ну тогда в общей форме решается через,

Отчет.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("ИмяМакета", РезультатВыбора.Значение)