• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

буфер обмена из текстового файла

  • Автор темы OlgaCherry
  • Дата начала
Статус
Закрыто для дальнейших ответов.
O

OlgaCherry

Добрый день !
Никак не могу разобраться с импортом платежек в Клиент-банк. Необходимо импортировать платежки из тектового файла в формате 1С. Т.е. каждая строка имеет вид Имя=Значение. В нем идет непосредственное чтение файла в цикле функцией FILE_READ. Затем в зависимости от значения Имени берется соответствующее значение и импортируется в нужное поле. Но получается, что текст, расположенный на кнопке "Программа" выполняется столько раз, сколько строк в текстовом файле. Т.е. получается что одна и та же платежка импортируется много раз.
Прилагаю текст программы :
Код:
NumPP = CVD(TRIM(SCBN_STR1))
File = "C:\KL_TO_1C.TXT"
Handl = FILE_OPEN(File,0)

IF REG_INT1 = 0 THEN	 'Первая платежка в пакете
REG_INT1 = REG_INT1 + 1
Call LoadDoc()
MESSAGE(REG_INT1)
End IF

SUB LoadDoc()
NUM1 = ""
DATA1 = 0
SUMMA1 = 0
DATASPIS=0
NAZNPLAT = ""
'
PLATSCHET = ""
PLATINN = ""
PLATKPP = ""
PLATBIK = ""
PLATRSCHET =""
'
POLSCHET = ""
POLINN = ""
POLKPP = ""
POLBIK = ""
POLRSCHET= ""
NMPLAT= ""

Buf = ""
Str = ""
WHILE (FILE_READ(Handl,Buf) > 0 )
NAME = UCASE(GETSUBST(Buf,1,"="))
Val = GETSUBST(Buf,2,"=")				 'Значение

IF Name = "НОМЕР" THEN NUM1 = Val & Message("94")

IF Name = "ДАТА" THEN DATA1 = TXTTODAT(SDTOS(Val))
IF Name = "ДАТАСПИСАНО" THEN DATASPIS = TXTTODAT(SDTOS(Val))

IF Name = "СУММА" THEN SUMMA1 = CVD(Val)
IF Name = "ПЛАТЕЛЬЩИКСЧЕТ" THEN PLATSCHET = Val
IF Name = "ПЛАТЕЛЬЩИКИНН" THEN PLATINN = Val
IF Name = "ПЛАТЕЛЬЩИККПП" THEN PLATKPP = Val
IF Name = "ПЛАТЕЛЬЩИК" THEN NMPLAT = Val

IF Name = "ПЛАТЕЛЬЩИКБИК" THEN PLATBIK = Val
IF Name = "ПЛАТЕЛЬЩИКРАСЧСЧЕТ" THEN PLATRSCHET = Val
IF Name = "ПОЛУЧАТЕЛЬСЧЕТ" THEN POLSCHET = Val
IF Name = "ПОЛУЧАТЕЛЬИНН" THEN POLINN = Val
IF Name = "ПОЛУЧАТЕЛЬКПП" THEN POLKPP = Val
IF Name = "ПОЛУЧАТЕЛЬБИК" THEN POLBIK = Val
IF Name = "ПОЛУЧАТЕЛЬРАСЧСЧЕТ" THEN POLRSCHET = Val
IF Name = "НАЗНАЧЕНИЕПЛАТЕЖА" THEN NAZNPLAT = Val
IF Name = "КОНЕЦДОКУМЕНТА" THEN
Continue = 0  & Message("114")

END IF

IF SUMMA1 < 0 THEN
'Мы платим
SELECT CASE DOCTYPE
CASE "ПЛАТЕЖНОЕ ПОРУЧЕНИЕ"
SCBN_TPDOCB = CCBN_PP
CASE "МЕМОРИАЛЬНЫЙ (КАССОВЫЙ) ОРДЕР"
SCBN_TPDOCB = CCBN_ORD
CASE "ОБНАЛИЧЕН ДЕНЕЖНЫЙ ЧЕК"
SCBN_TPDOCB = CCBN_CHQ
END SELECT
'
SCBN_PTNMFO = POLBIK
SCBN_PTNINN = POLINN
CBNU_KPPPLAT = POLKPP
SCBN_PTNACC = POLRSCHET
CBNU_RASPLAT = PLATSCHET
CBNU_OPRDAT = DATASPIS
CBNU_DOCDAT = DATA1
CBNU_SM= -SUMMA1
CBNU_NMPLAT = NMPLAT
ELSE
'Нам платят
SCBN_TPDOCB = CCBN_IPP
SCBN_PTNMFO = PLATBIK
SCBN_PTNINN = PLATINN
CBNU_KPPPLAT = PLATKPP

CBNU_NMPLAT = NMPLAT

SCBN_PTNACC = PLATSCHET
CBNU_RSSHPOL = POLSCHET
CBNU_OPRDAT = DATA1
CBNU_DOCDAT = DATA1
CBNU_NMPTN = Name1
CBNU_SM=SUMMA1
END IF
CBNU_DOCNMR=NUM1
CBNU_PAYDES=NAZNPLAT

WEND
END SUB

'**************************************************************************
FUNCTION SDTOS (Dat)
'Функция получает строку даты и приводит ее к виду ДД/ММ/ГГ
SDTOS = TRIM(PUTSTR_TO_STR(Dat,".","/",2,1))
DTOS = TRIM(PUTSTR_TO_STR(Dat,".","/",2,1))
END FUNCTION

Программа сначала выдаст 94 потом 114. А потом 1(то что я задаю вначале REG_INT1)
 
U

UrianDy

Это твоя программа или входящая в состав пакета? Проблема-то в чем? Не работает?
 
O

OlgaCherry

Привет! Это моя прога . Я справилась с ней.
Прога рабочая для Челябинвестбанка и Райффайзенбанка.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!