0
На рассмотрении

Дата выплаты в расчетном листке

Алексей Панчихин 3 месяца назад в Справки, квитки и прочие формы печати обновлен 3 месяца назад 16

Добрый день!

Как можно получить дату межрасчетной выплаты на макроязыке создания печатных форм квитков?

Настройки для квитков здесь не все учитываются, поэтому с датой выплаты есть проблема с датой выплаты!

На рассмотрении

Добрый день.

В Скриптовом квитке дата выплаты определяется так

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

GetPayDateCurrentRow() 
{ 
   // если межрасчеты объединены - дату не печатать, иначе есть больная вероятность не угадать с датой выплаты (у склеиных сумм дата выплаты может быть разная) ( todo: проверять была ли склейка межрасчетов или обьединяли другие выплаты )
   // для аванса ИД сейчас не разносится, но при этом "зарплатная ведомость" ид разносит -> в квитке у аванса печатется "левая" дата выплаты
   if ( atoi(InternCodE)==201 || 'А' == Sim_For_Extern_Cod(kod,1009) || KV_MOD1!=0 ) 
      return "";

   var sumElem = FindSumElem(InternCodE,month_Abs,month_kv);
   if (!VarHasValue(sumElem) || sumElem.PaysCount()<1)
      return "";

   //лучше брать не первую выплату а последнюю, т.к. на виде касса теоретически может быть несколько выплат.
   //если вид завели сначала руками и приняли в зарплатную ведомость, а потом занулили и разнесли на него следующую ведомость
   int idVed=sumElem.GetPay(sumElem.PaysCount()-1).IdVed;   
   return GetKassVedInfo(idVed, 0);// what: 0 - дата, 1 - номер, 2 - название
}

В макроязыке можно вызвать скрипт вот так

$BEG_SCRIPT
//тут уже скрипт..
$END_SCRIPT

а переменными общается макроязык с внедренным скриптом?

в скрипте можно работать с переменными макроязыка

Image 8159

// Так выглядит фрагмент, АМБа зависает при выполнении...

#MES(N,2,0)=ДАТЫ(2);

#MRASCH(C,8,0)=КАЛЕНД_МЕС(MES);


$BEG_SCRIPT

var sumElem = FindSumElem(204,MES,MES);

if (!VarHasValue(sumElem) || sumElem.PaysCount()<1)

MRASCH = "";

else

{

int idVed=sumElem.GetPay(sumElem.PaysCount()-1).IdVed;

MRASCH = GetKassVedInfo(idVed, 0);// what: 0 - дата, 1 - номер, 2 - название

}

$END_SCRIPT

$ЕСЛИ (_EQ(КУ-304))

#НАЗВУ = MRASCH;

$КОНЕЦ_ЕСЛИ

вместо скрипта напишите скриптовую функцию, тогда можете запустить в режиме отладки  и определить какие параметры прилетели кривые.

на первый взгляд в FindSumElem вы передаете календарные месяца, а нужно абсолютные

Добрый день!

Как можно на макроязыке получить  месяц принадлежности и месяц начисления/удержания по ВИДУ?

Кажется вы подходите к снаряду не с той стороны.

Расскажите какую задачу решаете и чем не устроили скриптовые квитки?

не устраивает тем, что из области удержаний невозможно исключить ненужные колонки, типа РВ и т.п., то есть состав колонок тот же что и в области начислений. В итоге при печати не входит на ширину листа 2 квитка, тем более с учетом отступа для подшивки. В старом варианте квитка на макроязыке все устраивает, но надо дату выплаты!

функция макроязыка СТРОКА_УД(Е,КУ,НАЗВУ,РВУ,СУМИТ,У,ЗУ,Z,RCU) получает месяц принадлежности "Е" и его можно передать в скрипт для получения даты выплаты, но год при этом не уточняется, сейчас решаю именно эту проблему. Далее полученную дату выплаты вывожу на печать вместо наименования вида.

FindSumElem(204,MES,MES) возвращает пустое значение для MES=433, что соотв. январю 2024, несмотря на то что сумма там имеется:

Image 8160

ну дак код то неверно указан, 204.04 должен быть

первый параметр вроде как long...

проверил, действительно по коду 204.04 находится сумма, встает вопрос как получить точный код вида суммы в тексте макроязыка или в том же скрипте...

Добрый день! 

"Добыча" даты выплаты выполнена успешно, но появилась другая проблема, связанная с реализацией алгоритма печати квитка в макроязыке печати форм. Расчетчики настояли на печати даты м/р выплаты в следующей строке, дабы не в ущерб имеющейся ценной информации в строке с суммой выплаты!

Настройка "Печать даты выплаты в следующей строке" здесь не работает!

"Навигатор" по строкам печати удержаний, "ЗУ", если я правильно понимаю, генерируется в теле встроенной функции

СТРОКА_УД(Е,КУ,НАЗВУ,РВУ,СУМИТ,У,ЗУ,Z,RCU). Как-то можно вмешаться и раздвинуть строки м/р, для вставки полученной даты выплаты предыдущей строки м/р?

Алексей, я уже ранее писал, что квитки на макроязыке это устаревший механизм, который в текущий момент не поддерживается

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