<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
///// echo '<H2><b>Старт загрузки</b></H2><br>';
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
///// echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}
$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
///// echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
///// echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
///// echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
///// echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
///// echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
{ foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
///// echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}
////загружаем данные
$table='vin_history'; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$escaped='\
Судя по описанию круто! Давно такого ждали! А vtools в этой части очень глючил.
В тестовой обработке надо заменить
глМеню.Обновить();
мнМеню.Обновить();
Интересная штука, вот только надо подумать, куда ее можно применить?…
В тестовой обработке надо заменить
глМеню.Обновить();
НА
мнМеню.Обновить();
🙂
Заменил.
Применить можно для организации переключения интерфейсов для пользователя.
Или, как в моем случае, для совмещения интерфейсов. В стандартной конфигурации предусмотрена связь пользователь-интерфейс один к одному. Я же делаю связь роль-интерфейс. Каждый пользователь в один момент может выполнять несколько ролей. Интерфейсы нескольких ролей совмещаются. Получается связь один ко многим.
При повторном открытии:
мнВсе=мнМеню.ДобавитьМеню(«Все», «&ВСЕ»);
{C:МЕНЮ ТЕСТ.ERT(5)}: Элемент с идентификатором Все уже существует на этом уровне меню.
Если вы хотите добавить в меню второй пункт ВСЕ, то используйте другой идентификатор.
мнВсе=мнМеню.ДобавитьМеню(«Все2», «&ВСЕ»);
Если вы хотите, чтобы тестовый пример корректно работал при повтоном запуске, а в меню оставался бы один пункт ВСЕ, то добавте строку
мнМеню.УдалитьВсе();
Супер, видел как один чел написал «такооое» чтобы реализовать вот это для управления пунктами меню для пользователей, а сдесь все просто, автору респект огромный.
В качестве респекта нажмите ссылочку Спасибо автору! (+1 рейтинг) выше.
И респект и плюсик!
+1
+ 1 🙂
2 robert: Убедил, полезная вешь! Особенно понравилась возможность из статьиhttp://infostart.ru/articles/?i
Все просто. Вставь в глобальный модуль такой код.
Показать полностью
Запускай 1С. При выборе пункта меню, нажатии на кнопку панели инструментов, нажатии горячей клавиши получишь код команды. Этот код потом можно использовать как написано в статье или так:
Показать полностью
А можно в цикле отправлять все команды подряд и смотреть что будет.
2 robert: Это в режиме «Предприятие» сработает, а вот откуда ты узнал код для команды из режима «Конфигуратор»? 😉
Maniac
Посмотри FormEx. Там есть процедуры перехвата движений мышью и нажатия клавиш. И работа с открытыми окнами кажется тоже.
Фишка моей разработки не в перехвате нажатия клавиши как такового, а перехвата команды, которая передается Предприятию при нажатии клавиш. Например, при нажатии Ctrl+N, выборе в меню Файл — Новый, нажатии на панели кнопочки с листочком передается одна и таже команда. Ее можно перехватить и предпринять свои действия и отменить.
wolfsoft
Программа то одна, только работает она в разных режимах. И одна и таже команда в разных режимах имеет один код. Например, Файл-Новый имеет один CommandID в любом режиме. И даже в любой программе, написанной на MFC. А то, что команда открытия окна Пользователи срабатывает в режиме Предприятие, я наткнулся случайно. 😉
2 robert:
> А то, что команда открытия окна Пользователи срабатывает в режиме Предприятие, я наткнулся случайно. 😉
Понятно. (мечтательно) Вот бы «наткнуться случайно» еще на какие-нибудь команды из Конфигуратора… 🙂
Чего-то я не догнал ,а хде же открытие списка создания пользователей!!! Где оно!!!
Сорри разобрался спс) Суперная фича! Я просто не спал блин!
Класс (+1)!!! А не собираешься ли реализовать возможность построения панелей инструменов?
Собираюсь в следующей версии.
Maniac
Не совсем так. RWidjets не предоставляет готовое решение для такой задачи. RWidjets это средство, инструмент решения подобной задачи.
На данный момент, возможно сделать загрузку интерфейсов как в восьмерке, но только в части меню. Панели инструментов остаются как есть. Поэтому я не считаю пока такую задачу решаемой на 100%. Сделаю загрузку панелей, тогда напишу как и что делать для этого.
+1
А свои панели на форму, напр. для стандартизации управления списками, таблицами, открытия меню подчиненных и связанных справочников. Типа 8-ки. Ответный удар по 8-ке.
+1
YouRock
В планах
1. панели главного окна, замена стандартным
2. панели на форме, замена стандартным
3. панели в любое место формы для контекстной привязки к элементам формы
Сначала п.1, потом остальное.
У меня вылетает при запуске 1С в терминале при количестве пользователей больше 1 с ошибкой «Память не может быть Read». Причем может и запуститься , но у 3-4 пользователей максимум. При одном пользователе работает нормально. У кого-нибудь подобное наблюдалось?
Есть конфликтики с 1С++ (v. 2.0.2.2) и vtools (v. 1.0.0.1) . Обязательно нужно загружать компонету после 1С++, но до vtools. Так, вроде, работает, но длительно ещё не тестировал. Вещь нужная, если стабильно фунциклировать будет.
У меня пункты меню в v.1.3.2 почему-то обрезаются по ширине. Мож че не догоняю?
Классная вещь, только у меня работает с ошибкой вот такой:
Если в свойствах интерфейса пользователя поставить галочку в пункте «отключить меню «Операции», то 1С вываливается при запуске на самой последней команде — меню.обновить() (я вставил создание меню в процедуру «ПриНачалеРаботыСистемы»). Если галочку снять, все ок :-(. А у меня ряду пользователей это меню нужно не включать.
Да, если это важно — установлена бухгалтерия 7.70.473 под SQL, релиз 025.
Еще одна проблема. Если запустить 1С, и, пока она еще не загрузилась, переключиться на другое окно, к примеру браузер, загрузка 1С также вываливается с сообщением «программа 1cv7s вызвала ошибку RWIDJETS.DLL…», как и в предыдущей ошибке, описанной мной. От того, в формате DBF или SQL установка, это не зависит…
Когда ждать новую версию?
Всем спасибо за сообщения об ошибках. Новая версия будет в январе.
У меня пункты меню в v.1.3.2 почему-то обрезаются по ширине.
Если используете 1С++, то сначала загружайте 1cpp.dll, потом RWidjets.dll
1С++ блокирует обработку некоторых событий. Скорей всего дело в этом.
v.1.3.3
Исправил ошибки. Персональная просьба к Serg11 проверить у себя.
У меня была ошибка, подобная Serg11 — вылет 1С при обновлении меню (у меня также всем проставлена галочка «Отключить меню Операции», правда работаю на DBF-версии, релиз. 25). В новой версии этого не наблюдается, спасибо автору!
🙂
согласен с большинством — это прорыв в менюпостроении , ждем обновлений
Проверил сейчас на тестовой базе. Действительно, ошибок, отмеченных мной раньше, не возникает. Так что включу в рабочую и буду проверять на ней. Большое спасибо.
В FormEx не умеет делать то же самое? Я еще не смотрел, правда, чем отличается?
>А то, что команда открытия окна Пользователи срабатывает в режиме Предприятие, я наткнулся случайно. 😉
А вот это пожалуй, главная изюминка.!
>Я же делаю связь роль-интерфейс. Каждый пользователь в один момент может выполнять несколько ролей. Интерфейсы нескольких ролей совмещаются. Получается связь один ко многим.
А подробнее можно? Лучше, пожалуй, по мылу Vasily_Cherkassy@mail.ru (так наверное будет оперативнее). Меня это очень заитерисовало вот в каком плане: было два юзера (разные интерфейсы и разные наборы прав). Одного сократили, а второго подгрузили его обязанностями. Два раза входить юзеру в 1С напряг, а мне напряг выискивать блох, т.е. чем наборы и интерфейсы отличаются и объединять всю эту муру. Мне показалось, что твой подход сможет помочь мне.
>Запускай 1С. При выборе пункта меню, нажатии на кнопку панели инструментов, нажатии горячей клавиши получишь код команды.
>А можно в цикле отправлять все команды подряд и смотреть что будет.
А есть ли возможность узнать внутренний код команды (например: #53359) в момент создания пункта динамического меню командами мнМен.Добавить(пТип, пИднт, пЗаголовок, пСкрипт) или мнМеню.ДобавитьКоманду(пИднт, пЗаголовок, пСкрипт)? Или это принципиально невозможно? Мне бы хотелось не выбирая пункты динамического меню «ручками» программно установить соответствие
пИднт <—> пКоманда…
Обработка супер !
вот тока у меня проблемка возникла …
не перехватывает нажатие на 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, но в ней некоторых методов, внесенных позже, нету
v.1.3.5
Просьба потестировать, кому интересно.
Новые возможности нашли отражение в тестовой обработке.
еще вопрос:
«Будут ли обрабатываться события глобального модуля в классе Перехватчик ( artbear )? «
Да, события RWidjets без проблем перехватываются Перехватчиком.
Я специально проверял.
🙂
а у меня глюк
если при открытии отключаю 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. А компонента супер.
RWidjets v.1.3.5 на втором уровне вложенного меню, при показе меню обрезается по ширмне. То же эффект и в демонстрационной обработке из всей длины названия справочника показывется 4 буквы. Что делать?
ОШИБКА: RWidjets v.1.3.5 «дурит ширина» при отображении.
Способ воспроизведения: В гл.модуле в процедуре ПриНачалеРаботыСистемы» сначала пишем
ОткрытьФорму(«Отчет»,,КаталогИБ()+»ExtFormsTest.ert»);// любая внешняя обработка
затем
ЗагрузитьВнешнююКомпоненту(«RWidjets.dll»);
глЯЯМеню=СоздатьОбъект(«Меню»);
и тд.
Все меню начинем «дурить».
Если сначала «строим меню», а потом ОткрытьФорму …, то все работает.
ОШИБКА: RWidjets v.1.3.5 «дурит ширина» при отображении.
Может это то же самое, что и у меня было?
У меня пункты меню в v.1.3.2 почему-то обрезаются по ширине.
Если используете 1С++, то сначала загружайте 1cpp.dll, потом RWidjets.dll
1С++ блокирует обработку некоторых событий. Скорей всего дело в этом.
Компонента отличная! Но нашел 2 глюка.
Команда ЗагрузитьИнтерфейс на моей конфе завешивает 1с ку, пробовал по разному, формировал меню заново с помощью мастера 1с. Код следующий:
лМеню=СоздатьОбъект(«Меню»);
лМеню.ЗагрузитьИнтерфейс(«Администратор»);
Так же не работает RMsgWindow, при выводе сообщения мелькает экран и компонента сразу закрывается.
Компонента очень нужная.
Но у меня почему-то не работает метод УдалитьВсе()
1С 25 версия
Пробовал загружать только ее, без других компонент, тоже самое.
А добавление в меню команды Пользователи работает. Прикольно! 🙂
Автору респект
Заюзал — классно.
Я же делаю связь роль-интерфейс. Каждый пользователь в один момент может выполнять несколько ролей. Интерфейсы нескольких ролей совмещаются. Получается связь один ко многим.
А подробнее можно? Лучше, пожалуй, по мылу Vasily_Cherkassy@mail.ru (так наверное будет оперативнее). Меня это очень заитерисовало вот в каком плане: было два юзера (разные интерфейсы и разные наборы прав). Одного сократили, а второго подгрузили его обязанностями. Два раза входить юзеру в 1С напряг, а мне напряг выискивать блох, т.е. чем наборы и интерфейсы отличаются и объединять всю эту муру. Мне показалось, что твой подход сможет помочь мне.
хм зачем на мыло?!!! лучше всем рассказать
зы мне тоже интересно
Спасибо за компоненту !
По поводу панелей : есть ли в планах сделать возможным всатвлять новую панель не с новой строки а рядом с уже существующей, чтобы экономить место ? или, может быть, возможно прикрепить новые кнопки к существующему установленному в конфигураторе или системному тулбару ?
Есть такие планы. Вернусь из отпуска, продолжу работу над компонентой.
Классная библиотека
Свой набор бы картинок для toolbar подключать!
Ну так и подключай. УстановитьКартинку (или как то так метод называется, у меня нет под рукой) в который можно передать стандартный 1с-овский объект Картинка. А его можно хоть из файла формировать, хоть из библиотеки картинок.
ОК попробую. Спасибо
Еще есть оно, при наведении на кнопку тоолбара хотелось бы tooltiptext, т.е. всплывающую подсказку
Может избавлюсь наконец таки от кучи интерфейсов.
А в обычное подменю можно вставлять свои элементы, или только в системные?
Посмотрел описание и пример , но так и не вьехал как мне подменить вызов стандартной истории списка справочника на свою обработку (при нажатии на стандартную кнопку панели «показать историю»). Зачем мне это я писал
http://www.1cpp.ru/forum/YaBB.pl?num=1207652965/0#10
если можно пример применительно к моему случаю
пробовал
ПриПолученииКоманды()
перехватывает все события главного меню, но меню формы списка справочника — не перехватывает, жаль.
Что интересно, если открыть меню на элементе справочника в в списке правой клавишей, (там теже пункты меню что и в шапке формы списка ) то перехват работает. Значит просто недоделано.
Автору респект! Полностью перешел на использование динамических меню + панели инструментов!
Есть одна хотелка, которой не хватает для полного счастья — подсказки к кнопкам панели инструментов, есть шансы?
Хорошая компонента. Уже практически полностью переделал систему формирования интерфейсов. Только вот в конце натолкнулся на следующий затык. Дело в том, что по задумке пользователь может переключаться между интерфейсами, которые ему доступны. Соответственно с каждым интерфейсом идет свой набо тулбаров. Но если с меню все ОК, т.е. очищаем и формируем новое меню, то с панелями я так и не понял как же их удалить или хотя бы очистить. В итоге при перещелкивании интерфейса добавляется новая панель, которая привязана уже к новому интерфейсу и остается старая. Не нашел ни одной команды, чтобы можно было программно закрыть тулбар.Можно это как-то обойти?
Вопрос снимается как глупый. Перечитывал еще раз помощь. Как говорится, много думал. До этого не обращал внимания что метод Показать() для тулбара опциональный. Так что,эта хотелка вполне решаема. Еще раз автору огромное спасибо.
Не перехватывает нажатия пиктограмм не в главном окне, например в журнале
из конт. меню перехватывает, а пиктограммы вверху окна — нет
Хочу добавить пунктов в Меню-Отчеты (он не динамический и не системный…), это возможно?
Процедура ПриПолученииКоманды(пКоманда, пЗаблокироватьКоманду)
Открыта форма журнала документов.
Если кнопками управлять (например нажать Del), событие отлавливается.
Если мышкой нажать на кнопку панели инструментов окна для удаления, не отлавливается!
Спасибо, нужная вещь. Ждем новую версию 🙂
Глюк с шириной пункта меню так и присутствует.
Возможно ли от него как-то избавится?
Пока вывожу внизу пустое подменю с заголовком из тучи пробелов.
Но как-то это не комильфо…..
Беспорно автору +
Опробовал замечательно, грузить можно и в обработках, но если идет обработка с загрузкой ВК запускается первой то как следствие первого запуска обработки, причем любой, переключение фокуса главного окна и кривое отображение меню по ширине и событий нет но результат зарузки соответственно 1 лечится только после выгрузки dll решено 2 мя способами 1 стартануть любую другую обработку и после запустить эту или 2 не паримся загружаем и создаем объекты после загрузки FormEx в процедуре ПослеОткрытия()
2 момент на тулбаре отчетливо видна черта над кнопками знакомый прикол MFC порядок расположения кнопок не по центру окно класса ToolbarWindow32 убирается сдвигом на вышесказанного окна 1 пиксел вверх, но при отцеплении от родителького окна тут же появляется
Прицепил отцепленный тулбар с измененными стилями окна на форму с включенным режимом сохранения настройки получается прикольно но тулбар onTop в комплекте с формексом можно добиться результата например вычитывания картинки области скрытие тулбара наложения при деактивации окна но мне кажется не всем такие методы понравятся 😉 хотя прикольно
Очень жаль что разработка не продолжается
1с 7.7.0.27
Видимо лечится, но не всегда. Я так и не победил.
Устанавливаю картинку пункту меню из набора иконок. Вместо иконки — черный квадрат. Так должно быть? ❓
Спасибо!
Идея весьма хороша. Жаль, что без исходников.
Взываю к автору компоненты!
Роберт а нельзя ли вернуть назад в ПриПолученииКоманды() перехват нажатия кнопок на Панели Инструментов Форм Списков Справочников Журнало и Документов.
Присоединяюсь к мольбе, верните перехват нажатия кнопок на Панели Инструментов Форм Списков Справочников Журналов и Документов. Без этого мало смысла в компоненте.
А можно ли убрать полноостью все менюшки? нужно для терминала сбора данных, у него слишком маленькое окно (240*320) поэтому любая понедь крадет место
Можно ли создать свою панель инструментов не в главном окне, а окне формы справочника?
(83) можно, но только в старых версиях вк.
(84) Где можно скачать такую версию и описание не подскажешь?
в системное меню типа Файл можно добавить пункты
А вот в обычное (которое в конфигураторе) не получается
мнСправочник = мнМеню.Получить(«Справочники»);
{D:МЕНЮ ТЕСТ.ERT(45)}: Нет элемента меню с идентификатором Справочники на этом уровне меню.
Или я что-то не так понимаю?
Добрый день! Подскажите пожалуйста, для 8.2 есть что-то подобное, очень надо заменить реакцию на кнопку «Временная блокировка»…
Не уверен, что автор еще читает эти комментарии, но все же напишу. Метод УдалитьВсе() оставляет висящим пустой пункт меню. Какой из них конкретно останется, почему-то зависит от того, какие пункты системного меню были отключены. При последующем обновлении меню в текущей сессии (хоть через загрузку интерфейса, хоть через добавление) этот пункт остается. Если проделать операцию несколько раз, он будет размножаться соответственно. Нажатие на нем подвешивает 1С. Интересно, у кого-то работает этот метод корректно?
Автору респект. Жаль что проект «задвинули».
Нашел пренепреятнейшую вещь.
ЭлементМеню->УстановитьКартинку Параметр пКартинка — Тип: Число или Стандартный для 1С объект Картинка;
Так вот, Стандартный для 1С объект Картинка при чтении файлов коверкает картинки (режет палитру и прочая фигня). И по факту загрузить красивую 32-битную иконку или картинку не получиться. А в самой 1С все картинку 16 бит.
Полазил по исходникам RMenuItem.cpp на github и увидел проверку на AGREGATE_TYPE_1C
А можно как-то добавить проверку хотябы на IPicture? или WIA ImageFile?
тогда можно было бы не стандартной Картинкой загружать? а то инструмент классный есть но толку — 0.
И сорри, но самому подправить и скомпилить не судьба. delphi мое все.
Добавление кнопок к стандартным панелям инструментов не реализовано?