Имя: Пароль:
1C
1С v8
v8: УПП. Учет НДС по партиям
,
0 miandrew
 
15.09.11
15:52
Имеем:
Поступление №1 товар1 кол-во 1 на сумму 80р
Поступление №2 товар1 кол-во 3 на сумму 240р

Реализация №1 товар1 кол-во 4 штуки по цене 89,64 за штуку. Всего 358,56 руб, НДС 54,70 руб.

Если включен партионный учет (тогда и НДС тоже по партиям идет) получается при проведении реализации в Регистр накопления "НДС начисленный" 2 записи (т.к. две партии):
товар1 Сумма без НДС 175,96   НДС 13,68 = Окр(0,25*54,7)
товар1 Сумма без НДС 227,89   НДС 41,03 = Окр(0,75*54,7)

ИМЕЕМ:          СуммаНДС    СуммаБезНДС

в документе     54,7        303,86
по регистру НДС 54,71       303,85

Соответственно потом и книга продаж неправильно заполняется на основании регистра...
Что делать с этой разницей в копейку?... При большом количестве документов набегают большие суммы... Что делать? Мот где что неправильно делается...
1 miandrew
 
15.09.11
15:56
Исправьте кто может шапку на "Учет НДС по партиям"... для поиска...
2 zbv
 
15.09.11
15:59
(1) конфа ? релиз ?

тоже для поиска :)
3 miandrew
 
15.09.11
15:59
Уточнение: делал это в УПП (думаю и в комплексной так же будет)
4 miandrew
 
15.09.11
16:01
Мой релиз 1.3.7.1, проверял и на 1.3.14.2
Модуль УчетНДС функция ПреобразоватьТаблицуСписанныхПартийДляНДС
5 shuhard
 
15.09.11
16:03
(0) у меня УПП и НДС начисленный идентичен 68.02,
что я делаю не так ?
6 John83
 
15.09.11
16:07
эта хрень длится очень и очень давно (еще с 20х релизов), лично я тупо написал обработку, которая выравнивает эти округления
7 shuhard
 
15.09.11
16:09
(6) для книги продаж ?
окстись
НДС по партиям к ней ни каким боком не лежит
8 miandrew
 
15.09.11
16:14
(7)Формирование записей книги продаж потом заполняется на основании регистра "НДС начисленный". НЕ так чтоль?
9 miandrew
 
15.09.11
16:17
(6) Вроде можно же дописать саму функцию ПреобразоватьТаблицуСписанныхПартийДляНДС чтобы она как при списании партии списывала остаток НДС. Или там есть какие то подводные камни?
10 shuhard
 
15.09.11
16:17
(8) НДС по партиям <> НДС начисленный,
ты согласен ?
11 John83
 
15.09.11
16:19
(9) пробовал, но вылезало в самых неожиданных местах и т.к. у нас НДС - это самое "больное" место, решил, что через корректировку регистров будет лучше
12 miandrew
 
15.09.11
16:20
(10) НДС по партиям - это мы не про регистр. А про учет НДС по регистру "НДС начисленный" в разрезе партий.
13 John83
 
15.09.11
16:20
(10) партии товаров БУ тоже <> НДС по партиям
и тем не менее они взаимосвязаны
14 shuhard
 
15.09.11
16:25
(13) ну просвети нас тупых

у тебя бухи требуют синхронного списания НДС по партиям и Партии БУ ?

гони в сад,
НК этого не требует и УПП не гарантирует
15 miandrew
 
15.09.11
16:28
Хотят чтоб НДС в книге продаж совпадал с оборотами по К счета 68.02. (14) просвяти нас...
16 shuhard
 
15.09.11
16:33
(15) я про [учет НДС по регистру "НДС начисленный" в разрезе партий.] не слыхивал

что это ?
17 miandrew
 
15.09.11
16:36
Включен партионный учет:
2 прихода один расход - будет 2 строки записи по регистру "НДС начисленный". Там НДС будет высчитываться соответственно количеству списываемому по каждой партии. По одной партии - 1 ед, по другой партии - 3 ед. Вот и по "НДС начисленный" будут 2 записи 1/4*НДС и 3/4*НДС. Почти учет НДС по партиям.
18 miandrew
 
15.09.11
16:38
Это не партионный учет НДС, это просто НДС высчитывается соответственно записям по партиям в обычном партионном учете.
19 miandrew
 
15.09.11
16:38
Но это не меняет суть дела и то что НДС высчитывается неправильно и не совпадает с НДС в документе.
20 John83
 
15.09.11
16:41
(19) проводки формируются на основании самого документа, а движения по НДС начисленный, на основании партий товаров НДС
PS уже давно это в отладчике смотрел, может немного и путаю, но смысл примерно такой
21 shuhard
 
15.09.11
16:43
(19) у меня совпадает
УПП 1.3.9.1
при партионном учете и суммах с постоянными копейками

причем совпадает последние три года
копейка в копейку
22 John83
 
15.09.11
16:55
(21) попробуй проделать, как в (0)
23 shuhard
 
15.09.11
16:56
(22) у меня это делают менеджеры каждый день
и проверяют аудиторы каждый квартал
24 zbv
 
15.09.11
16:59
(20)
>>проводки формируются на основании самого документа, а движения по НДС начисленный, на основании партий товаров НДС

ну это врятли.
Во-первых, НДС по партиям можно проводить обработкой.
Во-вторых, есть случаи когда нет суммы по регистру НДС по партиям, и что теперь не платить НДС ?
25 John83
 
15.09.11
17:01
(24) не поверишь...
в этом случае данные берутся из самого документа :)
26 John83
 
15.09.11
17:02
(23) возможно, что такой ситуации не возникало или на эти копейки не обращаются вниманию
27 shuhard
 
15.09.11
17:04
(26) не верю
скорее у ТС древний/криво обновленный релиз

1С давно научилась при записи в Рг последнюю строку формировать по остатку, а не округлением
28 John83
 
15.09.11
17:11
(27) я на последних типовых пробовал проделывать - все равно копейки появляются
29 John83
 
15.09.11
17:12
в (25) кажется наврал - от чего-то другого зависит
давно это было...
30 shuhard
 
15.09.11
17:18
(28) смоделировать что ли ? (лениво так)
31 shuhard
 
15.09.11
17:34
(19) Ооооооооооо
прибьё аудит, прострелю коленку зам.главбуха

у меня та же ошибка в продуктиве(9 копеек за 3 года) и ни одна сволочь не проверила.

придётся код подрихтовать к выходу 1.3.17.1
32 miandrew
 
15.09.11
18:52
Во-во. Моделируется легко всё на последней демке УПП. 2 прихода и 1 расход как в примере и начинается пляска...
Что делать с этим пока не знаю... Мот каким закрытием это правится.. хз... Вот и спросил мот кто знает...
33 shuhard
 
15.09.11
18:56
(32) как что делать ?
дописать кусочек кода, чтобы последняя запись в Рг НДС начисленный шла по остатку, а не по пропорции

НДС по документу известен же известен
34 miandrew
 
15.09.11
19:01
Вот, согласен. Главное чтоб не было подводных камней. Мот просто кто делал уже.... думал расскажут.
А так я уже наваял кусок кода - завтра оттестю...
35 John83
 
15.09.11
20:52
(33)(34) может выложите заодно?
интересно посмотреть
36 shuhard
 
15.09.11
20:57
(35) письками хочешь померяться - давай
37 miandrew
 
15.09.11
21:02
Завтра потестю на большом периоде - и там будет видно выкладывать или нет..
38 shuhard
 
15.09.11
21:04
(37) я не буду тестировать
сразу выложу, ибо менять что-либо в продуктиве нет надобности
39 shuhard
 
15.09.11
21:15
(35) вот каркас
в нем не учтены:
- наличие услуг в РТиУ
- наличие в НДС начисленном строки с НДС меньше отклонения
- наличие в ТЧ товары записей со ставкой без НДС


Итого:

- одна подписка на Рг НДС Начисленный перед записью
- одна процедура

- 0 проблем при обновление
Процедура КопейкаНДСНачисленныйПередЗаписью(Источник, Отказ, Замещение) Экспорт
   Наборчик=Источник;
   Если ТипЗнч(Наборчик.Отбор.Регистратор.Значение)=Тип("ДокументСсылка.РеализацияТоваровУслуг")   Тогда
       Если Наборчик.Количество()>0 Тогда
           ТЗ=Наборчик.Выгрузить();
           СуммаПоТЗ=ТЗ.Итог("НДС");
           СуммаПоТЧ=Наборчик.Отбор.Регистратор.Значение.Товары.Итог("СуммаНДС");
           Дельта=СуммаПоТЗ-СуммаПоТЧ;
           Если  Дельта<>0 Тогда
               ТЗ[ТЗ.Количество()-1].НДС=ТЗ[ТЗ.Количество()-1].НДС-Дельта;    
           КонецЕсли;
           Наборчик.загрузить(ТЗ);
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры
40 shuhard
 
15.09.11
21:18
(39) так лучше:
Процедура КопейкаНДСНачисленныйПередЗаписью(Источник, Отказ, Замещение) Экспорт
   Наборчик=Источник;
   Если ТипЗнч(Наборчик.Отбор.Регистратор.Значение)=Тип("ДокументСсылка.РеализацияТоваровУслуг")   Тогда
       Если Наборчик.Количество()>0 Тогда
           ТЗ=Наборчик.Выгрузить();
           СуммаПоТЗ=ТЗ.Итог("НДС");
           СуммаПоТЧ=Наборчик.Отбор.Регистратор.Значение.Товары.Итог("СуммаНДС");
           Дельта=СуммаПоТЗ-СуммаПоТЧ;
           Если  Дельта<>0 Тогда
               ТЗ[ТЗ.Количество()-1].НДС=ТЗ[ТЗ.Количество()-1].НДС-Дельта;    
               Наборчик.загрузить(ТЗ);
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры
41 miandrew
 
15.09.11
22:15
думаю замедлит перепроведение.... что итак делается не по-детски долго
42 shuhard
 
15.09.11
22:17
(41) не а
во-первых таких документов мало
во-вторых всё происходит в памяти, а тормозит запись движений
43 miandrew
 
15.09.11
22:23
Я пока в процедуре ПреобразоватьТаблицуСписанныхПартийДляНДС строки
   СтрокаРаспределеннойТаблицы.НДС = Окр(СтрокаТаблицыСписания.НДС * КоэффСписания,2,1);
   СтрокаРаспределеннойТаблицы.СуммаБезНДС = Окр(СтрокаТаблицыСписания.СуммаБезНДС * КоэффСписания,2,1) - СтрокаРаспределеннойТаблицы.НДС;

поменял на

   Если _КоэфПравильный+КоэффСписания = 1 И КоэффСписания <> 1 Тогда
       СтрокаРаспределеннойТаблицы.НДС = СтрокаТаблицыСписания.НДС-_НДС;
       СтрокаРаспределеннойТаблицы.СуммаБезНДС = СтрокаТаблицыСписания.СуммаБезНДС-_СуммаБезНДС-(СтрокаТаблицыСписания.НДС-_НДС);
   Иначе
       СтрокаРаспределеннойТаблицы.НДС = Окр(СтрокаТаблицыСписания.НДС * КоэффСписания,2,1);
       СтрокаРаспределеннойТаблицы.СуммаБезНДС = Окр(СтрокаТаблицыСписания.СуммаБезНДС * КоэффСписания,2,1) - СтрокаРаспределеннойТаблицы.НДС;
   КонецЕсли;

   Если КоэффСписания = 1 Тогда
       _КоэфПравильный = 0; _НДС = 0; _СуммаБезНДС = 0;
   Иначе
       _КоэфПравильный = _КоэфПравильный + КоэффСписания;
       _НДС = _НДС + СтрокаРаспределеннойТаблицы.НДС;
       _СуммаБезНДС = _СуммаБезНДС + СтрокаРаспределеннойТаблицы.СуммаБезНДС + СтрокаРаспределеннойТаблицы.НДС;
   КонецЕсли;
44 miandrew
 
15.09.11
22:24
так будет правиться именно та номенклатура в которой косяк
45 miandrew
 
15.09.11
22:26
хотя не факт что правильно отработает все случаи
46 shuhard
 
15.09.11
22:28
(45) вот почему  я делаю подписки, а не лезу в общие процедуры
47 miandrew
 
15.09.11
22:30
но так правится последняя позиция в списке не зависимо от того где косяк. Если это не столь существенно - то можно и так.
48 miandrew
 
15.09.11
22:34
В моём изменении будет проблема с округлением в _КоэфПравильный+КоэффСписания = 1 потому что могут быть случаи когда _КоэфПравильный+КоэффСписания будет равен 1,000000000000000000000000001 или например 0,99999999999999999999
49 shuhard
 
15.09.11
22:35
(47) номенклатура в Рг реквизит, а не измерение
она не закрывается
важен лишь вид ценности
50 shuhard
 
15.09.11
22:37
(48) а 1С так не делает,
при списание партий, а это явная партия, остаток идёт либо на большую запись или на последнюю

именно остаток
51 miandrew
 
15.09.11
22:41
согласен.
Накой они вообще тогда разбивают НДС. Группировали б и писали одной суммой.....
52 miandrew
 
15.09.11
22:58
Еще в (43) не проверяет есть ли расхождение . Так что кому надо - смотрите вариант (40)
53 miandrew
 
25.09.11
14:22
В итоге оставил так:

       //проверим надо ли исправлять НДС
       //очистим параметры проверки
       Если _Номенклатура <> СтрокаТаблицыСписания.Номенклатура ИЛИ Окр(_КоэфПравильный,15,1) >= 1 Тогда
           _КоэфПравильный = 0; _НДС = 0; _СуммаБезНДС = 0;
       КонецЕсли;
       Если Окр(_КоэфПравильный+КоэффСписания,15,1) = 1 И КоэффСписания <> 1 И СтрокаТаблицыСписания.НДС-_НДС <> Окр(СтрокаТаблицыСписания.НДС * КоэффСписания,2,1) Тогда
           СтрокаРаспределеннойТаблицы.НДС = СтрокаТаблицыСписания.НДС-_НДС;
           СтрокаРаспределеннойТаблицы.СуммаБезНДС = СтрокаТаблицыСписания.СуммаБезНДС-_СуммаБезНДС-СтрокаРаспределеннойТаблицы.НДС;
       Иначе
           СтрокаРаспределеннойТаблицы.НДС = Окр(СтрокаТаблицыСписания.НДС * КоэффСписания,2,1);
           СтрокаРаспределеннойТаблицы.СуммаБезНДС = Окр(СтрокаТаблицыСписания.СуммаБезНДС * КоэффСписания,2,1) - СтрокаРаспределеннойТаблицы.НДС;
       КонецЕсли;
       _КоэфПравильный = _КоэфПравильный + КоэффСписания;
       _НДС = _НДС + СтрокаРаспределеннойТаблицы.НДС;
       _СуммаБезНДС = _СуммаБезНДС + СтрокаРаспределеннойТаблицы.СуммаБезНДС + СтрокаРаспределеннойТаблицы.НДС;
               _Номенклатура = СтрокаТаблицыСписания.Номенклатура;
       //окончание изменения
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший