Имя: Пароль:
1C
1С v8
УФ, переменная которую видно в ФормеДокумента в любом месте
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
Ну мы с тобой, если чо. Спешить получать данные не стоит. Надо подумать это дело, обкурить ;)) Сам понимаешь то.