Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Глобальные переменные общего модуля
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
bolobol
Здравствуйте!

Подскажите, пожалуйста, как определить глобальные переменные в общем модуле, который содержит процедуры подписки на события?

Суть задачи: Из периодического регистра выбираются несколько значений в каждой подписке, все прописки вызывают процедуры этого же модуля для каждой строки табличных частей документа. Сейчас приходится в качестве параметра передавать эту кучу значений, полученных из регистра, т.к. для каждой строки получать заново эти периодические значения - кажется моветоном.

Ещё вопрос. Как определить глобальные переменные для всей конфигурации в целом и как для каждого сеанса в отдельности?
Flexy
В общем модуле не существует раздела определения глоб. переменных.
Только описание процедур и функций.
logist
Цитата(bolobol @ 22.09.11, 9:27) необходимо зарегистрироваться для просмотра ссылки
Ещё вопрос. Как определить глобальные переменные для всей конфигурации в целом и как для каждого сеанса в отдельности?

ПараметрыСеанса
Ardi
Цитата(Flexy @ 22.09.11, 9:29) необходимо зарегистрироваться для просмотра ссылки
В общем модуле не существует раздела определения глоб. переменных.
Только описание процедур и функций.

Зато есть в модуле обычного приложения и т.д.
bolobol
Цитата(Ardi @ 22.09.11, 12:29) необходимо зарегистрироваться для просмотра ссылки
Зато есть в модуле обычного приложения и т.д.

Что есть "модуль обычного приложения"? Чем оно выгодно отличается от необычного приложения?
shurik_shurik
Тем, что работает на толстом клиенте..... а необычное приложение - это тонкий клиент, или WEB-клиент, или внешнее соединение.... biggrin.gif biggrin.gif
bolobol
Цитата(shurik_shurik @ 23.09.11, 7:48) необходимо зарегистрироваться для просмотра ссылки
Тем, что работает на толстом клиенте..... а необычное приложение - это тонкий клиент, или WEB-клиент, или внешнее соединение.... biggrin.gif biggrin.gif

Тогда, я не понимаю, что нужно установить, чтобы общий модуль стал модулем обычного приложения?, и мог использовать глобальные переменные.
Ardi
Тут была картинка...
bolobol
Цитата(Ardi @ 25.09.11, 21:24) необходимо зарегистрироваться для просмотра ссылки
Тут была картинка...

Что это значит?
Ardi
Цитата(bolobol @ 25.09.11, 22:42) необходимо зарегистрироваться для просмотра ссылки
Что это значит?

Это значит что я туда вставил картинку-ответ.
bolobol
Цитата(Ardi @ 25.09.11, 23:36) необходимо зарегистрироваться для просмотра ссылки
Это значит что я туда вставил картинку-ответ.

Её упёрли, что ли...? 0_о
Vofka
Цитата
Её упёрли, что ли...?

Ага
vbi
Цитата(bolobol @ 25.09.11, 20:57) необходимо зарегистрироваться для просмотра ссылки
Тогда, я не понимаю, что нужно установить, чтобы общий модуль стал модулем обычного приложения?, и мог использовать глобальные переменные.


Общий модуль не может быть модулем обычного приложения. Модуль обычного приложения - это, так сказать, глобальный модуль. В нем выполняются процедуры при запуске системы, подключаются обработчики ожидания и т. д. - тоесть выполняются такие глобальные задачи. Я даже не вижу смысла использовать там какие-то переменные. Есть модуль управляемого приложения - этот модуль "заменяет" модуль обычного приложения, когда 1С запускается в управляемом режиме. Есть модуль внешнего соединения - экспортные процедуры в этом модуле доступны при подключении к даной базе из другой базы.

Если все уж так плохо с получением данных из регистров, можно воспользоватся "СохранитьЗначение", "ВосстановитьЗначение". Но я бы занялся именно оптимизацией получения данных из регистров smile.gif
Ardi
Щас взломаем правила:
вот видео:
необходимо зарегистрироваться для просмотра ссылки
необходимо зарегистрироваться для просмотра ссылки
bolobol
Цитата(vbi @ 26.09.11, 10:01) необходимо зарегистрироваться для просмотра ссылки
Если все уж так плохо с получением данных из регистров, можно воспользоватся "СохранитьЗначение", "ВосстановитьЗначение". Но я бы занялся именно оптимизацией получения данных из регистров smile.gif

Плохо, если требуется пять раз за операцию получать одни и те же значения из БД. Придётся переписывать сам модуль, использующий пятикратное обращение к одним и тем же данным. Жаль.

Цитата(Ardi @ 26.09.11, 12:31) необходимо зарегистрироваться для просмотра ссылки
Щас взломаем правила:
вот видео:
необходимо зарегистрироваться для просмотра ссылки
необходимо зарегистрироваться для просмотра ссылки

Теперь мне понятно, где собака порылась. Другой вопрос, что эти модули на поддержке и мне это вариант не подходит. Буду переписывать.

Спасибо!
logist
Цитата(bolobol @ 26.09.11, 14:37) необходимо зарегистрироваться для просмотра ссылки
Придётся переписывать сам модуль, использующий пятикратное обращение к одним и тем же данным. Жаль.

Я не знаю что Вы там делаете, но если допустить что между этими обращениями данные могут измениться, то такое обращение вероятно оправдано. А если данные 101% не меняются между обращениями, то возможно стоит пересмотреть логику всего кода который их обрабатывает, что бы в результате получить одну процедуру с одним обращением...?
vbi
Есть еще один очень хитрый вариант, если данные меняются не часто: Использовать свойство внешнего модуля "Повторное использование возвращаемых значений" (Повторне використання значень, що повертаються).
1. Создаете новый общий модуль
2. Ставите галку "Повторное использование возвращаемых значений"
3. Пишите функцию, которая Вам возвращает Ваши труднособираемые данные в этом модуле
4. Функция обязательно должна иметь параметр (например число. Параметр не обязательно использовать внутри функции)

Например у Вас функция:
 Функция ПолучитьСложныеДанные(КакойТоПараметр)

...

// Нигде в функции "КакойТоПараметр" не встречается, но функция путем запросов возвращает данные
КонецФункции


Далее дело обстоит так: когда Вы вызываете функцию и например передаете число или строку:

Результат = ПолучитьСложныеДанные(5);


Функция проведет сложные расчеты и вернет Вам результат. Но если вы ее вызовите снова:

Результат = ПолучитьСложныеДанные(5);


Функция вернет тот же результат, но в этот раз не будет проводить расчетов, а вернет сразу результат, полученный в предыдущий раз.

Если теперь вызвать
Результат = ПолучитьСложныеДанные(6);


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

Если снова вызвать
Результат = ПолучитьСложныеДанные(6);
- тот же результат но без вычислений
Результат = ПолучитьСложныеДанные(5);
- результат полученный в первый раз тоже без вычислений.

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

Честно говоря я не тестировал это все, но теоретически - должно работать smile.gif
Ardi
Цитата(bolobol @ 26.09.11, 14:37) необходимо зарегистрироваться для просмотра ссылки
Теперь мне понятно, где собака порылась. Другой вопрос, что эти модули на поддержке и мне это вариант не подходит. Буду переписывать.
Спасибо!

Может там уже есть готовая объявленная переменная для этого дела.
bolobol
"Повторное использование" - Да! Спасибо за наводку ))
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.