|  06.03.2008, 17:54 | #1 | 
| Участник | Проблема: одинаковые клиенты 
			
			Добрый день! В систему по ошибке внесли одного и того же клиента два раза, естественно, под разными кодами. Есть заказы, подтверждения, счета на оплату и платежи и на того и на другого. Нет отгрузок и сопоставлений. В идеале хотелось бы программно исправить эту ситуацию, оставив одного клиента, или хотя бы оценить масштаб трагедии. Подскажите, плиз, в каких таблицах еще необходимо исправить, кроме следующих: SalesTable, SalesLine, InventTrans, CustConfirmJour, CustInvoice4PaymJour_RU, LedgerJournalTrans, CustVendPaymJournalFee. Заранее спасибо. P.S. Ахарта 3.0, SP3. | 
|  | 
|  06.03.2008, 18:08 | #2 | 
| Участник | 
			
			CustTrans CustTransOpen P.S. Отсторнировать платежи и поменять клиентов в заказах не прокатит? 
				__________________   | 
|  | 
|  06.03.2008, 18:09 | #3 | 
| Участник | 
			
			В качестве бреда: 1. Посмотреть на таблицы, где код клиента - часть ПК 2. Слить данные в жтих таблицах 3. Снести одного клиента 4. Переименовать первичный ключ второго в первого. | 
|  | 
|  06.03.2008, 18:18 | #4 | 
| Участник | 
			
			2 ppson "Отсторнировать платежи и поменять клиентов в заказах" Прицениваемся и к этому   Последний раз редактировалось Lelya; 06.03.2008 в 18:24. | 
|  | 
|  06.03.2008, 20:02 | #5 | 
| Участник | Цитата: Надо в общем журнале сделать проводку зачета между клиентами. сопоставить. Неправильного клиента полностью заблокировать (есть такой реквизит в клиенте) | 
|  | 
|  07.03.2008, 11:16 | #6 | 
| Участник | |
|  | 
|  07.03.2008, 12:11 | #7 | 
| Lean Six Sigma | 
			
			Если такие ошибки часто появляются, то: X++: void merge(RecId mainRecordId,RecId secondRecordId) { CustTable _tableMain; CustTable _tableLine; SalesJournalAutoSummary journalSummary; SalesPrintCopies printCopies; CustBankAccount custBankAccount; RContractTable contractTable; RContractTable contractTableNew; LedgerBalancesDimTrans dimTrans; Dimensions dim, dimNew; ; startLengthyOperation(); ttsbegin; select forUpdate _tableMain where _tableMain.RecId == mainRecordId; if (_tableMain.RecId == 0) { ttsabort; throw error('??? ??????? ??????!'); } select forUpdate _tableLine where _tableLine.RecId == secondRecordId; if (_tableLine.RecId != 0) { delete_from journalSummary where journalSummary.CustAccount == _tableLine.AccountNum; delete_from printCopies where printCopies.CustAccount == _tableLine.AccountNum; delete_from custBankAccount where custBankAccount.CustAccount == _tableLine.AccountNum; while select forUpdate contractTable where contractTable.RContractPartnerType == RContractPartnerType::Cust && contractTable.RContractPartnerCode == _tableLine.AccountNum exists join contractTableNew where contractTableNew.RContractPartnerType == RContractPartnerType::Cust && contractTableNew.RContractPartnerCode == _tableMain.AccountNum && contractTableNew.RContractAccount == contractTable.RContractAccount && contractTableNew.RContractCode == contractTable.RContractCode { contractTable.delete(); } select forUpdate dimNew where dimNew.DimensionCode == SysDimension::Partner && dimNew.Num == _tableMain.AccountNum; if (dim.RecId == 0 || dimNew.RecId == 0) { ttsabort; throw error('?? ??????? ?????????, ??????????????? ????????????!'); } _tableLine.merge(_tableMain); dim.merge(dimNew); } ttscommit; endLengthyOperation(); } | 
|  | 
|  07.03.2008, 12:18 | #8 | 
| Lean Six Sigma | 
			
			В связанных таблицах править руками - не самый лучший способ когда есть и прекрасно работает custTable.merge(xxx);
		 | 
|  | 
|  07.03.2008, 13:56 | #9 | 
| Участник | 
			
			Присоединюсь пожалуй, чем не устраивает вариант Belugin? 3. Снести одного клиента 4. Переименовать первичный ключ второго в первого. | 
|  | 
|  07.03.2008, 15:23 | #10 | 
| Lean Six Sigma | 
			
			Если никто не обратил внимание, то мой код как раз и реализует вариант, предложенный Белугиным.    | 
|  | |
| За это сообщение автора поблагодарили: belugin (3). | |
|  07.03.2008, 15:33 | #11 | 
| Участник | |
|  | 
|  07.03.2008, 15:36 | #12 | 
| Участник | 
			
			А еще могут быть связи по recID
		 Последний раз редактировалось belugin; 07.03.2008 в 15:40. Причина: орфо | 
|  | |
| За это сообщение автора поблагодарили: MikeR (5). | |