Имя: Пароль:
1C
 
Вывод формы констант в управляемом приложении
0 NIGHTHUNTER
 
04.11.20
04:53
Создал константу, создал форму констант. Как сейчас ее вывести в интерфейсе?
Конфигурация самостоятельно разрабатываемая.
1 NIGHTHUNTER
 
04.11.20
08:07
Сделал константу, КаталогМакетов http://joxi.ru/LmGO73GslwW8xm

Почему, выводится 2 раза?
2 Chameleon1980
 
04.11.20
08:16
ну ты же пишешь про форму, так и создай форму
3 NIGHTHUNTER
 
04.11.20
08:17
(1) Это поправил. Видимо было из за того что в интерфейс делал вывод и константы и формы констант.

Подскажите сейчас по такому вопросу. Открываю форму констант. Выбираю каталог, устанавливаю выбранное значение в значение константы.
И так же хочу обновлять значение в форме константы. Но там выдает ошибку, или не обновляется.

Подскажите что я не так делаю ?



//
&НаКлиенте
Процедура КаталогМакетовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    Режим = РежимДиалогаВыбораФайла.ВыборКаталога;
    ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим);
    ДиалогОткрытия.Каталог = "";
    ДиалогОткрытия.МножественныйВыбор = Ложь;
    ДиалогОткрытия.Заголовок = "Выберите каталог";
    Если ДиалогОткрытия.Выбрать() Тогда
        КаталогМакетов         = ДиалогОткрытия.Каталог;
        Элементы.КаталогМакетов = КаталогМакетов;
        ЗадатьКаталогМакетовНаСервере(КаталогМакетов);
    КонецЕсли;
КонецПроцедуры
//
Процедура ЗадатьКаталогМакетовНаСервере(КаталогМакетов);
    Константы.КаталогМакетов.Установить(КаталогМакетов);
КонецПроцедуры
//
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    КаталогМакетов = Константы.КаталогМакетов.Получить();
КонецПроцедуры
//
4 youalex
 
04.11.20
08:22
(3) >> Но там выдает ошибку
Главное - никогда и не при каких условиях не писать какую ошибку выдает. И про ошибку лучше тоже не писать, лучше писать просто и понятно - "не работает".
5 NIGHTHUNTER
 
04.11.20
08:22
Подскажите пожалуйста, что нужно сделать, когда проходит вот этот код, что бы обновлялось значение на форме
КаталогМакетов. А то меняешь разные каталоги, но значение остается на форме без изменения. http://joxi.ru/82QJW7EH9wXkkA

    Если ДиалогОткрытия.Выбрать() Тогда
        КаталогМакетов         = ДиалогОткрытия.Каталог;
        //Элементы.КаталогМакетов = КаталогМакетов;
        ЗадатьКаталогМакетовНаСервере(КаталогМакетов);
    КонецЕсли;
6 NIGHTHUNTER
 
04.11.20
08:23
(4) Ошибка потому что так нельзя делать, я это закомментировал.

  //Элементы.КаталогМакетов = КаталогМакетов;

Как там задавать значение на форме???
7 youalex
 
04.11.20
08:26
Элементы.КаталогМакетов - это элемент формы, а тебе нужно поменять значение в этом элементе. Подозреваю, что это НаборКонстант.КаталогМакетов.
8 NIGHTHUNTER
 
04.11.20
08:33
(7) Пробую так, тоже ничего не меняется на форме.

//
&НаКлиенте
Процедура КаталогМакетовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    Режим = РежимДиалогаВыбораФайла.ВыборКаталога;
    ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим);
    ДиалогОткрытия.Каталог = "";
    ДиалогОткрытия.МножественныйВыбор = Ложь;
    ДиалогОткрытия.Заголовок = "Выберите каталог";
    Если ДиалогОткрытия.Выбрать() Тогда
        КаталогМакетов = ДиалогОткрытия.Каталог;
        //Элементы.КаталогМакетов = КаталогМакетов;
        //НаборКонстант = Константы.СоздатьНабор("КаталогМакетов");
        //НаборКонстант.Прочитать();
        //НаборКонстант.КаталогМакетов = КаталогМакетов;        
        //
        ЗадатьКаталогМакетовНаСервере(КаталогМакетов);
    КонецЕсли;
КонецПроцедуры
//
Процедура ЗадатьКаталогМакетовНаСервере(КаталогМакетов);
    //Константы.КаталогМакетов.Установить(КаталогМакетов);
    _НаборКонстант = Константы.СоздатьНабор("КаталогМакетов");
    _НаборКонстант.Прочитать();
    _НаборКонстант.КаталогМакетов = КаталогМакетов;        
КонецПроцедуры
//
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    КаталогМакетов = Константы.КаталогМакетов.Получить();
КонецПроцедуры
//
9 NIGHTHUNTER
 
04.11.20
08:35
(7) Добавил записать, тоже ничего не получилось

Процедура ЗадатьКаталогМакетовНаСервере(КаталогМакетов);
    //Константы.КаталогМакетов.Установить(КаталогМакетов);
    _НаборКонстант = Константы.СоздатьНабор("КаталогМакетов");
    _НаборКонстант.Прочитать();
    _НаборКонстант.КаталогМакетов = КаталогМакетов;        
    _НаборКонстант.Записать();
КонецПроцедуры
10 NIGHTHUNTER
 
04.11.20
08:39
При редактировании константы на форме констант, выходит такое окно, как с этим быть? От чего оно?

http://joxi.ru/gmvMjezu1qlazr
11 NIGHTHUNTER
 
04.11.20
08:41
Похоже вот так работает


//
&НаКлиенте
Процедура КаталогМакетовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    Режим = РежимДиалогаВыбораФайла.ВыборКаталога;
    ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим);
    ДиалогОткрытия.Каталог = "";
    ДиалогОткрытия.МножественныйВыбор = Ложь;
    ДиалогОткрытия.Заголовок = "Выберите каталог";
    Если ДиалогОткрытия.Выбрать() Тогда
        КаталогМакетов = ДиалогОткрытия.Каталог;
        //
        НаборКонстант.КаталогМакетов = КаталогМакетов;
        //ЗадатьКаталогМакетовНаСервере(КаталогМакетов);
    КонецЕсли;
КонецПроцедуры
//
&НаСервере
Процедура ЗадатьКаталогМакетовНаСервере(КаталогМакетов);
    Константы.КаталогМакетов.Установить(КаталогМакетов);
КонецПроцедуры
//
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    КаталогМакетов = Константы.КаталогМакетов.Получить();
КонецПроцедуры
//

И даже не нужно задавать серверный вызов установки константы //ЗадатьКаталогМакетовНаСервере(КаталогМакетов);
Правильно ли я понимаю, что достаточно кода на клиенте????
12 youalex
 
04.11.20
08:43
(8) Да не КаталогМакетов, а НаборКонстант.КаталогМакетов
(10) о, знакомое окошко. Подозреваю, что у тебя >1 сеанса открыто
13 NIGHTHUNTER
 
04.11.20
08:45
(12) Да потом увидел, это окно. Но не понял, как быть если такое пользователю выйдет

Вот этот код работает, и не нужны получается серверные процедуры. Действительно ли достаточно того что выполняется на клиенте?
В процедуре НачалоВыбора?



//
&НаКлиенте
Процедура КаталогМакетовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    Режим = РежимДиалогаВыбораФайла.ВыборКаталога;
    ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим);
    ДиалогОткрытия.Каталог = "";
    ДиалогОткрытия.МножественныйВыбор = Ложь;
    ДиалогОткрытия.Заголовок = "Выберите каталог";
    Если ДиалогОткрытия.Выбрать() Тогда
        КаталогМакетов = ДиалогОткрытия.Каталог;
        //
        НаборКонстант.КаталогМакетов = КаталогМакетов;
        //ЗадатьКаталогМакетовНаСервере(КаталогМакетов);
    КонецЕсли;
КонецПроцедуры
//
//&НаСервере
//Процедура ЗадатьКаталогМакетовНаСервере(КаталогМакетов);
//    Константы.КаталогМакетов.Установить(КаталогМакетов);
//КонецПроцедуры
//
//&НаСервере
//Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
//    КаталогМакетов = Константы.КаталогМакетов.Получить();
//КонецПроцедуры
//
14 youalex
 
04.11.20
08:50
(13) ну у тебя же НаборКонстант - основной реквизит формы (галка в свойствах), а элемент (поле) формы привязан к данным этого реквизита через ПутьКДанным = "НаборКонстант.КаталогМакетов" (свойство элемента формы). Короче, нет, не надо этих дополнительных манипуляция, оно само.
15 NIGHTHUNTER
 
04.11.20
09:01
(14) Ясно. Спасибо. А то тут думал все как правильнее сделать.