Имя: Пароль:
1C
1С v8
Подскажите по регламентному заданию.
0 mzelensky
 
28.07.11
13:18
Всем доброго.

Видать чего-то не догоняю. конфа Ут 10.3 на 8.1. Создаю Регламентное задание (галочки "использование" и "предопределенное" стоят в "истина"). Привязываю процедуру из модуля "МодульРегламентныхЗаданий", где пишу:

Запрос = Новый Запрос;
   запрос.Текст="ВЫБРАТЬ РАЗЛИЧНЫЕ
   |    кпкСведенияАгента.Агент КАК Агент,
   |    ИСТИНА КАК Пометка,
   |    кпкСведенияАгента.Пользователь КАК АгентПользователь,
   |    кпкСведенияАгента.АПСПапка КАК папка,
   |    кпкСведенияАгента.КПК.Идентификатор КАК Идентификатор,
   |    кпкСведенияАгента.Ассортимент,
   |    ЕСТЬNULL(кпкСведенияАгента.НетБук, ЛОЖЬ) КАК НетБук
   |ИЗ
   |    РегистрСведений.кпкСведенияАгента КАК кпкСведенияАгента
   |ГДЕ
   |    кпкСведенияАгента.НетБук = ИСТИНА
   |
   |УПОРЯДОЧИТЬ ПО
   |    Агент";
   РезультатЗапроса = Запрос.Выполнить().Выбрать();
       
   Пока РезультатЗапроса.Следующий() цикл        
       МассивФайлов = НайтиФайлы(константы.кпкАПСПапкаОбмена.Получить()+"\"+РезультатЗапроса.Папка+"\", "*_Zapros1C_*.xml");                        
       Если МассивФайлов.количество() <> 0 тогда
           ОБ=Обработки.кпкОбменДанными.Создать();
           ОБ.ВыгрузкаДанныхВНетБук(РезультатЗапроса.Агент,РезультатЗапроса.АгентПользователь, РезультатЗапроса.папка, РезультатЗапроса.Идентификатор, РезультатЗапроса.Ассортимент,истина, истина) ;
           ОБ=неопределено;                
       КонецЕсли;
       
       Для каждого Фалик из МассивФайлов цикл
           Если Фалик.этофайл() тогда
               УдалитьФайлы(Фалик.ПолноеИмя);    
           КонецЕсли;
       КонецЦикла;
   КонецЦикла;    

Запуская 1С-ну, открываю консоль заданий и вижу - задание мол выполнено (ошибок нет), но действий никаких при этом не произошло (как минимум должен был удалиться файл). Копирую код один к одному в обработку и сажу на кнопку...запускаю - все отрабатывает как нужно.

В чем может быть проблема?
1 mzelensky
 
28.07.11
13:18
(0) раньше делала подобным образом другие регламенты - все работало и работает как нужно ,а тут чет не пойму :(
2 ДенисЧ
 
28.07.11
13:19
папка в сети?
Пользователь системы, от которого работает сервер 1с, имеет право на доступ в сеть?
3 mzelensky
 
28.07.11
13:21
(2) папка находистя на сервере, 1С-ка запущено на том же сервере...т.е. доступ вроде как ЛОКАЛЬНЫЙ.
4 mzelensky
 
28.07.11
13:21
(2) а хотя не - вру....доступ сетевой!!! ща буду проверять!!!
5 ДенисЧ
 
28.07.11
13:22
:-)
6 mzelensky
 
28.07.11
13:22
(2) но та папка ТОЧНО расшарена на общий доступ!
7 mzelensky
 
28.07.11
14:01
Так, с доступом к папке я разобрался. Теперь встала другая ошибка. Рег. задание затыкается на :

"ОБ=Обработки.кпкОбменДанными.Создать();"

Естетственно проверить отладчиком не удается. Почему в Рег задании я не могу создать объект обработки ,чтобы потом использовать процедуры ее модуля???
8 mzelensky
 
28.07.11
14:06
ап
9 Ellowis
 
28.07.11
14:14
(7) а какую ошибку выдает? (в журнале регистрации должна быть)
10 Михаил Козлов
 
28.07.11
14:15
(7) Возможно в модуле обработки есть что-то, что подразумевает клиента и на сервере выполниться не может.
11 mzelensky
 
28.07.11
14:17
(9)
{Обработка.кпкОбменДанными(730,5)}: Процедура или функция с указанным именем не определена (КомандаСистемы)
12 mzelensky
 
28.07.11
14:18
(10) не, ругается именно на

ОБ=Обработки.кпкОбменДанными.Создать()

т.е. я даже ничего больше не делаю...просто создаю объект и все...и тут выходит ошибка!
13 Ellowis
 
28.07.11
14:19
в модуле обработки встречается "КомандаСистемы"...

КомандаСистемы (System)
Синтаксис:

КомандаСистемы(<СтрокаКоманды>, <ТекущийКаталог>)
...
Доступность:
[b]Тонкий клиент, толстый клиент.[/b]
14 mzelensky
 
28.07.11
14:21
(13) т.е. на сервере не вариант ее запускать :(
15 Ellowis
 
28.07.11
14:22
(14) нет
А что ты пытаешься там запустить?
16 mzelensky
 
28.07.11
14:27
(15) я через "КомандаСистемы" файлик сформированный архивирую. Т.е. запуская ВинРар через командную строку.

Именно винрар потмоу как у него сжатие лучше, чем у ВинЗипа.
17 Ellowis
 
28.07.11
14:31
используй
WShell = Новый COMОбъект("WScript.Shell");
WShell.CurrentDirectory = ТутКаталог;
retCode = WShell.Run(ТутСтрокаЗапуска, 0, Истина);

в retCode будет результат операции
18 mzelensky
 
28.07.11
14:55
(17) сп. Попробую!
19 mzelensky
 
28.07.11
15:25
(17) что-то у меня кося к выходит при использованиии этой фенечки.

Пишет :

{Обработка.кпкОбменДанными(734)}: Ошибка при вызове метода контекста (Run): Произошла исключительная ситуация (WshShell.Run): Не удается дождаться процесса.
               WShell.Run( " ""C:\Program Files\WinRAR\Winrar.exe"" M -ep1 -m5 -IBCK "+ФайлВыгрузки.Путь+ФайлВыгрузки.ИмяБезРасширения+".rar "+ФайлВыгрузки.ПолноеИмя , 0, 1);
по причине:
Произошла исключительная ситуация (WshShell.Run): Не удается дождаться процесса.
20 Ellowis
 
28.07.11
15:53
Если позволяет процесс - поставь вместо Истина - Ложь.
Тогда процесс не будет дожидаться окончания архивирования

ЗЫ. Может у тебя там архивирование долго идет или еще что.
А вообще
http://msdn.microsoft.com/en-us/library/d5fk67ky(v=VS.85).aspx
21 mzelensky
 
28.07.11
16:02
(20) не, ждать окончания нужно обязательно.

Не так уж и долго...ну секунд 5 в среднем
22 Ellowis
 
28.07.11
16:08
(21) тогда поставь вместо 0 - 1 и посмотри почему процесс идет долго.
Правда, я не знаю, сработает ли это... потому как, куда открывать окно неизвестно.
23 Ellowis
 
29.07.11
09:09
Есть результат?