Имя: Пароль:
1C
1С v8
Передача параметров во внешнюю обработку
,
0 Aleksey1989
 
17.05.12
09:48
Помогите, пжл, разобраться, можно ли и как передать параметры во внешнюю обработку. Поясню, как будет использоваться внешняя обработка: она будет брать из указанного места файл со списком пользователей и автоматом загружать этих пользователей в базу. Для этого я буду пользоваться вызовом следующей команды из командной строки:

"C:\Users\Алексей\Documents\1C\Accounting" /Execute "C:\Vo.epf"/RunModeManagedApplication

Но имя файла, из которого будет браться информация, заранее неизвестно. Как можно указать имя файла в данной ситуации?
1 Wobland
 
17.05.12
09:48
реквизит сделать надо у обработки
2 aka AMIGO
 
17.05.12
09:50
Отчет = Отчеты.ОтчетОстаткиИОбороты.Создать();
ФормаОтчета = Отчет.ПолучитьФорму();
// Заполнение параметров отчета
ФормаОтчета.ЭтотОбъект.ДатаНач = Дата;
ФормаОтчета.ЭтотОбъект.ДатаКон = Дата;
ФормаОтчета.ЭтотОбъект.ИмяРегистра = "НДСПартииТоваров";
ФормаОтчета.ЗаполнитьНачальныеНастройки();
ФормаОтчета.Открыть();
3 Wobland
 
17.05.12
09:51
>брать из указанного места файл со списком пользователей и автоматом загружать этих пользователей в базу
во-первых, зачем?
во-вторых, не проще ль заданием сделать?
4 Wobland
 
17.05.12
09:51
(2) Отчёт.ДатаНач = Дата;
и т.д.
5 aka AMIGO
 
17.05.12
09:52
(4)а, ну - да!
6 Aleksey1989
 
17.05.12
09:56
(2) Не очень понятно, как этот код применим в моем случае?
(3) Просто интересно, как это можно реализовать на практике. Поясните, пожалуйста, как можно сделать то же самое через задание?
7 aka AMIGO
 
17.05.12
09:57
(6)надо применить не код, а принцип
8 Wobland
 
17.05.12
09:58
(6) file:///C:/Program%20Files/1cv81/AddDoc/RU/V8AddDoc81.htm#_Toc176167795
9 Wobland
 
17.05.12
09:58
(8) глава 16, в общем
10 Aleksey1989
 
17.05.12
09:58
(7) Принцип я понимаю, мне не понятно, как получить имя файла загрузки, т.е. я знаю, что файл находится в определенной папке, но как быть дальше, пока не знаю.
11 Wobland
 
17.05.12
09:59
(10) "будет брать из указанного места файл со списком пользователей"
это ты у нас спрашиваешь, что за файл?
12 Aleksey1989
 
17.05.12
10:59
(11) xml-файл (я переделывал стандартную загрузку/выгрузку пользователей, поэтому структура файла такая же, хотя для моей задачи это не важно. В общем идея такая: определенная программа (не 1С) будет делать этот файл и сохранять его в заранее известную папку, причем имя будет переменным, т.е. для одной базы оно bp1.xml, для другой - bp2.xml. Мне надо как-то передать это имя во внешнюю обработку, причем должно это происходить автоматом, т.е. файл будет выбираться не руками (запуск внешней обработки будет через командную строку).
13 Wobland
 
17.05.12
11:01
(12) передавай
14 Aleksey1989
 
17.05.12
11:02
(13) как его передать?
15 Wobland
 
17.05.12
11:03
(14) читать (1), (3), (4) до просветления
16 Wobland
 
17.05.12
11:03
(1)(2)(4)
17 Aleksey1989
 
17.05.12
11:28
(15) даже если выучить, мне не понятно, как в реквизите получить имя файла?
18 Wobland
 
17.05.12
11:29
(17) ТвояОбработка.ИмяФайла=ТвоёИмяФайла;
19 Aleksey1989
 
17.05.12
11:31
(18) И где мне прописать эту строку?
20 Wobland
 
17.05.12
11:32
(19) там, откуда ты её запускаешь..
21 Wobland
 
17.05.12
11:33
/C <Строка текста> — передача параметра в конфигурацию.

но я за задания
22 AAlexandra
 
17.05.12
11:41
(10)
Глобальный контекст (Global context)
НайтиФайлы (FindFiles)
Синтаксис:
НайтиФайлы(<Путь>, <Маска>, <ИскатьВПодкаталогах>)

Возвращаемое значение:
Тип: Массив.
Массив из значений типа Файл, содержащий найденные файлы.

Описание:
Осуществляет поиск файлов и каталогов по заданной маске, расположенных в заданном каталоге.

Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
23 Aleksey1989
 
17.05.12
12:44
(18) (21) Что-то не работает. Я правильно записал следующую строку:
"C:\Program Files\1cv82\common\1cestart.exe" /F "C:\Users\Алексей\Documents\1C\Accounting3" /Execute "C:\v1.epf" /C "v1.ФайлР=""фывавыфа"";"
24 Wobland
 
17.05.12
12:45
(23) /C "фывавыфа";"
25 Wobland
 
17.05.12
12:47
(24) получать в обработке через ПараметрЗапуска
26 Aleksey1989
 
17.05.12
12:47
(24) на название можно не смотреть - я просто хотел убедиться, что параметр поступает в обработку. Пробовал использовать и без кавычек - результата нет.
27 Wobland
 
17.05.12
12:48
подождём, пока (25) освоит ;)
28 Aleksey1989
 
17.05.12
12:50
(25) ПараметрЗапуска - имеется ввиду поле, которое отображается при создании базы 1С("Дополнительные параметры запуска")?
29 Wobland
 
17.05.12
12:52
(28) продам СП, уже недорого, лишь бы купил ;)

Описание:
Тип: Строка. Используется для доступа к параметру запуска, передаваемому через ключ командной строки /C.
30 acsent
 
17.05.12
12:53
лучше через скрипт по оле запускать
31 Aleksey1989
 
17.05.12
13:01
(29) Что-то я никак не могу понять, почему у меня не выводится параметр запуска, в командной строке ввожу следующую строчку:
"C:\Program Files\1cv82\common\1cestart.exe" /F "C:\Users\Алексей\Documents\1C\Accounting3" /Execute "C:\v1.epf" /C "123"
Т.е. в параметр запуска должна мигрировать строка "123", далее в обработке создаю кнопку с действием "Сообщить(ПараметрЗапуска);", после запуска нажимаю на эту кнопку, но ничего не сообщается.
32 Wobland
 
17.05.12
13:09
(31) http://dl.dropbox.com/u/64196148/20120517_160955.jpg
"C:\Program Files\1cv82\common\1cestart.exe" /F "D:\1C\ру" /Execute "C:\v1.epf" /C "123"
33 Aleksey1989
 
17.05.12
13:16
(32) Все, разобрался, в чем была моя ошибка: в невнимательности. Я внез метод сообщить в обработку, которая находилась на рабочем столе, а запускал из командной строки обработку, которая находилась на диске С.
34 Aleksey1989
 
18.05.12
12:51
Помогите, пжл, понять, где ошибка. Вообщем задача та же. Я запускаю серверную бузу - появляется ошибка "Переменная не определенна (ПараметрЗапуска)". Вот код, где появляется ошибка:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   
   ФайлВыгрузки = "IBUsers.xml";
   ФайлЗагрузки = ПараметрЗапуска;
   
   ПриоритетФайла = Ложь;
   ФормироватьПротокол = Истина;
   
КонецПроцедуры

Вот строка командной строки:
"C:\Program Files (x86)\1cv82\common\1cestart.exe" /S "Ip-0A625354\testBase777" /Execute "D:\Scripts\Vo.epf" /RunModeManagedApplication /C "IBUsers.xml"
35 Wobland
 
18.05.12
12:53
(34) попробуй скопипасти из СП
36 Aleksey1989
 
18.05.12
12:56
(35) не поможет, да и весь нюанс заключается в том, что если запускать какую-нибудь базу в файловом режиме, то ошибок нет.
37 Wobland
 
18.05.12
12:58
(36) буквально на днях код не обрезал адрес:

Адрес="ftp://***";
Адреc=СтрЗаменить(Адрес, "ftp://", "");
Сообщить(Адрес);

с была латинская в одном случае...
38 Aleksey1989
 
18.05.12
13:00
(37) Это понятно, но почему тогда в файловом режиме все работает?
39 hhhh
 
18.05.12
13:07
(38) но этот файл точно есть на сервере на диске D: у вас, и права у этого прользователя на диск D: сервера?
40 Wobland
 
18.05.12
13:09
(39) ну кто-то же ему сказал, что переменная не определена
41 hhhh
 
18.05.12
13:10
(34) да, у вас ведь не определяется здесь переменная "ПараметрЗапуска".
42 Wobland
 
18.05.12
13:10
такое впечатление, что это тонкий клиент ругнулся, но &НаСервере ж
43 Wobland
 
18.05.12
13:11
(41) она определяется в глобальном контексте
44 Aleksey1989
 
18.05.12
13:11
(42) Вот и я думаю, почему такое происходит.
45 Wobland
 
18.05.12
13:24
а хрен бы его знал.. где логин и пароль в строке подключения?
46 Aleksey1989
 
18.05.12
13:26
(45) у базы не создано ни одного пользователя.
47 Wobland
 
18.05.12
13:33
(46) танцы с бубном, конечно, но заведи ;)
48 Aleksey1989
 
18.05.12
13:45
Попробовал в конфигураторе в параметрах запуска ввести строку, запустил в тонком клиенте, ввожу в табло ПараметрЗапуска - высвечивается именно то значение, которое я вводил. Но почему через запуск из командной строки не получается? С созданием пользователя уже пробовал.
49 veronika1888
 
18.05.12
13:46
ОткрытьФорму(,,ПараметрыОткрытия)
50 Wobland
 
18.05.12
13:46
(48) >через запуск из командной строки не получается
а почему так решил?
51 Aleksey1989
 
18.05.12
13:49
(50) Потому что если запускать через отладку базу, то параметрЗапуска передается. (В конфигураторе Сервис--Параметры--Запуск 1С есть специальное поле для указание параметров запуска, когда запуск осуществляется в режиме отладки).
52 Wobland
 
18.05.12
13:55
(51) >параметрЗапуска передается.
переформулирую: почему решил, что передаётся?
//ну ты ж понимаешь, что я гадать пытаюсь ;)
53 Aleksey1989
 
18.05.12
14:04
(52)
В конфе создал точку останова, сгенерировал событие, позволяющее попасть на эту точку, далее в табло ввел ПараметрЗапуска и появился именно тот параметр запуска, который я и вводил в конфигураторе.
54 Wobland
 
18.05.12
14:11
(53) мда.. немного не угадал с переформулировкой ;)
почему решил, что не передаётся?
55 Aleksey1989
 
18.05.12
14:15
(54)"Не передается" - если имеется ввиду вариант запуска из командной строки, то высвечивается ошибка "Переменная не определенна (ПараметрЗапуска)", стало быть она не была инициализированна. Я конечно не знаю особенностей работы платформы, но думаю, что инициализация этой переменной зависит от того факта, передаются или нет параметры запуска.
56 Aleksey1989
 
18.05.12
14:20
Похоже вопрос решится, вот что есть в СП:
Глобальный контекст (Global context)
ПараметрЗапуска (LaunchParameter)

Использование:
Только чтение.

Описание:
Тип: Строка.
Используется для доступа к параметру запуска, передаваемому через ключ командной строки /C.

Доступность:
Тонкий клиент, веб-клиент, толстый клиент.

При чем в разных версиях СП указана разная доступность.
57 Aleksey1989
 
18.05.12
14:24
(56) С учетом этого, я сделал функцию, которая забирает значение этого параметра на клиенте. Но появляется другая ошибка:
"В неинтерактивном режиме требуется указать путь к файлу-источнику"
58 Wobland
 
18.05.12
14:27
(56) забавно..
(57) ну а тут уже сам ;)
59 Wobland
 
18.05.12
14:28
хотел сказать, что тест на сервере на 8.1 прошёл успешно, 8.2 на сервере нет.
собссно, тебе форма зачем? чтоб один раз кнопку тыкнуть?
60 Aleksey1989
 
18.05.12
14:33
(59) Т.е. эта ошибка из-за формы обработки?
61 Wobland
 
18.05.12
14:39
(60) я хотел сказать, а пускай всё будет в модуле обработки. запустилась и молча сделала своё грязное дело. про задания я уже говорил.
62 Aleksey1989
 
18.05.12
14:42
(61) В модуле обработке это не м.б., т.к. код, который там размещается, компилируется на сервере, соответственно, доступ к параметру запуска я опять получить не смогу.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан