Имя: Пароль:
1C
 
СКД: СКД. Как переоределить действие кнопки "Сформировать" отчета, созданного в СКД?
0 NAlex
 
27.08.09
19:10
Подскажите пожалуйста как переопределить действие кнопки "Сформировать" отчета, созданного с использованием системы компоновки данных.
Сделал так:
Модуль формы отчета. ВидПериода и НачалоПериода - реквизиты отчета.

Перем СтароеДействие;
...
Процедура _Сформировать(Кнопка) Экспорт
   
   Отменить = Ложь;
   Если Не ЗначениеЗаполнено(ВидПериода) Тогда
       Отменить = Истина;
       Сообщить("Выберите значение в поле Вид периода:");
   КонецЕсли;
   Если Не ЗначениеЗаполнено(НачалоПериода) Тогда
       Отменить = Истина;
       Сообщить("Выберите значение в поле Начало периода:");
   КонецЕсли;
   Если Отменить Тогда
       Возврат;
   КонецЕсли;
   
   Выполнить(СтароеДействие);    
   
КонецПроцедуры


Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
   
   СтароеДействие = ЭлементыФормы.ДействияФормы.Кнопки.Действие.Действие;
   НовоеДействие = Новый Действие("_Сформировать");
   ЭлементыФормы.ДействияФормы.Кнопки.Действие.Действие = НовоеДействие;
   
КонецПроцедуры

Проблема в том, что ставим точку останова на строке: ЭлементыФормы.ДействияФормы.Кнопки.Действие.Действие = НовоеДействие;
смотрим значение НовоеДействие = _Сформировать, Значение в строке ЭлементыФормы.ДействияФормы.Кнопки.Действие.Действие = НовоеДействие; свойства Действие (слева) до присвоения
равно Сформировать т.е. то, которое было установлено СКД, после присваивания нового значения (делаем шаг в отдадчике) значение свойства Действие не меняется.
Подскажите пожалуйста почему так происходит. Может в СКД как-то по другому переопределяют действия кнопок?
1 ТелепатБот
 
гуру
27.08.09
19:10
2 NAlex
 
28.08.09
12:41
Ну что, никто не знает как переопределить кнопку отчета, созданного системой компоновки данных?!
3 asady
 
28.08.09
12:43
4 NAlex
 
28.08.09
12:58
Уважаемый asady, вопрос не в том, как программно запустить компоновку данных вместо кнопки "Сформировать", а как переопределить действие кнопки "Сформировать" т.е. пользователь нажимает указанную кнопку, а выполняется другая (не встроенная) процедура и, при выполнении ряда условий, из этой процедуры вызывается встроенная процедура либо, компоновка вызывается программно как описано в той статье, ссылку на которую Вы мне любезно сообщили.
5 asady
 
28.08.09
13:00
(4) заполни командную панель сам (галку автозаполнение сними) а  потом нажми ПКМ и заполни автоматически - тогда кнопки будут доступны программно.
6 NAlex
 
28.08.09
17:59
Уважаемый asady, больше спасибо за подсказку! Прошу дать несколько уточнений.
1. "заполни командную панель сам" - означает, что её нужно отредактировать в конфигураторе или сделать это программно? Точнее как бы Вы это делали;
2. Что такое ПКМ?
7 IronDemon
 
28.08.09
18:03
В конфигураторе. Правая Кнопка Мыши.
8 NAlex
 
28.08.09
18:13
Здорово, а я этого не знал. Век живи, век учись и дураком помрешь. Все получилось. Всем огромное спасибо!!!
9 NAlex
 
28.08.09
19:10
Если кому интересно. Окончательно решение выглядит так:

Процедура _Сформировать(Кнопка) Экспорт
   
   Отменить = Ложь;
   Если Не ЗначениеЗаполнено(ВидПериода) Тогда
       Отменить = Истина;
       Сообщить("Выберите значение в поле Вид периода:");
   КонецЕсли;
   Если Не ЗначениеЗаполнено(НачалоПериода) Тогда
       Отменить = Истина;
       Сообщить("Выберите значение в поле Начало периода:");
   КонецЕсли;
   Если Отменить Тогда
       Возврат;
   КонецЕсли;
   
   ЭлементыФормы.Результат.Очистить();
   ЭтотОбъект.СкомпоноватьРезультат(ЭлементыФормы.Результат);    
   
КонецПроцедуры


Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
   
   ЭлементыФормы.ДействияФормы.Кнопки.Действие.Действие = Новый Действие("_Сформировать");
   
КонецПроцедуры

Есть один нюанс после выполнения советов asady и IronDemon все работает, однако, на кнопке "Сформировать" в режиме Предприятие слева от надписи нет зелёного треугольника - стрелки, а вот в режиме Конфигуратора эта кнопка выглядит как надо со стрелкой.
Вопрос. Почему так происходит и как это исправить (чтобы вид кнопки был со стрелкой в режиме Предприятие) если это возможно?
10 NAlex
 
28.08.09
19:41
Последний вопрос снимается. Чтобы была картинка ее нужно установить программным путем после переопределения Действия кнопку в обработчике ПередОткрытием. Вопрос полностью закрыт. Всем большое спасибо.
11 asady
 
28.08.09
19:42
(9)
может отборажение кнопки слетает когда действие переопределяешь

ЭлементыФормы.ДействияФормы.Кнопки.Действие.Отображение = ОтображениеКнопкиКоманднойПанели.НадписьКартинка;

или сама картинка

ЭлементыФормы.ДействияФормы.Кнопки.Действие.Картинка = БиблиотекаКартинок.СформироватьОтчет;
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс