|  14.02.2007, 15:09 | #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);по поступлениям и выбытиям ДС по конкретному клиенту, то периодическое сопоставление никогда не сопоставит такие проводки. Мне интересно, какой потаенный смысл был заложен в это условие. | 
|  | 
|  14.02.2007, 15:58 | #2 | 
| Участник | 
			
			Как мне кажется смысл был в том автоматически сопоставляются только накладные. Если в общем журнале Вы не указали номера накладной, то сопоставление предоставляется на ваше усмотрение, кто знает что у вас там за проводка и с чем ее нужно сопоставлять и нужно ли. | 
|  | 
|  14.02.2007, 16:04 | #3 | 
| Участник | 
			
			Потаенный смысл мне тоже неясен :-) Похоже Аксапта считает, что если Invoice заполнен то это накладная, если пуст - то платеж и пытается сопоставлять накладные с платежами и другимим накладными, а просто на платежи забивает. Мы решили проблему сопоставления платежей с платежами тем что заполняли при разноске поле Invoice для тех платежей кторые должны быть сопоставлены с платежами (обычно это сторно было) Сопоставление заработало - ничего не поломалось. | 
|  | 
|  14.02.2007, 16:13 | #4 | 
| Member | 
			
			Код накладной является признаком того, является ли данная проводка накладной или оплатой. Если речь идет о журнале ГК, то в зависимости от заполнения или незаполнения этого поля либо будет создана запись в журнале накладных и строк накладных либо не будет. Если вы в журнале ГК не укажете номер накладной, значит вы разнесете оплату. Это про смысл поля Код накладной. Чтобы ответить на ваш вопрос нужно видеть и другой код. В данном случае выбираются действительно накладные. М.б. там есть еще один запрос, который отбирает только оплаты :-). 
				__________________ С уважением, glibs® | 
|  | 
|  14.02.2007, 16:21 | #5 | 
| Member | Цитата: 
		
			Сообщение от Logger
			
			 ... Похоже Аксапта считает ... CustTrans.payment() CustTrans.invoice() CustTrans.exchAdjustment() Правда, они "глючат". В оплаты попадают проводки по округлению и незначительному расхождению. Я как-то делал более "тонкие" методы для разбора полетов. Со скидками по оплате не работал, но там тоже не исключены нюансы подобного рода. Цитата: 
		
			Сообщение от Logger
			
			 ... Мы решили проблему сопоставления платежей с платежами тем что заполняли при разноске поле Invoice для тех платежей кторые должны быть сопоставлены с платежами (обычно это сторно было) ... 
				__________________ С уважением, glibs® | 
|  | 
|  14.02.2007, 18:19 | #6 | 
| Участник | |
|  | 
|  14.02.2007, 22:12 | #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. Или ..... правьте алгоритм периодического сопоставления... я не рискнул и выбрал меньшее из зол, на мой взгляд   | 
|  | 
|  15.02.2007, 00:06 | #8 | 
| NavAx | |
|  | 
|  15.02.2007, 07:02 | #9 | 
| Участник | 
			
			raz Мы сделали проще - убрали накладную из запроса, чтобы сторно платежей тоже сопоставлялись. Именно это я и подразумевал под правкой алгоритма сопоставления.  Но для себя решил, что лучше "накормить" аксапту тем что она хочет,  нежели  "убеждать" ее в том что она этого не хочет    | 
|  | 
|  15.02.2007, 09:14 | #10 | 
| NavAx | 
			
			накормив, вы нарушили логическую целостность данных, т.е. данные теперь не соответсвуют реальности.
		 | 
|  | 
|  15.02.2007, 10:14 | #11 | 
| Участник | |
|  | 
|  15.02.2007, 10:32 | #12 | 
| NavAx | 
			
			Мы для большей точности допилили сопоставление по аналитикам.
		 | 
|  | 
|  15.02.2007, 10:52 | #13 | 
| Участник | 
			
			У нас сопоставление происходит в разрезе договоров.  P.S. Все уже довольны   | 
|  | 
|  15.02.2007, 12:29 | #14 | 
| Участник | Цитата: Любопытно все таки аксапту на проектах пилят. Мы вот тоже придумали проставлять Voucher в поле Invoice (прямо при разноске) схожие модифы родятся... | 
|  | 
|  15.02.2007, 12:36 | #15 | 
| Участник | Цитата:  Меня в этом варианте не устроило, что в модулях Клиентов и Поставщиков создаются накладные.. Они нам не нужны на проекте. | 
|  |