| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Сравнение с большим списком
			 
			
			Задача. Есть список табельных номеров сотрудников штук 50-60. 
		
		
		
		
		
		
		
	Нужно в аксапте сделать им дополнительные права, в справочнике сотрудников корректировки некоторые - обработать вобщем. Делаю это программно в джобе - цикл по empltable. Нужно сравнить emplid со списком данных табельных. Как это сделать красиво? Не писать же в if 50 раз условие? Сделал контейнер container cont = ["00296",и тд...,"01645"]; и хотел в if сравнить через confind, но при компиляции ошибка - "Переполнение во внутреннем стеке компилятора." Как быстро и красиво выйти из ситуации?  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В каком виде список табельных номеров? 
		
		
		
		
		
		
		
	Если хранятся в таблице - тогда ИМХО нужно просто сделать select emplTable exists join <ваша таблица табельных номеров> where <ваша таблица табельных номеров>.emplid == emplTable.emplid; вуаля. С уважением.  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Дмитрий Ерин 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Лучше всего воспользуйтесь вариантом Dozer-а. 
		
		
		
		
		
		
			А в случае с контейнером можно попробывать извратный способ: перелить его в Map, предварительно видоизменив, примерно так: PHP код: 
	
			
	
				__________________ 
		
		
		
		
	 
			 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
			
			
			Re: Сравнение с большим списком
			 Цитата: 
	
		
			Изначально опубликовано Perc  
Сделал контейнер container cont = ["00296",и тд...,"01645"]; и хотел в if сравнить через confind, но при компиляции ошибка - "Переполнение во внутреннем стеке компилятора." Как быстро и красиво выйти из ситуации? Попробуйте объявить не один контейнер, а несколько (например, в каждом не более десяти значений). После в начале кода объедените контейнеры в один. Или объявите несколько констант со списком значений (не очень длинным), а затем при объявлении контейнера, укажите в нём эти константы. 
				__________________ 
		
		
		
		
	Удачи.  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Модератор 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Я бы не рекомендовал пользоваться контейнерами для этой задачи. Тем более - с константами. Хм. Ну, сделайте таблицу - пусть будет гибкое решение! 
		
		
		
		
		
		
		
	С Уважением, Георгий  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Дмитрий Ерин 
		
			
	 | 
	
	
	
		
		
			
			
			Re: Re: Сравнение с большим списком
			 Цитата: 
	
		
			Изначально опубликовано SimPai  
Эта ошибка, вероятно, из-за длинного списка значений в контейнере. Perc, мой пост про Map можете смело игнорировать - виноват, невнимательно читал вопрос   И прислушайтесь к Dozer и George Nordic.
		
				__________________ 
		
		
		
		
	 
			 | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано George Nordic  
Я бы не рекомендовал пользоваться контейнерами для этой задачи. Кстати, Perc лучше сканировать не EmplTable, а этот контейнер (или таблицу, если он решит использовать именно таблицу) Цитата: 
	
		
			Ну, сделайте таблицу - пусть будет гибкое решение! 
		
	 
 
		
				__________________ 
		
		
		
		
	Удачи.  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано George Nordic  
Я бы не рекомендовал пользоваться контейнерами для этой задачи. Тем более - с константами. Хм. Ну, сделайте таблицу - пусть будет гибкое решение! С Уважением, Георгий   Мне один раз джобик по списку запустить ... Потом по другому аналогичному списку. Хотелось как раз очень оперативно. Список то у меня уже был - табельные и фамилии подготовлены другим человеком по принципу который из акс вытянуть нельзя. думал щас сделаю как обычно в sql писал ctrc+c ctrl+v. И готово.В итоге пришлось по списку нагенерировать условие типа empltable.emplid == "00296" || empltable.emplid == "00593" || empltable.emplid == "01401" ||... на треть экрана. Отработало. Но некрасиво это. Список то тьфу.. 55 штук по 5 символов и загнулась. Позор аксапте.   Согласен с SimPai, что лучше список сканировать, если он есть. Учту на будущее его предложение..  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Модератор 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Г-н SimPai! Вы для кого пишите систему - для программистов? А прибежит тетенька и скажет "Ой! Я ошиблась в номере таком-то и таком-то! И запишите еще такой-то и такой-то номер, это, кажется тот-то и тот-то, но у него есть однофамилец, работает грузщиком, так вот это не он!" 
		
		
		
		
		
		
		
	Блин! Да сделайте таблицу, нарисуйте форму - делов-то! На пол-часа. И дайте юзеру упономеченному или сами администрите - легче же, чем в коде ковыряться и высматривать нужный табельный номер из 50ти!!! Вам что, таблицу лишнюю жалко?   Пожелейте тех, кто придет потом и вынужден будет разбираться в подобных "чудесах" с контейнерами.  
		 | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			George, это может быть однократная задача и с эти кодом никто не будет разбираться никогда. Сам делал примерно такое. Причем делал так написал локальную функцию в коде processCode(str code) а потом регэкспом заменил в списке коды на ее вызовы
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано George Nordic  
А прибежит тетенька и скажет "Ой! Я ошиблась в номере таком-то и таком-то! И запишите еще такой-то и такой-то номер, это, кажется тот-то и тот-то, но у него есть однофамилец, работает грузщиком, так вот это не он!" Цитата: 
	
		
			Блин! Да сделайте таблицу, нарисуйте форму - делов-то! 
		
	 
![]() Цитата: 
	
		
			И дайте юзеру упономеченному или сами администрите
		
	 
![]() Цитата: 
	
		
			легче же, чем в коде ковыряться и высматривать нужный табельный номер из 50ти!!!
		
	 
![]() Цитата: 
	
		
			Пожелейте тех, кто придет потом и вынужден будет разбираться в подобных "чудесах" с контейнерами.  
  [/B]
		
	 
		
				__________________ 
		
		
		
		
	Удачи.  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Модератор 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано SimPai  
Чего там администрить? Джоб одноразовый? ![]() ![]() Еще неизвестно, что из неё вырастет... Альтернативная раздача прав - как минимум!! ![]() Цитата: 
	
		
			Изначально опубликовано SimPai  
Хорошо. Договорились. Проведу акцию гуманизма. Прибью код сразу после выполнения.   
		
	  Договорились!С Уважением, Георгий  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано George Nordic  
Вот! А будет лишняя "фенечка" для много разового использования! ![]() Еще неизвестно, что из неё вырастет... Альтернативная раздача прав - как минимум!! ![]()  
		
				__________________ 
		
		
		
		
	Удачи.  | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Lean Six Sigma 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Предлагаю в таких задачах использовать Set вместо контейнера. 
		
		
		
		
		
		
			
		
		
		
		
	Хотя в целом по моему мнению Nordic трижды прав.  | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано Ned  
Предлагаю в таких задачах использовать Set вместо контейнера. 
				__________________ 
		
		
		
		
	Удачи.  | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Lean Six Sigma 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Так и не надо его инициализировать вручную. 
		
		
		
		
		
		
			
		
		
		
		
	Сделать загрузку из текстового файла или визуальный интерфейс.  | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано Ned  
Так и не надо его инициализировать вручную. Сделать загрузку из текстового файла или визуальный интерфейс.  
		
				__________________ 
		
		
		
		
	Удачи.  | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Lean Six Sigma 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Задача. Есть список табельных номеров сотрудников штук 50-60.
		
	 
Цитата: 
	
		
			Не-не-не! В "ручной" инициализации весь цимус - просто и быстро. И не надо ничего делать. Ни таблиц, ни файлов, ни интерфейсов.
		
	 
 | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано Ned  
Так и не надо его инициализировать вручную. Сделать загрузку из текстового файла или визуальный интерфейс. Может когда то изменю мнение, но пока что случаи когда гемороиться не стоит четко видны. В Аксапте вот косячок.. Может ей где настройку какую ткнуть, чтобы буфер не переполнялся проще  
		 | 
| 
	
 | 
| Теги | 
| container, set, контейнер, перебор записей | 
| 
	
	 | 
	
		
			 
			Похожие темы
		 | 
	||||
| Тема | Ответов | |||
| Сравнение при импорте XPO | 26 | |||
| Баг? Сравнение строк длиной более 32767 символов | 6 | |||
| Сравнение объектов в 4.0 | 8 | |||
| Сравнение двух полей в Query | 3 | |||
| Сравнение DialogField с null | 6 | |||
		
  |