Имя: Пароль:
1C
1С v8
БП 3.0 : Откуда берутся такие суммы в регистре накопления - Уплата НДФЛ ???
0 sapravka
 
23.08.15
17:02
Здравствуйте.
Если что не так - прошу сильно не ругать.
Есть база, типовая бухгалтерии предприятия 3.0.
Делали тестирование и исправление с пересчетом итогов, проверяли на физическую целостность, а в базе выходят в справке 2ндфл большие суммы и другие документы которые формируют отчеты по 2НДФЛ.
Смотрели в начислениях, в перечислениях, в платежках и банковских выписках, в операциях введенных вручную - нигде нет и близко таких огромных сумм!!!

    Нашел что в регистре накопления:
Уплата НДФЛ налоговыми агентами (к распределению) попали очень большие суммы:
http://s017.radikal.ru/i413/1508/40/99450e3262ae.jpg
Смотрел платежное поручение на основании которого якобы получились такие суммы, а там вообще нет таких сумм, но вот когда нажимаю на просмотр - Реестр перечисленных сумм налога на доходы физических лиц  - там по каждому человеку выходят слишком огромные суммы как с плюсом так и с минусом, сами посмотрите:
http://s016.radikal.ru/i335/1508/99/057ecc43b9b1.jpg

Убедительно прошу, подскажите: Как исправить данную ошибку?
1 GenV
 
23.08.15
20:24
(0) проверить отладчиком как формируются движения, если провести повторно?
2 Забияка
 
23.08.15
20:26
(0)Проверь предыдущие периоды - оттуда ноги растут, имхо.. Программа пытается отсторнировать в текущем периоде суммы исчисленного НДФЛ за предыдущие периоды..
3 sapravka
 
23.08.15
20:55
(1) Вот хотелось самому понять откуда программа формирует такие суммы...
4 GenV
 
24.08.15
02:15
(3) Поставь точку в модуле документа в процедуре ПодготовитьТаблицыНалоговВзносовФОТ и посмотри, что запрос в ЗадолженностьРаботников возвращает. Потом анализируй в какой таблице проблемы.
5 sapravka
 
24.08.15
03:24
(4) Нашел в модуле документа СписаниеСРасчетноСчета:

ТаблицыУплатыВзносовФОТИП = УчетДоходовИРасходовПредпринимателя.ПодготовитьТаблицыУплатыВзносовФОТ(ПараметрыПроведения.ПеречислениеНалогаИПТаблица, ПараметрыПроведения.Реквизиты);

Вот только пробовал вычислять значения, а никаких цифр там нет, в этих двух функциях
И как еще посмотреть откуда берется цифры при проведении?

Функция ПодготовитьТаблицыУплатыВзносовФОТ(ТаблицаВзносов, ТаблицаРеквизитов) Экспорт
    
    ТаблицыВзносовФОТ = Новый Структура("СписокВзносов, СписокПереплат");
    
    Параметры = ПодготовитьПараметрыТаблицУплатыВзносовФОТ(ТаблицаВзносов, ТаблицаРеквизитов);
    Если Параметры.Реквизиты.Количество() = 0
        ИЛИ Параметры.СписокВзносов.Количество() = 0 Тогда
        Возврат ТаблицыВзносовФОТ;
    КонецЕсли;
    
    Реквизиты = Параметры.Реквизиты[0];
    Если НЕ УчетнаяПолитика.ПлательщикНДФЛ(Реквизиты.Организация, Реквизиты.Период) Тогда
        Возврат ТаблицыВзносовФОТ;
    КонецЕсли;
    
    Счета69    = БухгалтерскийУчетВызовСервераПовтИсп.СчетаВИерархии(ПланыСчетов.Хозрасчетный.РасчетыПоСоциальномуСтрахованию);
    Счета69_06 = БухгалтерскийУчетВызовСервераПовтИсп.СчетаВИерархии(ПланыСчетов.Хозрасчетный.Взносы_СтраховойГод);
    
    Если Счета69.Найти(Реквизиты.СчетУчета) = Неопределено Тогда
        // Это не взносы
        Возврат ТаблицыВзносовФОТ;
    ИначеЕсли Счета69_06.Найти(Реквизиты.СчетУчета) <> Неопределено Тогда
        // Фиксированные страховые взносы
        Возврат ТаблицыВзносовФОТ;
    КонецЕсли;
    
    ВидыПринимаемыхПлатежей = Перечисления.ВидыПлатежейВГосБюджет.ВидыНалоговыхПлатежей();
    
    СуммаПринимаемая = 0;
    Для Каждого Взнос Из Параметры.СписокВзносов Цикл
        Если Взнос.СчетДт = Реквизиты.СчетУчета
            И ВидыПринимаемыхПлатежей.Найти(Взнос.СубконтоДт1) <> Неопределено Тогда
            СуммаПринимаемая = СуммаПринимаемая + Взнос.СуммаРуб;
        КонецЕсли;
    КонецЦикла;
    
    Если СуммаПринимаемая = 0 Тогда
        // Уплата налоговых санкций в расходы не включается
        Возврат ТаблицыВзносовФОТ;
    КонецЕсли;
    
    // Установка управляемой блокировки
    СтруктураПараметров = Новый Структура("ТипТаблицы, ИмяТаблицы", "РегистрНакопления", "ПрочиеРасчеты");
    
    ЗначенияБлокировки = Новый Структура;
    ЗначенияБлокировки.Вставить("Период",      Новый Диапазон(, Реквизиты.Период));
    ЗначенияБлокировки.Вставить("Организация", Реквизиты.Организация);
    ЗначенияБлокировки.Вставить("СчетУчета",   Реквизиты.СчетУчета);
    
    ОбщегоНазначенияБПВызовСервера.УстановитьУправляемуюБлокировку(СтруктураПараметров, ЗначенияБлокировки);
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ДатаОстатков", Новый Граница(Новый МоментВремени(Реквизиты.Период, Реквизиты.Регистратор), ВидГраницы.Исключая));
    Запрос.УстановитьПараметр("Организация",  Реквизиты.Организация);
    Запрос.УстановитьПараметр("СчетУчета",    Реквизиты.СчетУчета);
    Запрос.Текст =
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    ПрочиеРасчетыОстатки.РасчетныйДокумент
    |ИЗ
    |    РегистрНакопления.ПрочиеРасчеты.Остатки(
    |            &ДатаОстатков,
    |            Организация = &Организация
    |                И СчетУчета = &СчетУчета) КАК ПрочиеРасчетыОстатки";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    СписокНалоговВзносов = ПолучитьПустуюТаблицуСписокВзносов();
    СписокПереплат       = ПолучитьПустуюТаблицуСписокПереплат();
    
    Если НЕ РезультатЗапроса.Пустой() Тогда
    
        ТаблицаРезультатаЗапроса  = РезультатЗапроса.Выгрузить();
        СписокРасчетныхДокументов = ТаблицаРезультатаЗапроса.ВыгрузитьКолонку("РасчетныйДокумент");
        
        // Установка управляемой блокировки
        СтруктураПараметров = Новый Структура("ТипТаблицы, ИмяТаблицы", "РегистрНакопления", "ИППрочиеРасходы");
        
        ЗначенияБлокировки = Новый Структура;
        ЗначенияБлокировки.Вставить("Период",      Новый Диапазон(, Реквизиты.Период));
        ЗначенияБлокировки.Вставить("Организация", Реквизиты.Организация);
        ЗначенияБлокировки.Вставить("СчетУчета",   Реквизиты.СчетУчета);
        
        ОписаниеИсточника = Новый Структура("РасчетныйДокумент", "РасчетныйДокумент");
        
        СтруктураПараметров.Вставить("ИсточникДанных",
            ПодготовитьИсточникДанныхБлокировки(СтруктураПараметров, ТаблицаРезультатаЗапроса, ОписаниеИсточника));
        
        ОбщегоНазначенияБПВызовСервера.УстановитьУправляемуюБлокировку(СтруктураПараметров, ЗначенияБлокировки, ОписаниеИсточника);
        
        Запрос = Новый Запрос;
        Запрос.УстановитьПараметр("ДатаОстатков", Новый Граница(Новый МоментВремени(Реквизиты.Период, Реквизиты.Регистратор), ВидГраницы.Исключая));
        Запрос.УстановитьПараметр("Организация",  Реквизиты.Организация);
        Запрос.УстановитьПараметр("СчетУчета",    Реквизиты.СчетУчета);
        Запрос.УстановитьПараметр("ДатаНач", ДатаПервогоДокумента(СписокРасчетныхДокументов));
        Запрос.УстановитьПараметр("СписокРасчетныхДокументов", СписокРасчетныхДокументов);
        
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ИППрочиеРасходыОбороты.НоменклатурнаяГруппа,
        |    ИППрочиеРасходыОбороты.ХарактерДеятельности,
        |    ИППрочиеРасходыОбороты.СтатьяЗатрат,
        |    ИППрочиеРасходыОбороты.РасчетныйДокумент,
        |    ИППрочиеРасходыОбороты.СуммаОборот
        |ПОМЕСТИТЬ ВТИППрочиеРасходыОбороты
        |ИЗ
        |    РегистрНакопления.ИППрочиеРасходы.Обороты(
        |            &ДатаНач,
        |            &ДатаОстатков,
        |            ,
        |            РасчетныйДокумент В (&СписокРасчетныхДокументов)
        |                И ДокументОплаты = НЕОПРЕДЕЛЕНО
        |                И СчетУчета = &СчетУчета) КАК ИППрочиеРасходыОбороты
        |
        |ИНДЕКСИРОВАТЬ ПО
        |    ИППрочиеРасходыОбороты.РасчетныйДокумент
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ОплатаТруда.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
        |    ОплатаТруда.ХарактерДеятельности КАК ХарактерДеятельности,
        |    ОплатаТруда.СтатьяЗатрат КАК СтатьяЗатрат,
        |    ОплатаТруда.РасчетныйДокумент КАК РасчетныйДокумент,
        |    ЕСТЬNULL(РеквизитыРасчетныхДокументов.ДатаРегистратора, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаРасчетногоДокумента,
        |    ОплатаТруда.СуммаОборот КАК Сумма
        |ИЗ
        |    ВТИППрочиеРасходыОбороты КАК ОплатаТруда
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПервичныхДокументов КАК РеквизитыРасчетныхДокументов
        |        ПО (РеквизитыРасчетныхДокументов.Организация = &Организация)
        |            И ОплатаТруда.РасчетныйДокумент = РеквизитыРасчетныхДокументов.Документ
        |
        |УПОРЯДОЧИТЬ ПО
        |    ДатаРасчетногоДокумента,
        |    РасчетныйДокумент,
        |    СтатьяЗатрат,
        |    НоменклатурнаяГруппа,
        |    ХарактерДеятельности";
        
        Выборка = Запрос.Выполнить().Выбрать();
        Пока Выборка.Следующий() Цикл
            
            СуммаОплаты = Мин(СуммаПринимаемая, Выборка.Сумма);
            
            Если СуммаОплаты > 0 Тогда
                
                НоваяСтрока = СписокНалоговВзносов.Добавить();
                ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
                НоваяСтрока.ДокументОплаты = Реквизиты.Регистратор;
                НоваяСтрока.СуммаОплаты    = СуммаОплаты;
                
                СуммаПринимаемая = СуммаПринимаемая - СуммаОплаты;
                
            КонецЕсли;
            
        КонецЦикла;
        
    КонецЕсли;
    
    // Отражение переплаты
    Если СуммаПринимаемая > 0 Тогда
        Переплата = СписокПереплат.Добавить();
        Переплата.СчетУчета = Реквизиты.СчетУчета;
        Переплата.Сумма     = СуммаПринимаемая;
    КонецЕсли;
    
    ТаблицыВзносовФОТ.СписокВзносов  = СписокНалоговВзносов;
    ТаблицыВзносовФОТ.СписокПереплат = СписокПереплат;
    
    Возврат ТаблицыВзносовФОТ;
    
КонецФункции

Функция ПодготовитьПараметрыТаблицУплатыВзносовФОТ(ТаблицаВзносов, ТаблицаРеквизитов)
    
    Параметры = Новый Структура;
    
    // Подготовка таблицы Параметры.СписокВзносов
    
    СписокОбязательныхКолонок = ""
        + "СчетДт,"      // <ПланСчетовСсылка.Хозрасчетный>
        + "СубконтоДт1," // <Характеристика.ВидыСубконтоХозрасчетные>
        + "СуммаРуб";    // <Число,15,2> - сумма перечисляемого налога
        
    Параметры.Вставить("СписокВзносов", ОбщегоНазначенияБПВызовСервера.ПолучитьТаблицуПараметровПроведения(
        ТаблицаВзносов, СписокОбязательныхКолонок));
        
    // Подготовка таблицы Параметры.Реквизиты
    
    СписокОбязательныхКолонок = ""
        + "Период,"      // <Дата> - период движений - дата документа
        + "Регистратор," // <ДокументСсылка.*> - документ-регистратор движений
        + "Организация," // <СправочникСсылка.Организации>
        + "ВидОперации," // <ПеречислениеСсылка.*> - вид операции документа
        + "СчетУчета";   // <ПланСчетовСсылка.Хозрасчетный> - счет учета налогов
    
    Параметры.Вставить("Реквизиты", ОбщегоНазначенияБПВызовСервера.ПолучитьТаблицуПараметровПроведения(
        ТаблицаРеквизитов, СписокОбязательныхКолонок));
        
    Возврат Параметры;
    
КонецФункции

Функция ПодготовитьПараметрыТаблицУплатыВзносовФОТ(ТаблицаВзносов, ТаблицаРеквизитов)
    
    Параметры = Новый Структура;
    
    // Подготовка таблицы Параметры.СписокВзносов
    
    СписокОбязательныхКолонок = ""
        + "СчетДт,"      // <ПланСчетовСсылка.Хозрасчетный>
        + "СубконтоДт1," // <Характеристика.ВидыСубконтоХозрасчетные>
        + "СуммаРуб";    // <Число,15,2> - сумма перечисляемого налога
        
    Параметры.Вставить("СписокВзносов", ОбщегоНазначенияБПВызовСервера.ПолучитьТаблицуПараметровПроведения(
        ТаблицаВзносов, СписокОбязательныхКолонок));
        
    // Подготовка таблицы Параметры.Реквизиты
    
    СписокОбязательныхКолонок = ""
        + "Период,"      // <Дата> - период движений - дата документа
        + "Регистратор," // <ДокументСсылка.*> - документ-регистратор движений
        + "Организация," // <СправочникСсылка.Организации>
        + "ВидОперации," // <ПеречислениеСсылка.*> - вид операции документа
        + "СчетУчета";   // <ПланСчетовСсылка.Хозрасчетный> - счет учета налогов
    
    Параметры.Вставить("Реквизиты", ОбщегоНазначенияБПВызовСервера.ПолучитьТаблицуПараметровПроведения(
        ТаблицаРеквизитов, СписокОбязательныхКолонок));
        
    Возврат Параметры;
    
КонецФункции
6 RoRu
 
24.08.15
07:39
Сталкивался с таким , имхо БП 3 кривая в некоторых случаях , у вас наверно несколько доков начисл и выпл зп в месяц по одним и тем же челам
7 sapravka
 
24.08.15
09:13
(6) Да, но там нет  нигде таких огромных сумм...
Из-за чего это может быть?
И главное, как это исправить?
8 Флудер
 
24.08.15
09:27
(7) Предлагаешь нам за тебя отладчиком пройтись?
9 RoRu
 
26.08.15
08:28
(7) кривая,
обрати внимание после 2ух перепроведений без изменений доков суммы 2 раза поменяются
2 + 2 = 3.9999999999999999999999999999999...