Страница 1 из 1

Сумма в проводке на копейку больше

Добавлено: 19 ноя 2013, 15:09
novichok
Помогите, пожалуста!!!
В платёжном поручении бухгалтер выбирает ТХО, и у неё в хозоперации сумма получается правильной, а в проводке на 1 копейку больше.
Перераспределение платежей не помогает. Что делать?

Re: Сумма в проводке на копейку больше

Добавлено: 19 ноя 2013, 19:03
edward_K
1. Читать доку - TXO.PDF, в частности там где то была функция для вычисления погрешности.
2. Избегать крутых вычислений - типа это поделить на то. По умолчанию Проводка формируется округленная, если только иное не разрешено настройкой или программист забыл ее проверить.
3. Определится куда относить копейку, если ничего другого придумать нельзя. По хорошему это должна быть апиха, которая определит максимальный разрез и отнесет погрешность туда.
А иначе против математики не попрешь - погрешность в сложных ТХО(или в сложных данных - типа налогов на фот) будет и с ней нужно бороться заблаговременно.

Re: Сумма в проводке на копейку больше

Добавлено: 20 ноя 2013, 06:56
Алексей
информации - ноль. вы бы хоть шаблон ТХО написали, какой алгоритм формирования используете, что хотите получить в результате.

Re: Сумма в проводке на копейку больше

Добавлено: 20 ноя 2013, 12:07
novichok
Алексей писал(а):информации - ноль. вы бы хоть шаблон ТХО написали, какой алгоритм формирования используете, что хотите получить в результате.
Вы имели ввиду это (алгоритм формирования расчёта сумм):

Код: Выделить всё

&Rasschetpl
&PL"NDS_18.00"
&PL"NDS_10.00"
&PL"NDS_0.00"
coTXOGetExtAttr('BASEDOC','Виды расчётов',&KAUD4)
&PL"BNDS_0.00"
TxoSetKau(10065,161,coTXOGetExtAttr('BASEDOC','Плательщик агента',&KAUD4))
TxoSetKau(10014,162,coTXOGetExtAttr('PLPOR','Виды расчётов',&Soprdoc))
if(&KAU[Кау:8][Режим:160]>0,TxoSetKau(10014,160,coTXOGetExtAttr('GROUPMC','Виды расчетов',&KAU[Кау:8][Режим:160])),TxoSetKau(10014,160,coTXOGetExtAttr('GROUPUSL','Виды расчётов',&KAU[Кау:9][Режим:160])))
&NP_[Расчет:Оплаченные]
&KAU[Кау:5]
&KAU[Кау:4]
coTXOGetField('KATUSL','CGROUPUSL',&18)
coTXOGetField('KATMC','CGROUPMC',&19)
coTXOGetExtAttr('GROUPUSL','Виды расчётов',&20)
coTXOGetExtAttr('GROUPMC','Виды расчетов',&21)
coTXOGetExtAttr('BASEDOC','Плательщик агента',&KAUD4)
if(&25=0,TxoSetKau(10065,161,&KAUD2),&10)
&SoprDoc[Рез:СпНаклАкта]
&NP_[Расчет:Оплаченные]
coTXOGetField('SPSOPR','CGRNAL',&SoprDoc[Рез:СпНаклАкта])
if(&29=1000000000007h, TxoSetKau(10018,160,1000000000576h),if(&29=5,TxoSetKau(10018,160,32Eh),if(&29=3,TxoSetKau(10018,160,2CAh),if((&29=2 and doTXOGetField('SPSOPR','SUMNDS',&SoprDoc[Рез:СпНаклАкта])>0) or &29=4 or &29=6,TxoSetKau(10018,160,2C9h),&31))))
TxoSetKau(10018,160,1000000000576h)
&Vip_[Obj:"PAYDIFFRATE"][Рез:СтоимПоз]
Это писал представитель Галактики, который уже уехал с предприятия. А мне совсем недавно сказали разбираться во всём этом.

Re: Сумма в проводке на копейку больше

Добавлено: 20 ноя 2013, 12:30
Алексей
это жесть :)
дробление видимо происходит в связи с распределением платежа по позициям сопроводительных документов...

тут как бы надо пример, с суммами, но сдается мне, можно сильно упростить это ТХО.

а что, по счетам прямо ведётся аналитика, вся что указана?

Re: Сумма в проводке на копейку больше

Добавлено: 20 ноя 2013, 12:56
edward_K
В ТХО вообще то есть печать - сюда лучше текстовый отчет поставить - так было бы наглядней. Упростить наверное можно, но суть не в этом. Мож раз и навсегда решить проблему написав соотв. апиху и добавив ее последней проводкой- она должна пробежать Oborot по SoprHoz, найти с максимальной суммой и записать туда погрешность. Либо размазать погрешность по наибольшим проводкам - но это чутка сложнее.
Либо всегда относить погрешность на какой то один счет. Ну или добиваться, чтобы сумм по строкам накладной была округленная. При формировании ТХО можно еще включить протоколирование(я обычно сразу включаю детальный) и посмотреть какой ключ дает не то значение что ожидалось. + Есть еще фокус с домножением предварительных ключей на 1000000, а финальном соотв. поделить.

Re: Сумма в проводке на копейку больше

Добавлено: 20 ноя 2013, 14:46
novichok
Печать ТХО такая:

Код: Выделить всё

Реестр типовых хозяйственных операций и
формируемых проводок по счетам бухгалтерского учета


Хозяйственный документ:	Собственное платежное поручение

60.1,3 - 51 Оплата поставщику, подрядчику в рублях (с авансом)???  
Регистр учета:	План счетов БСЗ
№ п/п	Корреспонденция	Вх.	Процент
1	ДЕБЕТ: 60.01	КРЕДИТ: 51.<нет>	+	100.0000
	КАУ 1: <режим 0 - Виды расчетов>	КАУ 1: <явно - Платежи поставщикам (подрядчикам) за сырьё, материалы, работы, услуги>		
	КАУ 2: <авто - Организации>	КАУ 2: <режим 9 - Расчетные счета предприятия>		
	КАУ 3: <авто - Договоры>	КАУ 3: <режим 0 - Ставки НДС>		
	КАУ 4: <авто - Документы-основания>	Подразделение: <не формировать - Подразделения>		
	КАУ 5: <авто - Центры ответственности>	   		
	КАУ 6: <режим 1 - Продавец>	   		
	Подразделение: <не формировать - Подразделения>	   		
	Дата проводки:	<авто - дата>		
	Содержание проводки:	Оплата поставщику, подрядчику по %KauName[Кау:14] 		
	Алгоритм в НДЕ:	if(&27>0,&32,0)		
	Алгоритм в валюте <по настройке>:	 		
	Алгоритм количество:	 		
	Вычисление формул:	Вычислять все формулы по списку		
	Фильтр для циклической обработки:	 		
	Циклическая обработка:	<Материальные ценности> <Услуги> <Ставки НДС> <Спецификации сопроводительных документов> <Группы услуг> <Группы МЦ> 		
	Результат:	положительная, при смене знака сумму обнулить		
	Сумму в проводке:	не конвертировать 		
	Внешняя классификация:	 		
2	ДЕБЕТ: 60.03	КРЕДИТ: 51.<нет>	+	100.0000
	КАУ 1: <режим 2 - Виды расчетов>	КАУ 1: <явно - Платежи поставщикам (подрядчикам) за сырьё, материалы, работы, услуги>		
	КАУ 2: <авто - Организации>	КАУ 2: <режим 9 - Расчетные счета предприятия>		
	КАУ 3: <авто - Договоры>	КАУ 3: <явно - НДС 18%>		
	КАУ 5: <авто - Центры ответственности>	Подразделение: <не формировать - Подразделения>		
	КАУ 6: <режим 1 - Продавец>	   		
	Подразделение: <не формировать - Подразделения>	   		
	Дата проводки:	<авто - дата>		
	Содержание проводки:	Аванс поставщику, подрядчику по %KauName[Кау:14]		
	Алгоритм в НДЕ:	if(&27=0,if(&4>0,&Sum,0),0)		
	Алгоритм в валюте <по настройке>:	 		
	Алгоритм количество:	 		
	Вычисление формул:	Вычислять все формулы по списку		
	Фильтр для циклической обработки:	 		
	Циклическая обработка:	 		
	Результат:	знак суммы не обрабатывать, корреспонденцию счетов не изменять		
	Сумму в проводке:	не конвертировать 		
	Внешняя классификация:	 		
3	ДЕБЕТ: 60.03	КРЕДИТ: 51.<нет>	+	100.0000
	КАУ 1: <режим 2 - Виды расчетов>	КАУ 1: <явно - Платежи поставщикам (подрядчикам) за сырьё, материалы, работы, услуги>		
	КАУ 2: <авто - Организации>	КАУ 2: <режим 9 - Расчетные счета предприятия>		
	КАУ 3: <авто - Договоры>	КАУ 3: <явно - НДС 10%>		
	КАУ 5: <авто - Центры ответственности>	Подразделение: <не формировать - Подразделения>		
	КАУ 6: <режим 1 - Продавец>	   		
	Подразделение: <не формировать - Подразделения>	   		
	Дата проводки:	<авто - дата>		
	Содержание проводки:	Аванс поставщику, подрядчику по %KauName[Кау:14]		
	Алгоритм в НДЕ:	if(&27=0,if(&5>0,&Sum,0),0)		
	Алгоритм в валюте <по настройке>:	 		
	Алгоритм количество:	 		
	Вычисление формул:	Вычислять все формулы по списку		
	Фильтр для циклической обработки:	 		
	Циклическая обработка:	 		
	Результат:	знак суммы не обрабатывать, корреспонденцию счетов не изменять		
	Сумму в проводке:	не конвертировать 		
	Внешняя классификация:	 		
4	ДЕБЕТ: 60.03	КРЕДИТ: 51.<нет>	+	100.0000
	КАУ 1: <режим 2 - Виды расчетов>	КАУ 1: <явно - Платежи поставщикам (подрядчикам) за сырьё, материалы, работы, услуги>		
	КАУ 2: <авто - Организации>	КАУ 2: <режим 9 - Расчетные счета предприятия>		
	КАУ 3: <авто - Договоры>	КАУ 3: <явно - Без НДС>		
	КАУ 5: <авто - Центры ответственности>	Подразделение: <не формировать - Подразделения>		
	КАУ 6: <режим 1 - Продавец>	   		
	Подразделение: <не формировать - Подразделения>	   		
	Дата проводки:	<авто - дата>		
	Содержание проводки:	Аванс поставщику, подрядчику по %KauName[Кау:14]		
	Алгоритм в НДЕ:	if(&27=0,if(&4>0,0,if(&5>0,0,&Sum)),0)		
	Алгоритм в валюте <по настройке>:	 		
	Алгоритм количество:	 		
	Вычисление формул:	Вычислять все формулы по списку		
	Фильтр для циклической обработки:	 		
	Циклическая обработка:	 		
	Результат:	знак суммы не обрабатывать, корреспонденцию счетов не изменять		
	Сумму в проводке:	не конвертировать 		
	Внешняя классификация:	 		
№ п/п	Алгоритмы для расчета сумм проводки	Примечание к алгоритму
1	&1 = &Rasschetpl	Аналитика "Расчетные счета плательщика"
4	&4 = &PL"NDS_18.00"	18%  ставка НДС
5	&5 = &PL"NDS_10.00"	10%  ставка НДС
6	&6 = &PL"NDS_0.00"	0%  ставка НДС
7	&7 = coTXOGetExtAttr('BASEDOC','Виды расчётов',&KAUD4)	Nrec - Аналитика "Виды расчётов" из ДО
8	&8 = &PL"BNDS_0.00"	Без НДС
10	&10 = TxoSetKau(10065,161,coTXOGetExtAttr('BASEDOC','Плательщик агента',&KAUD4))	Заполнить аналитику "Плательщик агента" из ДО
14	&14 = TxoSetKau(10014,162,coTXOGetExtAttr('PLPOR','Виды расчётов',&Soprdoc))	Заполнить аналитику "Виды расчётов" из пл. пор.
16	&16 = if(&KAU[Кау:8][Режим:160]>0,TxoSetKau(10014,160,coTXOGetExtAttr('GROUPMC','Виды расчетов',&KAU[Кау:8][Режим:160])),TxoSetKau(10014,160,coTXOGetExtAttr('GROUPUSL','Виды расчётов',&KAU[Кау:9][Режим:160])))	Заполнить аналитику "Виды расчетов"
17	&17 = &NP_[Расчет:Оплаченные]	Суммы, распределенные по спецификации накладной (акта)
18	&18 = &KAU[Кау:5]	Nrec поз. спецификации услуг
19	&19 = &KAU[Кау:4]	Nrec поз. спецификации МЦ
20	&20 = coTXOGetField('KATUSL','CGROUPUSL',&18)	Nrec группы услуг поз. спецификации услуг
21	&21 = coTXOGetField('KATMC','CGROUPMC',&19)	Nrec группы МЦ поз. спецификации МЦ
22	&22 = coTXOGetExtAttr('GROUPUSL','Виды расчётов',&20)	Nrec аналитики "Виды расчетов"группы услуг
23	&23 = coTXOGetExtAttr('GROUPMC','Виды расчетов',&21)	Nrec аналитики "Виды расчетов"группы МЦ
25	&25 = coTXOGetExtAttr('BASEDOC','Плательщик агента',&KAUD4)	Продавец из ДО
26	&26 = if(&25=0,TxoSetKau(10065,161,&KAUD2),&10)	Заполнить аналитику "Продавец" аналитикой "Плательщик агента" из ДО
27	&27 = &SoprDoc[Рез:СпНаклАкта]	Nrec спецификации накладной/акта
28	&28 = &NP_[Расчет:Оплаченные]	Суммы оплаченных поз. в накладной&NP_[Расчет:Оплаченные]
29	&29 = coTXOGetField('SPSOPR','CGRNAL',&SoprDoc[Рез:СпНаклАкта])	Nrec группы налогов
30	&30 = if(&29=1000000000007h, TxoSetKau(10018,160,1000000000576h),if(&29=5,TxoSetKau(10018,160,32Eh),if(&29=3,TxoSetKau(10018,160,2CAh),if((&29=2 and doTXOGetField('SPSOPR','SUMNDS',&SoprDoc[Рез:СпНаклАкта])>0) or &29=4 or &29=6,TxoSetKau(10018,160,2C9h),&31)	Заполнить аналитику "Ставки налогов и взносов"
31	&31 = TxoSetKau(10018,160,1000000000576h)	[ГрНал:"01;02;06"]
32	&32 = &Vip_[Obj:"PAYDIFFRATE"][Рез:СтоимПоз]	Суммы оплаченных поз. в накладной&NP_[Расчет:Оплаченные]
 
Там всего одна оплата услуги, количество 0,286 ; сумма 1170893.76
Проводка формируется на 1170893.77
Вся аналитика по счетам ведётся, чтоб ей провалиться. :-(

А какие ключи умножить на 1000000, вообще все ? Поделить последний, т.е. 32 ? (как раз этот &32 и добавляет копейку, у всех остальных всё правильно судя по протоколу)
Так наверно проще будет и быстрее. Пока буду изучать, как писать апиху, бухгалтер настучит начальству, что лишняя копейка не исчезла

Re: Сумма в проводке на копейку больше

Добавлено: 20 ноя 2013, 16:05
edward_K
Интересно что вернет &Sum (он у вас везде кроме первой проводки ) и 17. Если 17 тоже врет, значит апиха из 32 не причем, а дело именно в распределении. Вообще если распределение по накладным идет пропорционально, то там часто на копейку рвет. Можно руками в SPSopHoz подправить

Re: Сумма в проводке на копейку больше

Добавлено: 20 ноя 2013, 17:10
novichok
edward_K писал(а):Интересно что вернет &Sum (он у вас везде кроме первой проводки ) и 17. Если 17 тоже врет, значит апиха из 32 не причем, а дело именно в распределении. Вообще если распределение по накладным идет пропорционально, то там часто на копейку рвет. Можно руками в SPSopHoz подправить
Всё правильно, вроде:

Код: Выделить всё

 ├─────┼─────────────────────────────────────────────────────────────────┴─────────────────┤
  │9    │&17                                                                                │
  │     ├─────────────────────────────────────────────────────────────────┬─────────────────┤
  │     │&NP_[Расчет:Оплаченные]                                          │1170893.76       │
  │     │                                                                 │0                │
  │     │                                                                 │0.286049987473612│
  ├─────┼─────────────────────────────────────────────────────────────────┴─────────────────┤
и в других, кроме 32, нигде нет этих 1170893.77
везде 76коп.

Re: Сумма в проводке на копейку больше

Добавлено: 20 ноя 2013, 17:49
edward_K
Ну если у вас есть ТП значит трясете ТП насчет этой апихи(она штатная) а пока 32 меняете на 17 и смотрите, что сломалось по сравнению с 32(аналитика могет не заполнится- но суды по проводкам вряд ли). Вообще ТХО написана конечно плохо - 17 еще в 24 повторяется например.

Re: Сумма в проводке на копейку больше

Добавлено: 21 ноя 2013, 13:17
novichok
edward_K писал(а):Ну если у вас есть ТП значит трясете ТП насчет этой апихи(она штатная) а пока 32 меняете на 17 и смотрите, что сломалось по сравнению с 32(аналитика могет не заполнится- но суды по проводкам вряд ли). Вообще ТХО написана конечно плохо - 17 еще в 24 повторяется например.
Спасибо большое!!!
Замена 32 на 17 помогла! :smile:
Ничего не сломалось, сумма стала нормальная! Выходит, эта апиха и не нужна была?

Re: Сумма в проводке на копейку больше

Добавлено: 25 ноя 2013, 06:05
Алексей
вообще NP это по накладным актам алгоритм, а 32-й у вас как раз вроде бы завязан на платежи.
т.е. если у вас будут документы, оплаченные двумя и более платежами, я думаю у вас неверно NP отработает.

Re: Сумма в проводке на копейку больше

Добавлено: 25 ноя 2013, 06:13
Шевцов Владимир
Мы, чтобы избавиться от проблем с суммой неокругленных значений, добивались того, чтобы в оперативных документах все суммы по всем позициям всегда были приведены к ближайшей копейке. Тогда и проводки полностью соответсвуют позициям спецификаций.