Имя: Пароль:
1C
1С v8
УФ. Как сделать переменную доступной на клиенте и на сервере. Что бы не терялась
0 Max1986
 
18.04.12
09:33
Прошу форумчан помочь в таком вопросе.
Есть ТЗ, в которую в процедуре &НаСервере вводятся некие параметры.
Однако при следующем вызове другой процедуры &НаСервере эти параметры теряются и переменная становится опять Неопределено.
Подскажите, где мне определить эту переменную, что бы в ней хранились данные при вызове между разными процедурами.
1 ДенисЧ
 
18.04.12
09:34
В параметрах сеанса
2 zak555
 
18.04.12
09:34
ТЗ доступно только на сервере
3 zak555
 
18.04.12
09:34
(1) +1

хранилище =)
4 Нуф-Нуф
 
18.04.12
09:35
ЦПХ.
Центральное Переменное Хранилище
5 Ненавижу 1С
 
гуру
18.04.12
09:35
(0) хранить ее в объекте, а не локальной в методе
6 vmv
 
18.04.12
09:37
если не городить параметры в форме, то создать рексизит "список значений" например "рекСПараметры"

ПриСозданииНаСервере() иницализировать его значениями и получать их потом где хочеть и на клиенте и на сервере через индекскс списка
7 Max1986
 
18.04.12
09:39
Ну пускай храниться только на сервере, главное что бы не терялось.
все равно реквизит?
8 vmv
 
18.04.12
09:39
если речь о методах глобальных модулей, то коль идея с параметрами сеанса не прельщает, то создать свой РС
9 Нуф-Нуф
 
18.04.12
09:40
долбанные извращенцы
10 Ненавижу 1С
 
гуру
18.04.12
09:40
(7) откуда ты обращаешься к ней? опиши
11 zak555
 
18.04.12
09:41
(7) что в ТЗ ?
12 Defender aka LINN
 
18.04.12
09:41
(0) Временное хранилище
13 Vladal
 
18.04.12
09:41
(9) Скажи, как правильно?
14 vmv
 
18.04.12
09:44
временное хранилище не заслуживает доверия в контексте рабочего дня, просто хранилище слищком тормозное в циклицеских методах - я за извращения)
15 Stepa86
 
18.04.12
09:46
а чо бы реквизитом формы не хранить?
16 Vladal
 
18.04.12
09:47
(15) он доступен на сервере?
17 Defender aka LINN
 
18.04.12
09:48
(15) И таскать его туда-сюда между клиентом и сервером, да?
(14) Какого "дня", тут же ж явно в пределах работы с формой все происходит
18 vmv
 
18.04.12
09:48
(15) пока автор не озвучил область видимости, область использования и контексты переменной - будем смотреть в хрусталь
19 Max1986
 
18.04.12
09:49
(10)обращаюсь к ней в Модуле объекта и в модуле формы в процедурах &НаСервере

Кстати, через РС и ЦПС - оценил идею!!!
20 vmv
 
18.04.12
09:51
(14) если в пределах работы с формы, то я за список значений, ведь таких значений может быть вагон и плотить тучу параметров формы или реквизитов плоха.

временное хранилище или просто хранилище не люблю - это костыль изобретенный 1С для расширения областей видимости и как всякий костыль - часто хромает
21 Defender aka LINN
 
18.04.12
09:53
(19) Хосспади... А в модуле объекта-то тебе это зачем?
Короче. Описывай задачу давай, у меня уже хрустальный шар раскалился, сейчас стол прожжет.
22 vmv
 
18.04.12
09:53
"в Модуле объекта и в модуле формы"

значит контекст формы для хранения этой сущнисти использовать не стоит.

тогда параметры сеанса или РС
23 Ranger_83
 
18.04.12
09:54
24 MadHead
 
18.04.12
09:54
Я за параметр сеанса, можно еще как-то через общий модуль с повторным использованием возвращаемых значений, но я так не пробовал
25 Max1986
 
18.04.12
09:57
Хорошо, пусть будет область действия только Модуль объекта.
Я объявил в нем Перем ТЗ_врем. Выгрузил в процедуре Проц1() туда данные.
Дальше вернулись в клиент....работаем.
Вызываем Проц2(), а переменная ТЗ_врем = Неопределено
26 Stepa86
 
18.04.12
09:58
(17) и скока это минут занимает? наверно десятки
(16) на форме - да

если тз нужна в рамках одного вызова, то ее можно и через параметры потаскать, если нужно хранить данные между вызовами - то я за реквизит формы, его можно еси чо на форму кинуть для отладки/возможности изменения. Если эти данные еще и при записи/проведении нужны, то или через допсвойства прокидывать или хранить на объекте

(24) модуль с галочкой "Повторное использование возвращаемых значений" отдельно хранит вызовы с клиента и с сервера (причем для клиента вроде б не сохраняет, но не уверен). В обычном режиме упр. форма с сервера обращается к серверным сохраненным значениям, а модуль объекта может и к клиентским
27 Defender aka LINN
 
18.04.12
09:59
(25) За-да-чу.
28 vmv
 
18.04.12
10:02
(26) если мы говорим модуль объекта, то сразу понимаем, что его методы могут испольняться без учета всяких форм, т.е. формы могут не открыаться и не использоваться никогда.

а доп. свойства откуда прочитаешь с потолка? все равно нужна сущость существущая уже после запуска приложения или в базе по которой эти доп. своства можно инициализировать
29 Max1986
 
18.04.12
10:04
(25)Обработка выводит в свою ТЧ таблицу.
Пользователь правит данные-например "корректировка заказов".
Мы должны вернуть назад откорректированные данные и обработать их
30 Stepa86
 
18.04.12
10:04
(28) от задачи зависит, доп свойства можно заполнять/читать в обработчиках формы с постфиксом "НаСервере"
31 Stepa86
 
18.04.12
10:04
(29) эээмм.. может ТЧ и вернуть?
32 Max1986
 
18.04.12
10:07
(31)нельзя - она свернута по ряду параметров + наложен отбор. Я могу вернуь только Отбор, которыый наложен
33 Stepa86
 
18.04.12
10:08
мой телепатический модуль подвергся когнитивному диссонансу и взорвался =(
34 Max1986
 
18.04.12
10:09
Поясните, почему Перем ТЗ_врем определенная в модуле объекта терятся после того как покинули его. При повторном входе - опять она неопределена.
35 Ranger_83
 
18.04.12
10:11
Оптимально будет через временное хранилище передавать ТЧ для корректировки данных
36 Ненавижу 1С
 
гуру
18.04.12
10:11
(34) опиши ее в модуле объекта
37 Defender aka LINN
 
18.04.12
10:12
(34) Блеать, ты опишешь задачу или нет?
38 vmv
 
18.04.12
10:13
(32)

обойти данные формы коллекция - если нужно вернуть отфильтрованные строки (клиент и сервер)

выгрузить тз - если нужно вернуть всю откорректированную тз

если нужна передача на клиент с сервера
транформировать строки в дмерную структуру

это решение в лою - не слишком оптимально, но взлетит и часто юзается в типовых для небольших таблиц.

Если же размеры таблиц тысячи строк то можно извращаться дальше
39 badboychik
 
18.04.12
10:13
раз пошла такая пьянка - сериализуй и сохрани в текстовом файле
40 Ranger_83
 
18.04.12
10:13
(34)
&НаКлиенте
Перем ТЗ_врем
41 Max1986
 
18.04.12
10:13
>> Оптимально будет через временное хранилище передавать ТЧ для корректировки данных

Это как? Киньте пожалуста пример кода - никогда не делал. ТЗ долго заполняется
42 Max1986
 
18.04.12
10:14
(36)>> опиши ее в модуле объекта

Описана - не помогает.
43 Ranger_83
 
18.04.12
10:15
Можешь посмотреть подробный пример в книге "Разработка управляемого интерфейса" из серии проф.разработки на с.701
44 vmv
 
18.04.12
10:15
(41) ТЗ клиент не поймет все равно, ему нужна более простая сущность, как правило структура
45 Ненавижу 1С
 
гуру
18.04.12
10:16
(42) не верю
46 Ranger_83
 
18.04.12
10:17
(43)+у меня только бумажная версия.
(41)Что не поймет?
47 Max1986
 
18.04.12
10:19
Короче. многие запутались.
Мне надо хранить только на сервере - ИСХОДНУЮ ТЗ.
в некой процедуре модуля объекта я ее заполнил, а потом вернулся через какое то время - она Неопределена.
48 Defender aka LINN
 
18.04.12
10:20
(45) Тонкий клиент, он ломает неокрепшие умы.
В общем, я с этим дуриком закончил на сегодня. Сидит, тупит, 2-х слов не в состоянии написать. Нахрен такому помогать?
49 vmv
 
18.04.12
10:21
(48) истеричка, черешни зацвели - может запах на тебя так влияет)
50 Defender aka LINN
 
18.04.12
10:23
(49) На меня идиоты так влияют :)
51 Max1986
 
18.04.12
10:23
(48)пардон - а кроме флуда вы что то сказали?
52 Defender aka LINN
 
18.04.12
10:24
(51) Я тебе, придурок, уже в четвертый раз говорю: опиши ЗАДАЧУ. Не кривой костыль, который ты придумал в качестве решения, а ЗА-ДА-ЧУ. Задачу. Это какбе сам процесс, который должен произойти.
Намек уловил?
53 vmv
 
18.04.12
10:26
(47)

Наводящие вопросы

1. В каком обработчике модуля объекта произодиться ИНИЦИАЛИЗАЦИЯ Тз для дальнейшей корректировки этой Тз в форме на клиенте
2. В каких обработчиках модуля объекта происходит обработка откоректированной на клиенте и якобы "возвращенной" Тз.
3. Какой формат "возврата" Тз в модуль объекта: фильтрованная, все строки, правило обработки в коде
54 Max1986
 
18.04.12
10:26
(52)уйди из темы - ты неадеватный. нервы полечи, флудераст
55 Defender aka LINN
 
18.04.12
10:27
(54) Ч.Т.Д.
Идиёт, не умеет читать.
56 Ненавижу 1С
 
гуру
18.04.12
10:28
(54) будь мужиком, опиши задачу
57 Ranger_83
 
18.04.12
10:28
(47)Если только на сервере,тогда временное хранилище самое то,поскольку оно на сервере и хранится.Не надо гонять траффик на клиента
58 Trucker
 
18.04.12
10:29
(52) Мммм.. как я понял, чел хочет сохранить ТЗ в переменой модуля обьекта, как в хранилище.
То есть, опосля возврата в модуль объекта, взять из переменой ранее сохраненную ТЗ. Так?
59 Max1986
 
18.04.12
10:29
(53)иничиализация в некой процедуре - ЗаполнитьТЗ.
Эта ТЗ далее свертывается и загружается в ТЧ обработки.
Возращаться - ничего не возращается - у меня есть ТЧ обработки, откорректированная пользователем + Отбор.
Я должен сравнить Эту ТЧ с Исходной ТЗ, которую выгрузил
60 Max1986
 
18.04.12
10:30
(58) ДА!
61 Ranger_83
 
18.04.12
10:30
Defender aka LINN :)))
62 Ненавижу 1С
 
гуру
18.04.12
10:30
ТЗ сделай переменной обработки - не метода! не формы! модуля обработки!
63 Max1986
 
18.04.12
10:31
(62)сделано - не помогает
64 Max1986
 
18.04.12
10:32
(57)это как на 701 странице?
65 Ranger_83
 
18.04.12
10:32
(63)Сцу ко прочитай книжку на 701 старнице блеать:)
66 Ненавижу 1С
 
гуру
18.04.12
10:33
(63) процедура ЗаполнитьТЗ - это метод обработки?
объект обработки один и тот же?
67 Max1986
 
18.04.12
10:34
(65)Прочитал - там 2 строки. Типа использовать Временное хранилище. И все!!!
Примера нет
68 Ranger_83
 
18.04.12
10:36
(67)Читай от "Второй вариант решения" и далее по тексту
69 Max1986
 
18.04.12
10:38
(68)Там написано Записать данные во Временное хранилище.
А как?
70 vmv
 
18.04.12
10:38
надо Радченко позвать в ветку, чтобы указал абзац и объяснил чо он там накалякал)
71 Max1986
 
18.04.12
10:39
(66)процедура ЗаполнитьТЗ - это просто Процедура случайно вызываемая.
72 Ненавижу 1С
 
гуру
18.04.12
10:42
(71) пистец, как ей тогда передается ТЗ?
73 Max1986
 
18.04.12
10:46
(71)
Перем ТЗ_врем объявлена в начале. Мы в нее загружаем ТЗ.
ТЗ_врем = РезультатЗапроса.Выгрузить();
74 Max1986
 
18.04.12
10:46
(73)-->(72)
75 Max1986
 
18.04.12
10:48
Прочитал.
ПоместитьВоВременноеХранилище(<Данные>, <Адрес>)
А Адрес - что передавать? Если уникальный идентификатор формы - то мне же не в форме хранить!
76 vmv
 
18.04.12
10:50
описание задачи

есть некая обработка в которой есть некий интерфейс выбора объектов, допустим это справочник "Рогатый скот"

мы там выбрали "Дойная корова "Глафира""

жмякаем копопку на форме показать "надои за месяц"

в модуле обработки присходить вызов экспортной серверной процедуры выбранного объекта

Тз = ВыбранныОбъект.ПолучитьНадои("Месяц");

в таюлицу формы обработки загружается полученная таблица

доярка правит цам литры и кроит себе в карман

жмякаям кнопку на форме обработки

"записать надои за месяц"

в модуле обработки присходить вызов экспортной серверной процедуры выбранного объекта

ВыбранныОбъект.ЗаписатьНадои();

И вот тут автор не может получить ту Тз которая была в первом вызове, а ТЧ обратки он видит.

вот так на примере всяких скотов можно просто описать задачу без истерик, просто нужно быть телепатом и все
77 vmv
 
18.04.12
10:53
(75) адрес хранилища это строка, передается через параметры методов как првавило
78 Max1986
 
18.04.12
10:55
(76)один в один задача - верно описана
79 Max1986
 
18.04.12
10:57
(76)осталось узнать как сохранить ТЗ.
Мучаю ВременноеХранилище - не понял как Адрес задать.
80 Max1986
 
18.04.12
11:00
Конечно будите бить - но внятно поясните - почему я не могу увидеть ТЗ заполненную при первом вызове - описано в (76), когда вторично в обработку проваливаюсь?
81 Ranger_83
 
18.04.12
11:21
(69)у меня в книге написано как,целиком и полностью приведен листинг процедур.А ты что читаешь,скан чб чтоль?:)
82 Max1986
 
18.04.12
11:23
(81)У меня - нет - примеры разные до этого. Но там нет примера
83 vmv
 
18.04.12
11:37
// АдресВХ - создать параметр формы типа строка в форме обработки


// Первый вызов хрен знает где в модуле формы  
// Инициализация Тз и
// сохранение во временном хранилище полученной Тз
// передаем адрес ВХ в модуль формы как параметр

Тз = Объект.ПолучитьНадои("Месяц");
Параметры.АдресВХ = ПоместитьВоВременноеХранилище(Тз, Новый УникальныйИдентификатор());




// Второй вызов хрен знает где в модуле формы обработки
// Получение из временного хранилища полученной Тз
ВыбранныОбъект.ПолучитьНадои(Параметры.АдресВХ);

в модуле объекта

Процедура ПолучитьНадои(АдресВХ) Экспорт
   
   Тз = ПолучитьИзВременногоХранилища(АдресВХ);
   Тч = ЭтотОбъект.Надои;
   
   // мутим
   //
   
   ОтправитьЦистернуСливок("vmv");
   
КонецПроцедуры

фенита
84 vmv
 
18.04.12
11:40
АдресВХ можно сделать и реквизитом формы обработки(тип строка) для простоты, чтобы он был доступен в любом контексте
85 vmv
 
18.04.12
11:42
второй вызов

Объект.ЗаписатьНадои(Параметры.АдресВХ);


если автор еще начнет ныть, что не понятно, то только разлененка его на части будет верным решением проблемы
86 Max1986
 
18.04.12
11:44
(85)спасибо! Четко и понятно!
Я уже сам сделал. Правда через реквизит объекта - где строку храню.
У вас красивее.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.