Имя: Пароль:
1C
1С v8
v8: УФ. Загляните в темку, есть вопрос
,
0 ptrtss
 
05.05.12
17:56
&НаСервере
Процедура ДобавитьКнопку(НомерКнопки)
   
   ИмяКнопки = "Кнопка"+НомерКнопки;
   ЗаголовокКнопки = "Кнопка №"+НомерКнопки;
   
   НоваяКоманда = Команды.Добавить(ИмяКнопки);
   НоваяКоманда.Действие = "Кнопка";
   НоваяКоманда.Заголовок = ЗаголовокКнопки;
   НоваяКоманда.ИзменяетСохраняемыеДанные = ИСТИНА;
   
   НоваяКнопка = Элементы.Добавить(ИмяКнопки, Тип("КнопкаФормы"), Элементы.Кнопки);
   НоваяКнопка.ИмяКоманды = ИмяКнопки;
   
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   
   ЗаполнитьЗначенияСвойств(Запись, Параметры.ЗначенияЗаполнения);
   
   Для н = 1 по 5 Цикл
       ДобавитьКнопку(н);
   КонецЦикла;
   
КонецПроцедуры

&НаКлиенте
Процедура Кнопка(Команда)
   
   //////////////////////////////////////////////////////////////////////////////
   //////////////////////////////////////////////////////////////////////////////
   //// ОШИБКА ЧТЕНИЯ Команда.Заголовок. Вроде не сказано что свойство доступно только на сервере. Почему так?
   //// Как быть чтобы такой ошибки не возникало?
   //////////////////////////////////////////////////////////////////////////////
   //////////////////////////////////////////////////////////////////////////////
   
   Сообщить(Команда.Заголовок);
КонецПроцедуры
1 Wobland
 
05.05.12
18:06
а заголовок что, у команды? вроде ж у кнопки всегда было
2 svent0vit
 
05.05.12
18:06
Посмотри в отладчике тип значения параметра "Команда"
3 ptrtss
 
05.05.12
18:11
(2) КомандаФормы. КомандаФормы.Заголовок отображается в качестве заголовка связанной с ней кнопки, если у кнопки не указан свой. Свойство можно задать только на сервере, но оно доложно быть доступно на клиенте
4 ptrtss
 
05.05.12
18:12
(3) это и для (1) тоже
5 m-serg74
 
05.05.12
18:26
КомандаФормы (FormCommand)
Заголовок (Title)
Использование: Чтение и запись.
Описание:
Тип: Строка. Содержит отображаемый текст команды.
Доступность: Сервер.
Примечание:
Изменение доступно только на сервере.
6 m-serg74
 
05.05.12
18:31
кстати а чем Команда.Имя не подходит?
7 ptrtss
 
05.05.12
18:50
>> Доступность: Сервер
Да, банально "смотрю в книгу - вижу фигу", спасибо)
8 ptrtss
 
05.05.12
18:51
(6)
Да, я ж учусь пока, пытаюсь выяснить все за что глаз цепляется, низачем
9 ptrtss
 
05.05.12
18:52
Теперь вот так:

&НаСервере
Процедура КнопкаНаСервере(ИмяКоманды)
   Команда = Команды[ИмяКоманды];
   Сообщить(Команда.Заголовок);
КонецПроцедуры

&НаКлиенте
Процедура Кнопка(Команда)
   КнопкаНаСервере(Команда.Имя);
КонецПроцедуры
10 m-serg74
 
05.05.12
18:57
(8) я не подкалываю... сам если честно мало чего с УФ делал, просто на самом деле вроде как не логично Кнопка - без заголовка, хотя это графика для пользователя, а команда которая по сути пользователю не видна - с заголовком...
11 ptrtss
 
05.05.12
19:01
(10) Ну, мне нечего ответить, заголовок там низачем, просто по ходу обучения наткнулся на проблемку и решил разобраться, сам по себе он мне нафик не нужен. Хотя... Кнопка не передается в обработчик команды, а команда передается. Поскольку одна кнопка обрабатывает несколько команд, вдруг мне захочется сообщать что-то вроде "Действие %1 не выполнено", вот я красиво с пробелами и сообщу
12 m-serg74
 
05.05.12
19:03
а если две кн. одну команду выполняют?
13 ptrtss
 
05.05.12
19:11
(12) Ну дык команда то одна, значит пользователь хочет сделать одно и то же до единой детальки. Тем более что кнопка в команду даже не сможет передать никаких особых деталек и даже себя родимую не сможет передать
14 m-serg74
 
05.05.12
19:13
Процедура Кнопка(Команда)
по моему (Команда) - сюда передается имя того кто ее вызвал, не?
15 a_alenkin
 
05.05.12
19:15
Сообщить(Команда)



тебе и даст "Кнопка..." - что нажмешь
16 a_alenkin
 
05.05.12
19:16
будет один обработчик кнопка()
а команда и будет имя команды содержать
17 m-serg74
 
05.05.12
19:17
(15)  нет там будет "Кнопка1" например, а вот по имени "Кнопка1" можно найти эту кнопку, и узнать какой у нее заголовок, "например Кнопка №1"
18 m-serg74
 
05.05.12
19:18
а может я не шарю)))
19 a_alenkin
 
05.05.12
19:19
(17)
А я чо говорю -
нажмет "кнопка1"  - в обработчике будет Команда = "Кнопка1"
и т.д.
20 a_alenkin
 
05.05.12
19:20
в отладчике останови любую команду и посмотри чему равно значение "Команда"
21 ptrtss
 
05.05.12
19:24
Вот, глядите еще раз

   НоваяКоманда = Команды.Добавить(ИмяКнопки);
   НоваяКоманда.Действие = "Кнопка";
   НоваяКоманда.Заголовок = ЗаголовокКнопки;
   НоваяКоманда.ИзменяетСохраняемыеДанные = ИСТИНА;
   
   НоваяКнопка = Элементы.Добавить(ИмяКнопки, Тип("КнопкаФормы"), Элементы.Кнопки);
   НоваяКнопка.ИмяКоманды = ИмяКнопки;

Кнопка инициирует команду, команда инициирует обрабочик и передает себя туда

В моем случае кнопки и команды называются одинаково и команды тоже называются Кнопка1, Кнопка2. Но если мы допускаем что кнопки две, а команда одна, то в обработчике команды будет доступна только команда, которая одна, а какая кнопка запустила команду - уже не узнаешь
22 a_alenkin
 
05.05.12
19:28
ОСТАНОВИ ОБРАБОТЧИК И ПОСМОТРИ ЧЕМУ РАВНА КОМАНДА
23 ptrtss
 
05.05.12
19:30
Команда равна объекту КомандаФормы, ассоциированному с кнопкой
24 m-serg74
 
05.05.12
19:30
(23) почитай правила форума...
25 a_alenkin
 
05.05.12
19:31
у меня мозг уже вынесен)))
26 m-serg74
 
05.05.12
19:31
все уже давно посмтрели и без твоих криков))) экспериментируем, просто...
может пивка)))
27 ptrtss
 
05.05.12
19:32
(26) Ну вот, зачем про пивко сказал, в Новосибе то уже 22:30(((
28 ptrtss
 
05.05.12
19:33
Щютка, ок все))
29 m-serg74
 
05.05.12
19:36
)))
Программист всегда исправляет последнюю ошибку.