| 
			
			 | 
		#1 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
			
			
			Создание методов find и exist
			 
			
			Тут как-то ребята из Коламбуса предлагали за деньги свой модуль Developer+, который в числе прочего мог создавать на таблицах методы find и exist. Я решил, что идея неплохая (самому понадобилась такая фенька), и написал что-то, что, по моему мнению, делает то же самое.  
		
		
		
		
		
		
			В отличие от Коламбуса, денег не прошу. По совершенно непонятным причинам для NSC условия точно такие же, как и для всех остальных   Пользуйтесь. P.S.: После импортирования MenuItem из проекта следует добавить в SysContextMenu (AOT - Menus - SysContextMenu) 
				__________________ 
		
		
		
		
	Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: e@gle (1). | |
| 
			
			 | 
		#2 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Случайно нажал Опубликовать раньше времени. 
		
		
		
			Рома, когда уже, в конце концов, можно будет аттачить файлы при Редактировании?! P.S.: Собственно проект: http://www.axforum.info/forums/attac...s=&postid=9595 
				__________________ 
		
		
		
		
	Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: jasper (1). | |
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			можно вопрос? 
		
		
		
		
		
		
		
	твой проект на построен на аддон-технологии или напрямую пишет в Dict*?  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Не понял вопрос... 
		
		
		
		
		
		
			Что такое Add-On технология? А в Dict разве можно писать? Я пока только читать с их помощью научился... 
				__________________ 
		
		
		
		
	Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Прежде всего: Ты КРУТ! спасибо. 
		
		
		
		
		
		
		
	Далее. Переформулирую вопрос, заглянув в Аксапту в спокойной обстановке. ![]() Ты написал добавление метода используя add-in или Script-технологию? Теперь вижу, что добавил add-in меню. А почему не выбрал технологию скриптов? Почему не написал Script похожий на Script / Template / Method / Edit? Показалось сложным? Неправильным? Неудобным? И еще вопрос: зачем приводишь к атомарным типам? Это задумка или так получилось? Сейчас не проходят сравнения текстовых полей поскольку переменные str нельзя сравнивать с str N. Кроме того, даты могут лежать и в неупакованном виде. Тогда для сравнения будет важны параметры представления даты. А ты их обрезаешь. И еще: То что ты использовал job - это так получилось или задумано для тех, кто не имеет доступа к полному исходному коду Х++? И еще: ты, похоже, совсем не используешь метки. Это задумано или так получилось? В конце еще раз повторю - ты крут! Спасибо за классную идею и пример реализации.  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано mazzy  
А почему не выбрал технологию скриптов? Почему не написал Script похожий на Script / Template / Method / Edit? Показалось сложным? Неправильным? Неудобным? Цитата: 
	
		
			Изначально опубликовано mazzy  
И еще вопрос: зачем приводишь к атомарным типам? Это задумка или так получилось? ![]() Цитата: 
	
		
			Изначально опубликовано mazzy  
Кроме того, даты могут лежать и в неупакованном виде. Тогда для сравнения будет важны параметры представления даты. А ты их обрезаешь. Цитата: 
	
		
			Изначально опубликовано mazzy  
То что ты использовал job - это так получилось или задумано для тех, кто не имеет доступа к полному исходному коду Х++? Цитата: 
	
		
			Изначально опубликовано mazzy  
И еще: ты, похоже, совсем не используешь метки. Это задумано или так получилось? Кстати, хотел запаковать шаблон для кода методов в Macro, но не получилось. Судя по всему, есть ошибка лексического анализатора, которая не позволяет создать и подключить, например, следующее макроопределение: PHP код: 
	
			
	 
		
				__________________ 
		
		
		
		
	Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ок. Огромное спасибо. 
		
		
		
		
		
		
		
	Хотя насчет sript'а я бы поспорил. ![]() Насчет типов. Просто я не нашел у себя таблиц без find и exist, поэтому тестировал на новых левых таблицах.  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 ---------------- 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Хорошо, что есть люди, которые облегчают жизнь другим. Спасибо. 
		
		
		
			Понимаю, что этод job писался "для себя", просто хочется отметить - уникальный индекс не всегда есть - find и пр. на временных таблицах большого смысла иметь не будут. - было бы неплохо создавать все 4 метода (хотя checkExist, txtNotExist редко встречаются) Аттач - код который я случайно обнаружил у нас в приложении, и которым никогда не пользовался... подозреваю, что это та самая часть Dev+  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Во-первых, спасибо за еще один вариант решения проблемы. Посмотрел. Идея та же самая. 
		
		
		
			Цитата: 
	
		
			Изначально опубликовано Wamr  
- уникальный индекс не всегда есть ![]() Когда я писал, столкнулся с такой проблемой: как-то надо было выбрать множество полей, по которому строить методы. Самым разумным вариантом мне показалось, выбрать какой-либо индекс. В том классе, который ты мне отправил, действительно выбирается первый уникальный индекс. Я предоставил выбор (и ответственность  ) пользователю: перед созданием можно выбрать индекс, который будет использоваться.Цитата: 
	
		
			Изначально опубликовано Wamr  
- find и пр. на временных таблицах большого смысла иметь не будут. ![]() А вообще, задался таким вопросом (но не успел его решить): в зависимости от вида элемента, выбранного в AOT, отображаются не все AddIns (например, Браузер таблиц для классов не вызывается). Как это организована? Любая помощь, как говорится, приветствуется. ![]() Цитата: 
	
		
			Изначально опубликовано Wamr  
- было бы неплохо создавать все 4 метода (хотя checkExist, txtNotExist редко встречаются) В заключение, выложу новую версию проекта. Пусть это будет, например, версия 0.5. Изменения: 
 
				__________________ 
		
		
		
		
	Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 ---------------- 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			А вообще, задался таким вопросом (но не успел его решить): в зависимости от вида элемента, выбранного в AOT, отображаются не все AddIns (например, Браузер таблиц для классов не вызывается). Как это организована?
		
	 
 
		 | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Спасибо. 
		
		
		
			Исправленная версия: 
  
		
				__________________ 
		
		
		
		
	Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Никто ничего не пишет, отсюда делаю вывод, что это только у меня глючит: 
		
		
		
		
		
		
			АХАРТА 2.5 SP1. Импортировал проект из предыдущего сообщения. При попытке создать методы пишет "DictIndex object не инициализирован", причем 2 раз пишет. Почему? И попутно вопрос: ставлю breakpoint в этот job - не срабатывает, хотя явно там что-то делается. Как же так? 
				__________________ 
		
		
		
		
	Андрей.  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 сибиряк 
		
			
	 | 
	
	
	
		
		
		
		 
			
			у меня эта ошибка прет если индекс у таблицы один.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	С уважением, Вячеслав.  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 сибиряк 
		
			
	 | 
	
	
	
		
		
		
		 
			
			2Dron AKA andy 
		
		
		
		
		
		
			PHP код: 
	
			
	
				__________________ 
		
		
		
		
	С уважением, Вячеслав.  | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Спасибо, помогло. 
		
		
		
		
		
		
			Еще бажок (думаю, все его уже исправили, но все же): в том месте, где проверяются атомарные типы, нужно поменять местами integer и timeOfDay. И все же, почему не срабатывает breakpoint, как думаете? 
				__________________ 
		
		
		
		
	Андрей.  | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			странно. уменя breakPoint работает  
		
		
		
		
		
		
		
	![]() хотя, не в контексте данного примера, breakPoint обычно не работает в классах и под АОСом. а тут job. странно  
		 | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Спасибо, slava. 
		
		
		
			Действительно выложил проект с ошибкой, каюсь. Заметил быстро, но по причине занятости в последние три дня и отсутствия вблизи Интернета не мог выложить исправленный код. Я изменил то же самое. Новый проект отличается только этим. P.S.: Ну все, теперь это в 3.0 программить надо   
		
				__________________ 
		
		
		
		
	Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: leshy (1). | |
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			он работает в 3.0 
		
		
		
		
		
		
		
	надо всего-лишь заменить конструкции типа findChild на AOTfindChild.  | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 Microsoft Dynamics 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А никто не догадался заглянуть в \Classes\SysDictTable\getSourceExist и \Classes\SysDictTable\getSourceFind. Я в свое время вставил эти два вызова в контексное меню на таблицах и прекрасно этим пользовался. 
		
		
		
		
		
		
		
	Если интересует могу поискать исходник.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: mazzy (10), belugin (11). | |
| Теги | 
| axapta, download, editor script, faq, полезное, скачать (download) | 
| 
	
	 | 
	
		
		
  |