| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Вопрос к знатокам алгоритма периодического сопоставления
			 
			
			В классе CustVendAutoSettlement_Cust_RU в методе query 
		
		
		
		
		
		
		
	существует код инициализации query: X++: protected Query query() { Query query = new Query(); QueryBuildDatasource qbds; QueryBuildRange qr; // CustTransOpen --> qbds = query.addDataSource(tableNum(CustTransOpen)); qbds.addRange(fieldNum(CustTransOpen, DueDate)).value(SysQuery::range(dateFrom, dateTo)); qbds.addRange(fieldNum(CustTransOpen, AccountNum)); qbds.addSortField(fieldNum(CustTransOpen, AccountNum)); qbds.addSortField(fieldNum(CustTransOpen, DueDate)); qbds.orderMode(OrderMode::ORDERBY); // CustTrans --> qbds = qbds.addDataSource(tableNum(CustTrans)); qbds.relations(true); qbds.joinMode(JoinMode::INNERJOIN); qr = qbds.addRange(fieldNum(CustTrans, Invoice)); qr.value(SysQuery::valueNotEmptyString()); qr.status(RangeStatus::LOCKED); qr = qbds.addRange(fieldNum(CustTrans, RContractCode)); qr.status(autoSettleType == AutoSettleType_RU::Contract ? RangeStatus::OPEN : RangeStatus::LOCKED); qr = qbds.addRange(fieldNum(CustTrans, RContractAccount)); qr.status(autoSettleType == AutoSettleType_RU::Contract ? RangeStatus::OPEN : RangeStatus::LOCKED); qr = qbds.addRange(fieldNum(CustTrans, AccountNum)); qr.status(RangeStatus::HIDDEN); return query; } X++:   qr = qbds.addRange(fieldNum(CustTrans, Invoice));
    qr.value(SysQuery::valueNotEmptyString());
    qr.status(RangeStatus::LOCKED);по поступлениям и выбытиям ДС по конкретному клиенту, то периодическое сопоставление никогда не сопоставит такие проводки. Мне интересно, какой потаенный смысл был заложен в это условие.  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Как мне кажется смысл был в том автоматически сопоставляются только накладные. 
		
		
		
		
		
		
		
	Если в общем журнале Вы не указали номера накладной, то сопоставление предоставляется на ваше усмотрение, кто знает что у вас там за проводка и с чем ее нужно сопоставлять и нужно ли.  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Потаенный смысл мне тоже неясен :-) 
		
		
		
		
		
		
		
	Похоже Аксапта считает, что если Invoice заполнен то это накладная, если пуст - то платеж и пытается сопоставлять накладные с платежами и другимим накладными, а просто на платежи забивает. Мы решили проблему сопоставления платежей с платежами тем что заполняли при разноске поле Invoice для тех платежей кторые должны быть сопоставлены с платежами (обычно это сторно было) Сопоставление заработало - ничего не поломалось.  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Member 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Код накладной является признаком того, является ли данная проводка накладной или оплатой. Если речь идет о журнале ГК, то в зависимости от заполнения или незаполнения этого поля либо будет создана запись в журнале накладных и строк накладных либо не будет. 
		
		
		
		
		
		
			Если вы в журнале ГК не укажете номер накладной, значит вы разнесете оплату. Это про смысл поля Код накладной. Чтобы ответить на ваш вопрос нужно видеть и другой код. В данном случае выбираются действительно накладные. М.б. там есть еще один запрос, который отбирает только оплаты :-). 
				__________________ 
		
		
		
		
	С уважением, glibs®  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Member 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Logger
			
			 
... 
		
	Похоже Аксапта считает ... CustTrans.payment() CustTrans.invoice() CustTrans.exchAdjustment() Правда, они "глючат". В оплаты попадают проводки по округлению и незначительному расхождению. Я как-то делал более "тонкие" методы для разбора полетов. Со скидками по оплате не работал, но там тоже не исключены нюансы подобного рода. Цитата: 
	
		
			Сообщение от Logger
			
			 
... 
		
	Мы решили проблему сопоставления платежей с платежами тем что заполняли при разноске поле Invoice для тех платежей кторые должны быть сопоставлены с платежами (обычно это сторно было) ... 
				__________________ 
		
		
		
		
	С уважением, glibs®  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Друзья, огромное спасибо! 
		
		
		
		
		
		
		
	Термин: Технический инвойс - инвойс "от балды", по произвольному алгоритму ![]() Т.к. поле инвойс в общих журналах ГК у в наших бизнес-процессах НЕ ИСПОЛЬЗОВАЛОСЬ (а другие журналы для отражения ДДС мы не используем), я пробежался джобиком и проставил у всех строк общих журналов ГК и связанных с ними клиентских проводок (аналогично и у проводок по поставщику) с пустыми инвойсами технические инвойсы (сделал их равными номеру общего журнала ГК ). Причем проставил технические инвойсы у всех строк (поступления или выбытия не различал - проставил у всех) Сделал что- то вроде X++: update vt set vt.invoice = ljt.journalnum from VendTrans vt inner join LedgerJournalTrans ljt on vt.transdate = ljt.transdate and vt.voucher = ljt.voucher where ljt.invoice = '' p.s. T-SQL , ![]() Вот такие дела... Вывод следующий - если планируете использовать периодическое сопоставление, добивайтесь заполнения инвойсов (VendTrans.invoice и CustTrans.invoice). Делайте это поле обязательным для заполнения или заполняйте его автоматически по своему алгоритму (номерная серия или просто запись в CustTrans.invoice VendTrans.invoice номер накладной (в моем случае, к примеру CustTrans.invoice = LedgerJournalTrans.journalnum ) или voucher. Или ..... правьте алгоритм периодического сопоставления... я не рискнул и выбрал меньшее из зол, на мой взгляд  
		 | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 NavAx 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			raz 
		
		
		
		
		
		
		
	Мы сделали проще - убрали накладную из запроса, чтобы сторно платежей тоже сопоставлялись. Именно это я и подразумевал под правкой алгоритма сопоставления.   Но для себя решил, что лучше "накормить" аксапту тем что она хочет,  нежели  "убеждать" ее в том что она этого не хочет ![]()  
		 | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 NavAx 
		
			
	 | 
	
	
	
		
		
		
		 
			
			накормив, вы нарушили логическую целостность данных, т.е. данные теперь не соответсвуют реальности.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 NavAx 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Мы для большей точности допилили сопоставление по аналитикам.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			У нас сопоставление происходит в разрезе договоров.  
		
		
		
		
		
		
		
	P.S. Все уже довольны  
		 | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Любопытно все таки аксапту на проектах пилят. Мы вот тоже придумали проставлять Voucher в поле Invoice (прямо при разноске) схожие модифы родятся...  | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
![]() Меня в этом варианте не устроило, что в модулях Клиентов и Поставщиков создаются накладные.. Они нам не нужны на проекте.  | 
| 
	
 |