Автозаполнение документов "Расчеты по страховым взносам".


Доработка http://infostart.ru/public/80122/.
В новых отчетах "Подготовка сведений для ПФР" корректное распределение уплат возможно лишь при точном заполнении документов "Расчеты по страховым взносам", которые появились в последних релизах. Т.е. проблему распределения 1С решили (см. ниже как они ее решили), но таким образом, что правильность этого распределения полностью зависит от пользователя.

Каким же образом распределяется теперь оплата, чтобы и уволенным все уплаты проставились как надо, и тем, у кого взносы перестали начисляться в связи с достижением предела, и пр. и пр.?

Коэффициент уплаты при распределении вычисляется теперь помесячно. Более того, не только за каждый месяц отчетного периода, но и за каждый месяц, за который вы произвели выплаты в   отчетном периоде.

К примеру, если в январе вы уплачивали взносы, начисленные в декабре (за декабрь, не знаю как правильнее), то коэфф. уплаты при распределении будет рассчитан и за декабрь в части этой январской оплаты.

Если вы уплатили деньги в декабре и за ноябрь и за декабрь, то это уплата у вас должна распределяться и по ноябрю и по декабрю, или если в январе платили за ноябрь и декабрь, к примеру, т.е. бухгалтерия должна сформировать 2 документа «Расчеты по страховым взносам» и за ноябрь, и за декабрь, даже если перечисление производилось одной суммой. На примере заполнения документов «Выплата заработной платы» все мы знаем, что бухгалтера не всегда будут делать как нужно.

Решить эту проблему призвана данная обработка. Вызываемая из ЗиК, она импортирует из бух конфигураций (по OLE) все уплаты, которые были произведены в отчетном периоде, распределяя их по документам   «Расчеты по страховым взносам» следующим образом:

  • если в текущем периоде производились выплаты за предыдущий, то создаются документы за каждый из оплаченных месяцев этого периода, но с датой начала периода текущего. Этого достаточно, чтобы 1С-кий механизм распределения правильно учел эти уплаты.
  • оставшаяся от распределения в пред. пункте сумма распределяется по месяцам (документам) текущего периода.

При этом гарантируется, что ни за один месяц оплата не будет больше начисления (по данным бухучета).

Т.е. создается столько документов   «Расчеты по страховым взносам», сколько на самом деле было оплачено месяцев в отчетном периоде — хоть 4, хоть 12 и более.

 Если вы положите в каталог с обработкой 1Cpp.dll, то для импорта сможете выбирать не путь к базе, а базу из списка ИБ 1С.

 

Кстати, для самой бухгалтерии тоже работает — заполняет  «Расчеты по страховым взносам»  в бух. ИБ, если вызывать их бухгалтерии и в качестве источника указать её же.

 

18/07/11

Учтено. Распределяются лишь обороты 69.х.х счетов по субконто ВидыПлатежейВФонды — Взносы/ВидыПлатежейВБюджет — Налог. Таким образом, пени и штрафы не учитываем.

При более глубоком изучении оказалось все же, что 1С-креативщики, авторы «ЗапросУпаченоВзносов» и «ТабУплачаноВзносов», не рассчитывают коэфф.уплаты помесячно, а рассчитывают их по отчетным периодам.

В обработке автозаполнения документов исправлен режим повторного запуска обработки, когда документы множились (наследство от родительской обработки). Так что, теперь не запускать, если вам дороги ваши собственные документы. Обработка удаляет все лишнее (без вопросов, но с сообщениями), осталяя только свои цифры!

В связи с вышесказанным, выкладываю переделанную 1Скину обработку «ПодготовкаСведенийДляПФР2010», в которой коэфф. уплаты вычисляются помесячно и выводится протокол распределения уплат (убогенько, но как успела), попутно исправлена 1Скина ошибка с задваиванием сумм оплат, при расчете оплат для более чем одного периода.

Еще в оригинале обработка обрабатывает помеченные на удаление доки, исправленная нет. 

19/04/11 

Добавлена исправленная 1Скина обработка, которая распределяет уплаты, используя коэфф. уплаты по отчетным периодам. Так все-таки правильнее, для тех, кто в предыдущих периодах уже использовал именно такой метод распределения.

21/04/11

Исправлен вызов ИБ по путям, содержащим пробелы. 

15/05/11

По предложению vladimir_makarov для удобства пользователей однопользовательских конфигураций (и просто для улучшения производительности) при загрузке в бух. ИБ из этой же самой ИБ больше не используется механизм OLE.

23/05/11

Исправлено распределение при  наличии переплаты на начало расчетного периода. Теперь переплата плюсуется к платежам отчетного периода.

Еще тем, кто не желает иметь 1Cpp.dll теперь можно не выбирать каталог ИБ. Но лишь в случаях загрузки из ИБ-источника, отличной от ИБ-приемника. В этом случае появится стандартное окно выбора ИБ.

29 Comments

  1. samadurov

    После завершения обработки нужно освобождать OLE-базу: в конец процедуры Сформировать() подсадить оператор БазаOLE=»»;

    А за работу «+»

    Reply
  2. Pin

    (1)Так ведь БазаOLE локальная переменная для процедуры Сформировать() и она должна освобождаться при завершении процедуры. Разве нет?

    Reply
  3. samadurov

    (2) В 7-ке ее обязательно надо освобождать. Попробуйте на открытой форме дважды отработать процедуру Сформировать(), и на второй раз выдаст сообщение о том, что база OLE занята

    Reply
  4. Pin

    (3)Попробовала. Неправда Ваша. И 2, и более раз отрабатывает без ошибок.

    Reply
  5. leosoft

    А Вы учли возможность корректирующих проводок на 91 счет (обычно несколько копеек)?

    Они могут быть как в дебет, так и в кредит счета.

    Reply
  6. Pin

    (5)Что имеется в виду под «учли возможность корректирующих проводок»? На мой взгляд, это учтено — в документы попадает ДО() соотв. счетов в части его оплаты. Протестируйте и сообщите что получается у Вас, т.к. в моем случае обработка писалась под организации, где не пользуются выгрузкой проводок из ЗиК.

    В любом случае, код открыт и никто не запрещает Вам внести свои неск. копеек.

    Reply
  7. leosoft

    При выгрузке бывают проводки

    Дт 69.Х.Х Кт 91 0.03, но это не оплата, а корректирущая проводка.

    Я не в претензии и поставил плюсик — просто предупреждаю остальных. 🙂 А эти несколько копеек потом перегонять

    после автомата будет не очень удобно.

    Reply
  8. Pin

    (7) При чем здесь претензии? Мы все делаем общее дело, и если у вас есть какие-то конкретные соображения по поводу «учета корректирующих проводок», то высказав их Вы только нам всем поможете. Свою точку зрения я обозначила выше.

    Мне чтобы понять как «эти несколько копеек потом перегонять после автомата» нужно видеть поведение обработки на такой базе, а у меня ее нет. У вас есть. Опишите что происходит.

    Reply
  9. leosoft

    База у клиентов… На самом деле — надо брать не ДО(), а только проводки корреспонденции Дт 69 Кт 51. Это и есть проводки по уплате.

    Правда еще бывают уплата пени, уплата доначисленных взносов и т.п.

    Reply
  10. Pin

    (9)А не бывает таких, кто через кассу умудрится провести или каким-нибудь экзотическим взаимозачетом? Хотя да, на таких ориентироваться… Сами себе проблемы устраивают, сами пусть оплату и распределяют как-хотят.

    А со вторым, я вроде бы, утрясла. Чисто теоретически, так как проверить негде. Ну и что? 1Скиным можно, а нам нельзя 😉 ?

    Reply
  11. Pin

    (3)Указанное Вами поведение проявилось на машине с ОС Win XP SP2. Но там освобождение методом БазаOLE=»» не помогает. Есть еще идеи?

    Reply
  12. samadurov

    (11) Да, идея есть. Нужно помимо освобождения БазаOLE делать освобождение БуИ.

    Процедура Сформировать()



    БазаOLE = «»;

    БуИ = «»;

    КонецПроцедуры

    Тогда все будет ОК

    Reply
  13. vladimir_makarov

    Я поводу того, что БазаOLE при завершении процедуры не закрывается.

    Абсолютно согласен, что достаточно «закрыть» переменную (=»»), а может, кому-то понравится такой способ:

    В начале модуля переменную не объявляем, она объявляется в процедуре «Сформировать()», а далее (т.к. переменная используется в другой процедуре), передаём её в качестве параметра. И всё! Призавершении процедуры «Сформировать()» все внутренние переменные гасятся.

    P.S.: На практике обработку пока не проверял, негде, но, идея сильно понравилась. А то одна из клиенток при мне «ручками» забивала суммы.

    Reply
  14. Pin

    (13)По Вашему предложению OLE теперь отключается когда надо (когда оно фактически не нужно).

    Reply
  15. the1

    Подскажите, а как при этом учитывается Организация-балансодержатель?

    Reply
  16. revril

    спасибо за полехзную обработку)))

    Reply
  17. revril

    спасибо за отчет

    Reply
  18. RPV

    А есть ли подобное для 1С 8.2?

    Reply
  19. avdmail

    (18) RPV,

    используя поиск Вы найдете несколько подобных обработок для 1С82

    Reply
  20. RPV

    (19) avdmail, Вообще-то искал, несклько поисковых запросов делал, результат =0, поэтому если это Ваше предположение, то не верное, а если Вы располагаете 100% информацией, то не могли бы поделиться конкретными ссылками?

    Reply
  21. k2978

    Да, я на 7.7 удобно очень

    Reply
  22. vladimir_makarov

    (18) Я — автор. Для 8.2 не делал, небыло необходимости. Спасибо за намёк, посмотрю, что там к чему, если что ссделаю.

    Reply
  23. RPV

    (22) vladimir_makarov, будем премного благодарны :)!

    Reply
  24. revril

    да,да)))очень благодарны!!

    Reply
  25. vladimir_makarov

    (1) Спасибо, возщможно, я не сбросил переменные, но OLE здесь не при чём! Внешних объектов я не подключал! А переменные сброшу, просто внимания не обратил… Да, если запустить повторно (не закрывая окна), получится… устраню.

    Reply
  26. AB3012

    Спасибо огромное, обработка очень помогла мне в работе!

    Reply
  27. radomicheva

    очень пригодилась

    Reply
  28. kleo19866

    РасположениеФайла(Катал,Файл);

    Если ПустоеЗначение(Катал)+ПустоеЗначение(Файл)=2 Тогда

    //Внутри

    ОткрФорму = «ОткрытьФорму(«»Обработка.ОтборСобытийПоОбъектуИзMLG»+»»»,,»»»»);»;

    Иначе

    //Вовне

    ОткрФорму = «ОткрытьФорму(«»Отчет#»+_GetPerformanceCounter()+»»»,,»»»+Катал+Файл+»»»);»;

    КонецЕсли;

    Сервис.ДобавитьГлобальныйМодуль(»

    |Перем fn_mlgReader Экспорт;

    |

    |Процедура ПриНажатииКнопкиКлавиатуры(Конт,КодКлавиши,Alt,Shift,Ctrl,Символ,ФСО)

    |Если КодКлавиши<>192 Тогда Возврат; КонецЕсли;

    |Если Shift+Ctrl<>2 Тогда Возврат; КонецЕсли;»+РазделительСтрок+

    ОткрФорму+»

    |КонецПроцедуры

    Reply
  29. kleo19866

    извините, случайно вставилось

    спасибо автору за сей объект

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *