Имя: Пароль:
1C
1С v8
Как сохранить ссылку на документ?
, ,
0 bebibo
 
21.10.20
15:43
Здравствуйте. Не сохраняется значение в реквизит.
Ссылка есть только в "Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт"
ОбъектыНазначенияМассив - массив, в нем одна ссылка на документ.
Мне эта ссылка нужна в другой процедуре ниже.
Делаю так: создан рекв в обработке "СсылкаНаДок". В процедуре "Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт" пишу: ЭтотОбъект.Требование = ОбъектыНазначенияМассив[0];
Ниже в другой процедуре обращаюсь:СсылкаНаДок = ЭтотОбъект.Требование; - пусто.
Как сохранить мне эту ссылку? Прошу подсказать:)
1 Free_soul
 
21.10.20
15:48
(0) сразу: реквизит какого типа создал?
2 bebibo
 
21.10.20
15:50
(1) ДокументСсылка
3 MikhaNik
 
21.10.20
15:50
Скорее всего разные типы ссылок.
Проверь
ТипЗнч(ЭтотОбъект.Требование) = ТипЗнч(ОбъектыНазначенияМассив[0])
4 Free_soul
 
21.10.20
15:50
(2) а суешь туда массив..  даа. делай хранилищезначения
5 fisher
 
21.10.20
15:50
УФ или ОФ? Реквизит формы или объекта? Что говорит Сообщить(Строка(ТипЗнч(ОбъектыНазначенияМассив[0])))?
6 bebibo
 
21.10.20
15:55
(3) Истина
7 bebibo
 
21.10.20
15:55
(5) Название документа
8 bebibo
 
21.10.20
15:55
(5) УФ
9 fisher
 
21.10.20
15:57
(8) Реквизит формы или объекта? :)
10 bebibo
 
21.10.20
15:58
(9) Он есть и на форме и в объекте
11 bebibo
 
21.10.20
16:03
(4) Я не сую массив, я сую элемент массив, то есть ссылку.
12 fisher
 
21.10.20
16:03
(10) Предположу, что это реквизит обработки, а не формы. На заре времен оно не переживало серверных вызовов. Потом вроде что-то поменяли, но я по инерции никогда не использую реквизиты обработок в УФ.
Попробуй удалить реквизит обработки и добавить его на форму (закладка "Реквизиты" в конструкторе формы).
13 bebibo
 
21.10.20
16:04
Наверено единственный вариант будет делать хранилище значения?
14 fisher
 
21.10.20
16:09
Весь код в модуле формы? Покажи полностью процедуры, в которых пишешь и читаешь. Вместе с объявлениями и директивами компилятора.
15 bebibo
 
21.10.20
16:10
(12) Так зачем не реквизит формы, если форма не может сохранять ничего? Я наоборот специально рекв обработки создал, чтобы в него сохранил
16 fisher
 
21.10.20
16:12
(15) Сохранил куда? :)
17 fisher
 
21.10.20
16:14
Обработка в принципе ничего никуда не сохраняет, если ты это не делаешь явным образом (в базу данных). Ты только для формы можешь включить сохранение значений реквизитов в настройки пользователя.
18 bebibo
 
21.10.20
16:14
(14) Там так много, не смогу..Где заполняю и обращаюсь к ревизиту - они на клиенте.
19 bebibo
 
21.10.20
16:15
(17) Блин, Вы правы..
20 bebibo
 
21.10.20
16:15
Сейчас попробую
21 bebibo
 
21.10.20
16:21
(12) Сделал.
Всё равно пусто в реквизите..Когда обращаюсь к нему.
22 fisher
 
21.10.20
16:22
Я не уверен, что мы друг друга понимаем. Если речь о передаче значения между процедурами формы пока форма открыта, то реквизит формы - это самое то. Он еще и на сервер передаваться будет (будет доступен в серверных контекстных вызовах формы). А так можно еще добавить клиентскую переменную модуля формы и через нее передавать. Эффект тот же, только на сервер "гулять" не будет.
&НаКлиенте
Перем СсылкаНаДок;
23 fisher
 
21.10.20
16:24
У меня подозрение, что ты пытаешься в модуле объекта обработки получить доступ к реквизиту обработки. Он там всегда пустой будет в УФ. Если только его в том же самом вызове не заполнять :)
24 bebibo
 
21.10.20
16:26
(22) В самом верху модуля формы обработки объявил: Перем СсылкаНаДок;
В "&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт" - написал: СсылкаНаДок = ОбъектыНазначенияМассив[0];
Всё нормально. Но вот где обращаюсь (в другой процедуре) к "СсылкаНаДок" - ругается:Переменная не определена (СсылкаНаДок)
25 fisher
 
21.10.20
16:33
(24) Если ты не написал перед объявлением переменной &НаКлиенте, то ты объявил серверную переменную.
Другая процедура тоже &НаКлиенте?
26 bebibo
 
21.10.20
16:35
(25) "Если ты не написал перед объявлением переменной &НаКлиенте, то ты объявил серверную переменную" - не написал. Но теперь написал, ошибки исчезли.
"Другая процедура тоже &НаКлиенте?" - Да.
Но всё равно там опять пусто..
27 bebibo
 
21.10.20
16:37
Что не так.. Как блин передать ссылку в другую процедуру..
28 zuza
 
21.10.20
16:39
(27) Как вызов другой процедуры происходит?
29 bebibo
 
21.10.20
16:40
(28) По кнопке в обработке
30 zuza
 
21.10.20
16:41
а вызов этой Процедура ВыполнитьКоманду()?
31 fisher
 
21.10.20
16:43
(26) Тогда ты спотыкаешься о что-то, что отсюда не видно. Попробуй воспроизвести проблему на пустой обработке без лишнего окружения.
32 bebibo
 
21.10.20
16:43
(30) Она экспортная, это же обработка, которая в вызывается кнопкой на форме документа. Вот я жму на кнопку в документе - открывается моя обработка и заходит в эту процедуру "ВыполнитьКоманду".
33 bebibo
 
21.10.20
16:49
Так и не получается..Но мне любым способом нужна ссылка. Может обратиться как то через ВладельцаФормы и тому подобное? Но тоже что то не получалось..
34 MikhaNik
 
21.10.20
17:24
ЗначениеЗаполнено(ОбъектыНазначенияМассив[0])
35 MikhaNik
 
21.10.20
17:26
Проверь после
ЭтотОбъект.Требование = ОбъектыНазначенияМассив[0];

ЗначениеЗаполнено(ОбъектыНазначенияМассив[0])
ЗначениеЗаполнено(ЭтотОбъект.Требование)
36 Free_soul
 
21.10.20
18:57
(34) ) проверить массив на Количество()
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн