Имя: Пароль:
1C
1C 7.7
v7: событие по нажатию кнопки
,
0 MixanM
 
20.01.12
06:05
Народ, всех привествую, скажите как сделать что бы 1с реагировал на нажатие кнопки на форме - т.е. на морде расположены 3 кнопки("1","2","3"), и текст, текст показывает какую кнопку нажимать, и при нажатии на нужную кнопку, код ехал даальше, делал через Ф-ию вопрос:
вопр = Вопрос("Нажмите кнопку ""Да"" чтобы сделать тото, ""Нет"" чтобы сделать тото или ""Отмена"" чтобы сделать тото", 3);
Если Вопр = 6 тогда
...
ИначеЕсли Вопр = 7 тогда
...
ИначеЕсли Вопр = 2 Тогда
...
КонецЕсли
Но сейчас мне надо уже 4 варианта, и хотел сделать уже все через элементы на форме, а не через ф-ию "Вопрос". Так вот, как этоо реализовать, в Делфях было проще но..
1 ДенисЧ
 
20.01.12
06:09
Своя обработка, открытая модально.
На ней кнопки. В кнопках в тексте горячие клавиши, вроде через & задаются. ТОчнее - в ЖКК
2 MixanM
 
20.01.12
06:12
а как в коде реакцию на нажатую кнпку описать?
3 Kookish
 
20.01.12
06:18
В свойствах кнопки аднака. На вкладке "Дополнительно" в поле "Формула" прописываешь вызов нужной функции. Но это тебе не поможет, раз не научился смотреть глазами и думать головой.
4 Erhov_egor
 
20.01.12
06:20
пишешь процедуру или функцию в свойствах кнопки и в программном коде описываешь че должна делать
5 big
 
20.01.12
06:21
Форма.АктивныйЭлемент()

вернет идентификатор нажатой кнопки.

(3) спокойнее, спокойнее, коллега. Постить такое в 3-ем посте - это моветон.
6 MixanM
 
20.01.12
06:27
(4) самый простой способ - это для каждой кнопки написать функцию, просто я думал что можно сделать : что то вроде обработчика событий. Ну да ладно, так тоже работает, просто строк кода много - никакой оптимизации =)
7 Kookish
 
20.01.12
06:30
(6) См (5). Можно на все кнопки навесить одну функцию.
8 MixanM
 
20.01.12
06:36
(7) Сорри я когда свой пост добавлял этого еще не было, спасибо
9 MixanM
 
20.01.12
07:09
(7)чего то я ак и не понял как работает этот метод, написал так
Если   (Форма.АктивныйЭлемент() = Форма.Кн1) Тогда
возвращает ошибку:

Кн1<<?>>()
Процедура не обнаружена (Кн1)
т.е. получается - мнен нужно написать функцию для этого элемента ?
10 ДенисЧ
 
20.01.12
07:10
(9) Продам СП. Безумно дорого. Но там будет ответ на твой вопрос....
11 Ковычки
 
20.01.12
07:24
Если   (Форма.АктивныйЭлемент() = "Кн1") Тогда
12 1Сергей
 
20.01.12
07:25
В первой кнопке пишешь ПоКнопке(1)
Во второй: ПоКнопке(2)
В третьей: ПоКнопке(3)

в модуле:

Процедура ПоКнопке(НомерКнопки)
   Если НомерКнопки=1 Тогда
       //* Нажата первая кнопка
   ИначеЕсли НомерКнопки=2 Тогда
       //* Нажата вторая кнопка
   ИначеЕсли НомерКнопки=3 Тогда
       //* Нажата третья кнопка
   КонецЕсли;
КонецПроцедуры
13 ДенисЧ
 
20.01.12
07:26
(11) Ви, батенька, мине весь бузинесс поrтите...
14 MixanM
 
20.01.12
07:27
(13) я б, таки не купился)))
15 1Сергей
 
20.01.12
07:27
или я нифига не понял?
16 Гефест
 
20.01.12
07:27
(13) Кому какой толк от твоих СП?
1с купил, СП купил, читать не купил
17 MixanM
 
20.01.12
07:27
(11)(13)(16) я пробовал как в (11) - не работает
18 PuhUfa
 
20.01.12
07:29
(13) так делиться просто надо -)
(16) ну так потом будет: "научу читать купленный у меня СП. дорого" -)
19 PuhUfa
 
20.01.12
07:30
(17) отладчиком посмотри что возвращает Форма.АктивныйЭлемент()
ps чем тебя (12) не устраивает?
20 ДенисЧ
 
20.01.12
07:31
(17) У меня работает... Так что тебе кроме сп нужно ещё две внешние компоненты купить, но уже не у меня...
21 MixanM
 
20.01.12
07:42
(20) я думаю их уже не купить,из за отсуствия этих компонент сослаться можно только на брак при производстве
22 1Сергей
 
20.01.12
07:44
(21) бугага :) Самокритично
23 MixanM
 
20.01.12
08:26
не могу отладчиком выцепить значение вот тут :

Если   (Форма.АктивныйЭлемент() = "Кн1") Тогда

ставлю точку останова, но значение пустое, т.к. программа одинэс отсановленна уже и я еще не передал сюда параметр по нажатию кнопик(ведь я же ее так и не нажал ), соотвесвенно показывает : "Недопустимое значение" в этом месте.
Если просто запустить обраьботку, то доходя до :
Если   (Форма.АктивныйЭлемент() = "Кн1") Тогда
она посто не реагирует на нажатия кнопки... отака фигня.
з.ы. У кнопки Идентификатор "Кн1"
24 1Сергей
 
20.01.12
08:27
(23) а теперь вопрос на миллион. Ты где этот код написал-то?
25 MixanM
 
20.01.12
08:34
(24) так понятно будет? или лучше полный листинг? :
СпрЕдиницыОЛЕ.ВыбратьЭлементы(0);
   Пока СпрЕдиницыОЛЕ.ПолучитьЭлемент() = 1 Цикл
       Иначе            
           Если Условие1 Тогда
               ...
               Если условие2 Тогда
                   Если Спр.ПометкаУдаления() = 1 Тогда    
                       ...
                   Иначе
                       Если  Условие3 Тогда
                           ...
                           Если Условие 4 Тогда    
                               ...
                           Иначе
                               ...
                               Если Услвие Тогда
                                   ...    
                               Иначе
                                   ...
                                   Если СпрОЛЕДляПоискаПоКоду2.ПометкаУдаления() = 1 Тогда
                                       Сообщить("В базе "+Розн+"такойэлемент помечен на удаление, проверяться не будет");    
                                   Иначе
                                       Если   (Форма.АктивныйЭлемент() = "Кн1") Тогда
26 Mikeware
 
20.01.12
08:41
(16) нееее..
1с укралЪ, СП укралЪ, читать - не укралЪ....
27 MixanM
 
20.01.12
08:44
(26) кто такой Сп ?
28 MixanM
 
20.01.12
08:44
всмысле в нем нифига не написано:
Форма.АктивныйЭлемент();
Синтаксис:
Форма.АктивныйЭлемент()
Назначение:
Возвращает строковое значение -  идентификатор активного элемента диалога.
Замечание:
Доступ к методу возможен только в контексте Модуля формы через атрибут Форма.
29 1Сергей
 
20.01.12
08:45
(25) нет, не понятней. Что за процедура и откуда вызывается?
30 MixanM
 
20.01.12
08:45
(29) тогда вот :
Процедура ПоКнопке(НомерКнопки)
   Если НомерКнопки=1 Тогда
       //* Нажата первая кнопка

   ИначеЕсли НомерКнопки=2 Тогда
       //* Нажата вторая кнопка

   ИначеЕсли НомерКнопки=3 Тогда
       //* Нажата третья кнопка

   КонецЕсли;
КонецПроцедуры

Процедура Сформировать()
   ИмяФайла = "c:\rash.txt";
   Файл = СоздатьОбъект("Текст");
   Спр = СоздатьОбъект("Справочник.Номенклатура");
   СпрЕдиницы = СоздатьОбъект("Справочник.Единицы");
   БазаОле = СоздатьОбъект("V77.Application");
   БазаОле2 = СоздатьОбъект("V77.Application");
   ПользовательОле = "Admin";
   ПарольОле       = "";
   ЗапускБезЗаставки = 1;
   Подключение = БазаОле.Initialize(БазаОле.RMTrade, "/DH:\trade_mag_Centr1\"+" /n"+ПользовательОле+" /p"
   +ПарольОле,"NO_SPLASH_SHOW");
   Подключение2 = БазаОле2.Initialize(БазаОле.RMTrade, "/DH:\trade_mag_rozn2\"+" /n"+ПользовательОле+" /p"
   +ПарольОле,"NO_SPLASH_SHOW");
   Если Подключение = 0 Тогда
       Сообщить("Коннект к  1 утерян ");
       Возврат;
   Иначе
       Сообщить("Подключились к 1");
   КонецЕсли;
   Если Подключение2 = 0 Тогда
       Сообщить("Коннект к  2 утерян ");
       Возврат;
   Иначе
       Сообщить("Подключились к 2");
   КонецЕсли;
   Опт = "База ОПТ";
   ТЦ = "База Торговый Центр";
   Розн = "База Розница ";
   Файл.Открыть(ИмяФайла);
   СпрЕдиницыОЛЕ = БазаОле.CreateObject("Справочник.Единицы");
   СпрОЛЕ = БазаОле.CreateObject("Справочник.Номенклатура");
   СпрЕдиницыОЛЕ2 = БазаОле2.CreateObject("Справочник.Единицы");
   СпрОЛЕ2 = БазаОле2.CreateObject("Справочник.Номенклатура");
   СпрОЛЕДляПоискаПоКоду2 = БазаОле2.CreateObject("Справочник.Номенклатура");//создал второй , ибо слетает курсор с первой rulf шарит по единицам
   СпрОЛЕ22 = БазаОле2.CreateObject("Справочник.Номенклатура");
   СпрЕдиницы.ВыбратьЭлементы() ;
   Счетчик = 0;
   Всего = 0;
   СпрЕдиницыОЛЕ.ВыбратьЭлементы(0);
   Пока СпрЕдиницыОЛЕ.ПолучитьЭлемент() = 1 Цикл
       Всего = Всего +1;
       Состояние(Всего);
       ШК = СпрЕдиницыОЛЕ.ШтрихКод;
       ИмяОЛЕ = СпрЕдиницыОЛЕ.Владелец.Наименование;
       КодОЛЕ = СпрЕдиницыОЛЕ2.Владелец.Код;
       Если СпрЕдиницыОЛЕ.Владелец.Весовой = 1 Тогда
           Сообщить("Товар весовой - пропускаем");
       Иначе            
           Если ШК <> 0 Тогда
               Спр.ВыбратьЭлементы();
               Если Спр.НайтиПоНаименованию(ИмяОЛЕ, 0) = 1 Тогда
                   Если Спр.ПометкаУдаления() = 1 Тогда    
                       Сообщить("Помечен на удаление - пропускаем");
                   Иначе
                       Если  СпрЕдиницы.НайтиПоРеквизиту("ШтрихКОД", ШК, 1) = 1 Тогда
                           ИмяСпр = СпрЕдиницы.ТекущийЭлемент().Владелец.наименование;
                           КодСпр = СпрЕдиницы.ТекущийЭлемент().Владелец.Код;
                           //Сообщить("кодСпр : "+КодСпр);
                           СпрЕдиницыОЛЕ2.ВыбратьЭлементы();
                           СпрЕдиницыОЛЕ2.НайтиПоРеквизиту("ШтрихКод", ШК, 1 );
                           Если СпрЕдиницыОЛЕ2.НайтиПоРеквизиту("ШтрихКод", ШК, 1 ) = 0 Тогда    
                               ИмяОЛЕ2 = 0;
                               КодОЛЕ2 = 0;
                               Файл.Записать(ШК+" в базе "+Опт+" не найден");
                           Иначе
                               ИмяОЛЕ2 = СпрЕдиницыОЛЕ2.Владелец.Наименование;
                               КодОЛЕ2 = СпрЕдиницыОЛЕ2.Владелец.Код;    
                               
                               СпрОЛЕ.НайтиПоНаименованию(ИмяОЛЕ, 0);
                               Если СпрОЛЕ.ПометкаУдаления() = 1 Тогда
                                   Сообщить("В базе "+Опт+"такойэлемент помечен на удаление, проверяться не будет");    
                               Иначе
                                   СпрОЛЕ22.НайтиПоНаименованию(ИмяОле2, 0);
                                   Если СпрОЛЕДляПоискаПоКоду2.ПометкаУдаления() = 1 Тогда
                                       Сообщить("В базе "+Розн+"такойэлемент помечен на удаление, проверяться не будет");    
                                   Иначе
                                       Если (ИмяСпр <> ИмяОЛЕ) или (ИмяСпр <> ИмяОЛЕ2) Тогда
                                           Счетчик = Счетчик+1;
                                           
                                           Форма.ТекстГл.Заголовок("Расхождение названия для шк : "+ШК
                                           +" Нажмите 1 чтобы использовать наименование из "+ТЦ
                                           +"или ""2"" для использования имени из "+Опт
                                           +",Или ""3"" для имени из "+Розн);
                                           Форма.ТекстТЦ.Заголовок("1 :"+КодСпр+" "+ИмяСПР+" *** - Это название из базы "+ТЦ);
                                           Форма.ТекстОпт.Заголовок("2 :"+КодОЛЕ+" "+ИмяОЛЕ+"  *** - Это название из базы "+Опт);
                                           Форма.ТекстРозн.Заголовок("3 :"+КодОЛЕ2+" "+ИмяОЛЕ2+"  *** - Это название из базы "+Розн);
                                           Если   (Форма.АктивныйЭлемент() = "Кн1") Тогда
31 Mikeware
 
20.01.12
08:50
(30) Процедура ПоКнопке - восхищает глубиной полета мысли....
32 1Сергей
 
20.01.12
08:50
(30) афигеть
33 1Сергей
 
20.01.12
08:51
(31) это я ему дал ещё в (12)
34 1Сергей
 
20.01.12
08:51
Видимо, зря
37 MixanM
 
20.01.12
10:52
(35) ну как бы, этот код был рабочий, если испольовалось так:
Процедура Сформировать()
   ИмяФайла = "c:\rash.txt";
   Файл = СоздатьОбъект("Текст");
   Спр = СоздатьОбъект("Справочник.Номенклатура");
   СпрЕдиницы = СоздатьОбъект("Справочник.Единицы");
   БазаОле = СоздатьОбъект("V77.Application");
   БазаОле2 = СоздатьОбъект("V77.Application");
   ПользовательОле = "Admin";
   ПарольОле       = "";
   ЗапускБезЗаставки = 1;
   Подключение = БазаОле.Initialize(БазаОле.RMTrade, "/DH:\trade_mag_Centr1\"+" /n"+ПользовательОле+" /p"
   +ПарольОле,"NO_SPLASH_SHOW");
   Подключение2 = БазаОле2.Initialize(БазаОле.RMTrade, "/DH:\trade_mag_rozn2\"+" /n"+ПользовательОле+" /p"
   +ПарольОле,"NO_SPLASH_SHOW");
   Если Подключение = 0 Тогда
       Сообщить("Коннект к  1 утерян ");
       Возврат;
   Иначе
       Сообщить("Подключились к 1");
   КонецЕсли;
   Если Подключение2 = 0 Тогда
       Сообщить("Коннект к  2 утерян ");
       Возврат;
   Иначе
       Сообщить("Подключились к 2");
   КонецЕсли;
   Опт = "База ОПТ";
   ТЦ = "База Торговый Центр";
   Розн = "База Розница ";
   Файл.Открыть(ИмяФайла);
   СпрЕдиницыОЛЕ = БазаОле.CreateObject("Справочник.Единицы");
   СпрОЛЕ = БазаОле.CreateObject("Справочник.Номенклатура");
   СпрЕдиницыОЛЕ2 = БазаОле2.CreateObject("Справочник.Единицы");
   СпрОЛЕ2 = БазаОле2.CreateObject("Справочник.Номенклатура");
   СпрОЛЕДляПоискаПоКоду2 = БазаОле2.CreateObject("Справочник.Номенклатура");//создал второй , ибо слетает курсор с первой rulf шарит по единицам
   СпрОЛЕ22 = БазаОле2.CreateObject("Справочник.Номенклатура");
   СпрЕдиницы.ВыбратьЭлементы() ;
   Счетчик = 0;
   Всего = 0;
   СпрЕдиницыОЛЕ.ВыбратьЭлементы(0);
   Пока СпрЕдиницыОЛЕ.ПолучитьЭлемент() = 1 Цикл
       Всего = Всего +1;
       Сообщить("Всего найденно "+Всего);
       ШК = СпрЕдиницыОЛЕ.ШтрихКод;
       ИмяОЛЕ = СпрЕдиницыОЛЕ.Владелец.Наименование;
       КодОЛЕ = СпрЕдиницыОЛЕ2.Владелец.Код;
       Если СпрЕдиницыОЛЕ.Владелец.Весовой = 1 Тогда
           Сообщить("Товар весовой - пропускаем");
       Иначе            
           Если ШК <> 0 Тогда
               Спр.ВыбратьЭлементы();
               Если Спр.НайтиПоНаименованию(ИмяОЛЕ, 0) = 1 Тогда
                   Если Спр.ПометкаУдаления() = 1 Тогда    
                       Сообщить("Помечен на удаление - пропускаем");
                   Иначе
                       Если  СпрЕдиницы.НайтиПоРеквизиту("ШтрихКОД", ШК, 1) = 1 Тогда
                           ИмяСпр = СпрЕдиницы.ТекущийЭлемент().Владелец.наименование;
                           КодСпр = СпрЕдиницы.ТекущийЭлемент().Владелец.Код;
                           //Сообщить("кодСпр : "+КодСпр);
                           СпрЕдиницыОЛЕ2.ВыбратьЭлементы();
                           СпрЕдиницыОЛЕ2.НайтиПоРеквизиту("ШтрихКод", ШК, 1 );
                           Если СпрЕдиницыОЛЕ2.НайтиПоРеквизиту("ШтрихКод", ШК, 1 ) = 0 Тогда    
                               ИмяОЛЕ2 = 0;
                               КодОЛЕ2 = 0;
                               Файл.Записать(ШК+" в базе "+Опт+" не найден");
                           Иначе
                               ИмяОЛЕ2 = СпрЕдиницыОЛЕ2.Владелец.Наименование;
                               КодОЛЕ2 = СпрЕдиницыОЛЕ2.Владелец.Код;    
                               
                               СпрОЛЕ.НайтиПоНаименованию(ИмяОЛЕ, 0);
                               Если СпрОЛЕ.ПометкаУдаления() = 1 Тогда
                                   Сообщить("В базе "+Опт+"такойэлемент помечен на удаление, проверяться не будет");    
                               Иначе
                                   СпрОЛЕ22.НайтиПоНаименованию(ИмяОле2, 0);
                                   Если СпрОЛЕДляПоискаПоКоду2.ПометкаУдаления() = 1 Тогда
                                       Сообщить("В базе "+Розн+"такойэлемент помечен на удаление, проверяться не будет");    
                                   Иначе
                                       Если (ИмяСпр <> ИмяОЛЕ) или (ИмяСпр <> ИмяОЛЕ2) Тогда
                                           Счетчик = Счетчик+1;
                                           Вопр = Вопрос("Расхождение названия для шк : "+ШК+" Нажмите ""Да"" чтобы использовать наименование из "+ТЦ+",
                                           |или ""Нет"" для использования имени из "+Опт+",
                                           |Или ""Отмена"" для имени из "+Розн
                                           +Симв(13)+"1 :"+КодСпр+" "+ИмяСПР+" *** - Это название из базы "+ТЦ
                                           +Симв(13)+"2 :"+КодОЛЕ+" "+ИмяОЛЕ+"  *** - Это название из базы "+Опт
                                           +Симв(13)+"3 :"+КодОЛЕ2+" "+ИмяОЛЕ2+"  *** - Это название из базы "+Розн, 3);
                                           Если   Вопр = 6 Тогда
                                               
                                               СпрОЛЕ.Наименование = ИмяСпр;
                                               СпрОЛЕ.ПолнНаименование = ИмяСпр;
                                               СпрОЛЕ.Записать();
                                               
                                               СпрОЛЕ22.Наименование = ИмяСпр;
                                               СпрОЛЕ22.ПолнНаименование = ИмяСпр;
                                               СпрОЛЕ22.Записать();
                                               
                                               Файл.ДобавитьСтроку("Использовали имя из : "+ТЦ+" "+ИмяСпр
                                               +"                 Код            Наименование было                                              Наименование стало"
                                               +"имя в "+Опт+"  "+КодОЛЕ+"       "+ИмяОЛЕ+"|"+ИмяСпр+" "+ШК
                                               +" имя в "+Розн+" "+КодОЛЕ2+"      "+ИмяОЛЕ2+"|"+ИмяСпр+" "+ШК
                                               +"-----------------------------------------------------------------------------");
                                               Файл.Записать(ИмяФайла);
                                               
                                           ИначеЕсли Вопр = 7 Тогда
, то все работает, я же объяснил что надо 4ую кнопку прикрутить и незнаю как, но вы все -красавцы, код оценили(хотя об этом не просил), и то что я не знаю как доп кнопку прикрутить - освистали
38 1Сергей
 
20.01.12
10:55
(37) используй СписокЗначений + ВыбратьЗначение()
39 Дядя Васька
 
20.01.12
10:58
Э... А про Вопрос() уже было?
40 1Сергей
 
20.01.12
10:59
(39) в вопросе слишком мало кнопок
41 Дядя Васька
 
20.01.12
11:01
Пардон, все ни асилил, но Вопрос("Расхождение названия для шк : "+ШК+" Нажмите ""Да"" чтобы использовать наименование из "+ТЦ+",
                                           |или ""Нет"" для использования имени из "+Опт+",
                                           |Или ""Отмена"" для имени из "+Розн
                                           +Симв(13)+"1 :"+КодСпр+" "+ИмяСПР+" *** - Это название из базы "+ТЦ
                                           +Симв(13)+"2 :"+КодОЛЕ+" "+ИмяОЛЕ+"  *** - Это название из базы "+Опт
                                           +Симв(13)+"3 :"+КодОЛЕ2+" "+ИмяОЛЕ2+"  *** - Это название из базы "+Розн, 3);
это пять :)
42 Эмбеддер
 
20.01.12
11:01
(38) Хотел это же посоветовать. Во-первых, это в стиле 1С, а во-вторых удобно, когда пользователю надо работать быстро
43 MixanM
 
20.01.12
11:02
(38) простоя думал сдлеать макс удобно оператору, т.е увидела расхождение позиций - жмякнула какое имя выбрать, и дальше, а таак придется код немного переделать, но, черт возьми, как хорошо то было бы : "нажал кнпку - получил результат"...
44 MixanM
 
20.01.12
11:03
(41) а что дделать то? было оч мало времени и могли нагрянуть, очень большие пиз#$ли
45 1Сергей
 
20.01.12
11:06
(43) дык, списком удобнее
46 Mikeware
 
20.01.12
11:07
(43) любая задача имеет кучу решений... Но выбирать из кучи решений "самые такие" - это талант...
47 Simod
 
20.01.12
11:11
(30) Перед НайтиПоНаименованию()и НайтиПоРеквизиту() не надо использовать ВыбратьЭлементы(). Почитайте ЖКК ипосмотрите там примеры использования методов. Или здесь: http://mista.ru/tutor_1c/sprav.htm#find

Ну а вообще конечно: "Ад, треш и угар"
48 Дядя Васька
 
20.01.12
11:15
В данном случае удобнее ТЗ и ВыбратьСтроку(), а не списком. В одну колонку имя базы, в другую элемент.
49 MixanM
 
20.01.12
11:15
(48) как раз так и делаю
50 MixanM
 
20.01.12
12:17
так, а теперь можете сказать, у меня выполняется процедура, потом она вызывает функцию фот так :
НомерКнопки = ПоКнопке(НомерКнопки);
Если  НомерКнопки =1  Тогда
в этой функции вызывается вот это :

Функция ПоКнопке(НомерКнопки)

   Если НомерКнопки=1 Тогда
       //* Нажата первая кнопка
   Сообщить("жмякнули 1");
   
   ИначеЕсли НомерКнопки=2 Тогда
       //* Нажата вторая кнопка

   ИначеЕсли НомерКнопки=3 Тогда
       //* Нажата третья кнопка

   КонецЕсли;
   
КонецФункции// ПоКнопке(НомерКнопки)
и... всё, т.е. обработка замирает, а как мне процедуру продолжить?
51 1Сергей
 
20.01.12
12:20
(50) это процедура нужна, если на форме несколько кнопок
52 Mikeware
 
20.01.12
12:21
(50) Ты, эттааа... праграммиста позови...
53 MixanM
 
20.01.12
12:49
моск уже замирает... как 6ля ее продожить то?
пробовал функцию обозвать процедурой, и вызываьт ее во второй процедуре вт так:

НомерКнопки  = 0;
ПоКнопке(НомерКнопки);

все равно не продолжается процедура