|
Передача параметров во внешнюю обработку | ☑ | ||
---|---|---|---|---|
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) В модуле обработке это не м.б., т.к. код, который там размещается, компилируется на сервере, соответственно, доступ к параметру запуска я опять получить не смогу.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |