8.х Передача переменной на сервер

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем dim3740, 9 дек 2015.

  1. TopicStarter Overlay
    dim3740
    Offline

    dim3740 Опытный в 1С

    Регистрация:
    23 ноя 2009
    Сообщения:
    93
    Симпатии:
    0
    Баллы:
    26
    Опыта нет почти.... Прошу помощи! БП 3.0, УФ. На форме диалог открытия папки...

    &НаКлиенте
    Процедура ПапкаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    ДиалогОткрытия = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
    ДиалогОткрытия.Каталог = "";
    ДиалогОткрытия.МножественныйВыбор = Ложь;
    ДиалогОткрытия.Заголовок = "Выберите каталог";
    Если ДиалогОткрытия.Выбрать() Тогда
    ПутьККаталогу = ДиалогОткрытия.Каталог;
    Элемент.Значение=ПутьККаталогу;
    КонецЕсли;
    КонецПроцедуры

    &НаСервере
    Процедура ПускНаСервере()
    Путь=СтрЗаменить(ПутьККаталогу,"\","/");
    КонецПроцедуры

    Пишет, что
    Переменная не определена (ПутьККаталогу)
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    А где вы ее определили ????

    Нужно что-то типа:
    Код:
    ПутьККаталогу = "Бла-бла-бла";
    ПускНаСервере(ПутьККаталогу);
  3. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    Сервер ничего не знает про пути, доступные пользователю. от слова совсем.
    Посмотрите как в типовых реализован механизм прикрепления файлов к документам/элементам справочников в плане сохранения файла, выбранного пользователем.
  4. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Это уже другой вопрос :D
  5. TopicStarter Overlay
    dim3740
    Offline

    dim3740 Опытный в 1С

    Регистрация:
    23 ноя 2009
    Сообщения:
    93
    Симпатии:
    0
    Баллы:
    26
    вот Чистов рекомендует про прикрепление картинки.... ну немного уже под себя переделал... Но ПутьККаталогу опять не видит... В обычной форме, я делал через объаяление локальных переменных и все, типа Перем ПутьККаталогу.... Тут пробовал аналогично, но это &НаКлиенте или на &Сервере? Так видимо не получится. Через передачу параметра Процедура БлаБла (ПутьККаталогу) тоже не выходит. В типовых? Ну типа КлиентБанк и т.п.... ну очень мне сложно, а чужие обработки попроще что-то не могу найти... Теоретические методы пока сложно, нужен простой пример, и потом уже обобщение))))

    &НаКлиенте
    Процедура Выбрать(Команда) // это если нужна папка
    ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
    ДиалогВыбораФайла.Заголовок = НСтр("ru = 'Выберите каталог информационной базы'");
    Оповещение = Новый ОписаниеОповещения("ОбработатьВыборФайла",ЭтотОбъект);
    ДиалогВыбораФайла.Показать (Оповещение);

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

    &НаКлиенте
    Процедура ОбработатьВыборФайла(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
    //Если ТипЗнч(ВыбранныеФайлы)=Тип("Массив") Тогда
    // Сообщить(ВыбранныеФайлы[0]);
    ПутьККаталогу = ВыбранныеФайлы[0]; ?????????????
    //КонецЕсли;
    КонецПроцедуры

    Через временное хранилище - это верный и единственный путь?
    Последнее редактирование: 9 дек 2015
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    Поймите, сервер в общем случае вообще не знает про пути и имена файлов клиента.
    Временное хранилище - верный и единственный путь в данном случае.
    dim3740 нравится это.
  7. TopicStarter Overlay
    dim3740
    Offline

    dim3740 Опытный в 1С

    Регистрация:
    23 ноя 2009
    Сообщения:
    93
    Симпатии:
    0
    Баллы:
    26
    Да, логично..... Спасибо. Это важный ответ для меня. Я конечно раскручу этот метод, просто хотел убедиться, что это верный путь.
  8. TopicStarter Overlay
    dim3740
    Offline

    dim3740 Опытный в 1С

    Регистрация:
    23 ноя 2009
    Сообщения:
    93
    Симпатии:
    0
    Баллы:
    26
    А если я откажусь от диалога и пропишу путь к папке явно в серверной процедуре, это решит вопрос? Мне надо загружать доки импортом из Эксела. На инфостарте для управляемых только одна обработка похожая на требуемую .... и то просто читает эксел\ворд. Купить можно, но может быть, там все реализовано на клиенте.... А так, пока что-то не получается(((((
  9. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Да как вы не поймете, сервер может быть установлен совсем в другом городе, ему по барабану что там у клиента на компе.
  10. TopicStarter Overlay
    dim3740
    Offline

    dim3740 Опытный в 1С

    Регистрация:
    23 ноя 2009
    Сообщения:
    93
    Симпатии:
    0
    Баллы:
    26
    Мне было бы проще это понять, если бы Вы смогли ПРАКТИЧЕСКИ предложить пример хотя бы части кода. За что я был бы очень признателен. Многие как я тоже проходили через это....
    вот пользователь пишет, что обработка якобы работает и там явное прописывание имени файла в серверной процедуре..
    http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=604208
    Последнее редактирование: 9 дек 2015
  11. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Поверьте, у вас вопросов было бы еще больше. Единственно верный вариант реализации вашей задачи - загонять экселевскй файл во временное хранилище. Либо смотрите механизм реализации хранения файлов в типовых.
  12. Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    У вас в серверной процедуре используется переменная ПутьККаталогу. А чему она там равна?
  13. TopicStarter Overlay
    dim3740
    Offline

    dim3740 Опытный в 1С

    Регистрация:
    23 ноя 2009
    Сообщения:
    93
    Симпатии:
    0
    Баллы:
    26
    &НаКлиенте
    Процедура Пуск(Команда)
    Адрес = ПоместитьВоВременноеХранилище("C:\ShareAsus\ЭК"); // это ПАПКА
    ПускНаСервере(Адрес);
    КонецПроцедуры

    &НаСервере
    Процедура ПускНаСервере(Адрес)
    Сообщить("некий адрес temp "+Адрес); // что то выдает!!!!! но эту же папку нельзя открыть???
    МассивНайденных = НайтиФайлы(Адрес,"*.xls");
    Спр = новый COMОбъект("Excel.Application");
    Для Каждого Файл из МассивНайденных Цикл
    Сообщить(Файл.ПолноеИмя); // ничего не пишет, хотя много экселек в папке есть
    КонецЦикла;
    КонецПроцедуры
  14. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    Проблема еще в том, что не на всех серверах ставят эксель.
    А некоторые админы ставят его так, что хоть святых выноси..
    И вот это "COMОбъект("Excel.Application");", вызванный на сервере может вас немного обматерить.
  15. TopicStarter Overlay
    dim3740
    Offline

    dim3740 Опытный в 1С

    Регистрация:
    23 ноя 2009
    Сообщения:
    93
    Симпатии:
    0
    Баллы:
    26
    У меня все намного проще.... Один ноут. Другое дело, что я не использую ПолучитьИзВременногоХранилища... а видимо, надо...

    Да. Вот так работает:
    ТаблицаФайлов = ПолучитьИзВременногоХранилища(Адрес);
    И затем уже цикл:
    МассивНайденных = НайтиФайлы(ТаблицаФайлов,"*.xls");
  16. Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    С\.... - это адрес папки, а Адрес - это Хранилище!!! На сервере надо из Адреса сначала получить!!! С таким же успехом можно просто написать
    НаКлиенте
    .......
    ПутьККаталогу = ДиалогОткрытия.Каталог
    ПускНаСервере(ПутьККаталогу);

    НаСервере
    ПускНаСеревере(ПутьККаталогу)
    ...
    //ну и тут обработывайте свою переменную которую вы передали на сервер
    Dem0lisher нравится это.
  17. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    Если на ноуте сама база лежит - может не мучать хранилище? А просто "ПутьККаталогу" в реквизитах формы создать? Ну или как Ktyf написал - через параметр передать
  18. TopicStarter Overlay
    dim3740
    Offline

    dim3740 Опытный в 1С

    Регистрация:
    23 ноя 2009
    Сообщения:
    93
    Симпатии:
    0
    Баллы:
    26
    Думаю, что это мой старый путь и он неверный.... Чуть выше написал рабочий вариант, пока его развиваю)))
    --- Объединение сообщений, 9 дек 2015 ---
    Опс! Так почему же мне сразу сказали что только через хранилище? Я хотел так, по-старинке, но проблема в передаче параметра была((((
    Так, значит, путь к каталогу тип... у меня строка.... счас попробую сызнова
  19. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    Блин, ну объяснил же вроде, что нельзя использовать пути и имена файлов клиента на сервере.
    Более того, как уже правильно заметили, на сервере вообще может не быть EXCEL, т.к. сервер может быть *NIX-овый или работать можем через web.
    Обработка файла должна происходить на клиенте, т.е. Новый COMобъект должно выполнятся СТРОГО внутри дерективы &НаКлиенте
    Dem0lisher нравится это.
  20. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    Обычно обработка файлов означает, что их предварительно нужно прочитать в некую ТЗ. А на клиенте не очень удобно изобретать ТЗ из массива структур =))
    Если у автора клиент = сервер и на нем есть эксель, зачем ему все эти заморочки?
    dim3740 нравится это.

Поделиться этой страницей