AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.04.2022, 13:38   #1  
oleggy is offline
oleggy
Участник
 
253 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
как найти связь SalesLine/SalesTable в методе SalesFormLetter::chooseLines
Привет. Подскажите куда копать что бы понять по какой логике AX09 осуществляет связь в методах перебора.

Есть стоковый метод
SalesFormLetter::chooseLines

Внутри которого есть цикл:

X++:
void  chooseLines(SalesParmTable  _salesParmTable = null, boolean _directDeliveryUpdate = false)
{
	...
	chooseLines.reset();    // if the select button is used from saleseditlines

	while (chooseLines.next())
	{
		progressTotal++;

		if (chooseLines.changed(tablenum(SalesTable)))
		{
			localSalesTable = chooseLines.get(tablenum(SalesTable));
			mayJournalBePosted = this.mayJournalBePosted(localSalesTable);

			if (!localSalesTable.canCustomerBeUpdated(this.documentStatus()))
			{
				mayJournalBePosted = checkFailed(strfmt("@SYS7987",localSalesTable.CustAccount));
			}
		}
		localSalesLine  = chooseLines.get(tablenum(SalesLine));

		...
	}
	...
}


Заметил что в некоторых случаях при формировании счета из SO на печать цикл перебирает линии из выбранного заказа - тут все OK, а в некоторых случаях по другим заказам он тупо начинает перебирать вообще другие линии других заказов.

1. Хотелось бы понять что происходит внутри методов:
chooseLines.reset()
chooseLines.next()
2. По какой логике (и откуда AX берет эту логику) иногда корректно перебираются все линии заказа, а в каких случаях тупо начинают перебираться другие линии из других заказов?
Старый 22.04.2022, 17:18   #3  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,651 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
chooseLines - это QueryRun. Т.е. запрос, сформированный до вызова данного метода. reset() и next() это просто перебор записей этой выборки

Где именно этот Query формируется в dax2009 я уже не помню. Поищи по имени переменной в самом классе. Скорее всего, будет метод с названием вроде updateQueryBuild()

Вот там и посмотри, как устанавливается фильтр на SalesTable.SalesId. Там есть варианты, когда не текущий заказ используется.
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как найти источник баги на форме SalesTable (D365) axm2017 DAX: Программирование 3 26.03.2021 09:13
Переход на первую строку SalesLine_ds при вызове SalesTable_ds.write() Владимир Максимов DAX: Программирование 4 02.10.2008 18:08
Join SalesTable-->SalesLine Eldar9x DAX: Программирование 9 06.06.2008 17:19
связь между FactureJour_RU и SalesTable Dimk DAX: Программирование 5 09.02.2007 13:34
Связь таблиц CustPackingSlipTrans и SalesLine Ruff DAX: Программирование 4 06.09.2005 16:09
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:31.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.