|  13.08.2004, 14:26 | #41 | 
| Модератор | Re: Кстати, вот в этих местах возможны проблемы с отрицательным RecId Цитата: 
		
			Изначально опубликовано George Nordic  \Data Dictionary\Tables\CommissionSalesRep\Methods\validateField \Data Dictionary\Tables\CommissionSalesRep\Methods\validateField .. \Forms\RAssetBalance\Methods\init \Reports\WebCmNewsArticle\Methods\init PHP код: 
			PHP код: 
			  | 
|  | 
|  13.08.2004, 14:28 | #42 | 
| Administrator | 
			
			Андрей, а можешь привести пример, где сравниваются два RecId (без использования агрегатных функций) кроме как на неравенство?
		 
				__________________ Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me | 
|  | 
|  13.08.2004, 14:43 | #43 | 
| Модератор | 
			
			Ну, я просто глубже не копал... конечно, не во всех этих случаях ошибка.. Если кто-нибудь занялся бы, да и нашел бы в этом списке все случаи, где действительно есть ошибка - вот это, я понимаю, дело! Но, как я смотрю, таких мест не очень много.. к счастью   Кстати, е если RecId 1 < RecId 2? RecId 1 = -1, RecId2 = 2 000 000 000 ? Так что самый трабл, как уже указал многоуважаемый Андрей, именно при переходе от + к -   | 
|  | 
|  13.08.2004, 14:50 | #44 | 
| Administrator | 
			
			Вот я и говорю, что что-то не могу припомнить, где так делают: Цитата: 
		
			Изначально опубликовано George Nordic  RecId 1 < RecId 2 
				__________________ Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me | 
|  | 
|  13.08.2004, 14:58 | #45 | 
| Moderator | Цитата: 
		
			Андрей, а можешь привести пример, где сравниваются два RecId (без использования агрегатных функций) кроме как на неравенство?
		
	 А в коде, отвечающим за пересчет себестоимости (например InventCostItemDim.updateModelFIFOLIFO), периодически встречается такой код: PHP код: 
			Это используется, например, при подборе проводки для сопоставления в том случае, если в один день было несколько подходящих проводок. | 
|  | 
|  13.08.2004, 15:04 | #46 | 
| Модератор | Цитата: 
		
			Изначально опубликовано Maxim Gorbunov Вот я и говорю, что что-то не могу припомнить, где так делают: 
		
	 \Data Dictionary\Tables\WMSLocation\Methods\BMNewRecord \Data Dictionary\Tables\WMSLocation\Methods\BMNewRecord \Data Dictionary\Tables\TmpRTax25LedgerAccountList\Methods\findRecIds \Classes\ProdMultiScheduling\updateProdDeleted А вот и меньше 0  \Data Dictionary\Tables\LedgerRRGCellDefVal_RU\Methods\addDefaultValue \Classes\WebFormHtml\controlName \Classes\WebFormHtml\setControls \Classes\WebFormHtml\setControls \Classes\WebLookupWeblet\run \Classes\WebDateLookupWeblet\run \Classes\WebCustomLookupWeblet\run \Classes\webTableLookup\run \Classes\webTableLookup\run \Forms\ReqTransExplosionSetup\Data Sources\TmpReqExplosionTree\Methods\executeQuery \Forms\ReqTransExplosionSetup\Data Sources\InventDimParm\Methods\executeQuery Немного.. В основном - не по делу.. | 
|  | 
|  13.08.2004, 15:08 | #47 | 
| Модератор | 
			
			Вообще, как я понял - гиблое это дело, RecId сравнивать... Ярослав, а Ваш скрипт учитывает подобне проблемы? С Уважением, Георгий | 
|  | 
|  13.08.2004, 15:10 | #48 | 
| Moderator | Цитата: 
		
			\Classes\ProdMultiScheduling\updateProdDeleted
		
	 Цитата: 
		
			\Data Dictionary\Tables\TmpRTax25LedgerAccountList\Methods\findRecIds
		
	 Остальное проверять не стал. | 
|  | 
|  13.08.2004, 15:11 | #49 | 
| Administrator | 
			
			Да, хотел написать то же самое, что и Андре. Дополнение: в \Classes\ProdMultiScheduling\updateProdDeleted тоже Count сначала. 
				__________________ Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me | 
|  | 
|  13.08.2004, 15:13 | #50 | 
| Administrator | Цитата: 
		
			Изначально опубликовано Андре  То есть, используя индекс, мы закладываемся на определенный порядок записей (то же самое сравнение), который в свою очередь зависит от recId. Это используется, например, при подборе проводки для сопоставления в том случае, если в один день было несколько подходящих проводок.   
				__________________ Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me | 
|  | 
|  13.08.2004, 15:14 | #51 | 
| Модератор | Цитата: 
		
			Изначально опубликовано Андре  Остальное проверять не стал. С Уважением, Георгий. | 
|  | 
|  13.08.2004, 15:15 | #52 | 
| Administrator | 
			
			Кстати, был в какой-то ветке вопрос (в какой, уже не помню), какие таблицы не переживут дефрагментацию RecId. Исчерпывающего ответа не дам, но внесу первый вклад: smmTransLog 
				__________________ Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me | 
|  | 
|  13.08.2004, 15:21 | #53 | 
| Moderator | Цитата: 
		
			ИМХО, это не более криминально, чем то, что написано в \Data Dictionary\Tables\TmpRTax25LedgerAccountList\Methods\findRecIds
		
	  Хотя... при поиске проводки для сопоставления по FIFO/LIFO система считает, что раньше произошел тот расход, у которого меньше recId, при одной и той же дате. Если нам феноменально не повезет, то может получиться так, что мы будем иметь две складских проводки с одной датой и с recId, равными maxPositiv, minNegative value. При этом, по факту, второе списание произошло позже первого, а система посчитает и сопоставит наоборот. | 
|  | 
|  13.08.2004, 16:16 | #54 | 
| Administrator | 
			
			Еще две таблицы, которые не перенесут дефрагментацию RecId и экспорт/импорт (только для версии 2.5): LedgerCorrespondTransLinks_RU VendPBookUpdLog_RU 
				__________________ Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me | 
|  | 
|  13.08.2004, 16:33 | #55 | 
| Участник | Исчерпывающий ответ Цитата: 
		
			Изначально опубликовано Maxim Gorbunov  ...Исчерпывающего ответа не дам... ... ; for (i = 1; i <= tableCnt; i++) { dt = dictionary.tableObject(dictionary.tableCnt2Id(i)); fieldCnt = dt.fieldCnt(); for (j = 1; j <= fieldCnt; j++) { df = dt.fieldObject(dt.fieldCnt2Id(j)); if(! dt.isTmp() && ! dt.isView() && df.type() == TYPES::UserType && GLOBAL::isType(df.typeId(), extendedTypeNum(RecId)) && ! GLOBAL::isType(df.typeId(), extendedTypeNum(RefRecId)) && df.name() != "RecId") info(StrFmt("Таблица - '%1'. Поле - '%2' \n", dt.name(), df.name())); } } Удачи! | 
|  | 
|  13.08.2004, 16:39 | #56 | 
| Участник | 
			
			Ух. Какая полезная ветка. Перенесу, пожалуй, в проекты. Спасибо огромное всем участникам. Ветка не закрывается. Дополнения приветствуются. | 
|  | 
|  13.08.2004, 17:08 | #57 | 
| Участник | Цитата: 
		
			За счет его универсальности мы можем снизить цену в разы ...
		
	 А нельзя ли сделать более упрощенный (и более дешевый, естесственно) скрипт для тестирования системы на предмет необходимости дефрагментации? Думаю, и с коммерческой точки зрения это будет выгодно   | 
|  | 
|  13.08.2004, 17:30 | #58 | 
| Administrator | 
			
			2ALES, Поле будет обработано дефрагментацией и импортом, если имеет тип RecId или расширяющий RecId. Такие поля совсем не проблемные. 
				__________________ Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me | 
|  | 
|  13.08.2004, 17:32 | #59 | 
| Moderator | Цитата: 
		
			А нельзя ли сделать более упрощенный (и более дешевый, естесственно) скрипт для тестирования системы на предмет необходимости дефрагментации?
		
	 В качестве гипотезы предлагаю такой вариант - количество оставшихся, неиспользованных recId. Зная среднюю скорость "потребления" этих recId несложно предположить сколько "нам осталось"  В данном случае и скрипт то не нужен. Достаточно посмотреть табличку SystemSequences. | 
|  | 
|  13.08.2004, 19:55 | #60 | 
| Участник | 
			
			2Maxim Gorbunov опыт нескольких успешных проектов по подъему данных, позволяет мне называть поля - ссылки по recId "проблемными".  "Разжовыванья" всей технологии, особенностей реализации конкретных проектов и объяснения причин отдельного рассмотрения "не RefRecId" не будет. Воспринимайте как выдранный из контекста кусок реального кода, опубликованный именно в том виде, в котором я счел возможным его опубликовать.   | 
|  |