v.1.4.0
+ Новые объекты для динамического создания панелей инструментов (тулбаров)
[RWidjets] Динамические панели, меню программы v.1.4.0
Разработка - Работа с интерфейсом
Также вы можете перехватывать, отменять или переопределять команды стандартного меню, панелей инструментов, горячих клавиш.
Скачать исходный код
Наименование | Файл | Версия | Размер | |||
---|---|---|---|---|---|---|
RWidjets v.1.4.0
.1177363119 82,75Kb
1812
|
.1177363119 | 82,75Kb | 1812 | Скачать |
См. также
1С:Фото номенклатуры 7.7 - решение для работы с фотографиями номенклатуры в 1С:7.7 (включая формат PNG)
Работа с интерфейсом Логистика, склад и ТМЦ Платформа 1С v7.7 1С:Торговля и склад 7.7 Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)
Решение для разработчика и конечного пользователя для работы с фотографиями номенклатуры: систематизация, хранение, отображение, а также выгрузка на Яндекс-Диск и FTP (кроме версии лайт). Поддерживаются графические форматы: bmp, jpg, gif, tiff, а также png - не поддерживаемый штатными средствами 1С. Выполнено без использования внешних компонент (кроме функции выгрузки на FTP). Поставляется как в виде пустой конфигурации с набором объектов и модулей для работы с фото, так и в виде обновления к 1С:Торговля и склад 7.7. Выполнено в двух версиях: "полная" и "лайт".
5000 руб.
18.10.2022 5230 1 45
WebЦвета для 1с77 FormEx
Инструментарий разработчика Работа с интерфейсом Платформа 1С v7.7 Абонемент ($m)
Обработка с фрагментами кода для программного использования набора цветов из коллекции WebЦвета 1с версии 8+ в 1с версии 77. Требуется предварительное подключение сторонней библиотеки FormEх. Будет полезно программистам 1с 77, 1с 8. Да и вообще при программировании на любом языке при потребности использовать коллекцию цветов WebЦвета.
1 стартмани
30.03.2022 4581 2 igor7777 4
К привязкам элементов форм (1С 7.7, FormEx)
Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)
Публикация имеет цель обратить внимание на возможность улучшения интерфейса.
15.12.2021 4502 62 Cерый 13
[ПОЛЕЗНЯШКА 7.7] Как запретить максимизацию формы
Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)
Программный прием запрета максимизации формы
18.04.2021 1497 CheBurator 10
Выбор цвета для 1С 7.7
Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)
Простая и удобная внешняя обработка для выбора цвета без применения внешних компонент.
1 стартмани
09.06.2020 7072 4 vap_pig 5
Производственный календарь для 1С 7.7
Учет рабочего времени Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)
Обработка производственного календаря с возможностью импорта и экспорта xls для 1С 7.7 (7.70.027) без изменения конфигурации.
1 стартмани
18.09.2019 12644 6 Jill 8
Альтернативная обработка "Выбор периода"
Работа с интерфейсом Оперативный учет 7.7 1С:Торговля и склад 7.7 Абонемент ($m)
Альтернативная обработка ввода периода для 1С 7.7.
1 стартмани
27.03.2019 6609 3 v.a.n- 11
Несколько табличных частей в 1С:7.7 - это просто
Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)
При программировании на платформе V7 достаточно часто возникает задача создать несколько табличных частей документа (или справочника). Традиционно эта задача имеет несколько решений..
1 стартмани
01.05.2018 22508 27 Gkmy 11
Применить можно для организации переключения интерфейсов для пользователя.
Или, как в моем случае, для совмещения интерфейсов. В стандартной конфигурации предусмотрена связь пользователь-интерфейс один к одному. Я же делаю связь роль-интерфейс. Каждый пользователь в один момент может выполнять несколько ролей. Интерфейсы нескольких ролей совмещаются. Получается связь один ко многим.
мнВсе=мнМеню.ДобавитьМеню("Все2", "&ВСЕ");
Если вы хотите, чтобы тестовый пример корректно работал при повтоном запуске, а в меню оставался бы один пункт ВСЕ, то добавте строку
мнМеню.УдалитьВсе();
2 robert: Убедил, полезная вешь! Особенно понравилась возможность из статьи
Вопрос.
В статье приведен следующий код:
Код |
---|
мнМеню=СоздатьОбъект("Меню");
мнСервис=мнМеню.ПолучитьСистемное("Сервис");
мнСервис.ДобавитьРазделитель("Разд1");
мнСервис.ДобавитьКоманду("Плзв", "Пользователи", "#32854");
мнМеню.Обновить();
Показать полностью |
Откуда извлечена информация о том, что именно код "#32854" соответствует данной команде? ;) А то может там еще что полезное есть :)
Код |
---|
Процедура ПриПолученииКоманды(пКоманда, пЗаблокироватьКоманду)
Сообщить("Идентификатор команды: "+пКоманда);
КонецПроцедуры Показать полностью |
Запускай 1С. При выборе пункта меню, нажатии на кнопку панели инструментов, нажатии горячей клавиши получишь код команды. Этот код потом можно использовать как написано в статье или так:
Код |
---|
мнМеню=СоздатьОбъект("Меню");
мнМеню.ПослатьКоманду("32854"); Показать полностью |
А можно в цикле отправлять все команды подряд и смотреть что будет.
Посмотри FormEx. Там есть процедуры перехвата движений мышью и нажатия клавиш. И работа с открытыми окнами кажется тоже.
Фишка моей разработки не в перехвате нажатия клавиши как такового, а перехвата команды, которая передается Предприятию при нажатии клавиш. Например, при нажатии Ctrl+N, выборе в меню Файл - Новый, нажатии на панели кнопочки с листочком передается одна и таже команда. Ее можно перехватить и предпринять свои действия и отменить.
wolfsoft
Программа то одна, только работает она в разных режимах. И одна и таже команда в разных режимах имеет один код. Например, Файл-Новый имеет один CommandID в любом режиме. И даже в любой программе, написанной на MFC. А то, что команда открытия окна Пользователи срабатывает в режиме Предприятие, я наткнулся случайно. ;)
> А то, что команда открытия окна Пользователи срабатывает в режиме Предприятие, я наткнулся случайно. ;)
Понятно. (мечтательно) Вот бы "наткнуться случайно" еще на какие-нибудь команды из Конфигуратора... :)
Не совсем так. RWidjets не предоставляет готовое решение для такой задачи. RWidjets это средство, инструмент решения подобной задачи.
На данный момент, возможно сделать загрузку интерфейсов как в восьмерке, но только в части меню. Панели инструментов остаются как есть. Поэтому я не считаю пока такую задачу решаемой на 100%. Сделаю загрузку панелей, тогда напишу как и что делать для этого.
Если в свойствах интерфейса пользователя поставить галочку в пункте "отключить меню "Операции", то 1С вываливается при запуске на самой последней команде - меню.обновить() (я вставил создание меню в процедуру "ПриНачалеРаботыСистемы"). Если галочку снять, все ок :-(. А у меня ряду пользователей это меню нужно не включать.
У меня пункты меню в v.1.3.2 почему-то обрезаются по ширине.
Если используете 1С++, то сначала загружайте 1cpp.dll, потом RWidjets.dll
1С++ блокирует обработку некоторых событий. Скорей всего дело в этом.
>А можно в цикле отправлять все команды подряд и смотреть что будет.
А есть ли возможность узнать внутренний код команды (например: #53359) в момент создания пункта динамического меню командами мнМен.Добавить(пТип, пИднт, пЗаголовок, пСкрипт) или мнМеню.ДобавитьКоманду(пИднт, пЗаголовок, пСкрипт)? Или это принципиально невозможно? Мне бы хотелось не выбирая пункты динамического меню "ручками" программно установить соответствие
пИднт <--> пКоманда...
А подробнее можно? Лучше, пожалуй, по мылу Vasily_Cherkassy@mail.ru (так наверное будет оперативнее). Меня это очень заитерисовало вот в каком плане: было два юзера (разные интерфейсы и разные наборы прав). Одного сократили, а второго подгрузили его обязанностями. Два раза входить юзеру в 1С напряг, а мне напряг выискивать блох, т.е. чем наборы и интерфейсы отличаются и объединять всю эту муру. Мне показалось, что твой подход сможет помочь мне.
вот тока у меня проблемка возникла ...
не перехватывает нажатие на INS в журнале документов ... т.е. не перехватывает "горячую клавишу " в журнале документов
причем пробовал в абсолютно пустой базе.. не работает .. нажание на кнопки в меню перехватываются , а вот INS нет ...
+ поставил ;)
При использовании Процедуры ПриПолученииКоманды(пКоманда, пЗаблокироватьКоманду)
с ключом пЗаблокироватьКоманду=1;
в журнале документов иногда все равно проскакивает стандартное окно выбора документа.
Соглашусь с предыдущим собеседником неплохо было бы сделать перехват команды с клавиатуры,
можна было бы избавиться от одной лишней библиотеки.
Есть один баг -
При загруженном Rwidjets падает 1с при использовании БыстрыйПоискВСписке
(есть на инфостарте или с помощью моего класса)
Я смотрел код RWidjets по представленным исходникам, в момент вызова svcsvc.dll, когда открыто окно этой компоненты, работает RWidjets и вылетает на методе MenuHook из-за того, что метод ::GetMainFrame() возвращает NULL и дальше идет обращение к этому NULL, что ведет к исключению.
Но, я все-таки нашел временный выход :)
Нужно в MenuHook сделать небольшую вставку
LRESULT CALLBACK MenuHook(int code, WPARAM wp, LPARAM lp)
{
// artur
if (!GetMainFrame())
return ::CallNextHookEx(hMenuHook, code, wp, lp);
// end
и быстрый поиск начинает работать, т.е. RWidjets перестает конфликтовать с svcsvc.dll
Роберт, сможешь поправить свою ВК ?
ЗЫ или выложи, плиз, исходники
ЗЫ Роберт, а можно получить последние исходники ВК?
хотел поотлаживать версию 1.33, но в ней некоторых методов, внесенных позже, нету
а у меня глюк
если при открытии отключаю 4 системных меню
то при закрытии ПОСЛЕ выхода из программы пишет ошибку:
...
Подпись ошибки
AppName: 1cv7s.exe AppVer: 7.70.0.25 ModName: unknown
ModVer: 0.0.0.0 Offset: 1000a800
...
з.ы.
даже если при закрытии обнулять объект "Меню"..
з.з.ы
1c v7.7, r.25, sql
Как добавить полный журнал, если он не определен в конфигурации.
Точнее как программно открыть полный журнал документов.
Пардон если оффтоп.
PS. А компонента супер.
Способ воспроизведения: В гл.модуле в процедуре ПриНачалеРаботыСистемы" сначала пишем
ОткрытьФорму("Отчет",,КаталогИБ()+"\ExtForms\Test.ert");// любая внешняя обработка
затем
ЗагрузитьВнешнююКомпоненту("RWidjets.dll");
глЯЯМеню=СоздатьОбъект("Меню");
и тд.
Все меню начинем "дурить".
Если сначала "строим меню", а потом ОткрытьФорму ..., то все работает.
Может это то же самое, что и у меня было?
У меня пункты меню в v.1.3.2 почему-то обрезаются по ширине.
Если используете 1С++, то сначала загружайте 1cpp.dll, потом RWidjets.dll
1С++ блокирует обработку некоторых событий. Скорей всего дело в этом.
Команда ЗагрузитьИнтерфейс на моей конфе завешивает 1с ку, пробовал по разному, формировал меню заново с помощью мастера 1с. Код следующий:
лМеню=СоздатьОбъект("Меню");
лМеню.ЗагрузитьИнтерфейс("Администратор");
Так же не работает RMsgWindow, при выводе сообщения мелькает экран и компонента сразу закрывается.
Но у меня почему-то не работает метод УдалитьВсе()
1С 25 версия
Пробовал загружать только ее, без других компонент, тоже самое.
А добавление в меню команды Пользователи работает. Прикольно! :)
Автору респект
А подробнее можно? Лучше, пожалуй, по мылу Vasily_Cherkassy@mail.ru (так наверное будет оперативнее). Меня это очень заитерисовало вот в каком плане: было два юзера (разные интерфейсы и разные наборы прав). Одного сократили, а второго подгрузили его обязанностями. Два раза входить юзеру в 1С напряг, а мне напряг выискивать блох, т.е. чем наборы и интерфейсы отличаются и объединять всю эту муру. Мне показалось, что твой подход сможет помочь мне.
хм зачем на мыло?!!! лучше всем рассказать
зы мне тоже интересно
По поводу панелей : есть ли в планах сделать возможным всатвлять новую панель не с новой строки а рядом с уже существующей, чтобы экономить место ? или, может быть, возможно прикрепить новые кнопки к существующему установленному в конфигураторе или системному тулбару ?
если можно пример применительно к моему случаю
ПриПолученииКоманды()
перехватывает все события главного меню, но меню формы списка справочника - не перехватывает, жаль.
Что интересно, если открыть меню на элементе справочника в в списке правой клавишей, (там теже пункты меню что и в шапке формы списка ) то перехват работает. Значит просто недоделано.
Открыта форма журнала документов.
Если кнопками управлять (например нажать Del), событие отлавливается.
Если мышкой нажать на кнопку панели инструментов окна для удаления, не отлавливается!
Спасибо, нужная вещь. Ждем новую версию :)
2 момент на тулбаре отчетливо видна черта над кнопками знакомый прикол MFC порядок расположения кнопок не по центру окно класса ToolbarWindow32 убирается сдвигом на вышесказанного окна 1 пиксел вверх, но при отцеплении от родителького окна тут же появляется
Прицепил отцепленный тулбар с измененными стилями окна на форму с включенным режимом сохранения настройки получается прикольно но тулбар onTop в комплекте с формексом можно добиться результата например вычитывания картинки области скрытие тулбара наложения при деактивации окна но мне кажется не всем такие методы понравятся ;-) хотя прикольно
Очень жаль что разработка не продолжается
1с 7.7.0.27
Нашел пренепреятнейшую вещь.
ЭлементМеню->УстановитьКартинку Параметр пКартинка - Тип: Число или Стандартный для 1С объект Картинка;
Так вот, Стандартный для 1С объект Картинка при чтении файлов коверкает картинки (режет палитру и прочая фигня). И по факту загрузить красивую 32-битную иконку или картинку не получиться. А в самой 1С все картинку 16 бит.
Полазил по исходникам RMenuItem.cpp на github и увидел проверку на AGREGATE_TYPE_1C
А можно как-то добавить проверку хотябы на IPicture? или WIA ImageFile?
тогда можно было бы не стандартной Картинкой загружать? а то инструмент классный есть но толку - 0.
И сорри, но самому подправить и скомпилить не судьба. delphi мое все.
Все объекты типа справочники, документы, обработки и журналы документов из обновленного меню открываются, а пункты меню ведущие на внешние отчеты "Отчет.открытьвнешний" не отрабатывают, открывается диалоговое окно открытия файла. в чем может быть проблема?
Пробовал разные пути для ссылки на внешний отчет и относительный путь и абсолютный, результат одинаков.
Для получения уведомлений о новых публикациях автора подключите телеграм бот: Инфостарт бот
№ 14461
Создание 31.10.06 00:00
Обновление 14.01.15 20:38
Просмотры 51137
Загрузки 1812
Рейтинг
236
Комментарии 88
Код открыт Не указано
Рубрики Работа с интерфейсом
Кому Программист
Тип файла Компонента, плагин (dll, vbs,..)
Платформа Бухгалтерский учет 7.7
Конфигурация
Конфигурации 1cv7
,
Не имеет значения
Операционная система Не имеет значения
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
![Заявка принята](/bitrix/templates/adaptive/img/landing_page_ring/check_icon.png)