Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Не могу вернуть статус выполнения
|
|||
|---|---|---|---|
|
#18+
Добрый день! Не получается вернуть статус выполнения вызываемого метода. Приложил пример. Может чего подскажете? s res=..Createop(accNum,term,accDeb,sum,awId,PURPOSETEXT,SIMKAS,.result,.sc) Исполняемый метод: ClassMethod Createop(ACCNUM As %String(MAXLEN=20) = "", TERMINAL As %String, ACCDEB As %String(MAXLEN=20) = "", SUMMA As %Numeric, ID As %String(MAXLEN=20) = "", PURPOSETEXT As %String, SIMKAS As %String(MAXLEN=2), ByRef Result As %String = "", ByRef Error As %Status = {$$$OK}) As %String { //DebugInserter: do not remove this and next one line d:$g(%debug) ..DebugInserter("Createop inputs:"_"ACCNUM=["_$g(ACCNUM)_"] $d=["_$d(ACCNUM)_"] Type=[%String(MAXLEN]; "_"TERMINAL=["_$g(TERMINAL)_"] $d=["_$d(TERMINAL)_"] Type=[%String]; "_"ACCDEB=["_$g(ACCDEB)_"] $d=["_$d(ACCDEB)_"] Type=[%String(MAXLEN]; "_"SUMMA=["_$g(SUMMA)_"] $d=["_$d(SUMMA)_"] Type=[%Numeric]; "_"ID=["_$g(ID)_"] $d=["_$d(AnyWayID)_"] Type=[%String(MAXLEN]; "_"PURPOSETEXT=["_$g(PURPOSETEXT)_"] $d=["_$d(PURPOSETEXT)_"] Type=[%String]; "_"SIMKAS=["_$g(SIMKAS)_"] $d=["_$d(SIMKAS)_"] Type=[%String(MAXLEN]; "_"&Result=["_$g(Result)_"] $d=["_$d(Result)_"] Type=[%String]; "_"&Error=["_$g(Error)_"] $d=["_$d(Error)_"] Type=[%Status]; ") s Path="папка для выгрузки" s EOL=$c(13,10) s date=$zd($h,8) //Формат даты имени файла s Result="" s Error="" //определяем имя файла s FileName="acc_"_date_"_"_ID_".txt" s FullFileName=Path_FileName s file="",streamtxt="" s file=##class(%Library.File).%New(FullFileName) i $zObjState(file)'=1 { s Result="0" s Error=$$$ERROR(5001,"Файл не создан") q Result } else { s res=file.Open("WSN:/IOTABLE=""CP1251""") i 'res { s Result="" s Error=$$$ERROR(5001,"Файл не открылся") q Result } else { d OneFile(date) } d file.Close() } q $$$OK OneFile(date) s ID=ID s sum=SUMMA s acc=ACCDEB i ACCDEB="" s acc=ACCNUM d wr("%ДОКУМЕНТ"_EOL) d wr("ОБЛАСТЬ:Баланс"_EOL) d wr("ДАТА:"_date1_EOL) d wr("ПАЧКА:123"_EOL) d wr("ОПЕРАЦИЯ:17"_EOL) d wr("ДЕБЕТ: "_ACCNUM_EOL) d wr("КРЕДИТ: "_acc_EOL) d wr("СУММА:"_sum_EOL) d wr("МФОПОЛУЧ:********"_EOL) d wr("ПРИМ1:"_PURPOSETEXT_" от "_date_"г _EOL) d wr("СИМКАСС :"_SIMKAS_EOL) d wr("СУММАКАСС :"_sum_EOL) d wr("%END"_EOL) q wr(txt) if $zObjState(file) d file.Write(txt) if $zObjState(streamtxt) d streamtxt.WriteLine(txt) q } Не могупонять, как правильно вернуть Result, а в ответе текст ошибки: ОШИБКА #00: (нет описания ошибки). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2012, 08:50 |
|
||
|
Не могу вернуть статус выполнения
|
|||
|---|---|---|---|
|
#18+
AlexolissПриложил пример. Начинай учиться делать тестовые примеры... Это может облегчить тебе дальнейшую работу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2012, 09:02 |
|
||
|
Не могу вернуть статус выполнения
|
|||
|---|---|---|---|
|
#18+
Возьмем например этот кусок... Код: vbnet 1. 2. 3. 4. Он запросто переделывается в такой Код: vbnet 1. 2. 3. 4. Т.е. сама переменная не нужна вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2012, 09:04 |
|
||
|
Не могу вернуть статус выполнения
|
|||
|---|---|---|---|
|
#18+
krvsaВозьмем например этот кусок... Код: vbnet 1. 2. 3. 4. Он запросто переделывается в такой Код: vbnet 1. 2. 3. 4. Т.е. сама переменная не нужна вообще. Мне несовсем ясно. Вот в данном примере этот "0" как вернётся для res=..Createop(accNum,term,accDeb,sum,awId,PURPOSETEXT,SIMKAS,.result,.sc). Сам res будет иметь такой результат выполнения или .result? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2012, 09:17 |
|
||
|
Не могу вернуть статус выполнения
|
|||
|---|---|---|---|
|
#18+
krvsa, тут параллельно этому я пытаюсь понять, почему при проверке текста ошибки .sc в нём нет текста, что задаю я. Пишет ОШИБКА #00: (нет описания ошибки) А должно быть хотя бы: файл не создан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2012, 09:22 |
|
||
|
Не могу вернуть статус выполнения
|
|||
|---|---|---|---|
|
#18+
Alexoliss, Вы результат и возвращаете и как результат метода, и в переданную переменную, зачем такие сложности, избавьтесь от переменной Result да и ошибку, лучше вернуть так же как результат выполнения метода а вы уверены что вы тот результат обрабатываете как ошибку ? Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2012, 10:12 |
|
||
|
Не могу вернуть статус выполнения
|
|||
|---|---|---|---|
|
#18+
DAiMorAlexoliss, Вы результат и возвращаете и как результат метода, и в переданную переменную, зачем такие сложности, избавьтесь от переменной Result да и ошибку, лучше вернуть так же как результат выполнения метода а вы уверены что вы тот результат обрабатываете как ошибку ? Код: sql 1. 2. 3. 4. 5. 6. попробую несколько вариантов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2012, 10:27 |
|
||
|
Не могу вернуть статус выполнения
|
|||
|---|---|---|---|
|
#18+
DAiMor, Ошибку я пытаюсь вернуть, если вдруг файл не создаётся по каким-либо причинам. Возник вопрос. Правильно ли я пытаюсь определить ошибку: $zObjState(file) или лучше $ISERR(file)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2012, 12:17 |
|
||
|
Не могу вернуть статус выполнения
|
|||
|---|---|---|---|
|
#18+
Alexoliss , попробую проиллюстрировать пример возврата значения из метода/функции и передачу переменной по ссылке. Возврат значения Код: vbnet 1. 2. 3. 4. 5. Передача по ссылке Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2012, 14:04 |
|
||
|
Не могу вернуть статус выполнения
|
|||
|---|---|---|---|
|
#18+
AlexolissDAiMor, Ошибку я пытаюсь вернуть, если вдруг файл не создаётся по каким-либо причинам. Возник вопрос. Правильно ли я пытаюсь определить ошибку: $zObjState(file) или лучше $ISERR(file)? вы как результат метода возвращаете либо пусто либо 0 либо $$$OK а можно вернуть саму ошибку которую записываете в Result ($$$ERROR) или $$$OK думаю лучше проверять через $$$ISERR ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2012, 14:05 |
|
||
|
Не могу вернуть статус выполнения
|
|||
|---|---|---|---|
|
#18+
AlexolissВот в данном примере этот "0" как вернётся для Код: vbnet 1. Сам res будет иметь такой результат выполнения или .result? Переменная res будет равняться 0... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2012, 14:06 |
|
||
|
Не могу вернуть статус выполнения
|
|||
|---|---|---|---|
|
#18+
Alexolissтут параллельно этому я пытаюсь понять ... Таки вернусь к созданию правильных тестовых примеров. Для подробнейшего освещения и решения проблемы нужен простенький тестовый пример который каждый желающий сможет себе скопировать и посмотреть в работе. Тот пример можно подправить и показать варианты преодаления/решения той ирудности... Пока от тебя видим только огрызок чего-то... Причем без всякого оформления. Смотреть его не возможно. Как овормлять код можно посмотреть в любом моём сообщении тут или люого другого в других здешних темах... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2012, 14:10 |
|
||
|
Не могу вернуть статус выполнения
|
|||
|---|---|---|---|
|
#18+
krvsa, Простите, я на этом сайте еще не разобрался, как правильно оформлять текст/запросы/код. В дальнейшем постараюсь делать правильно. Думаю, что нужно в корне разобраться, как возвращать статус выполнения и разные его интерпритации. Простые примеры очень помогают. Мне удалось вернуть текст ошибки, но он стал возвращаться даже в случае удачного выполнения...сейчас прорабатываю сей момент. Читаю доку. Получится - напишу, что сделал и как выполняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2012, 14:46 |
|
||
|
Не могу вернуть статус выполнения
|
|||
|---|---|---|---|
|
#18+
Alexoliss , 1) метод %New возвращает OREF объекта, поэтому использовать макрос $$$ISERR , ожидающий тип %Status - неверно. 2) вместо недокументированной $zObjState лучше использовать документированную $IsObject 3) следующий код ещё ничего не создаёт (см. метод Open ): set file=##class(%File).%New("test.txt") 4) %String <> %Status PS: ещё Вам может пригодиться класс $system.Status ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2012, 09:45 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=37832709&tid=1557452]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 341ms |

| 0 / 0 |
