| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			2 CustTable_ds на форме
			 
			
			На форме 3 датасурса - CustInvoiceJour и 2 CustTable - присоединенные по InvoiceAccount и OrderAccount (по InnerJoin). Накладываются фильтры и по кнопке вызываем ExecuteQuery(). Вот такой запрос строится: 
		
		
		
		
		
		
		
	SELECT * FROM CustInvoiceJour WHERE ((InvoiceDate>={ts '2008-05-01 00:00:00.000'} AND InvoiceDate<={ts '2008-05-31 00:00:00.000'})) JOIN * FROM CustTable WHERE CustInvoiceJour.OrderAccount = CustTable.AccountNum JOIN * FROM CustTable WHERE CustInvoiceJour.InvoiceAccount = CustTable.AccountNum В итоге вылетает ошибка : Суммарный внутренний размер записей в вашем объединенном операторе SELECT равен 26684 байтам, но система Microsoft Dynamics по умолчанию настроена так, что он не должен превосходить 24576 байтов. С одним CustTable работает нормально. Можно ли как-то решить проблему не изменняя настроек AOS?  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: mazzy (1). | |
| 
			
			 | 
		#2 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Попробуйте поставить OnlyFetchActive на датасорсе 
		
		
		
		
		
		
		
		
			Еще один вариант (на init обоих датасорсов выбираем только нужные поля): X++: public void init() { QueryBuildDataSource qbds; ; super(); qbds = CustTable_DS.query().dataSourceTable(tablenum(CustTable)); qbds.addSelectionField(fieldnum(CustTable, RecId)); qbds.addSelectionField(fieldnum(CustTable, AccountNum)); qbds.addSelectionField(fieldnum(CustTable, CellularPhone)); qbds.addSelectionField(fieldnum(CustTable, Phone)); } Последний раз редактировалось Eldar9x; 08.08.2008 в 12:11.  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Поставила OnlyFetchActive -  в запросе появился перечень полей. НО летит та же ошибка...В грид выбрались какието строки, но в каждом поле проставились значения RecId из СustTable. 
		
		
		
		
		
		
		
	SELECT SalesId, InvoiceId, InvoiceDate, OrderAccount, InvoiceAccount, inventLocationId, Qty, SalesBalanceMST, SumTaxMST, DocReestrInvoice_UAI, DocReestrAttorney_UAI, InvoiceAmountMST, RContractCode, DlvMode, CashCheck_UAI, AttorneyId_RU, AttorneyDate_RU, AttorneyIssuedName_RU, Description_UAI, SalesAdministrator, DeliveryAddress FROM CustInvoiceJour WHERE ((InvoiceDate>={ts '2008-05-01 00:00:00.000'} AND InvoiceDate<={ts '2008-05-31 00:00:00.000'})) JOIN Name FROM CustTable WHERE CustInvoiceJour.OrderAccount = CustTable.AccountNum JOIN Name, CodeOKPO_RU FROM CustTable WHERE CustInvoiceJour.InvoiceAccount = CustTable.AccountNum  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Мне первый вариант тоже не помог, поэтому лучше четко указывать, какие поля нужно получить. Судя по запросу, придется еще и CustInvoiceJour_DS.init() также переписать. 
		
		
		
		
		
		
		
	X++: public void init() { QueryBuildDataSource qbds; ; super(); qbds = CustInvoiceJour_DS.query().dataSourceTable(tablenum(CustInvoiceJour)); qbds.addSelectionField(fieldnum(CustInvoiceJour, RecId)); .... }  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			с addSelectionField - то же самое что из с FetchActive - ошибка и некорректные данные в строках.. 
		
		
		
		
		
		
		
		
			Перекрывала иниты на всех трех датасурсах. Последний раз редактировалось Ameli; 08.08.2008 в 12:49.  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			размер данных после указания перечня полей остался все тот же - 26684
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Форму можно?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Выкладываю форму
		 
		
		
		
			 | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Забыли в inite() CustInvoiceJour_DS выбрать SalesId 
		
		
		
			X++: qbds = this.query().dataSourceName('CustInvoiceJour'); qbds.addSelectionField(fieldnum(CustInvoiceJour, RecId)); qbds.addSelectionField(fieldnum(CustInvoiceJour, SalesId)); Для CustInvoiceJour X++: // !!! qbds.addSelectionField(fieldnum(CustInvoiceJour, DocReestrInvoice_UAI)); // !!! qbds.addSelectionField(fieldnum(CustInvoiceJour, DocReestrAttorney_UAI)); // !!! qbds.addSelectionField(fieldnum(CustInvoiceJour, RContractCode)); // !!! qbds.addSelectionField(fieldnum(CustInvoiceJour, CashCheck_UAI)); // !!! qbds.addSelectionField(fieldnum(CustInvoiceJour, AttorneyId_RU)); // !!! qbds.addSelectionField(fieldnum(CustInvoiceJour, AttorneyIssuedName_RU)); // !!! qbds.addSelectionField(fieldnum(CustInvoiceJour, Description_UAI)); X++: // !!!  qb.addSelectionField(fieldNum(CustTable,CodeOKPO_RU));CustInvoiceJour_ds.executeQuery(); вместо CustInvoiceJour_ds.research(); Последовательно отключайте поля, пока не добъетесь результата. Начать лучше с полей типа: CustInvoiceJour.Description_UAI CustInvoiceJour.DeliveryAddress Последний раз редактировалось Eldar9x; 08.08.2008 в 16:29.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Ameli (1). | |
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Eldar9x, спасибо за участие! Но к сожалению, не помогло. Втянула вашу хро-шку - та же картина...  Теперь наверняка можно сказать что дело в настройках системы.  
		
		
		
		
		
		
		
	До недавнего времени эта форма работала. Потом стала эта ошибка валиться. А увеличивать Maximum Buffer size не разрешили... (хотя пробовали - помогает). Я подумала что надо оптимизировать както запрос - но похоже не запросе дело. Выходить, что надо увеличивать - других вариантов нет?  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Почему же не в запросе. Точно такую же проблему решил именно так, отключая не нужные поля, причем свойство OnlyFetchActive так и не помогло - только программно. Попробуйте выбирать вначале только несколько полей из CustInvoiceJour. То есть RecId и поля связки. Пусть на форме данные и неправильно отображаются, но добейтесь вначале, что бы это сообщение исчезло. А потом уже будете выбирать, что целесообразней - обойтись без какого либо дополнительного поля или увеличить буфер. 
		
		
		
		
		
		
		
		
			Кстати, оказывается, свойство OnlyFetchActive выставленное в Yes перекрывает программную настройку выбираемых полей. Последний раз редактировалось Eldar9x; 08.08.2008 в 17:25.  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Ameli
			 
 
			До недавнего времени эта форма работала. Потом стала эта ошибка валиться. А увеличивать  Maximum Buffer size не разрешили... (хотя пробовали - помогает). Я подумала что надо оптимизировать както запрос - но похоже не запросе дело. Выходить, что надо увеличивать - других вариантов нет? 
		
	
				__________________ 
		
		
		
		
		
			aLL woRk aNd nO JoY MAKes jAck a dULL Boy Последний раз редактировалось ivas; 08.08.2008 в 17:38. Причина: орфография))  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Не уверен, что это верно, но вроде можно обойтись одним датасорсом CustTable, в init которого 
		
		
		
		
		
		
		
		
			X++: public void init() { QueryBuildDataSource qb; super(); qb = CustTable_ds.query().dataSourceName('CustTable'); qb.clearLinks(); qb.fetchMode(QueryFetchMode::One2One); qb.addLink(fieldNum(CustInvoiceJour,InvoiceAccount),fieldNum(CustTable,AccountNum)); qb.addLink(fieldNum(CustInvoiceJour,OrderAccount ),fieldNum(CustTable,AccountNum)); qb.addSelectionField(fieldNum(CustTable,RecId)); qb.addSelectionField(fieldNum(CustTable,Name)); } Цитата: 
	
		
			Информация: 
SELECT RecId, SalesId FROM CustInvoiceJour WHERE ((InvoiceDate>={ts '2008-08-08 00:00:00.000'} AND InvoiceDate<={ts '2008-08-08 00:00:00.000'})) JOIN RecId FROM CustTable WHERE CustInvoiceJour.InvoiceAccount = CustTable.AccountNum AND CustInvoiceJour.OrderAccount = CustTable.AccountNum Цитата: 
	
		
			SELECT * FROM CustInvoiceJour WHERE ((InvoiceDate>={ts '2008-05-01 00:00:00.000'} AND InvoiceDate<={ts '2008-05-31 00:00:00.000'}))  
JOIN * FROM CustTable WHERE CustInvoiceJour.OrderAccount = CustTable.AccountNum JOIN * FROM CustTable WHERE CustInvoiceJour.InvoiceAccount = CustTable.AccountNum судя по данным - равносильно и можно обойтись без addSelectionField, выбирая сразу все поля. Последний раз редактировалось Eldar9x; 08.08.2008 в 17:57.  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Попробуйте это: 
		
		
		
		
		
		
			
		
		
		
		
	Цитата: 
	
		
			1. Open the Microsoft Dynamics AX Server Configuration Utility. 
2. Select a configuration that can be modified from the menu or create a new configuration (Manage > Create Configuration). 3. Click the Database Tuning tab. 4. In the Maximum Buffer Size field, enter a value higher than 24 (kilobytes). 5. Save the configuration. 6. Restart the AOS.  | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Боец 
		
			
	 | 
	
	
	
		
		
		
		 
			
			2kashperuk:  
		
		
		
		
		
		
		
	Цитата: 
	
		
			А увеличивать Maximum Buffer size не разрешили... (хотя пробовали - помогает)
		
	 
IMHO ничего криминального в увеличении Maximum Buffer нет, хотя нужно учесть Параметр Maximum buffer size в настройках AOS  | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			IMHO ничего криминального в увеличении Maximum Buffer нет
		
	 
 | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Попробовала заново создать форму, выбрала через AddSelectionField из каждого датасурса только RecId - ошибка не исчезла. 
		
		
		
		
		
		
		
	а запрос SELECT RecId, SalesId FROM CustInvoiceJour WHERE ((InvoiceDate>={ts '2008-08-08 00:00:00.000'} AND InvoiceDate<={ts '2008-08-08 00:00:00.000'})) JOIN RecId FROM CustTable WHERE CustInvoiceJour.InvoiceAccount = CustTable.AccountNum AND CustInvoiceJour.OrderAccount = CustTable.AccountNum - задвоит накладные. Попробуем все-таки пока что увеличить Maximum Buffer, надеюсь, AOS не свалится. И все-таки не понятно, почему возникла такая проблема с этой формой, есть же куча подобных - и с двумя EmplTable, InventDim и т.д. и т.п.  | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			а запрос 
- задвоит накладные.  | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ну, думаю, до 40-60 КБ значение этого параметра можно увеличить довольно безболезненно. Чтобы были и волки сыты, и овцы целы.  
		
		
		
		
		
		
			
		
		
		
		
	 
		 | 
| 
	
 | 
| 
	
	 | 
	
		
  |