Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 16:20

Видимость переменных.

Автор ReSt0R, 17 мая 2013, 06:42

0 Пользователей и 1 гость просматривают эту тему.

ReSt0R

Доброго времени суток, уважаемые. Подскажите, пожалуйста, новичку один нюанс. Платформа 8.2, конфигурация Альфа-Авто. Имеется некая обработка. В модуле данной обработки прописаны некоторые экспортные переменные. Например:

...
Перем СтруктураПараметровАвтомобиля Экспорт; // REPN
...

У данной обработки есть формы, которые работают с данными переменными. Например:

...
ВремяРаботы = TDMS.ПолучитьНормуВремени(Работа, СтруктураПараметровАвтомобиля, ТекущийДокумент.ВидРемонта.Гарантийный).НормаВремени;
...

Проблема заключается в том, что созданная мной новая форма не видит эти самые переменные:
Цитировать
...
{Обработка.ЗаписьНаРемонтИОбслуживание.Форма.ФормаПодбораРаботХВВ.Форма(197,51)}: Переменная не определена (СтруктураПараметровАвтомобиля)
...
Подскажите, пожалуйста, что необходимо сделать для решения данной проблемы?

Slin

Подозреваю, что переменная объявлена на сервере, а обращаешься к ней из клиента.
skype: slin-dev

ReSt0R

Я так понимаю, что выполнение на сервере / клиенте регулируется директивами &НаСервере / &НаКлиенте соответственно? Данных директив в коде нет. 1С работает в режиме толстого клиента.
Добавлено: 17 мая 2013, 10:44


Объясните мне, пожалуйста, следующую вещь - в модуле объекта обработки прописаны экспортные переменные. Они же доступны для всех форм? Есть, например, переменная "Права". Я захожу в любую из существующих форм и первой строчкой пишу данную переменную, тыкаю на ней правой кнопкой мыши, выбираю пункт "Перейти к определению" и курсор переходит к определению данной переменной в модуль объекта. Копирую форму - переход к определению происходит. Но, когда я создаю новую форму переход не происходит. Как такое может быть?

Добавлено: 17 мая 2013, 10:49


Не нашёл как править пост. Дублирую.

Объясните мне, пожалуйста, следующую вещь - в модуле объекта обработки прописаны экспортные переменные. Они же доступны для всех форм? Есть, например, переменная "Права". Я захожу в любую из существующих форм и первой строчкой пишу данную переменную, тыкаю на ней правой кнопкой мыши, выбираю пункт "Перейти к определению" и курсор переходит к определению данной переменной в модуль объекта. Копирую форму - переход к определению происходит. Но, когда я создаю новую форму переход не происходит. Как такое может быть?

Жукова

Скорее всего форма управляемая. Здесь к такой переменной надо обращаться в серверной процедуре. Но и там сразу напрямую не получится. А только через РеквизитФормыВЗначение().
Примерно так:

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

&НаСервере
Процедура ПолучитьПерем()

ПП = РеквизитФормыВЗначение("Объект");
ЗначениеПерем = ПП.ЭкспортнаяПерем;

КонецПроцедуры //


"Объект" - это реквизит формы, а ЭкспортнаяПерем - переменная, объявленная экспортной в модуле обработки

Slin

В управляемых формах модули объектов конфигураций обычно компилируются на сервере. Конкретно надо смотреть в синтаксис-помощнике для конкретного объекта в разделе Доступность (но он иногда врет (это вообще)).  Варианты, в основном, возможны для общих модулей и модулей форм.

Касательно Вашего случая. Скорее всего существующие формы созданы как обычные, а Вы создаёте управляемую.
skype: slin-dev

ReSt0R

Нет, все формы обычные. Проблему решил копированием существующей формы, удалением из неё всего и вставкой того, что мне нужно. Так все переменные видны. Глюк-с видимо-с...

Besart

Цитата: ReSt0R от 17 мая 2013, 08:04в модуле объекта обработки прописаны экспортные переменные. Они же доступны для всех форм?
нет экспортные переменные в модуле формы доступны только для данной формы


Добавлено: 17 мая 2013, 14:58


Цитата: Besart от 17 мая 2013, 14:34
Цитата: ReSt0R от 17 мая 2013, 08:04в модуле объекта обработки прописаны экспортные переменные. Они же доступны для всех форм?
нет экспортные переменные в модуле формы доступны только для данной формы
невнимательно прочитал вопрос, экспортные переменные в модуле объекта действительно должны быть доступны в модуле формы

Dethmontt

Цитата: Besart от 17 мая 2013, 14:34невнимательно прочитал вопрос, экспортные переменные в модуле объекта действительно должны быть доступны в модуле формы

Только если форма является основной!!!

Для дополнительной формы можно создать реквизит формы (именно ФОРМЫ) например ЭтотОбъект с типом ОбработкаОбъект.ВашаОбработка
Тогда из формы к экспортной переменной можно будет обратиться так ЭтотОбъект.ИмяЭкспортнойПеременной
Или непосредственно в коде создавать объект обработки типа:
ЭтотОбъект = Обработки.МояОбработка.Создать();
А = ЭтотОбъект.ИмяЭкспортнойПеременной;

Добавлено: 17 мая 2013, 15:36


Цитата: ReSt0R от 17 мая 2013, 08:04Копирую форму - переход к определению происходит. Но, когда я создаю новую форму переход не происходит. Как такое может быть?

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

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск