Имя: Пароль:
1C
1С v8
Управляемое приложение, глобальные переменные
0 perkos
 
09.11.11
11:10
в обработке подбора товаров,

1. подключаюсь к удаленной базе записываю соеденение в глобальную переменную.
2. записываю таблицу значений из удаленной базы глобальную переменную.

глобальные переменные определяю в модуле Обычного приложения и управляемого.

в обычном работает в управляемом нет. как быть с управляемым?
1 perkos
 
09.11.11
11:11
где хранить значения подключения и данные в управляемом приложении... чтобы всегда были доступны
2 Поручик
 
09.11.11
11:12
Во временное хранилище пихай и оттуда получай.
3 GROOVY
 
09.11.11
11:14
1. Глобальных переменных в системе 1С:Предприятие 8 нет. Ни в 8.0, ни в любой другой 8.
2. В модуле управляемого приложения происходит его переинициализация всякий раз когда происходит обращение в его процедурам.
4 perkos
 
09.11.11
11:16
ухты(= Павел Чистов

ну в модуле обычного приложения все-же я создал переменные, доступные в других объектах
5 perkos
 
09.11.11
11:24
(2) пихай получай... а как не потерять переменную в других модулях... может параметры сеанса как то нужно использовать?
6 EvgeniuXP
 
09.11.11
11:26
(5) в другие модули передавай.
7 perkos
 
09.11.11
11:33
(6) я бы хотел через модуль объекта обработки передавать....
8 СвинТуз
 
09.11.11
11:35
(3)
"Глобальных переменных в системе 1С:Предприятие 8 нет. Ни в 8.0, ни в любой другой 8."

а почему в БП в модуле обычного приложения первая строчка

Перем глОбщиеЗначения Экспорт;
9 СвинТуз
 
09.11.11
11:50
"В модуле управляемого приложения происходит его переинициализация всякий раз когда происходит обращение в его процедурам."

а это вообще не правильная использование модуля ИМХО
хотя я безграмотный, но думаю для этого есть другие типы модулей

Модуль управляемого приложения
Модуль управляемого приложения располагается в корневом разделе конфигурации. В нем располагаются процедуры-обработчики событий, которые инициализируются при старте и окончании работы системы с установленном в значение "Управляемое приложение" свойства Основной режим запуска. В модуле управляемого приложения возможно объявление переменных, а также объявление и описание процедур и функций, которые будут доступны в любом модуле конфигурации (кроме модуля внешнего соединения). Их доступность также обеспечивается для неглобальных общих модулей с установленным свойством Клиент (управляемое приложение). В контексте модуля управляемого приложения доступны
10 СвинТуз
 
09.11.11
11:51
а вот почему не работает я не знаю
видимо ГРУВИ прав хотя и молчит ? )))
11 perkos
 
09.11.11
11:54
(9) тоесть в модуле управляемого нельзя не примитивные типы хранить?

в процедурах &НаКлиенте я не могу работать с ТЗ значениями примитивных типов?
12 perkos
 
09.11.11
11:57
неохота заниматься ерундой из ТЗ перегонять строки в Массив, как ТЗ передать на клиентскую процедуру?
13 СвинТуз
 
09.11.11
11:58
гы
ТЗ на клиенте?
это плохо выглядит
подозрительно как то
14 5 Элемент
 
09.11.11
11:59
Храни в глобальной переменной ссылку на временное хранилище
15 СвинТуз
 
09.11.11
11:59
как там Павел говорил ?
1 000 рублей в час и я Ваш?
согласен на 750
16 5 Элемент
 
09.11.11
12:00
(14) А не это бред
17 perkos
 
09.11.11
12:03
(14) нету глобальной в управляемом, я впринципе через параметр сеанса типа Хранилище обменялся. правда почему то в него не записывается COM объект...

(13) ну ТЗ из примитивов.... массив можно а тз нет)=
18 СвинТуз
 
09.11.11
12:04
ладно
я лично ушел книгу Габца читать
Павел видимо перед лекцией не готовился
или не выспался
а сейчас спать пошел ...
если вернется
от меня ему уважение и респект с извинениями
если что не так сказал
19 perkos
 
09.11.11
12:07
(18) троль(=
20 СвинТуз
 
09.11.11
12:07
я?
21 СвинТуз
 
09.11.11
12:09
ты с хелпом научись работать
не будешь Чистову за его лекции платить
ТЗ у него на клиенте и в глобальных переменных
22 СвинТуз
 
09.11.11
12:10
ИМХО я бы тех кто ТЗ в глобальные переменные помещает ...
по рукам надо давать короче
23 EvgeniuXP
 
09.11.11
12:34
(22) смотря в каком случае, например ты собрал инфу, выкинул в ТЗ глобальную переменную, а в обработке на основании этой ТЗ можешь крутить и тестить дальше эти данные, меняя обработку - в противном случае тебе придется каждый раз заполнять ТЗ, которая по времени очень долго заполняется.

Передавай параметрами простые типы, сложные - временное хранилище.
24 GROOVY
 
модератор
09.11.11
12:39
Под глобальными переменными я понимаю переменные доступные из любого модуля системы. Таких в 8рке нет. Вместо них ввели такую штуку как параметры сеанса, но они типизированные.
(23) Прав, передавать из клиентского модуля в другой клиентский модуль ТЗ напрямую не эффективно, да и не правильно. Следует использовать временное хранилище.
25 perkos
 
09.11.11
12:54
(24) а как называть экспортные переменные в модуле обычного приложения?
26 Starhan
 
09.11.11
13:05
так и называть экспортные переменные модуля обычного приложения :)
27 perkos
 
09.11.11
13:22
(= и знай что они вроде-бы глобальные, забыл добавить(=
28 perkos
 
09.11.11
13:22
я через параметры сеанса типа хранилища сделал
29 СвинТуз
 
10.11.11
15:48
(24)
интересно чему Вы народ за их деньги учите?

ну не понимаю я Вас . Видимо старый и тупой и сертификатов не 5 штук по обучению ...
как Вы объясните цитату?
"В модуле управляемого приложения возможно объявление переменных, а также объявление и описание процедур и функций, которые будут доступны в любом модуле конфигурации (кроме модуля внешнего соединения). "

Да и профа Вы при таком ответе по платформе не сдадите увы ... Есть там такой вопрос.

а второй постулат это вообще выше моего понимания
"2. В модуле управляемого приложения происходит его переинициализация всякий раз когда происходит обращение в его процедурам.
"
что имелось в виду я так и не понял
30 СвинТуз
 
10.11.11
15:49
если это не про ГЛОБАЛЬНЫЕ переменные :

"Под глобальными переменными я понимаю переменные доступные из любого модуля системы"

тогда все я пасс . вопрос снят ... Каждый из нас понимает 1с по своему
31 СвинТуз
 
10.11.11
15:53
"Под глобальными переменными я понимаю переменные доступные из любого модуля системы. Таких в 8рке нет. Вместо них ввели такую штуку как параметры сеанса, но они типизированные. "

такое ощущение что у того Чистова у которого я учился какой то бот увел логин
и глумится над нубами на форуме ...
чесное слово
32 СвинТуз
 
10.11.11
15:53
разочарован
33 GROOVY
 
10.11.11
15:55
Если я опишу переменную в модуле приложения, я увижу ее в модуле внешнего соединения?
34 СвинТуз
 
10.11.11
15:55
стоп ...
не путайте режимы запуска программы
вы ее и в управляемом не увидите
если в обычном опишите
35 GROOVY
 
10.11.11
15:55
Нет. Какая она нафиг глобальня, а если я к ней обращусь из процедуры которая запускается фоновым заданием.
36 Астероид
 
10.11.11
15:56
Гляжу Паша под новый год тоже корпоративы проводит. Интересно, как они выглядят в декорациях 1с :)
37 СвинТуз
 
10.11.11
15:56
если модуль отработает
увидите
38 GROOVY
 
10.11.11
15:56
А вот к параметрам сеанса я могу всегда обратиться. Еще раз повторюсь, отчасти их и создавали для использования функционала глобальных переменных.
39 GROOVY
 
10.11.11
15:57
(37) модуль приложения? И как мне это гарантировать? ведь команду я могу создать и в сеансе пользователя и через регламентное задание...
40 СвинТуз
 
10.11.11
15:58
ладно вопрос снят
я понял позицию
имеет место быть

а второй пункт все же не понятен )))
41 СвинТуз
 
10.11.11
15:58
хоть убейте
42 GROOVY
 
10.11.11
15:58
(36) Я их и не под НГ тоже провожу. Летов вообще бум дикий был...
43 GROOVY
 
10.11.11
16:02
(40) На примере содуля УФ расскажу, так совсем понятно будет.
Имеем модуль:

&НаКлиенте
Перем А;

&НаКлиенте
Процедура ААА()
А = 0;
КонецПроцедуры

&НаСервере
ПроцедураБББ()
КонецПроцедуры

&наКлиенте
Процедура ВВВ()
Б = а;
КонецПроцедуры

А = 1;


Вызываем последовательно процедуры. Чему будет равна переменная Б? 0? Неа, 1!

При вызове серверных процедур модуль компилиться заного, при вызове клиентских то же.
44 СвинТуз
 
10.11.11
16:02
просто эти переменные Вам надо определять во в тех режимах запуска где они вам нужны
это не значит что их нет
45 СвинТуз
 
10.11.11
16:04
и что из этого понятно?
то что локальна "А" закрыла грудью паблик "А"
46 GROOVY
 
10.11.11
16:04
(44) "А" меняется только в клиентских процедурах. Просто вот при вызове сервера она принимает значение 1, и при последующем вызове клиента, так же.
47 СвинТуз
 
10.11.11
16:05
Вы не изменили глобальную
у нас НЕЯВНАЯ типизация
может снова в школу?
48 СвинТуз
 
10.11.11
16:06
вообще конечно 1с это что то
49 GROOVY
 
модератор
10.11.11
16:06
(47) Спокойнее, либо дискуируем нормально, либо учитесь сами.
Я инициализировал глобальную переменную (ну вы ее так называете) в части основной программы модуля.
50 GROOVY
 
модератор
10.11.11
16:07
В курсе как интерпретатор модулей работает? Как он создает таблицы переменных и таблицы процедур? Что происходит потом?
51 GROOVY
 
10.11.11
16:07
За второго "модера" прошу прощения...
52 СвинТуз
 
10.11.11
16:07
&НаКлиенте
Процедура ААА()
А = 0;
КонецПроцедуры

ну тут явно происходит создание переменной?
или не так?
53 GROOVY
 
10.11.11
16:08
Да и неявная типизация это не у меня, а в 1С, у меня Явное описание переменной и присваивание ей значений.
54 GROOVY
 
10.11.11
16:08
(52) Нет, А - переменная модуля и я ее явно объявил.
55 Mort
 
10.11.11
16:08
(52) Нет.
56 GROOVY
 
10.11.11
16:08
А=0; это уже присваивание значения.
57 СвинТуз
 
10.11.11
16:08
образуется некоторая неоднозначность
58 Mort
 
10.11.11
16:09
(57) Все однозначно. Может снова в школу?
59 GROOVY
 
10.11.11
16:09
Вы тут пока посоображайте, я на 20 минут удалюсь...
60 СвинТуз
 
10.11.11
16:10
надо проверить
61 СвинТуз
 
10.11.11
16:12
ну вообще это конечно интересно

но тогда почему не так?

&НаКлиенте
Перем А;

&НаКлиенте
Процедура ААА()
А = 0;
КонецПроцедуры

&НаСервере
ПроцедураБББ()
КонецПроцедуры

&наКлиенте
Процедура ВВВ()
Б = а;
КонецПроцедуры


Процедура ПриОткрытии()
А = 1;
КонецПроцедуры;
62 GROOVY
 
10.11.11
16:13
Потому что при открытии возможно уже будет хотеть какие то начальные значения переменных.
63 СвинТуз
 
10.11.11
16:13
ПередОткрытием() ? )
нет такого?
64 GROOVY
 
10.11.11
16:14
И перед открытием тоже может хотеть значения переменных.
65 GROOVY
 
10.11.11
16:14
Любые события могут ожидать уже инициальзированные переменные.
66 GROOVY
 
10.11.11
16:15
Все, точно ушел, прочитаю все через 20 минут....
67 СвинТуз
 
10.11.11
16:15
параметры формы
68 AAlexandra
 
10.11.11
16:15
(43) А если переменная "А" объявлена в модуле управляемого приложения, а все процедуры ААА, БББ, ВВВ - в любых других модулях?
69 СвинТуз
 
10.11.11
16:20
видимо инициализация переменных вне
приделах процедур противоречит методическим рекомендациям 1с ?
эта такая фича ?

то что было хорошо в 7.7 устарело
никогда не понимал тех кто пишет код вне процедур
в ПОЛУобъектноориентированном языке
70 GROOVY
 
10.11.11
16:40
(69) Не противоречит. А вот архитектура клиент-сервер противоречит. Надеюсь что скоро Вы осознаете что пишете по сути приложение которое будет выполняться на физически разных машинах.

ПриСталинеБылоЛучше; (с)
71 СвинТуз
 
10.11.11
16:41
на самом деле ситуция несколько сложнее

весь этот пример надо осмыслить
напоминает на первый взгляд "гнилой код", но как пример
поведения системы интересен

&НаКлиенте
Перем А;

&НаКлиенте
Процедура ААА()
А = 0;
КонецПроцедуры

&НаСервере
Процедура БББ()
КонецПроцедуры

&наКлиенте
Процедура ВВВ()
Б = а;
Сообщить(""+Б);
КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
   ААА();
   БББ();
   ВВВ();
КонецПроцедуры

А = 1;

Вы не указали подробностей как надо использовать Ваш код
поэтому я позволил себе создать команду и кнопку на управляемой
форме
при отслеживании процесса увидел занятные вещи
кое какие выводы получил
но результата вашего не увидел
72 СвинТуз
 
10.11.11
16:42
так и в отладчике просматривается область видимости
это не секрет
73 СвинТуз
 
10.11.11
16:43
"ПриСталинеБылоЛучше; (с)"

не согласен
"Я не дрессирую кошек это кошки дрессируют меня" (Куклачев)
74 СвинТуз
 
10.11.11
17:00
"При вызове серверных процедур модуль компилиться заного, при вызове клиентских то же."

не удалось воспроизвести

Б=0

видимо руки кривые
75 GROOVY
 
10.11.11
18:53
Это я накосячил... В модуле формы на стороне сервере переинициализация постоянно идет, на клиенте все ОК. Так что в рамках только клиента можно переменные модуля использовать, но они недоступны на сервере. Но я не буду :)
76 СвинТуз
 
11.11.11
10:02
&НаКлиенте
Перем А;

Она вроде на сервере и не видна
хотя такое впечатление что на сервере в отладчике
она как раз равна 1

"Это я накосячил... "

фигня все мы не боги )) спасибо что признались
а то я уже собрался проводить массштабные тесты в клиентсерверном
но я все равно погоняю пример интересный ...

по любому спасибо за науку
77 3dice
 
11.11.11
17:55
Прошу прощения за оффтоп. Подскажите пожалуйста, как мне обработать внешнее событие(от сканера штрих-кодов, драйвер атоловский) в управляемом приложении. В обычном приложении ОбработкаВнешнегоСобытия() работает, сканер настроен и работает корректно.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.