| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			 
			
			Есть запись с набором полей Day1,Day2, .... , Day31 
		
		
		
		
		
		
		
	как программно перебрать их все ? st = strfmt("if ((tmpTime1.Day%1==0) && (tmpTime8.Day%1==0) && (tmpTime10.Day%1==0)) countDayHolyday++;",int2str(i)); compiler.compile(st); st = compiler.execute(st); якобы считает ( но неверно - прибавляет 3 ) а потом выдает в логе 31 запись что тело для метода %3 не найдено runbuf(st); вообще прекращает выполнение безо всяких ошибок  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Для таких задач существует тип поля Массив. Пример - EDT Dimension.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Андрей.  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Привет! 
		
		
		
		
		
		
			Если поля названы однопитно, то можно использовать макрос (см. например, класс InventOnHand.findSumJoin() 
				__________________ 
		
		
		
		
	С уважением, Андрей Беседин  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			не, макросы устаревший инструмент. 
		
		
		
		
		
		
		
	луше ими не пользоваться. best practice рекомендует использовать их только в качестве констант и для pack/unpack. Не хотел вмешиваться. Но по-моему, надо править в постановке задачи или изменять проектирование баз данных. Это бардак, а не структура база данных. Сугубое ИМХО.  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Полностью солидарен с Mazzy. 
		
		
		
		
		
		
			Полностью согласен с Best Practice Но если решать задачу нужно именно в такой постановке, то макросы - это выход (хоть и плохой) И Dron AKA Andy тоже верную идею говорит! 
				__________________ 
		
		
		
		
	С уважением, Андрей Беседин  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			for (i = 1; i <= dayofMth(endMth(_payPeriod)) ; i++) 
		
		
		
		
		
		
		
	{ fieldId = fieldName2Id(tableNum("Таблица"),"day" + int2str(i)); Таблица.(fieldId) - значение поля } со структурой базы все нормально, например так сделан ежедневный табель учета рабочего времени  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			для ежедневного табеля именно структура и выглядит странно. 
		
		
		
		
		
		
		
	почему 31 день? почему не квартал или неделя в строчке? как будете делать запрос, чтобы узнать отработанное внемя понедельно? как будете делать запрос, чтобы сравнить отработанное в первой половине месяца время со временем, отработанным во второй половине? а первую половину одного месяца с первой половиной другого? В поставноке задачи что-нибудь про месяц было? Кто-нибудь это слово произносил? Или это выдумки программиста, чтобы потом героически преодолевать программистские трудности и динамически строить никому не нужные запросы?  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			период попал случайно при копировании стандартного кода. Смысл не в этом вовсе, поставьте вместо периода цифру 31.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 |