День добрый! Стоит такая задача.
1. есть список пользователей в нем ИП компьютера и тд.
Нужно что бы из 1с вызывалась Remote Utilities и подключалась к ПК.
Пробую сделать след образом.
в константах сделал форму в нем вот такое

```1c
    Процедура remoteНажатие(Элемент)
    //выберем путь
    Режим = РежимДиалогаВыбораФайла.Открытие;
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
    ДиалогОткрытияФайла.ПолноеИмяФайла = "rutview.exe";
    Текст = "ru = "Исполняемый файл"; en = "Executable file"";
    Фильтр = НСтр(Текст)+"(*.exe)|*.exe";
    ДиалогОткрытияФайла.Фильтр = Фильтр;
    ДиалогОткрытияФайла.Заголовок = "Выберите файл remote utilities";
    Если ДиалогОткрытияФайла.Выбрать() Тогда
    ИмяФайла=ДиалогОткрытияФайла.ВыбранныеФайлы[0];
    Иначе
    Текст = "ru = "Файл не выбран!"; en = "File not selected!"";
    Предупреждение(НСтр(Текст));
    Возврат;
    КонецЕсли;

    Файлrutview = Новый ДвоичныеДанные(ДиалогОткрытияФайла.ПолноеИмяФайла);
    ХранилищеФайла = Новый ХранилищеЗначения(Файлrutview);
    ЭлементХранилища=Справочники.ХранилищеФайлов.rutview.ПолучитьОбъект();
    ЭлементХранилища.Файл=ХранилищеФайла;
    ЭлементХранилища.Записать();

    КонецПроцедуры
```

```1c
    Процедура ЗапускremoteНажатие(Элемент)
    rutview();
    КонецПроцедуры
```

Да файл Программы не один а портабл версия из множество доп. И мне выдает вот такое когда пробую запустить по кнопке Запускremote. Ошибка Ленгвич файл нот фоунд
---
если что, то в тимвьевере - это разовые пароли. После каждого подключения все это заново генерируется. Так что, все что написано выше - это уже совсем неактуально.
---
surazhpc, ну в хранилище то у тебя, насколько я понимаю один файл, а не вся программа.
---
Я так понимаю он хочет что бы ему еще подгрузили язык?
---
Boneman да только один файл
---
surazhpc, ну а как она у тебя запустится, если ты сам говоришь что программа состоит из множества файлов. Если тебе отрезать руки и ноги, думаешь ты бы смог нормально функционировать ? Вот и она также.
Храни тогда все файлы вместе в хранилище, в виде архива к примеру. При запуске получай, записывай, распаковывай, и запускай экзешник уже в полноценной программе.
---
Вот искал Всю программу одном файлом не нашел(
---
Это долго( ща буду пробовать портабл делать искать.
---
surazhpc, чего долго ?
Тебе всего лишь надо сделать архив zip.
А при получении, перед тем как запускать, сделать запуска pkunzip - а, который мне кажется на любом компе есть по умолчанию. Ну или какого нибудь winrara - который на компе установлен, с определенными ключами.
---
surazhpc, и кстати, по поводу долго. Сделай, проверку на существование файла. Дабы она архивчик распаковывала только один раз, на новый комп. А если прога уже установлена, то просто запускала без всяких получений из хранилищ и распаковок.
---
А не вариант программу расшарить просто где нибудь на файловом хранилище зачем ее в 1С то хранить ?
---
Я имею ввиду долго работать будет. не сразу будет подключаться
---
surazhpc, программу размером "много метров", вообще незачем тогда хранить в хранилище. Там есть смысл хранить, мелкие какие то программки, чисто для удобства, чтобы не искать. Тормозить и при распаковке ничего не будет.
А огромные файлы, целесообразнее делать как сказал наш дух2 в (9)
---
Собрал портабл версию, все запускается) Теперь вопрос в другом, возможно не по теме. Никто не знает параметры запуска у этой программы?
В радмине /connect это подключение без участия справочника, а как тут? никто не знает?
---
Помогите дураку понять, как будет вызывается из командной строки удаленный компьютер Viewer>rutview.exe /create /name:11 /host:ce
x103 /port:5650 /password:master /FULLCONTROL
как сделать что бы из 1с вызывался любой комп из списка?
---
surazhpc, да кто б знал. Там хелпа никакого нет в командной строке? типа -? или -help
---
ну я из командной строки вот так пробовал запускать, звпускалось, а как передать это в 1с?
---
surazhpc, так же как и файл запускаешь, только строку полностью формируй с ключами.
---
Ключи)))
---
Сделал с портабл версией, открывается примерно 5 секунд.
Переделал с архивом, открывается быстрее, Посмотрите, скажите, правильно ли.
Сделал в константах настройку (Загрузку архива)

```1c
    Процедура remНажатие(Элемент)
    //выберем путь

    Режим = РежимДиалогаВыбораФайла.Открытие;
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
    ДиалогОткрытияФайла.ПолноеИмяФайла = "rem.zip";
    Текст = "ru = "Исполняемый файл"; en = "Executable file"";
    Фильтр = НСтр(Текст)+"(*.zip)|*.zip";
    ДиалогОткрытияФайла.Фильтр = Фильтр;
    ДиалогОткрытияФайла.Заголовок = "Выберите файл remote utilities";
    Если ДиалогОткрытияФайла.Выбрать() Тогда
    ИмяФайла=ДиалогОткрытияФайла.ВыбранныеФайлы[0];
    Иначе
    Текст = "ru = "Файл не выбран!"; en = "File not selected!"";
    Предупреждение(НСтр(Текст));
    Возврат;
    КонецЕсли;

    Файлrem = Новый ДвоичныеДанные(ДиалогОткрытияФайла.ПолноеИмяФайла);
    ХранилищеФайла = Новый ХранилищеЗначения(Файлrem);
    ЭлементХранилища=Справочники.ХранилищеФайлов.rem.ПолучитьОбъект();
    ЭлементХранилища.Файл=ХранилищеФайла;
    ЭлементХранилища.Записать();

    КонецПроцедуры
```

Распаковываем

```1c
    Процедура ЗапускremoteНажатие(Элемент)
    Пароль = ";
    Подсказка = "Введите пароль на архив";

    // Запросим пароль на архив

    Если ВвестиСтроку(Пароль, Подсказка, 0, Ложь) Тогда
    Архив = Новый ЧтениеZipФайла("c:\rem.zip", Пароль);
    Сообщение = Новый СообщениеПользователю();
    Сообщение.Текст = "Комментарий: " + Архив.Комментарий;
    Сообщение.Сообщить();

    Для Каждого Элемент Из Архив.Элементы Цикл
    Сообщение.Текст = "Распаковывается файл: " + Элемент.Имя +
    " размер: " + Элемент.РазмерНесжатого;
    Сообщение.Сообщить();
    Архив.Извлечь(Элемент, "c:\Temp\",
    РежимВосстановленияПутейФайловZIP.НеВосстанавливать,
    ?(Элемент.Зашифрован, Пароль, "));
    КонецЦикла;
    Архив.Закрыть();
    КонецЕсли;

    КонецПроцедуры
```

В модуле обычного приложения

```1c
    Процедура rem(Клиент=Неопределено) Экспорт
    Файлrem=Справочники.ХранилищеФайлов.rutview.Файл.Получить();
    Если Файлrem=Неопределено Тогда
    Предупреждение("Сохраните в базу файл RemoteUtilities.exe в настройках учета.",5);
    Возврат;
    КонецЕсли;
    ПутьКФайлу=КаталогВременныхФайлов()+"\"+СокрЛП(Справочники.ХранилищеФайлов.rutview.Наименование)+".exe";
    Если НЕ НайтиФайлы(ПутьКФайлу).Количество() Тогда
    Файлrem.Записать(ПутьКФайлу);
    КонецЕсли;
    //если не передан клиент - просто открываем RemoteUtilities - виевер

    Если НЕ ЗначениеЗаполнено(Клиент) Тогда
    ЗапуститьПриложение(ПутьКФайлу);
    Иначе
    Если Клиент.ЭтоГруппа Тогда
    Предупреждение("Выбрана группа, - выберете конкретного пользователя",3);
    Возврат;
    КонецЕсли;

    //Пароль в буфер обмена

    Если ЗначениеЗаполнено(Клиент.RadminПароль) Тогда
    Пароль=СокрЛП(Клиент.RadminПароль);
    Иначе
    Пароль=СокрЛП(Константы.RadminПарольПоУмолчанию.Получить());
    КонецЕсли;
    Если ЗначениеЗаполнено(Пароль) Тогда
    Объект = Новый COMОбъект("htmlfile");
    Объект.ParentWindow.ClipboardData.Setdata("Text", Пароль);
    КонецЕсли;

    КлиентIP=СтрЗаменить(глАйПи(Клиент.Код), " ", ");//локальный IP

    ПараметрыЗапуска=" /create /name:"+ Клиент.Адрес+" /host:"+СокрЛП(Клиент.Наименование)+" /port:5650 /FULLCONTROL";
    ЗапуститьПриложение (СокрЛП(ПутьКФайлу)+ПараметрыЗапуска );
    КонецЕсли;
    КонецПроцедуры
```
---
Херня какая то получается) Помогите разобраться. Запутался уже(((
Ведь это не есть правильно как я сделал. Если во временной папке ничего не лежит, то он и не будет работать, как сделать что бы при нажатии "подключиться", он распаковывался и запускался если во временной папке ничего нету.
В данный момент пока не загрузишь через константы, то работать не будет. Это неудобно, да и не правильно. И чего то тут не так(
---
surazhpc, Файлrem=Справочники.ХранилищеФайлов.rutview.Файл.Получить();
    Если Файлrem=Неопределено Тогда
        Предупреждение("Сохраните в базу файл RemoteUtilities.exe в настройках учета.",5);
        Возврат;
    КонецЕсли;
    ПутьКФайлу=КаталогВременныхФайлов()+"\"+СокрЛП(Справочники.ХранилищеФайлов.rutview.Наименование)+".exe";
    Если НЕ НайтиФайлы(ПутьКФайлу).Количество() Тогда
        Файлrem.Записать(ПутьКФайлу);
    КонецЕсли;
разберись с этими строками.
ты получаешь из хранилища что ? и зачем ?
ты же вроде в zip архиве там хранишь, а не напрямую экзешник.
Дальше, ты проверяешь есть ли там экзешник, и сохраняешь это что-то туда.
Та вот, ты и сделай тут сначала распаковку, как у тебя в других процедурах, или сделай общую, чтобы 20 раз не переписывать, и просто ее вызывай.
Назови типа Процедура ПолучениеРаспакованногоФайла() и в ней все сделаешь.
---
Boneman, посмотри лучше глазами) Первый раз с файлами в 1с сталкнулся)
---
surazhpc, неа, не пускает меня с работы проксятник. TeamViewer-а нет ?
---
1rrgfg
---
Boneman, попробуй ща
---
тим виер 610 240 766
---
2121
---
surazhpc,
тим виер 610 240 766
Пароль 2307

это пять!!!

я даже подключиться успел :)

У людей напрочь отсутствует инстинкт самосохранения.
---
KroVladS, Приходите в мой дом, мои двери открыты... М.Круг
---
surazhpc,
надеюсь Вы поняли что так нельзя делать. НИКОГДА.
---
surazhpc, Сразу видно - Чэсны чалавек.
---
если что, то в тимвьевере - это разовые пароли. После каждого подключения все это заново генерируется. Так что, все что написано выше - это уже совсем неактуально.