Имя: Пароль:
1C
 
Как на форме передать параметр из одной процедуры в другу
↓ (Волшебник 01.03.2025 10:49)
0 Ужасный человек
 
naïve
28.02.25
18:46
Добрый вечер.
Как на форме передать параметр из одной процедуры в другу. К примеру в процедуре ПриСозданиинаСервере объявить переменную а = 15. И что бы в процедуре ПередЗаписью я мог обратиться к этой переменной.
Есть ли иные способы кроме добавления реквизита формы?
1 Маленький Вопросик
 
28.02.25
18:53
Через реквизит формы или объекта
2 Ужасный человек
 
naïve
28.02.25
18:55
нет реквизит формы и объекта не подходют
3 lubitelxml
 
28.02.25
19:02
В самом начале модуля формы напиши:

&НаКлиенте
Перем ИмяТвоегоПараметра;

Пока форма не закроется - доступна везде будет на клиенте
4 lubitelxml
 
28.02.25
19:04
+(3) но там при переходе с клиента на сервер на сколько помню могу очищаться переменные, в общем пробуй, но по-хорошему - создай программно реквизит формы, и пиши в него, ничего криминального в этом нет
5 Волшебник
 
28.02.25
19:06
(2) подходят
6 Ужасный человек
 
naïve
28.02.25
19:07
(3) Если в процедуре &НаСервере написать то ошибка при компиляции

Объявления переменных должны быть расположены в начале модуля, процедуры или функции
    <<?>>Перем ИмяТвоегоПараметра;     (Проверка: Тонкий клиент)

Если написать вообще в самом начале, тогда да, можно в процедуре &НаСервере присвоить ей значение допустим 15.
НОООО
в процедуре &ПередЗаписью ИмяТвоегоПараметра будет ИмяТвоегоПараметра    {<Неизвестный модуль>(1,1)}: Переменная не определена (ИмяТвоегоПараметра)
7 Ужасный человек
 
naïve
28.02.25
19:08
(5) На собеседовании сказали, что мудозвон
8 Ужасный человек
 
naïve
28.02.25
19:13
1) Объявить в самом начале модуля
Перем ИмяТвоегоПараметра
2) В процедуре &НаСервере ПриСозданииНаСервере
ИмяТвоегоПараметра =99;
3)В процедуре &НаСервере ПриЗаписиНаСервере
Пытаюсь прочитать ИмяТвоегоПараметра . Говорит, что неопределено
9 Волшебник
 
28.02.25
19:15
(7) надо было дать в морду
10 Asmody
 
28.02.25
19:32
(7) и в чём они не правы?
11 Ужасный человек
 
naïve
28.02.25
20:10
(10) Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой
12 Волшебник
 
28.02.25
20:12
(11) Вы не отвлекайтесь от простой передачи параметра. Не обобщайте контекст. Ваша задача сейчас — объяснить, почему не подходят реквизиты формы.
13 Ужасный человек
 
naïve
28.02.25
20:15
(12) Дык я бы с радостью. Но говорят так нельзя. Почему? У меня лично только догадки
14 Волшебник
 
28.02.25
20:16
(13) Вот это Вы нам должны объяснить, потому что мы Вам говорим, что так можно. Теперь мячик на Вашей стороне. Объясните
15 Ужасный человек
 
naïve
28.02.25
20:23
Занимает место в памяти на весь период жизни формы (14)
16 Волшебник
 
28.02.25
20:28
(15) И чо? Кто сегодня экономит оперативную память?
17 Волшебник
 
28.02.25
20:29
А переменная не будет занимать место в памяти? Такое чувство, что Вы тупой галлюцинирующий бот
18 Ужасный человек
 
naïve
28.02.25
20:30
(17) Её можно в коде от условия обьявить
19 Волшебник
 
28.02.25
20:31
(18) Не морочьте нам голову! Если переменная нужна, она займёт место в памяти.
20 Волшебник
 
28.02.25
20:31
Тупой бот пытается нас одурачить. Приплёл каких-то призрачных собеседователей. Он просто нас тестирует, я так вижу.
21 Ужасный человек
 
naïve
28.02.25
20:33
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс
22 Волшебник
 
28.02.25
20:33
(21) Тупой бот
23 Волшебник
 
28.02.25
20:35
Кстати, он уже не первый раз на нашем форуме. До этого у него был ник Королевский Тигр
и тоже попал в бан по причине "бот"
24 Kongo2019
 
01.03.25
00:05
(14) Новый тренд вроде такой, нельзя использовать глобальные переменные. 1С не рекомендует стандартах.
25 Guk
 
01.03.25
01:07
(24) когда программисты 1С что-то не асиливают, сразу следуют рекомендации о не рекомендуемости. кто-нибудь может вразумительно объяснить, почему в модуле приложения я могу объявить глобальную клиентскую переменную, а глобальную серверную переменную я не могу объявить нигде. она тут же херится...
26 b_ru
 
01.03.25
03:09
Глобальная переменная общего модуля сохраняется только на клиенте. На сервере не могут храниться никакие переменные, сервер 1С:Предприятие stateless, он вообще не хранит никаких данных о сессии, каждое новое обращение к серверу отдельно и не связано с предыдущими. Это концепция, и ее не нарушить.

Чтобы использовать переменную, объявленную в модуле формы через Перем между серверными вызовами, надо ее объявить &НаКлиенте и соответственно передавать в серверные процедуры при каждом вызове. Или сделать реквизитом формы, тогда передачу на сервер платформа сделает сама.
27 Bigbro
 
01.03.25
05:37
(18) реквизит формы тоже можно в коде программно по условию создать и что?
28 Конструктор1С
 
01.03.25
06:01
(13) видимо тебя собеседовал рукопоп
29 Конструктор1С
 
01.03.25
06:04
(24) тренд не новый, ровесник твоего бати. Но реквизиты формы не глобальные переменные, они только в контексте формы видны
30 Kongo2019
 
01.03.25
10:33
(29) Ну уже и реквизиты формы и другие служебные реквизиты типа не модно. Теперь модно гонять структуру из одной процедуры в другую.
31 PR
 
01.03.25
10:36
Да что вы тут сопли развели
Люди пытались от ТС добиться использования ДополнительныеСвойства
32 rozer76
 
01.03.25
11:25
(31) вроде тут про форму а не про объект. Как тут это поможет?
33 DiMel_77
 
01.03.25
11:34
(31) А не могли бы вы показать пример - как из серверной процедуры "ПриСозданииНаСервере" через дополнительные свойства объекта передать в клиентскую процедуру "ПередЗаписью"?

Я тоже сначала подумал, что спрашивали про дополнительные свойства, но не вяжется с контекстом...
34 PR
 
01.03.25
12:20
(32) А что, у формы нет основного реквизита Объект?
35 PR
 
01.03.25
12:22
(33) Не мог бы, нет времени заниматься ликбезом тех, кому не нужен ликбез, а нужен спор
Скажу лишь, что в клиентской процедуре ПередЗаписью можно легко вызвать серверную процедуру и получить все, что нужно
36 DiMel_77
 
01.03.25
16:10
(35) Вы неправы. У вас никак не получится установить дополнительные свойства объекта в процедуре "ПриСозданииНаСервере"? Я вот такой возможности не знаю.

Я без наезда, может есть прием, а я все пропустил?
37 PR
 
01.03.25
16:56
(36) Ничего не понял
Объект.ДополнительныеСвойства.Вставить("ЗадняяЧастьЧеловека", "Жопа");
38 DiMel_77
 
01.03.25
17:09
(37) В том то и прикол, что Объект там это данные формы структура. Прочитать объект вы конечно можете типа РеквизитФормыВЗначение("Объект"), а уже установить в нем дополнительное свойство нельзя. Манипуляция дополнительными свойствами возможна только в серверных функция, в которых передаётся объект в качестве параметра типа ПередЗаписьюНаСервере(). Поэтому и интересуюсь.
39 PR
 
01.03.25
18:24
(38) А, ну да, в форме не получится
Причем даже через ЭтотОбъект.Параметры.ДополнительныеПараметры
Только через ПоместитьВоВременноеХранилище
Но вообще, если речь про форму, то ограничение на не использование реквизита формы само по себе идиотское
А если речь про модуль объекта, то велкам, все работает
40 Ужасный человек
 
naïve
01.03.25
19:31
(38) (39)
Вы мои кумиры. Спасибо вам огромное. Теперь стало ясно!
41 craxx
 
02.03.25
16:02
(39) а что мешает ключевыми параметры сделать?
42 PR
 
02.03.25
17:41
(41) Вообще не понял, про что речь
Написано же, в форму реквизиты не добавлять
Или типа ну ok, нельзя реквизиты, пропихнем параметры?
Думаю, ответ будет такой же, что нечего хитрожопить, делай кодом
43 Волшебник
 
02.03.25
21:21
(42) Теперь ты кумир, смирись.