![]() |
|
УФ, переменная которую видно в ФормеДокумента в любом месте | ☑ | ||
---|---|---|---|---|
0
Geroy
18.03.15
✎
14:44
|
Нужно в форме документа
Назначить переменной значение и обращаться к ней в любом месте ФормыДокумента желательно сразу пример покажите Заранее Спасибо |
|||
1
butterbean
18.03.15
✎
14:44
|
сделай реквизит формы
|
|||
2
Geroy
18.03.15
✎
14:47
|
(1) не хочу , как через переменную
|
|||
3
mikecool
18.03.15
✎
14:52
|
(2) параметр сеанса
|
|||
4
Славен
18.03.15
✎
14:53
|
Перем Ляляля;
процедура ПриОткрытии() Ляляля = "ТС кури СП" Конецпроцедуры |
|||
5
Жан Пердежон
18.03.15
✎
14:56
|
(0) в общем случае ничего сделать нельзя
|
|||
6
alle68
18.03.15
✎
14:56
|
(4) Он хочет "в любом месте": и на клиенте, и на сервере.
|
|||
7
Адский плющ
18.03.15
✎
14:58
|
"Не хочу, хочу через ж*пу!" (с)
|
|||
8
Жан Пердежон
18.03.15
✎
15:02
|
(2) ты ведь понимашь, что всем плевать на твои хотелки?)
|
|||
9
Feunoir
18.03.15
✎
15:04
|
(0) Переменные модуля формы использовать можно.
Перед описанием переменной обязательно должна быть указана директива компиляции (&НаКлиенте или &НаСервере). Если используется директива компиляции &НаКлиенте, то такая переменная будет существовать с момента создания формы до момента ее закрытия. Причем только в клиентской части формы. Из серверных процедур формы она доступна не будет. Если перед описанием переменной используется директива компиляции &НаСервере, то такая переменная будет существовать только на период вызова и исполнения какой-либо серверной процедуры или функции. После того как исполнение кода вернется на клиента, модуль, исполнявшийся на сервере, будет уничтожен вместе с этой переменной. Можно пытаться в одной серверной процедуре устанавливать значение этой переменной и читать ее в другой. Но так получится только в том случае, если все эти процедуры выполняются в одном серверном вызове. Если серверные вызовы разные, переменная будет инициализироваться каждый раз заново. В то же время на клиенте можно использовать переменные модуля для хранения значений на все время жизни формы, но для этого при объявлении таких переменных обязательно должна быть указана директива компиляции &НаКлиенте. Передавать значения с клиента на сервер с помощью переменных модуля формы нельзя. Хранить значения на сервере в переменных модуля также не получится. Для этого нужно использовать либо реквизиты формы (и выполнять контекстные серверные вызовы), либо передавать значения в параметрах вызываемой процедуры/функции. Цитата из http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=562822 от Максима Радченко |
|||
10
GROOVY
18.03.15
✎
15:05
|
Модуля формы - его как бы два, общей видимости переменной не будет. Если я не ошибаюсь модуль серверный даже переинициализируется при определенных вызовах.
Вместо переменной уровня модуля можно использовать реквизиты формы, как уже предлагали, или ключевые параметры. |
|||
11
Geroy
18.03.15
✎
15:08
|
(8) у меня
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если ЗначениеЗаполнено(Объект.Ссылка)=Ложь тогда ......... Объект.Товары=Параметры.Товары; КонецЕсли; КонецПроцедуры Объект.Товары ТИП Строка Параметры.Товары ТИП ДанныеФормыКоллекция и получается что Объект.Товары получает ТИП Строка а значение "ДанныеФорм" Как реквизиту назначить ДанныеФормыКоллекция??? |
|||
12
Geroy
18.03.15
✎
15:11
|
А если через переменную
то как её потом получить? например Перем Товары; |
|||
13
Geroy
18.03.15
✎
15:11
|
А если через переменную
то как её потом получить? например Перем Товары; &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если ЗначениеЗаполнено(Объект.Ссылка)=Ложь тогда ......... Товары=Параметры.Товары; КонецЕсли; КонецПроцедуры |
|||
14
GROOVY
18.03.15
✎
15:12
|
>>Как реквизиту назначить ДанныеФормыКоллекция???
ДанныеФормы - это сконвертированные прикладные данные. Конвертация чаще всего производится системой автоматически, но если нужно конвертировать данные вручную - следует использовать методы РеквизитФормыВЗначение и ЗначениеВРеквизитФормы. |
|||
15
mikecool
18.03.15
✎
15:13
|
(11) если ты зафигачил Объект.Товары типом строка, то никак
|
|||
16
GROOVY
18.03.15
✎
15:13
|
(13) Что такое "Товары"?
|
|||
17
GROOVY
18.03.15
✎
15:14
|
Стр = Объект.Товары.Добавить();
Стр.ЧетоТа = Параметры.Товар; |
|||
18
H A D G E H O G s
18.03.15
✎
15:15
|
(0) Автор, тебе это не надо.
|
|||
19
GROOVY
18.03.15
✎
15:19
|
(0) Почитай Радченко, если некогда или жалко денег, вот основы программирования УФ: https://drive.google.com/folderview?id=0B2f7eow3JbLZcVhZOWtNN2ZUOHFydjVRM2s5MmxLZw&usp=sharing
|
|||
20
Geroy
18.03.15
✎
15:19
|
(18) (17) (16) (15) (14)
ПРОЧТИТЕ с самого начала Кто-предложил сделать через реквизит я сказал что мне такое неподходит!!! Мне нужно сделать переменную и назначить ей значение ДанныеФормыКоллекция И затем чтоб я смог получить значение это переменной Или на сервере или на клиенте уже без разницы |
|||
21
Feunoir
18.03.15
✎
15:20
|
(20) Напиши собственную 1С. С блекджеком и переменными.
Других способов нет. |
|||
22
mikecool
18.03.15
✎
15:22
|
взял банку сладкой кукурузы... жду развязки сюжета
|
|||
23
WebberNSK
18.03.15
✎
15:22
|
(20) прочти внимательно что тебе написали
|
|||
24
GROOVY
18.03.15
✎
15:25
|
(20) "Мне нужно сделать переменную и назначить ей значение ДанныеФормыКоллекция" - Это сделать не получится, даже если писать КАПСОМ
|
|||
25
mikecool
18.03.15
✎
15:28
|
[b] bbb [/b]
|
|||
26
mikecool
18.03.15
✎
15:28
|
+25 не работает (
|
|||
27
Geroy
18.03.15
✎
15:28
|
(24) значение переменной получается передать ДанныеФормыКоллекция
Но переменная не доступна потом на клиенте или на сервере Я так понимаю нужно сделать через РеквизитФормыВЗначение и ЗначениеВРеквизитФормы Есть примеры? |
|||
28
GROOVY
18.03.15
✎
15:31
|
(27) Без всякого стеба, объясни, что тебе нужно сделать. Не про то как ты собираешься это реализовывать, а что нужно получить в итоге.
|
|||
29
Гёдза
18.03.15
✎
15:31
|
(26) не для всех функционал )))
|
|||
30
Geroy
18.03.15
✎
15:34
|
(28) я с 1 документа вызываю форму другого и передаю параметры
Дальше я буду с этих параметров выбирать нужную мне информацию Документ источник может быть и не сохранён и не проведен В документе источник есть таблица,вот её содержимое мне и нужно передать в другой документ и дальше с неё уже вытаскивать что мне нужно |
|||
31
hhhh
18.03.15
✎
15:37
|
(30) Объект передавайте
|
|||
32
ВРедная
18.03.15
✎
15:37
|
(31) "Документ источник может быть и не сохранён и не проведен"
|
|||
33
GROOVY
18.03.15
✎
15:38
|
(30) Это тебе совсем не то надо копать.
http://goo.gl/rWrsuQ В кратце, ТЧ источника - ты выгружаешь в ТЗ, ТЗ помещаешь во временное хранилище (ВХ) - Открываешь другую форму, передаешь туда адрес ВХ, из ВХ вытаскиваешь ТЗ, и уже ТЗ там обрабатываешь как хочешь. Данные формы ты не передашь. |
|||
34
ВРедная
18.03.15
✎
15:38
|
(30) И чем тебя не устраивает реквизит формы?
|
|||
35
GROOVY
18.03.15
✎
15:38
|
(31) И объект не передашь, так как это тоже данные формы.
|
|||
36
Geroy
18.03.15
✎
15:39
|
(34) какой тип должен быть тогда у реквизита формы?
|
|||
37
GROOVY
18.03.15
✎
15:40
|
Если ТЧ не нужно передавать, то все остальные реквизиты можно передать как структуру, и ловить ее в открываемой форме в событии ПРиСозданииНаСервере.
|
|||
38
Geroy
18.03.15
✎
15:40
|
(37) я так и делаю! через структуру
|
|||
39
GROOVY
18.03.15
✎
15:40
|
(36) А какое значение передавать надо?
|
|||
40
Geroy
18.03.15
✎
15:44
|
(39) Источник
&НаКлиенте Процедура ЗаявкаНаДоставку(Команда) Если ЗначениеЗаполнено(Объект.ЗаказНаДоставку)=Истина тогда НашЗаказ = Новый Структура("Ключ", Объект.ЗаказНаДоставку); Форма = ПолучитьФорму("Документ.ЗаявкаНаДоставку.Форма.ФормаДокумента",НашЗаказ); Форма.Открыть(); Иначе Парам=Новый Структура; Парам.Вставить("ЗаказПокупателя",Объект.ЗаказПокупателя); Парам.Вставить("ЧекККМ",Объект.Ссылка); Парам.Вставить("Товары",Объект.Товары); //ТЧ ОткрытьФорму("Документ.ЗаявкаНаДоставку.Форма.ФормаДокумента",Парам); КонецЕсли; // Вставить содержимое обработчика. КонецПроцедуры Другой документ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если ЗначениеЗаполнено(Объект.Ссылка)=Ложь тогда Объект.ЗаказПокупателя=Параметры.ЗаказПокупателя; Объект.ЧекККМ=Параметры.ЧекККМ; Вот тут нужно ...... =Параметры.Товары; //Чтоб потом я мог с ними работать КонецЕсли; КонецПроцедуры |
|||
41
GROOVY
18.03.15
✎
15:45
|
(40) Как передавать ТЧ я написал в (33)
|
|||
42
Адский плющ
18.03.15
✎
15:46
|
Про обработку заполнения похоже не стоит писать.
|
|||
43
Geroy
18.03.15
✎
15:47
|
(42) не стоит, не мой вариант
|
|||
44
Адский плющ
18.03.15
✎
15:49
|
Угу. Говн0код наше всё. Заполнение в ПриСозданииНаСервере и т.д.
|
|||
45
Geroy
18.03.15
✎
15:52
|
(44) .... там только переданные параметры
|
|||
46
H A D G E H O G s
18.03.15
✎
16:23
|
Бред какой-то.
Человече хочит заполнить табличную часть нового документа и открыть его. Так? |
|||
47
H A D G E H O G s
18.03.15
✎
16:28
|
||||
48
Geroy
18.03.15
✎
16:40
|
(47) да не нужно заполнять мне просто нужно будет с таблицы брать некоторые значения для других расчетов!!!
что за ерунда Создал ТЗ Выгрузил туда ТЧ Поместил во временное хранилище Передал Адресс в другу форму Пытаюсь получить из хранилища и получаю {Документ.ЗаявкаНаДоставку.Форма.ФормаДокумента.Форма(6)}: Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища) ПолучитьИзВременногоХранилища(Параметры.АдресНашейТЗ) по причине: Ошибка получения значения из временного хранилища по причине: Неправильный путь к файлу '007f8bdf-5cd4-4dc7-aca4-be04fb4e9473' |
|||
49
fisher
18.03.15
✎
16:45
|
Универсально работать с таблицей, если она не реквизит формы, на клиенте и сервере одновременно не получится. Проще всего работать с ней только на сервере. Ну а между серверными вызовами держать во временном хранилище, как уже сказали.
(48) Помещать надо во временное хранилище, которое связано с той формой, где с ним работа будет (уникальный идентификатор. |
|||
50
CerbeRUS
18.03.15
✎
16:46
|
А почему еще никто не предлагал ЗначениеВСтрокуВнутр, ЗначениеИзСтрокиВнутр?
Это великие методы, которые решают все проблемы. :-) |
|||
51
CerbeRUS
18.03.15
✎
16:47
|
(48) временное хранилище привязано к какой либо форме?
|
|||
52
fisher
18.03.15
✎
16:48
|
(50) ТЗ во временном хранилище это оно самое и есть.
|
|||
53
fisher
18.03.15
✎
16:49
|
(51) Может быть привязано. Тогда гарантируется сохранность содержимого на время жизни формы и уборка мусора после смерти формы.
|
|||
54
CerbeRUS
18.03.15
✎
16:49
|
Кстати, помню, я как-то извращался, передавал из одной УФ в другую ДанныеФормыКоллекция. И ничего, работало.
|
|||
55
fisher
18.03.15
✎
16:52
|
(54) ТС не хочет через реквизиты.
|
|||
56
Geroy
18.03.15
✎
16:54
|
(54) через хранилище?
|
|||
57
Новиков
18.03.15
✎
16:56
|
Покаж код, как ты помещаешь в вр.хр и подымаешь его в другом доке. Я к (48) если чо
|
|||
58
CerbeRUS
18.03.15
✎
16:57
|
(56) Неа, напрямую
|
|||
59
Geroy
18.03.15
✎
16:58
|
(57) уже разобрался
теперь нужно с тз которую получил с временного храналища получить мои значения |
|||
60
Новиков
18.03.15
✎
16:59
|
(59) ПолучитьИзВременногоХранилища(Адрес) --> получаешь твои значения
|
|||
61
Geroy
18.03.15
✎
17:01
|
(60) ну я получить ТЗ , теперь нужно с ТЗ получить данные
|
|||
62
Новиков
18.03.15
✎
17:03
|
(61) таки а проблема то в чем, не совсем ясно что-то.
|
|||
63
CerbeRUS
18.03.15
✎
17:06
|
(61) ты не умеешь пробегать по строкам ТЗ и получать значения колонок?
|
|||
64
Geroy
18.03.15
✎
17:09
|
(63) я просто написал что делать буду
|
|||
65
Новиков
18.03.15
✎
17:10
|
Ну мы с тобой, если чо. Спешить получать данные не стоит. Надо подумать это дело, обкурить ;)) Сам понимаешь то.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |