Ваши комментарии

3)Если вы хотите, чтобы 6-НДФЛ формировался по датам, которые стоят у сумм (shift+F9 на виде в просмотре ЛС), а не по информации, разнесенной кассовыми ведомостям,  то вам надо поставить 01.2018 в настройке "Месяц, с которого все выплаты фиксируются ведомостями" (Настройка -> 5.  Настройки таблиц и форм печати -> >> Справки и отчеты для ФНС (НДФЛ и т.п.) -> 2. Настройки 6-НДФЛ -> ))

Или необходимо изменить дату ведомости на правильную. Если есть возможность зайти на рабочее место человека создавшего кассу - то с его рабочего места, если такой возможности нет, то дату можно поменять скриптом.

int idVed = ... ; // число idVed
string newDate = "ДД.ММ.ГГГГ"; // новая дата
var ListVed = CreateObject("CashVedInfoList");
var cashVedInfo = ListVed.GetVedInfo(idVed);
if ( VarHasValue(cashVedInfo) )
{
   cashVedInfo.DateStr = newDate;
   ListVed.SetVedInfo(idVed,cashVedInfo);
}

Если вариант с заменой даты ведомости для вас актуален, можно сделать табличку которая поменяет дату для кассовой ведомости (но делать это лучше только в том случае, если рабочее место старого расчетчика более не существует, то есть нет возможность обычным способом поменять дату у ведомости)

Отчеты -> Таблицы массовой обработки -> Разноска сумм и РВ в лицевые счета

Поэтому для остальных выплат программа в качестве дат удержания НДФЛ проставляет плановую дату выплаты зарплаты.


Опишите как у вас в принципе происходит выплата зарплаты. Есть ли задержки. Всегда ли выплачиваете в одни и те же дни (аванса и окончательного расчета). Бывают ли какие-то межрасчетные выплаты кроме аванса? (больничные, квартальные-годовые премии?). Ну то есть чтобы понять как можно облегчить заполнение 6-НДФЛ при отсутствии кассовых ведомостей.
Опишите хотя бы на примере данного ЛС (ТН=174). Какие выплаты у него были и когда.

Ошибка. Исправим.

В инструкции написано:

// В настройке "Столбец для выборки сумм" нужно указать номер стобца 
// Виды начислений должны быть помечены символом 1 в этом столбце. 

Столбцы для ЗП-СОЦ указываются в 3 настройках:

"Настройка -> 5.  Настройки таблиц и форм печати -> >> Отчетность по статистике -> >> Формы ЗП-хх -> 3. Настройки для формы 3П-соц":


  1. "Столбец для бюджетов всех уровней" - то что попадет в графу 6
  2. "Столбец для ОМС" - то что попадет в графу 7
  3. "Столбец для приносящей доход деятельности" - то что попадет в графу 8
обычно видно куда этот минус нужно "впихнуть"

Ну "обычно видно" - это человеку обычно видно. А как научить видеть программу? Расскажите четкие правила по которым видно куда надо "впихнуть".

У вас блок отрицательный может быть потому что не хватило положительных сумм по другим людям чтобы перекрыть отрицательную. Все суммы перетаскивать в другой блок (и положительные и отрицательные) или только часть отрицательных (для которых не хватило положительных), или все отрицательные? Все это решается бухгалтером в каждом конкретном случае с оглядкой на платежки по НДФЛ.
Да, блок может быть отрицательным, но была платежка по НДФЛ к этому блоку по положительным работникам. Значит надо перекидывать только отрицательные суммы, а положительные оставить.


 а добавлять 2 строки (в таблице???) с фиктивным л/с в нужные блоки - в минусовой блок строку с плюсовыми суммами, в плюсовой блок - строку с минусовыми суммами. 

?! В какой блок то совать строку с минусовыми суммами? Ведь такого же блока (с таким же набором дат) нет + оперировать надо на уровне целого блока, а не на уровне записи по одному человеку. 


То есть это какая-то дополнительная обработка после того как отчет создан и мы хотим спрятать минусы. Ну то есть это что-то вроде вызов действия "спрятать минусы" на готовом отчете.

Такая функция поможет:

UsrGetNormPeriod(what,&D1,&D2,numcalend)
{
   int am1 = KDateFromStr(D1).GetAbs();
   int am2 = KDateFromStr(D2).GetAbs();
   int tmrasch = mrasch;
   int tmp = nkalend;
   if ( nkalend!=numcalend && numcalend>0 )
      rwnorma(numcalend,0);
   double Total = 0.;
   for (int am=am1; am<=am2; ++am )
   {
      mrasch=am;
      s118();
      Total += norm(what);
   }
   mrasch=tmrasch;
   if ( nkalend!=tmp )
   {
      rwnorma(tmp,0);
      s118();
   }  
   return Total;
}

Пример вызова: 

return UsrGetNormPeriod(1,"01.01.2018","31.12.2018",2);


в поставку добавили параметр 0 - по принадлежности, 1 - по начислению 

CL_COL надо тоже убрать из параметров.

Правильный флаг:  CL_EXACT | CL_MV | CL_NACH для начислений и CL_EXACT | CL_MV | CL_UD - для удержаний. В противном случае если будет несколько строк с одинаковым кодом, суммы по этому коду удвоятся.

Старый надо оставить как "базу знаний" там накопился достаточно большой объем вопросов-ответов, которые актуальны и сейчас. Поэтому в режиме "только для чтения", старый форум был бы полезен.

Сервис поддержки клиентов работает на платформе UserEcho