0
Fixed
Gete 3 years ago • updated by Дмитрий Токарский 2 years ago 20
После выбора файла выгрузки из банк-клиента и попытке сохранить данные формы выскакивает ошибка (см. скан)
Добрый день, скопируйте файл Export.txt на рабочий стол и попробуйте заново повторить.
попробовал, все осталось по-прежнему:
Здравствуйте.
Из под пользователя с какими правами выполняется операция?
пользователь: sa
Добрый день, нам нужно подключиться к Вам. Для этого свяжитесь с нами(skype:axistemsupport, icq:629420009, e-mail:support@axistem.ru )
эту ошибку удалось устранить, разместив выгрузку на сервере. Но появилась другая:
Уважаемые разработчики! В чем проблема с триггером? Когда можно ожидать ответа?
Откройте SQL Managment Studio, подключитесь к вашему SQL серверу, слева сверху в выпадающем списке выберете вашу базу данных. Нажмите кнопку "New Query" (Создать запрос). В открывшееся окно вставьте код ниже, нажмите F5. Все должно заработать.

ALTER TRIGGER [dbo].[AXI_Attr147_ImportBK] ON [dbo].[Attr147]
--with execute as owner
AFTER INSERT
AS
BEGIN
set nocount on;
IF OBJECT_ID (N'tempdb..#TABLE_AXI_Attr147_ImportBK', N'U') IS not NULL return
delete from ImportTable
declare @TN varchar(256)
,@FP varchar(256)
, @ObjectID int


set @TN = 'ImportTable'


if (select COUNT(*) from inserted i inner join dbo.attr24 a24 on a24.ObjectID = i.ObjectID and a24.ObjectClassID = 147
where Left(p117,11) = 'База данных')>0
begin
raiserror('Не сохраняйте файлы в базе данных!', 16, 1)
rollback
return
end
create table #TABLE_AXI_Attr147_ImportBK(ObjectID int)




DECLARE cursfile cursor local fast_forward for


select i.ObjectID, p117+
P115+
p116 from inserted i inner join dbo.attr24 a24 on a24.ObjectID = i.ObjectID and a24.ObjectClassID = 147
where Left(p117,11) <> 'База данных'
OPEN cursfile
FETCH NEXT FROM cursfile into @ObjectID, @FP
WHILE @@FETCH_STATUS=0
BEGIN






--IF OBJECT_ID (N''+@TN, N'U') IS not NULL exec('drop table '+@TN)


exec spImportClientBank @TableName=@TN,@FilePath=@FP




declare @Table table
(KAID int
,JurID int
,KLID int
,INN varchar(255)
,KPP varchar(255)
)


insert into @Table
(KAID
,JurID
,KLID
,INN
,KPP
)
select
a5.ObjectID as KAID
,a126.ObjectID as JurID
,a98.ObjectID as KLID
,coalesce(a126.p575, a98.p745) as INN
,a126.p576 as KPP
from dbo.Attr5 a5
left outer join dbo.Attr126 a126 on a126.p582 = a5.ObjectID and isnull(a5.p554,0) = 0
left outer join dbo.Attr6 a98 on a98.P357 = a5.ObjectID and ISNULL(a5.p554,0) = 1
--where coalesce(a126.p575, a98.p745) in (select PolINN from ImportTable union select PayerINN from ImportTable)
where a126.p575 in (select PolINN from ImportTable union select PayerINN from ImportTable)
or a98.p745 in (select PolINN from ImportTable union select PayerINN from ImportTable)


declare @TablePR table
(PRID int
,KAID int
,JurID int
,BID int
,rs varchar(255)
,bik varchar(255)
,ks varchar(255)
)
insert into @TablePR
(PRID
,KAID
,JurID
,BID
,rs
,bik
,ks
)
select
a128.ObjectID
,a128.p599 as KAID
,a128.p600 as JurID
,a127.ObjectID as BID
,a128.p593 as rs
,a127.p586 as bik
,a127.p587 as ks
from dbo.Attr128 a128
inner join dbo.attr127 a127 on a127.ObjectID = a128.p594
inner join @Table b0 on b0.KAID = a128.p599




INSERT INTO [dbo].[Attr148]
([ObjectClassID]
,[P770]--номер
,[p1879]--дата
,[P1880]--сумма
,[P1881]--назначение платежа
,[P1882]--плательщик
,[P1883]--плательщик ИНН
,[P1884]--плательщик счет
,[P1885]--плательщик КПП
,[P1886]--плательщик контрагент (ссылка)
,[P1887]--плательщик юр.лицо (ссылка)
,[P1888]--плательщик - контактное лицо (ссылка)
,[P1889]--плательщик-платежные реквизиты (ссылка)
,[P1890]--Получатель КПП
,[P1891]--показатель КБК
,[P1892]--ОКАТО
,[P1893]--Показатель основания
,[P1894]--показатель периода
,[P1895]--показатель номера
,[P1896]--показатель даты
,[P1921]--показатель типа
,[P1897]--плательщик банк
,[P1898]--плательщик-банк (ссылка)
,[P1899]--Плательщик корсчет
,[P1900]--получатель
,[P1901]--получатель инн
,[P1902]--получатель счет
,[P1903]--получатель-контрагент (ссылка)
,[P1904]--получатель - юр.лицо (ссылка)
,[P1905]--получатель - Контактное лицо (ссылка)
,[P1906]--получатель - платежные реквизиты (ссылка)
,[P1907]--вид оплаты
,[P1908]--срок платежа
,[P1909]--вид платежа
,[P1910]--дата поступило
,[P1911]--получатель банк
,[P1912]--получатель бик
,[P1913]--получатель корсчет
,[P1914]--получатель банк (ссылка)
,[P1916]--касса-счет
,[P1915]--направление платежа
,p3429--файл
,P3422 --касса-счет получатель (для переносов)
)
SELECT
148
,Number--номер
,cast(
dateadd(yyyy, cast(right([Date],4) as int)-1900,
dateadd(mm, cast(left(right([Date], LEN([Date])-3),2) as int)-1 ,
dateadd(d, cast(left([Date],2) as int) , cast(-1 as datetime))))
as datetime)--дата
,cast([SUM] as decimal(15,2))--сумма
,PaymentFunction--назначение платежа
,Payer1--плательщик
,PayerINN--плательщик ИНН
,PayerAccount--плательщик счет
,PayerKPP--плательщик КПП
,Plat.KAID--плательщик контрагент (ссылка)
,Plat.JurID--плательщик юр.лицо (ссылка)
,Plat.KLID--плательщик - контактное лицо (ссылка)
,PlatPR.PRID--плательщик-платежные реквизиты (ссылка)
,RecipientKPP--Получатель КПП
,KBK--показатель КБК
,OKATO--ОКАТО
,PokazOsn--Показатель основания
,PokazPeriod--показатель периода
,PokazNumber--показатель номера
,PokazDate--показатель даты
,PokazType--показатель типа
,PlatBank1--плательщик банк
,PlatPR.BID--плательщик-банк (ссылка)
,PlanCorr--Плательщик корсчет
,Pol1--получатель
,PolINN--получатель инн
,PolAcc--получатель счет
,Pol.KAID--получатель-контрагент (ссылка)
,Pol.JurID--получатель - юр.лицо (ссылка)
,Pol.KLID--получатель - Контактное лицо (ссылка)
,PolPR.PRID--получатель - платежные реквизиты (ссылка)
,VidOplaty--вид оплаты
,cast(
dateadd(yyyy, cast(right(SrokPlatezha,4) as int)-1900,
dateadd(mm, cast(left(right(SrokPlatezha, LEN(SrokPlatezha)-3),2) as int)-1 ,
dateadd(d, cast(left(SrokPlatezha,2) as int) , cast(-1 as datetime))))
as datetime)--срок платежа
,VidPlatezha--вид платежа
,cast(
dateadd(yyyy, cast(right(DataPostupilo,4) as int)-1900,
dateadd(mm, cast(left(right(DataPostupilo, LEN(DataPostupilo)-3),2) as int)-1 ,
dateadd(d, cast(left(DataPostupilo,2) as int) , cast(-1 as datetime))))
as datetime)--дата поступило
,PolBank1--получатель банк
,PolBIK--получатель бик
,PolCorr--получатель корсчет
,PolPR.BID--получатель банк (ссылка)
--касса-счет
,case
when a5plat.ObjectClassID = 29 then (Select a186.ObjectID from dbo.attr186 a186 where a186.p1160 = PlatPR.PRID)
when a5pol.ObjectClassID = 29 then (Select a186.ObjectID from dbo.attr186 a186 where a186.p1160 = PolPR.PRID)
end
,case when a5plat.ObjectClassID = 29 and a5pol.ObjectClassID = 29 then 'Перенос'
when a5plat.ObjectClassID = 29 then 'Расход'
else 'Приход'
end

,@ObjectID

, case
when a5plat.ObjectClassID = 29 and a5pol.ObjectClassID = 29 then (Select a186.ObjectID from dbo.attr186 a186 where a186.p1160 = PolPR.PRID)
end


from ImportTable it
left outer join (@Table Plat
left outer join dbo.Attr5 a5plat on a5plat.ObjectID = Plat.KAID)

on Plat.INN = it.PayerINN

and isnull(Plat.KPP,'') = case

a5plat.ObjectClassID

when 29 then isnull(nullif(it.PayerKPP,0),'')

else isnull(nullif(Plat.KPP,0),'')

end
left outer join (@Table Pol
left outer join dbo.Attr5 a5pol on a5pol.ObjectID = Pol.KAID)

on Pol.INN = it.PolINN

and isnull(Pol.KPP,'') = case

a5pol.ObjectClassID

when 29 then isnull(nullif(it.RecipientKPP,0),'')

else isnull(nullif(Pol.KPP,0),'')

end
left outer join @TablePR PlatPR on PlatPR.rs = it.PayerAccount and Plat.KAID = PlatPR.KAID
left outer join @TablePR PolPR on PolPR.rs = it.PolAcc and Pol.KAID = PolPR.KAID


delete from ImportTable
FETCH NEXT FROM cursfile into @ObjectID, @FP
END


CLOSE cursfile
DEALLOCATE cursfile


drop table #TABLE_AXI_Attr147_ImportBK
END
помогло, спасибо!

Не стал делать такую же тему. так как столкнулся с подобной проблемой:
Система сообщала, что возникла проблема с конвертацией строки в "дата/время" в строке № 117  триггера.
Проблему решил, убрав предварительные текстовые поля из файла выписки.
Больше волнует вопрос об ограничениях на количество документов (платежек) получаемых из файла - при попытке получить их из файла выписки за 2 года, файл добавился, а вот платежки нет.
Сократил количество платежек в выписке до 3 - все они отобразились корректно.
Есть ли все-таки ограничения на количество?
Заранее спасибо!
искуственных ограничений на количество нет
При попытке добавить файл выписки - вот такая проблема появилась
Текст триггера прилагаю
Заранее благодарю за помощь
Для диагностики требуется еще файл выписки
Еще один уточняющий вопрос. Раньше импорт работал?
в данной базе не тестировали до недавнего времени.
Сперва выдал ошибку доступа, решили, потом ошибку MC - решил прогоном скрипта выше, после этого получили ошибку преобразования в дату из строки
проблему решил комментированием "показателя даты", но платежи дублируются и даже затраиваются при выгрузке из файла

Также хочу обратить внимание на то, что в выписках версии 1.02 "Плательщик1" стал "Плательщиком". Проблема дублирования записей при выгрузке пока остается.