Имя: Пароль:
1C
1C 7.7
v7: Обработка нажатия кнопки на тулбаре
0 vladmenleo
 
01.09.23
05:49
Здравствуйте! Работаю с классом DWX.ToolBar. Создаю дополнительные кнопки в обработке. Есть процедура ButtonClick(actID) в которой происходит собственно обработка нажатия. Все хорошо, все прекрасно. Но! Когда это все происходит во внешней обработке - все работает. Помещаю обработку в конфигурацию - кнопки отрисовываются, нажимаются, но заход в процедуру не происходит. Выяснил, что в классе вызывается вот такой код num = Wrap.FindMethod(""ButtonClick"") и он возвращает -1 именно при запуске из конфигурации и далее идет проверка If num > -1 Then ну и соответственно вызов не происходит. Что делать, может кто уже сталкивался, или я что не так делаю?
1 Bigbro
 
01.09.23
05:55
за всю жизнь на 7ке ни разу не потребовалось программно создавать доп кнопки в обработке (
эмуляцию нажатий клавиш делал - требовалось, а кнопки? почему их не нарисовать стандартно и не греть голову, в чем необходимость?
2 vladmenleo
 
01.09.23
06:05
(1) Сделан аналог хитрого журнала с множественным отбором. Кнопки соответственно моделируют настоящий https://ru.paste.pics/P8JTW
3 Злопчинский
 
01.09.23
07:36
Если уже майстрячить - то майстрячили ТП с ПД...
А такую приблуду вообще первый раз слышу. Если можно - скинь обработку свою на [email protected],
Интересно глянуть, может даже обработку перепишут свою одну... Или ссылку дай на класс
4 АгентБезопасной Нацио
 
01.09.23
08:06
(2) Делай на ПД - там всё работает. Вид, конечно, отличается от стандартного, но все "хитрые отборы" реализуются стандартно.
Этого класса (DWX.ToolBar) тоже не знаю. В конце концов, используй RWidget
5 vladmenleo
 
01.09.23
08:06
(3) собственно на табличном поле с поставщиком данных и сделано, тулбар это как дополнение. Сбросил на мыло
6 vladmenleo
 
01.09.23
08:09
(4) вопрос не про отбор, а про реакцию на нажатие по кнопке. А использовать класс ПоставщикДанных который не стандартный в 1с++, то там нужен офис на сервере
7 Злопчинский
 
01.09.23
08:09
(5) ТП я привык что по другому выглядит когда видел
8 vladmenleo
 
01.09.23
08:10
(4) класс брал здесь https://www.1cpp.ru/forum/YaBB.pl?num=1359569054/0
9 Злопчинский
 
01.09.23
08:11
(6) насколько я знаю там не офис нужен а какая-то часть от него.. вроде.. типа comctrl какой-то, который за пиктограммы отвечает.. вроде...
10 vladmenleo
 
01.09.23
08:12
(9) Ну да наверно, тока я не админ на терминальном сервере, и бодаться с админами из-за своих хотелок не буду
11 Djelf
 
01.09.23
08:17
(0) Тестовая база https://cloud.mail.ru/public/Db3c/yFJC3S1dA
Обработка нажатия работает и из внешней и из внутренней формы.
12 Злопчинский
 
01.09.23
08:23
(10) сделай пользюкам на ТЗ и пусть страдают со своими хотелками из-за админов ;-)
13 АгентБезопасной Нацио
 
01.09.23
08:35
(9) в новых офисах такого нет. Свободно распространяемого компонента (он на сайте мелкомягких был отдельно) тоже уже нет в доступе. (равно как и OWC)
14 vladmenleo
 
01.09.23
08:41
(11) какая-то левая ссылка - не хочу я, чтобы приложение майл.ру имело доступ к моей почте
15 vladmenleo
 
01.09.23
08:42
(11) кинь на почту если не трудно [email protected]
16 Djelf
 
01.09.23
08:55
(14) Обычное облако... Доступа к почте оно не имеет... Скинул.
17 Djelf
 
01.09.23
09:02
+(16) Без dynwrapx.dll, gmail его не пропускает. У меня 1.1.0.0 14848
18 vladmenleo
 
01.09.23
09:04
(16) нет ничего :( сделал пустую конфигурацию, загрузил в нее обработку - не отрабатывает нажатие
код простейший
Перем ТулБар;
// 1.01 Добавлено начало

Процедура ButtonClick(actID)
    Сообщить("ОбработкаНажатияКнопки, actID = " + СокрЛП(actID));
    
КонецПроцедуры

Процедура Добавить()
    ТулБар.ЗагрузитьКартинкуИзРесурса(1037);
    // Ид кнопки должен быть в диапазоне 65536 - 66000
    ТулБар.ДобавитьКнопку(65563 + 49, 49,"Ввод новой строки","Новая строка (Insert)");
    ТулБар.ДобавитьКнопку(65563 + 50, 50,"Изменить (открыть) строку","Изменить (открыть) (Shift+Enter)");
    ТулБар.ДобавитьКнопку(65563 + 69, 69,"Открыть объект для просмотра","Просмотр");
    ТулБар.ДобавитьКнопку(65563 + 51, 51,"Ввести новую строку скопировав текущую","Копировать строку (F9)");
    ТулБар.ДобавитьКнопку(65563 + 57, 57,"Ввести документ использую текущий как основание","Ввести на основании (Alt+F9)");
    ТулБар.ДобавитьКнопку(65563 + 52, 52,"Пометить на удаление","Пометить на удаление");
    ТулБар.ДобавитьКнопку(65563 + 58, 58,"Установить интервал просмотра документов","Интервал");
    // Следующие пункты закомментированы, т.к. нет прав
    //ТулБар.ДобавитьКнопку(65563 + 70, 70,"Открыть бухгалтерскую операцию","Открыть операцию");
    //ТулБар.ДобавитьКнопку(65563 + 67, 67,"Показать движения по документу","Движения документа");
    //ТулБар.ДобавитьКнопку(65563 + 68, 68,"Открыть журнал подчиненных документов","Подчиненные документы");

    ТулБар.ЗагрузитьКартинкуИзРесурса(128);
    ТулБар.ДобавитьКнопку(65600, 49 + 49 + 6,"Печать реестра документов по текущему отбору","Печать реестра"); // 65563 + 49 + 49 + 6
КонецПроцедуры
// 1.01 Добавлено конец

Процедура ПослеОткрытия()
    // 1.01 Добавлено начало
    ТулБар = СоздатьОбъект("DWX.ToolBar");
    ТулБар.УстановитьКонтекстФорму(Контекст, Форма);
    Добавить();
    ТулБар.УдалитьКнопку(0, 4);
    // 1.01 Добавлено конец
    Форма.Обновить();
КонецПроцедуры
19 vladmenleo
 
01.09.23
09:05
(17) у меня dynwrapx.dll такой-же
20 vladmenleo
 
01.09.23
09:11
Вот оно че Михалыч. В глобале у меня грузится turbomd.dll Как только его комментирую, все отрабатывает :(
21 Djelf
 
01.09.23
09:47
(20) Попробуй обновить turbomd https://infostart.ru/1c/tools/14291/
22 vladmenleo
 
01.09.23
09:48
(21) Он и стоит
23 Djelf
 
01.09.23
09:58
(22) Странно, я попробовал и перед 1с++, и после, и перед formex и после. Работает.
Проверь все таки версию, 90кб ложна быть. На какой-то более старой действительно не ловит.
24 vladmenleo
 
01.09.23
10:05
25 Djelf
 
01.09.23
10:21
(24) Ну я уже тогда ничего не понимаю...
А теперь внезапно при закрыток обработки 1С стала вылетать, даже при отключенном turbomd.dll Шаманство какое-то...
26 Djelf
 
01.09.23
10:47
Так, на инфорстарте не самая последняя turbomd, см пост: https://www.1cpp.ru/forum/YaBB.pl?num=1160630298/0
И: https://www.1cpp.ru/forum/YaBB.pl?num=1160630298/0
Попробуй с этой версией...
27 vladmenleo
 
01.09.23
11:15
(26) Ура !!!!! Заработало. Только действительно 1с стала крашится при закрытии. Нашел почему крашилась стояло ЗагрузитьВнешнююКомпоненту("vkloader.dll"); и в сообщении об ошибке писало
Имя события проблемы:    APPCRASH
  Имя приложения:    1cv7s.exe
  Версия приложения:    7.70.0.27
  Отметка времени приложения:    4573fcd8
  Имя модуля с ошибкой:    vkloader.dll_unloaded
28 Djelf
 
01.09.23
11:22
(27) У vkloader тоже версий навалом, вот например вроде последние https://www.1cpp.ru/forum/YaBB.pl?num=1207731949
29 vladmenleo
 
01.09.23
11:26
(28) я vkloader просто для теста ставил, думал может через него загружу и будет все работать. чуда не произошло, и я забыл о нем. тупо закомментировал и все. У меня все работает, спасибо за правильную версию. Вопрос считаю закрытым
30 Злопчинский
 
01.09.23
12:19
(13) и что теперь делать?
31 АгентБезопасной Нацио
 
01.09.23
13:00
(30) как вариант - искать в закромах.
32 Djelf
 
01.09.23
13:25
(30) Переписать на ActivX VBCCR https://www.vbforums.com/showthread.php?841929-VB6-ActiveX-CommonControls-(Replacement-of-the-MS-common-controls)&p=5129155#post5129155
Это не сложно, и уже сделано ;)
Gодменить 2 файлика в ПоставщикДанных https://cloud.mail.ru/public/qnZN/o7dvSEwBA и зарегистрировать VBCCR.
33 АгентБезопасной Нацио
 
01.09.23
13:46
(32) спасибо! Хотя не планирую возвращаться на клюшки, но утянул в загашник.
34 Djelf
 
01.09.23
14:17
(33) Там плюс еще и в том что OWC очень плохо работают на W10x64, мне как-то удавалось запустить, но это очень нестабильно было.
А VBCCR очень неплохо работает, только не все контролы на W10x64 поднимаются, а на WinXP еще несколько работают.
Но и того что работает вполне достаточно https://gyazo.com/c524cf7603a3b2b1e00b1d0dffd2d0af
35 АгентБезопасной Нацио
 
01.09.23
14:47
(34) а каким образом с OWC связано?
36 Djelf
 
01.09.23
15:02
(35) Ну значит перепутал или недопутал, или не вспомнил... Да, OWC тут совсем не нужен, в (13) прочитал и попутался ;)
У меня такие замены:
Оригинал ПоставщикДанных.БиблиотекаКартинок.ert использует MSComctlLib.ImageListCtrl, у меня он заменен на VBCCR17.ImageList
Оригинал ПоставщикДанных.КоманднаяПанель.ert  MSComctlLib.Toolbar.2 у меня заменен на VBCCR17.ToolBar
Почти все в свойствах соответствует, внешний вид форм через ПоставщикДанных не изменился.
37 АгентБезопасной Нацио
 
01.09.23
15:28
(36) а я уж начал обрадовываться....
38 serpentt
 
05.09.23
10:52
(33) Здравствуйте, можете кинуть Ваш примерчик как на скрине, посмотреть модуль обработки. Заранее спасибо
39 АгентБезопасной Нацио
 
05.09.23
11:16
(38) это точно мне?
40 serpentt
 
05.09.23
11:35
(39) Сори
41 serpentt
 
05.09.23
11:35
(34) Здравствуйте, можете кинуть Ваш примерчик как на скрине, посмотреть модуль обработки. Заранее спасибо