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

Добрый день!

  1. Проверьте что у 305 в 18,20,21,22 столбце Спец.ТВХ стоят *
  2. Порядок расчета (Прд) у 305 должен быть больше чем у 505
  3. В параметрах алгоритма 305 НЕ должно стоять "1,*,1" 

Если все условия выполнены - добавьте к вопросу сохраненку


 

Сертификат можно указать в "Справке о предприятии" (для каждой организации)...

Вот такой вариант должен заработать: 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);
  }
}

Зачем такая сложная схема? На машине где стоит КЗ нет доступа в интернет?

Путь до каталога правильно указан?

Попробуйте использовать только латиницу... ( + попробовать добавить завершающий слэшь)


З.Ы. при поиске БЛ на портале ФСС используется 3 параметра ( скорей всего при поиске в каталоге используются они же)

  • Регистрационный номер в ФСС (организации)
  • СНИЛС (сотрудника)
  • Номер ЭЛН


Игорь, спойлеры тут не работают :( , лучше скопировать в файлик и файл добавить как вложение..

в ТВХ нажимаете F9, доступ к коду алгоритма, в последнем столбце ставим параметры: 

25,86,0,0,1

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