Страница 3 из 6
					
				Re: Как узнать имя локального меню?
				Добавлено: 27 сен 2010, 21:16
				 Vik
				Так меню создается один раз, один единственный раз! Перед созданием меню вы проверяете, не было ли оно уже создано (смотрите в таблице X$Resources) и, если уже оно было создано, больше не создаете.  В этом случае будет достаточно после создания ресурса самому запустить Галактику и  запустить интерфейс, создав тем самым меню под админом (вы же админ?), а пользователи уже будут просто использовать уже созданное  меню и не надо им ничего создавать. Другое дело, в какой момент создавать меню, я привел пример из события инициализации, edward_K предлагает при проверке реестра настроек, делаете так, как считаете правильным. Но пользователям это меню создавать не требуется. Надеюсь, так понятнее. Ну уж, если не получается так, изменяйте меню в саппорте, если есть такая возможность, но это самый неудобный способ, на мой взгляд.
Код: Выделить всё
 
  if(RecordExists X$Resources where ((                                                     3 == X$Resources.XR$Type 
                                                        and 'MENU L_KATORG::mnuKatOrgEdit' == X$Resources.XR$Name
                            ))
       != tsOk)
  {
!       меню еще не создавали, создаем
      m_Menu := LoadMenuEx ('L_KATORG::mnuKatOrgEdit', true, false);
      AddMenuItem(m_Menu, 'Сформировать адрес из внешнего Кладра',cmValue41);
      StoreMenuHowDynamics (m_Menu, 'L_KATORG::mnuKatOrgEdit');
      DisposeLoadMenu (m_Menu);
     
  }
! блок else в этом случае не нужен - меню уже было создано ранее 
 
Загляните в саппорте в x$Resources, должно все встать на свои места.
 
			
					
				Re: Как узнать имя локального меню?
				Добавлено: 28 сен 2010, 15:03
				 Ренат
				Действительно меню появилось у всех пользователей. Супер. Прямо от сердца отлегло!  
Посмотрел X$Resourse описание меню появлилось.
Через сапорт не получиться. Нет у нас такой лицензии.
Всем спасибо!
			 
			
					
				Re: Как узнать имя локального меню?
				Добавлено: 26 янв 2011, 11:05
				 Ренат
				Случилось что то с локальным меню  L_KATORG::mnuKatOrgEdit 
 
 
Подскажите пожалуйста какое имя локального меню запускающегося в окне редактирования атрибутов ораганизации. Окно Window L_KATORG::KatOrg.wKatOrg    Screen scKatOrg.
Просмотрел !GSDK.chm но так и не понял какое меню теперь запускается.
 
			
					
				Re: Как узнать имя локального меню?
				Добавлено: 26 янв 2011, 11:27
				 LaaLaa
				Ренат писал(а):Случилось что то с локальным меню  L_KATORG::mnuKatOrgEdit 
 
 
Подскажите пожалуйста какое имя локального меню запускающегося в окне редактирования атрибутов ораганизации. Окно Window L_KATORG::KatOrg.wKatOrg    Screen scKatOrg.
Просмотрел !GSDK.chm но так и не понял какое меню теперь запускается.
 
 
заменили на 
Код: Выделить всё
PutHotCommand(RunDynMenu('C_COMMON::Print_HotKeys;SEPARATOR;C_COMMON::AttrClass_HotKeys'));
 
			
					
				Re: Как узнать имя локального меню?
				Добавлено: 26 янв 2011, 11:38
				 Ренат
				Большое спасибо!
			 
			
					
				Re: Как узнать имя локального меню?
				Добавлено: 31 янв 2011, 14:58
				 n0where
				Код: Выделить всё
#ifdef ComponentVersion
  #component "l_sklad"
#end
alter interface L_SKLAD;code]
 Уменя ругается на alter interface L_SKLAD - типа такого интерфейса в ресерсе не найдено.
Конечно не найдено если его там нет, как подключить ресурс L_SKLAD? как правильно докомпилировать рекурс? в моём случае меню
 
			
					
				Re: Как узнать имя локального меню?
				Добавлено: 31 янв 2011, 15:02
				 Vik
				Можно сделать альтер интерфейса, а не компонента (а вы указали именно имя компонента). Как изменить меню, читайте этот пост, все обсуждалось уже неоднократно.
			 
			
					
				Re: Как узнать имя локального меню?
				Добавлено: 31 янв 2011, 15:07
				 Ренат
				у меня в fcom.cfg просписана строчка:
у Вас будет наверное
 
			
					
				Re: Как узнать имя локального меню?
				Добавлено: 31 янв 2011, 15:26
				 n0where
				Можно сделать альтер интерфейса, а не компонента (а вы указали именно имя компонента). Как изменить меню, читайте этот пост, все обсуждалось уже неоднократно.
Как тогда мне узнать имя интерфейса? если я знаю в какое меню (SKLOPER) мне необходимо добавить свой пункт?
Или в качестве интерфейса использовать SKLOPER, но в консоле управления нет такого интерфейса L_SKLAD::SKLOPER.
 
			
					
				Re: Как узнать имя локального меню?
				Добавлено: 31 янв 2011, 15:34
				 Vik
				Чтоб узнать название интерфейса, запускаете этот интерфейс, встаете в какое-либо поле, жмете Ctrl+F4, в первом поле ввода вводите getifccurrentfieldname, жмете Enter, во втором поле ввода будет полное имя текущего поля в виде (в самом простом случае):
Код: Выделить всё
<Имя компонента>::<Имя интерфейса>.[<Имя окна>].<Имя Screen или browse>.<Имя поля>.
 
			
					
				Re: Как узнать имя локального меню?
				Добавлено: 31 янв 2011, 15:40
				 n0where
				Это то все понятно, только вот в чем проблема то... Мне же надо глобальное меню модуля Складской учет изменить, меню находится не в интерфейсах же...
			 
			
					
				Re: Как узнать имя локального меню?
				Добавлено: 31 янв 2011, 16:16
				 m0p3e
				n0where писал(а):Это то все понятно, только вот в чем проблема то... Мне же надо глобальное меню модуля Складской учет изменить, меню находится не в интерфейсах же...
А при чем здесь вообще alter интерфейс?
Главное меню, не принадлежит никакому интерфейсу. Как добавить пункт в него уже обсуждалось и не раз.
Код: Выделить всё
   DeleteMenuHowDynamics ( 'Z_STAFFMENU::StaffAdminMenu' );
   iMenu := LoadMenuEx ( 'Z_STAFFMENU::StaffAdminMenu', true, false);
   AddMenuItem ( iMenu, 'separator', 666 );
   AddMenuItemEx2 ( iMenu, 'Проверка назначений', '', '', cmRunInterface, 0, 'Z_Staff::CheckVacancy' );
   AddMenuItemEx2 ( iMenu, 'Проверка образования', '', '', cmRunInterface, 0, 'Z_Staff::CheckEducation' );
   StoreMenuHowDynamics ( iMenu, 'Z_STAFFMENU::StaffAdminMenu' );
   DisposeLoadMenu ( iMenu );
Выполняется один раз из под админа. Потом в случае выхода обновления на Z_STAFFMENU.
 
			
					
				Re: Как узнать имя локального меню?
				Добавлено: 31 янв 2011, 16:29
				 n0where
				В принципе тогда можно сделать через GetMenuItemState проверку - существует ли меню, если нет создать его... Если вшивать в init. но опять же при компиляции пишет, что меню в ресурсе не найдено
			 
			
					
				Re: Как узнать имя локального меню?
				Добавлено: 31 янв 2011, 16:39
				 Vik
				Что-то вы и сами запутались и нас запутали. Причем тут функция GetMenuItemState? Вам же привели готовый код, как изменить меню верхнего уровня. И сказали, что делать надо, по сути, один раз администратором. Никаких альтер интерфейсов не нужно, и уж тем более непонятно, зачем проверять состояние пункта меню)) Можете при запуске галки сделать изменение меню, если запущена она админом, можете еще что-то придумать - это уже другой вопрос. Читайте выше этот пост.
			 
			
					
				Re: Как узнать имя локального меню?
				Добавлено: 31 янв 2011, 16:47
				 n0where
				Зачем првоерять?
По логике - создаю программу, все что она делает должно быть в ней, все что меняет и тп, если запускать один раз то нужно создать дополнителньй модуль, для установки этого меню, как я понимаю. По этому решил, что в CmInit надо прописать проверку на есть ли меню, если нет создать...
Ну это как реализация скажем так: в клюбом случае у меня ошибка при запуске - меню в ресурсе не найдено, в Випере я подключил ресурс через опции в проекте.