Обновление справочников БИК автоматом
На страницу Пред. 1, 2, 3 След.
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Пн Май 14, 2012 14:45 |
|
Полезность: Нет оценки
|
Alexsey пишет: | Либо как вариант к узаканному времени затянуть файл на сервер с помощью приемо-передатчика и там уже обработать как угодно. |
Это предполагал во втором этапе типа к оракловому серваку примапить шару, но хотел сначала с локалки попробовать затянуть (как это делает дистрибутивная операция).
Придётся сразу пробовать с сервака тянуть  |
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Пн Май 14, 2012 15:47 |
|
Полезность: Нет оценки
|
yaffil пишет: | Alexsey пишет: | Либо как вариант к узаканному времени затянуть файл на сервер с помощью приемо-передатчика и там уже обработать как угодно. |
Это предполагал во втором этапе типа к оракловому серваку примапить шару, но хотел сначала с локалки попробовать затянуть (как это делает дистрибутивная операция).
Придётся сразу пробовать с сервака тянуть  |
а зачем шару? Настройте у приемо-передатчика каталог источник, а приемо-передатчик уже через FIO затянет файл в приемник куда настроите. Не надо ни каких шар на сервере БД, ИМХО это лишнее.
Ну а пока пишите, файл можно подкладывать через плагины тотала или фара _________________ всегда есть как минимум 2 выхода |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Вт Май 15, 2012 08:06 |
|
Полезность: Нет оценки
|
Переписал операцию, перенёс параметры в переменные, сделал без оболочную, отключил "запускать монитор коммуникац.канала" - ручками запускается - всё ОК.
Но когда ставлю в очередь (выполнение заданий по расписанию) при её отрабатывании вылетает ошибка:
15/05/2012 09:01:07.ORA-20100: EXEC-FILEOPERATION: [] Операция не может быть выполнена для этого файла
Я так подозреваю, что это из за выплёвывания сообщения на экран (типа операции Stdio.put_line_buf).
Я правильно думаю и как можно отключить это сообщение? |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Вт Май 15, 2012 08:37 |
|
Полезность: Нет оценки
|
Нет, не из за этого, закоментил put_line_buf в UNIMP.WriteMess сообщение не появляется (когда руками толкаешь операцию), а через расписание всё таже ошибка. Где покопать ещё? |
|
 |
maestro Профи
Вступление в Клуб: 12.10.2010
|
Вт Май 15, 2012 08:37 |
|
Полезность: Нет оценки
|
yaffil пишет: | Переписал операцию, перенёс параметры в переменные, сделал без оболочную |
Каким образом инициализируются переменные? Не понятно зачем это.
yaffil пишет: |
отключил "запускать монитор коммуникац.канала" |
Это можно было не делать.. Монитор запускается навигатором. При запуске из джоба исполняется только тело операции.
yaffil пишет: |
Но когда ставлю в очередь (выполнение заданий по расписанию) при её отрабатывании вылетает ошибка:
15/05/2012 09:01:07.ORA-20100: EXEC-FILEOPERATION: [] Операция не может быть выполнена для этого файла |
Файл как загружаешь на сервер? Приемо-передатчиом по методу Alexey? Или ручками через плагин?
Вобщем, проверь, что файлы лежат на сервере в правильном месте. |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Вт Май 15, 2012 08:53 |
|
Полезность: Нет оценки
|
maestro пишет: |
Каким образом инициализируются переменные? Не понятно зачем это.
|
Т.к. функцию с параметрами нельзя засунуть в JOB.
Инициализируются в "Проверка", значит, наверное, в этом косяк, раз выполняется только "Тело". Сейчас перерисую.
maestro пишет: |
Файл как загружаешь на сервер? Приемо-передатчиом по методу Alexey? Или ручками через плагин?
Вобщем, проверь, что файлы лежат на сервере в правильном месте. |
Примэпили диск к ораклу, все файлы видит как надо (ручками операция отрабатывает на ура). |
|
 |
maestro Профи
Вступление в Клуб: 12.10.2010
|
Вт Май 15, 2012 08:57 |
|
Полезность: Нет оценки
|
yaffil пишет: |
Инициализируются в "Проверка", значит, наверное, в этом косяк, раз выполняется только "Тело". Сейчас перерисую.
|
Мне кажется, лучше написать оберточную операцию без параметров и переменных, в теле которой до вызова дистрибутивной операции добавить инициализацию её параметров.. И её потом поставить в джоб. |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Вт Май 15, 2012 09:14 |
|
Полезность: Нет оценки
|
maestro пишет: | yaffil пишет: |
Инициализируются в "Проверка", значит, наверное, в этом косяк, раз выполняется только "Тело". Сейчас перерисую.
|
Мне кажется, лучше написать оберточную операцию без параметров и переменных, в теле которой до вызова дистрибутивной операции добавить инициализацию её параметров.. И её потом поставить в джоб. |
Спасибо, перенёс всё в тело - заработало. Про обёртку, что то, я как то, не представляю как её инициализировать:
Код: |
::[CL_BANK_N].[FULL_REFRESHING](
/*F_PZN*/ --Файл признаков
,/*F_REAL*/ --Файл ограничений участия в расчетах
,/*F_SEEK*/ --Файл действующих банков
,/*F_DEL*/ --Файл ликвидированных банков
,/*F_RAYON*/ --Файл районов
,/*F_MESS*/ --Файла протокола
,/*P_OURBANK*/ --Обновить свой банк
,/*P_OURBRANCH*/ --Обновить филиалы своего банка
,/*P_KEYBASEB*/ --Файл KEYBASEB
,/*P_KEYBASEF*/ --Файл KEYBASEF
,/*P_CORR_REL*/ --Обновить коротношения
)
|
Файлы - это всё целые типы ::[FILE$LOAD] с кучей реквизитов. |
|
 |
maestro Профи
Вступление в Клуб: 12.10.2010
|
Вт Май 15, 2012 09:57 |
|
Полезность: Нет оценки
|
yaffil пишет: |
Файлы - это всё целые типы ::[FILE$LOAD] с кучей реквизитов. |
В общем случае Экспорт-импорт копирует файл на сервер под управлением Клиента (навигатора). Далее передает управление серверной части, где запускается ТЕЛО, которое читает переданный файл. Из структуры при этом берутся только Путь и Имя файла. По сути, для простого чтения больше ничего и не нужно.
В твоем случае копировать ничего не надо, надо только указать ТЕЛУ где лежит файл, т.е. заполнить поля [DST_PATH] и [DST_NAME] структуры "с кучей реквизитов"...
Т.е. в теле оберточной операции объявляешь локальные переменные типа [FILE$LOAD], заполняешь в них поля [DST_PATH] и [DST_NAME], и передаешь в дистрибутивную операцию.
А еще лучше, пролистать код дистрибутивной операции, посмотреть какие поля там используются, и соответственно эти значения проинициализировать.
Последний раз редактировалось: maestro (Вт Май 15, 2012 10:02), всего редактировалось 1 раз |
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Вт Май 15, 2012 10:00 |
|
Полезность: Нет оценки
|
yaffil пишет: |
Спасибо, перенёс всё в тело - заработало. Про обёртку, что то, я как то, не представляю как её инициализировать:
|
Пример:
Код: |
P_JOUR ref [END_OD_JOUR];
mess varchar2 := 'DEFAULT';
info varchar2 := null;
zd ::[END_OD_OPERATION] := null;
begin
-- вызываем секцию DEFAULT дистрибутивной операции закрытия
-- begin pl/sql
Z$END_OD_OPERATION_END_OD.END_OD_VALIDATE(zd,'END_OD_OPERATION', mess, info, P_JOUR);
-- end pl/sql
end; |
_________________ всегда есть как минимум 2 выхода |
|
 |
prog Эксперт
Вступление в Клуб: 03.03.2008
|
Вт Май 15, 2012 10:45 |
|
Полезность: Нет оценки
|
Alexsey пишет: | yaffil пишет: |
Спасибо, перенёс всё в тело - заработало. Про обёртку, что то, я как то, не представляю как её инициализировать:
|
Пример:
Код: |
P_JOUR ref [END_OD_JOUR];
mess varchar2 := 'DEFAULT';
info varchar2 := null;
zd ::[END_OD_OPERATION] := null;
begin
-- вызываем секцию DEFAULT дистрибутивной операции закрытия
-- begin pl/sql
Z$END_OD_OPERATION_END_OD.END_OD_VALIDATE(zd,'END_OD_OPERATION', mess, info, P_JOUR);
-- end pl/sql
end; |
|
pl\sql вставка лишняя
Цитата: | Существует возможность вызывать процедуру проверки параметров операции (кода, заданного в секции validate). Такой вызов осуществляется путем разыменования через синтаксис блокирующего обращения по ссылке (операторы '=>' и '%=>'). При этом следует иметь в виду, что все параметры операции являются IN OUT (независимо от того, как они описаны в свойствах для исполняемого кода – секции execute) и первые два параметра всегда строковые и именуются P_MESSAGE и P_INFO. Поэтому перед вызовом кода проверки нужно позаботиться о правильной инициализации значений этих параметров. Также validate всегда описан как процедура, даже если у операции задан тип возвращаемого значения. Возвращаемое значение и направленность параметров операции относятся только к секции execute операции.
. Пример:
Код: | v_mes string;
v_info string;
v_ref ref [PERSON];
begin
…
v_mes := 'DEFAULT';
v_info:= null;
v_ref=>[EDIT](v_mes,v_info,PARAM); -- validate
v_ref.[EDIT](PARAM); -- execute |
... |
|
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Вт Май 15, 2012 11:09 |
|
Полезность: Нет оценки
|
prog пишет: |
pl\sql вставка лишняя
Пример:
Код: | v_mes string;
v_info string;
v_ref ref [PERSON];
begin
…
v_mes := 'DEFAULT';
v_info:= null;
v_ref=>[EDIT](v_mes,v_info,PARAM); -- validate
v_ref.[EDIT](PARAM); -- execute |
|
Это верно, но столкнулся на 11-м оракле с ситуацией, когда такой код не компилился, ибо компилятор не понимал такой синтаксис. Может особенности ядра, может что-то еще. разбирался долго, но заработало только со вставкой
Я вставки не люблю, но иногда приходится извращаться.
Да, в примере приведен пример вызова секций групповой операции не возвращающей результата, а ее через псевдовалидацию сложно вызвать) _________________ всегда есть как минимум 2 выхода |
|
 |
Pauls Участник со стажем
Вступление в Клуб: 16.11.2011
|
Чт Авг 30, 2012 12:38 |
|
Полезность: Нет оценки
|
Коллеги, помогите, пожалуйста. Пытаюсь автоматизировать загрузку БИКов, хочу попробовать сперва, что бы загрузка происходила с локальной машины из каталога С:\DAT\.
Скопировал дистрибутивную операцию FULL_REFRESHING, процедуре инициализацию параметров перенес в тело и вместо параметров обьявил переменные
F_PZN [FILE$LOAD];
F_REAL [FILE$LOAD];
F_SEEK [FILE$LOAD];
F_DEL [FILE$LOAD];
F_RAYON [FILE$LOAD];
F_MESS [FILE$LOAD];
Значения F_PZN.[SRC_PATH],
F_PZN.[DST_PATH],
F_PZN.[SRC_NAME],
F_PZN.[DST_NAME] проверил, каталог показывает какой нужно и имя файла правильное, файл находиться в каталоге.
Но в момент выполнения появляется сообщение:
"Неудачная попытка открыть файл ./PZN.DBF !"
Подскажите, что я делаю не так или что вообще не сделано для корректного импорта БИКов? |
|
 |
prog Эксперт
Вступление в Клуб: 03.03.2008
|
Чт Авг 30, 2012 13:00 |
|
Полезность: Нет оценки
|
Автоматизировать значит загружать бики джобом? Если так то как вы планируете перемещать файлики на сервер... |
|
 |
Pauls Участник со стажем
Вступление в Клуб: 16.11.2011
|
Чт Авг 30, 2012 13:26 |
|
Полезность: Нет оценки
|
Да, сделать так, что процедура запускалась джобом. А что значит "перемещать файлики на сервер..." ? Физически брать набор файлов из одной директории, например, одной рабочей станции и перемещать их в каталог на сервер на котором крутиться БД или что то иное? Опыта работы с ЦФТ не так много, по этому и трудности.
Когда запускаю вручную дистрибутивную операцию FULL_REFRESHING, то подымается форма в которой все файлы *.DBF и их место нахождения корректное. Стоит только перенести код инициализации параметров из "Проверка" в "Тело" - сразу возникает описанная проблема. |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|