Список форумов BOSSForum.RU - Форум. БОСС-Кадровик
Независимый форум, посвященный системе БОСС-Кадровик
и всему, что с ней связано
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Непонятная ошибка z-процедуры

 
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> SQL: ТЗК (Табельно-зарплатный контур)
Предыдущая тема :: Следующая тема  
Автор Сообщение
nuvng



Зарегистрирован: 13.03.2017
Сообщения: 11

СообщениеДобавлено: Ср Июн 07, 2017 15:16    Заголовок сообщения: Непонятная ошибка z-процедуры Ответить с цитатой

Здравствуйте! Прошу помощи.

В объектах замещения существует z-процедура, которая формирует xml-реестр в банк. У 9 пользователей из 10 все отрабатывает без ошибок, но на одной машине (после ее замены) при попытке осуществить селект процедура прерывается. Ошибка такова:

Начало сообщения
Executing SQL directly; no cursor.
Incorrect syntax near '407028......80004447'.

select convert(varchar, sum(convert(decimal(10,2), z.summa)))
from zrp_tbl_cash z, card c, people p, const_uder u, emps e
where p.auto_card = c.auto_card
and z.id_gl_docs = 5170
and z.pid = p.pid
and z.summa != 0
and z.main = u.auto_const_uder
and e.pid = z.pid
and u.N_bank = 0
and e.st = curstation 407028......80004447

Конец сообщения

407028......80004447 - это номер счета организации, который определяется выше. Привожу сам текст процедуры с выделением мест, где возникает ошибка. Также выделил место, где присваивается номер счета организации. Ощущение, что идет какая-то подстановка в тело запроса номера счета, причем только на одной, новой машине. В чем может быть причина? Подскажите, пожалуйста...

Текст процедуры

var n_pp, n_ved, spath[100], str[40], str1[40], filename[3], sel[1100], _name[70], _name_i[70], _name_o[70], bank_code[4], //str6[8],
typ_doc[3], _passp_[50], n_sch[20], n_card[20], summa, summa_t[20], summa_itogo, k_summ, k_summa[15];
var to_day[8], nomer_pp[10], data_pp2[8], summa_pp[18], summa_pp2, id_top[3], id_op, n_r[10],
firm_name[255], bname[255], bic[10],korr_sch[20], _where_[100], stavka_id_[30];
string _idbank_,id_b_str[20], num_dog_str[20], dat_ree[10], inn[12], account[25], kod_filiala[10];
number nom_ree, k_f, idbank;

//_nom_ved, _id_firm, _fnam[''], to_day['], nomer_pp['], data_pp2['], @summa_pp2['], kod_b['], @nomer_ree['], _whereid_[''], id_b['], num_dog
// Настройки
ParamStr(0, str); strnum(str, n_ved); //код ведомости
ParamStr(1, id_top); strnum(id_top, id_op); //Код организации
ParamStr(2, spath); //Путь файла
ParamStr(3, to_day); //Дата сегодня
ParamStr(4, nomer_pp); //Номер платежного поручения
ParamStr(5, data_pp2); //Дата платежного поручения
ParamStr(6, summa_pp); //Сумма платежного поручения
ParamStr(7, bank_code); //Код отделения банка
ParamStr(8, n_r); //номер реестра
strnum(n_r,nom_ree);
ParamStr(9,dat_ree); // дата реестра
/*ParamStr(10, _where_); //ID выбранных ведомостей
ParamStr(11, id_b_str); //ID выбранных ведомостей*/
ParamStr(10, num_dog_str); //№ договора
ParamStr(11, kod_filiala); //Код филиала СБ
ParamStr(12, firm_name); // -- Название фирмы
//ParamStr(13, _firm_acc_); // Счет фирмы из реквизитов предприятия

//strnum(kod_filiala, k_f);
ParamStr(14, stavka_id_); // доп. условие с учетом типа приема
ParamStr(15, _idbank_); // -- ИД Банка

strnum(_idbank_, idbank);

//put("%d",idbank);

if (strlen(spath)==0) return 0;

sput(filename, "%s%03dz.xml", bank_code, nom_ree);

// открыть файл записи
strcpy(str1,spath);
strcat(str1,"\\");
strcat(str1,filename);
put("%s", str1);

f2 = fopen(str1, "w");


sput(sel, "select REPLACE(s.name,'\"' ,'"'), s.INN, s.account from "
"setup s where s.id_firm = %d", id_op);


t = topen(sel, 1);
while (1){
s=tget(t, firm_name, inn, account);
if (s==0) break;
}

tclose(t);


// put ("%s код %d банк %s бик %s коррсчет %s ",firm_name, id_op, bname, bic, korr_sch);


// Запись в файл заголовка
fput(f2, "<?xml version =\"1.0\" encoding=\"windows-1251\" ?>\n");
fput(f2, "<СчетаПК ДатаФормирования=\"%s\" НомерДоговора=\"%s\" НаименованиеОрганизации=\"%s\" ИНН=\"%s\" РасчетныйСчетОрганизации=\"%s\"
ИдПервичногоДокумента=\"%d\" НомерРеестра=\"%d\" ДатаРеестра=\"%s\">\n",
dat_ree, num_dog_str, firm_name, inn, account,n_ved, nom_ree, dat_ree);
fput(f2, "<ЗачислениеЗарплаты>\n");


sput(sel, "
select convert(varchar, sum(convert (decimal(10,2), z.summa)))

from zrp_tbl_cash z, card c, people p, const_uder u, emps e
where p.auto_card = c.auto_card
and z.id_gl_docs = %d
and z.pid = p.pid
and z.summa != 0
and z.idMain = u.Auto_Const_Uder
and u.N_bank = %d
and e.st = curstation %s
and e.pid = z.pid
", n_ved, idbank, stavka_id_ );

SelectInto(sel, k_summa);

strnum(k_summa, k_summ);


strnum(summa_pp, summa_pp2);

n_pp = 0;
summa_itogo = 0;

sput(sel, "select p.pid,
u.N_lc,
name, name_i, name_o,
convert (nvarchar, convert (decimal(10,2), z.summa)),
convert (decimal(10,2), z.summa)
from zrp_tbl_cash z
join people p on z.pid = p.pid
join emps e on e.pid = z.pid and st = curstation %s
join card c on p.auto_card = c.auto_card
join const_uder u _HINTBROWSER ON z.idMain = u.Auto_Const_Uder
where z.id_gl_docs = %d
and z.summa !=0
and u.N_bank = %d
order by c.full_name
", stavka_id_, n_ved, idbank );

t = topen(sel, 1);
while (1){
s=tget(t, n_card, n_sch, _name, _name_i, _name_o, summa_t, summa );
if (s==0) break;
n_pp = n_pp + 1;

fput(f2, " <Сотрудник Нпп=\"%d\">\n",n_pp);
fput(f2, " <Фамилия>%s</Фамилия>\n",_name);
fput(f2, " <Имя>%s</Имя>\n",_name_i);
fput(f2, " <Отчество>%s</Отчество>\n",_name_o);
fput(f2, " <ОтделениеБанка>%s</ОтделениеБанка>\n",bank_code);
fput(f2, " <ФилиалОтделенияБанка>%s</ФилиалОтделенияБанка>\n",kod_filiala);
fput(f2, " <ЛицевойСчет>%s</ЛицевойСчет>\n",n_sch);
fput(f2, " <Сумма>%s</Сумма>\n",summa_t);
fput(f2, " </Сотрудник>\n");


// fput(f2, "\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",%s\n", n_card, n_sch, _name, typ_doc, _passp_ , summa_t );

summa_itogo = summa_itogo + summa;
}
tclose(t);

fput(f2, " </ЗачислениеЗарплаты>\n");
fput(f2, " <КонтрольныеСуммы>\n");
fput(f2, " <КоличествоЗаписей>%d</КоличествоЗаписей>\n",n_pp);
fput(f2, " <СуммаИтого>%15.2d</СуммаИтого>\n",summa_itogo);
fput(f2, " </КонтрольныеСуммы>\n");
fput(f2, "</СчетаПК>\n");


fclose(f2);

//sput(sel,"Execute xFile(ANSIToOem %s%s);",spath,filename);
//DO_SQL(sel);

put ("Файл сформирован. Всего выгружено %d строк на общую сумму %d рублей.",n_pp,summa_itogo);

return 0;
}


Конец текста процедуры
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
nuvng



Зарегистрирован: 13.03.2017
Сообщения: 11

СообщениеДобавлено: Ср Июн 07, 2017 17:17    Заголовок сообщения: Ответить с цитатой

Вопрос решился переустановкой "небитого" Native Client)))
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Svyatoslav



Зарегистрирован: 14.02.2010
Сообщения: 50

СообщениеДобавлено: Ср Июн 07, 2017 18:28    Заголовок сообщения: Ответить с цитатой

В Модуле зарплата формируется список с входящими работниками в таблице emps, ограниченная по полю st = curstation. Где curstation - номер рабочей станции, с которой заходим в модуль. Это значение можно получить в окне отладчика.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> SQL: ТЗК (Табельно-зарплатный контур) Часовой пояс: GMT + 4
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Pоwerеd by рhpВB © 2001, 2005 рhpВB Grouр
Русская поддержка phрВB
Rambler's Top100 Рейтинг@Mail.ru Список форумов BOSSForum.RU