Имя: Пароль:
1C
1С v8
Где в тонком и веб клиенте хранить значения переменных?
0 necro
 
04.09.13
09:07
ПараметрыСеанса же не работают?
1 Wobland
 
04.09.13
09:12
предлагаю в памяти
2 sikuda
 
04.09.13
09:13
Открой для себя javascript и исполнение на нем интерфейса от 1С.
3 necro
 
04.09.13
09:18
Вы пошутили, мы тут тоже посмеялись, дальше?
4 Восточный Парень
 
04.09.13
09:20
Реквизиты формы не подойдут?
5 necro
 
04.09.13
09:21
Да мне бы константу где-нибудь поближе припрятать, чтобы каждый раз за ней на сервер не ходить
6 necro
 
04.09.13
09:23
Про яваскрипт кстати можно поподробнее? А то я в соседней теме не пойму, почему у меня при программном удалении/создании колонок веб клиент ломается
7 Восточный Парень
 
04.09.13
09:25
Телепатические возможности окончились - рассказывай задачу.
8 a_alenkin
 
04.09.13
09:25
а в БСП разве не так реализовано - что функция из общего клиентского модуля с установленным "Повторное использование возвращаемых значений" возвращает параметры сеанса?
9 Fragster
 
модератор
04.09.13
09:30
(5) а чем напрягает?
10 alexei366
 
04.09.13
09:35
(0) В модуле упр. приложения напиши :

Перем МояФигня;

И обращатьс к ней можешь из любого места на клиенте
11 hhhh
 
04.09.13
09:36
(6) вот, дарю

Глобальный контекст (Global context)
ХранилищаНастроек (SettingsStorages)
Использование:

Только чтение.
Описание:

Тип: ХранилищаНастроекМенеджер.
Предназначено для доступа к хранилищам настроек, которые созданы в конфигурации.

Доступность:

Сервер, толстый клиент, внешнее соединение.

а то кто-то тут торгует синтакс-помощником.
12 necro
 
04.09.13
09:37
(8) какой модуль/функция? не нашел.
13 necro
 
04.09.13
09:38
выглядит, как будто к тонкому клиенту не подходит:

Доступность:

Сервер, толстый клиент, внешнее соединение.
14 hhhh
 
04.09.13
09:42
(13) а на сервер вы вообще никогда не обращаетесь? Абсолютно все операции фигачите на клиенте?
15 necro
 
04.09.13
09:48
(14) не абсолютно все, а только те, про которые идет разговор. ожидается последовательный вызов клиентской функции, поведение которой зависит от значения констант, изменение констант на ходу при этом не планируется, то есть нужно закэшировать их на клиенте.
16 necro
 
04.09.13
09:49
(10) это мне подходит, но хотелось бы узнать более общее решение
17 Новиков
 
04.09.13
10:01
(16) Повторное использование возвращаемых значений.
18 banco
 
04.09.13
10:05
(16) какое еще общее решение? смотря какая у тебя задача. если клиент, значит есть форма, значит можно хранить в реквизитах формы.  а вообще 1С не рекомендует кэшировать константы в повторно используемых значениях.
19 hhhh
 
04.09.13
10:06
(15) там константы и так кешируются на уровне платформы, зачем вам их по второму разу кешировать? Вы хотите странного.
20 necro
 
04.09.13
10:09
(19) разве можно получить значение константы на клиенте? если нет, значит константа кэшируется на сервере, а зачем она мне там, если мне на клиенте надо?
21 necro
 
04.09.13
10:10
в таком случае как на клиенте правильно значение константы получать?
22 Новиков
 
04.09.13
10:12
(20) С методической точки зрения, даже параметры сеанса, о которых ты начал тут говорить, для кэширования использовать не правильно ;)
23 necro
 
04.09.13
10:15
вроде как константу получают так:

&НаКлиенте
Функция ПолучитьКонстантуНаКлиенте() Экспорт
    возврат ОбщийМодульКлиентСервер.ПолучитьКонстантуНаСервере();
КонецФункции

&НаСервере
Функция ПолучитьКонстантуНаСервере() Экспорт
    возврат Константы.Константа.Получить();
КонецФункции

если даже она у меня сама закэшируется на сервере, то вызов сервера от этого не исчезнет.
кстати, почему-то так не заработало:
{ОбщийМодуль.ОбщийМодульКлиентСервер.Модуль(178)}: Метод объекта не обнаружен (ПолучитьКонстантуНаСервере)
    возврат ОбщийМодульКлиентСервер.ПолучитьКонстантуНаСервере();
24 banco
 
04.09.13
10:22
(23) у тебя же есть форма? добавляешь реквизит на форме, например, ВалютаУпрУчета. ПриСозданииНаСервере пишешь ВалютаУпрУчета = Константы.ВалютаУпрУчета.Получить(); и потом используй в своей форме сколько хочешь ВалютаУпрУчета, без вызова сервера.
25 shpioleg
 
04.09.13
10:32
(23) В свойствах модуля поставил галку Вызов сервера?
26 sikuda
 
04.09.13
10:35
(24) поддержу. Так столько всего передается с сервера, что специально что-то делать не имеет смысла.

(10) Переменные упр. модуля в Web-клиенте не доступны.
27 giallo
 
04.09.13
10:58
(26) > Переменные упр. модуля в Web-клиенте не доступны.

Хм, вряд ли это так.

Код из УТ11

В модуле упр. приложения объявлена экспортная переменная
Перем ПредлагатьУстановкуРасширенияРаботыСФайлами Экспорт;

В общем клиентском модуле кусок кода из процедуры:

#Если ВебКлиент Тогда

........
        
    Если ПредлагатьУстановкуРасширенияРаботыСФайлами = Неопределено Тогда

.....
28 sikuda
 
04.09.13
11:09
(27) Так то в общих модулях. А просто во внешней обработке попробуй получить.
29 giallo
 
04.09.13
11:13
(28) Не в курсе, а что там с внешней обработкой?

"Экспортируемые переменные, процедуры или функции модуля управляемого приложения (у которых в заголовке указано ключевое слово Экспорт) будут доступны (рис. 3.5):

? в неглобальных клиентских общих модулях с установленным свойством Клиент (управляемое приложение);
? клиентских процедурах и функциях модуля управляемой формы;
? клиентских процедурах и функциях модуля команды."
http://langslab.com/ebooks/prof-dev2/tome1/pr-dev-t1-ch03
30 giallo
 
04.09.13
11:14
У внешней обработки есть упр. форма, почему в ней должна быть недоступна переменная?
31 sikuda
 
04.09.13
11:19
(29) Согласен вроде так, но у меня в 8.3.3.715 на firefox
http://sikuda.ru/wp-content/uploads/2013/09/OshibkaObrashheniyaKObshheyPeremennoy.png
не раслабишься...
32 giallo
 
04.09.13
11:21
понятно
33 H A D G E H O G s
 
04.09.13
11:32
Не понял нравственных метаний присутствующих в ветке.
Давайте, рассказывайте мне, кто обидел.
Я приду на помощь.
34 shpioleg
 
04.09.13
12:28
(33) Так понять нас не мудрено.
По "заветам партии" хотим все считать на сервере, а где переменные хранить не знаем. Всяких таблиц, списков значений и структур хотим создать, да побольше. Да только так создать, чтобы не пришлось их с клиента гонять.

Еще, хотелось бы, перемещение рисунков по табличному документу организовать на клиенте, а не лезть на сервер

        Рис = Доска.Рисунки[ХодСтруктура.ПеремещаемаяФигура2];
        Рис.Расположить(Доска.Область(ХодСтруктура.ПолеНазначения2));
35 H A D G E H O G s
 
04.09.13
12:34
Храните на Клиенте:

&НаКлиенте
Перем СтруктураДанных;
36 MrStomak
 
04.09.13
12:36
(20) Повторное использование возвращаемых значений = кэширование на клиенте.
37 necro
 
05.09.13
11:37
(36) то есть, в итоге, создаем общий модуль с повторным использованием и вставляем функцию получения константы? а если нужно хранить какие-то данные которые на сервере вообще ни к чему (ну типа предыдущих координат мыши)?
38 shpioleg
 
05.09.13
12:30
(37) Если тебе на клиенте нужно сохранить значение, то просто в модуле формы можно завести переменную как в (35).
А вот значение серверной переменной постоянно так хранить не получится.
При возврате с сервера на клиента ей настанет каюк. При вызове сервера с клиента тебе придется передавать клиентские данные или через параметры функции, временноехранилище или через форму. Как то так.
39 Fragster
 
модератор
05.09.13
12:41
(38) а как же ПоместитьВоВременноеХранилище
40 shpioleg
 
05.09.13
14:33
(39) ВременноеХранилище - это же файл?
Получу я адрес в хранилище. Теперь его нужно хранить.

Было бы шикарно объявить переменную, вроде
&НаСервере
Перем MyVar GLOBAL;
Ну и тип переменной указать, если потребуется.
И пусть платформа сама гоняет ее по своим хранилищам.
Доступно и всерьез!
41 Fragster
 
модератор
05.09.13
14:44
(40) размести темпы и "временные" папки юзера 1с на рамдрайве (tmpfs в линупсе - самый простой вариант), будь мужиком!
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.