Ваши комментарии
Сертификат можно указать в "Справке о предприятии" (для каждой организации)...
Вот такой вариант должен заработать: USFUNCRW.zip
int UserOffsetsKvitokCount=0;
int UserOffsetsKvitok[99999];
string UserCheckParams[99999];//строка вида: подразделение_ТН_абс.месяц
UserSaveCheckToFile()
{
int obr_kv=atoi(GetVarValue("ОБРАБОТАНО_КВИТКОВ"));
int vib_kv=atoi(GetVarValue("ВСЕГО_КВИТКОВ")); if (atoi(obr_kv)==0) //первый квиток, выполняем инициализацию
{
UserOffsetsKvitokCount=0;
for (int i=0;i<=vib_kv;i++)
{
UserOffsetsKvitok[i]=0;
UserCheckParams[i]="";
}
}
UserOffsetsKvitokCount++; //кол-во смещений(квитков)
var CFile=CreateObject("CurPrnFile");
UserOffsetsKvitok[UserOffsetsKvitokCount]=CFile.GetCountByte(); //запоминаем конечную позицию квитка
UserCheckParams[UserOffsetsKvitokCount]=to_string(kch_from_int("podr")) + "_" + to_string(kch_from_int("tn")) + "_" + to_string(atoi(GetVarValue("МЕСЯЦ_КВИТКА")));
//если обработали все квитки - сохраняем в файл
if (UserOffsetsKvitokCount==vib_kv)
{
string NameFile;//путь для временного файла
//сохраняем печатную форму в файл
{
//путь для временного файла
char Dir[128];
GetCurrentDirectory(128,Dir);
NameFile=Dir+"\\Check.tmp"; //удаляем файл,если он уже существует
if (!access(NameFile,0))
DeleteFile(NameFile); //сохраняем квитки в файл
CFile.CopyToDevice(NameFile);
}
//открываем файл с квитками
int handle = open(NameFile,O_RDONLY | O_TEXT,0);
if ( handle==-1 )
return;
var checksFolder="d:\\temp\\";//каталог, в который будут сохраняться квитки
char checkFile[256];//строка вида: год_месяц\\подразделение_ТН
//цикл по квиткам
for(int i=1;i<=UserOffsetsKvitokCount;i++)
{
long l=lseek(handle,UserOffsetsKvitok[i-1],SEEK_SET);
char kvitokContext[UserOffsetsKvitok[i]-UserOffsetsKvitok[i-1]+1];
int r=read(handle,kvitokContext,UserOffsetsKvitok[i]-UserOffsetsKvitok[i-1]);
kvitokContext=SubStr(kvitokContext,0,r); //данные одного квитка
int podr=atoi(GetElementFromString(0,UserCheckParams[i],"_"));
int tn =atoi(GetElementFromString(1,UserCheckParams[i],"_"));
var d=KDateFromInt(atoi(GetElementFromString(2,UserCheckParams[i],"_")));
sprintf(checkFile,"%04d_%02d\\%04d_%06d",d.GetYear(),d.GetMonth(),podr,tn);
var fullCheckPath=checksFolder+to_string(checkFile)+".txt";
mkdirAll(fullCheckPath);
//удаляем файл,если он уже существует
if (!access(fullCheckPath,0))
DeleteFile(fullCheckPath);
NetDialogs().AddStringToFile(fullCheckPath,OemToAnsi(kvitokContext));
}
//чистим за собой
close(handle);
DeleteFile(NameFile);
}
}
Зачем такая сложная схема? На машине где стоит КЗ нет доступа в интернет?
Текущее состояние алгоритма: 897.txt
Путь до каталога правильно указан?
Попробуйте использовать только латиницу... ( + попробовать добавить завершающий слэшь)
З.Ы. при поиске БЛ на портале ФСС используется 3 параметра ( скорей всего при поиске в каталоге используются они же)
- Регистрационный номер в ФСС (организации)
- СНИЛС (сотрудника)
- Номер ЭЛН
Игорь, спойлеры тут не работают :( , лучше скопировать в файлик и файл добавить как вложение..
в ТВХ нажимаете F9, доступ к коду алгоритма, в последнем столбце ставим параметры:
25,86,0,0,1
1)Почему при доплате до МРОТ вы НЕ учитываете тот факт, что сотрудник отработал не весь месяц?
Допустим у вас 2 сотрудника с окладом 10 000.
Первый сотрудник отработал 159 из 159 часов
Второй сотрудник отработал 1 час из 159 часов.
У первого сотрудника доплаты нет ( он заработал 10 000), а
для второго сотрудника будете рассчитывать доплату по такой формуле?:
9489 - 10000/1*159 =9489-59,68=9429,32
Неплохая разница...
2)Чтобы доплата рассчитывалась не до чистого МРОТ, а до МРОТ+РК надо в 5 параметре указать 1
Сервис поддержки клиентов работает на платформе UserEcho