|
Как проверить наличие файла на сервере? | ☑ | ||
---|---|---|---|---|
0
Volodja
02.03.22
✎
16:50
|
Обычные формы:
Есть общий модуль бвв_ОбщийМодуль стоят галки: Внешнее соединение,Клиент(обычное приложение) и Сервер Процедура Инициализация_тзКоды_ТНВЭД() Экспорт сз_бввОбщегоЗначения = ПараметрыСеанса.бвв_ОбщегоЗначения.Получить(); Если сз_бввОбщегоЗначения = Неопределено Тогда бвв_сзПереченьИзъятия = Новый СписокЗначений; бвв_тзКоды_ТНВЭД = Новый ТаблицаЗначений; бвв_тзКоды_ТНВЭД.Колонки.Добавить("ПолныйКодГСВС"); бвв_тзКоды_ТНВЭД.Колонки.Добавить("КодГСВС"); бвв_тзКоды_ТНВЭД.Колонки.Добавить("Наименование"); бвв_тзКоды_ТНВЭД.Колонки.Добавить("ВходитВПеречень"); бвв_тзКоды_ТНВЭД.Колонки.Добавить("ВходитВВС"); _ФайлМакета="D:\1sb8\Коды_ТНВЭД\Список ГСВС.mxl"; ФайлНаДиске = Новый Файл(_ФайлМакета); Если НЕ ФайлНаДиске.Существует() Тогда Сообщить("Не найден список кодов ТНВЭД нет файла - "+_ФайлМакета); Возврат ; КонецЕсли; _ТабличныйДок = Новый ТабличныйДокумент; _ТабличныйДок.Прочитать(_ФайлМакета); ..... КонецПроцедуры _ФайлМакета - этот файл есть на сервере. Если захожу через RDP на сервер и оттуда запускаю базу, то все отрабатывает как надо. Файл находит Но если захожу с клиентской машины, то не видит, видимо ищет его на клиентской машине Запутался совсем Как мне нужно правильно вызвать эту процедуру, чтобы файл гарантированно проверялся на сервере? |
|||
1
Amra
02.03.22
✎
16:52
|
&НаСервере
|
|||
2
Volodja
02.03.22
✎
16:53
|
(1) Пробовал
и в #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #КонецЕсли оборачивал не получается |
|||
3
Kassern
02.03.22
✎
16:55
|
(2) не так ты пробовал. Надо
&НаСервере Процедура ПрочитатьФайл(ИмяФайла) И вот тут уже читать КонецПроцедуры |
|||
4
Amra
02.03.22
✎
16:55
|
(2) Не верю. Проверь права пользователя, под которым стартует агент сервера на эту папку
|
|||
5
piter3
02.03.22
✎
16:55
|
на серванте прям такой будет путь D:\1sb8\Коды_ТНВЭД\Список ГСВС.mxl сомнительно что-то
|
|||
6
Мимохожий Однако
02.03.22
✎
16:57
|
На клиенте находишь файл и передаёшь через временное хранилище на сервер. Дальше не сложно.
|
|||
7
Kassern
02.03.22
✎
16:58
|
(6) у него обратная ситуация, файл на сервере, где кластер, с клиентской машинки не получается прочитать
|
|||
8
Вафель
02.03.22
✎
17:00
|
внешнее соединение - это не сервер, а толстый клиент
|
|||
9
Volodja
02.03.22
✎
17:00
|
(6)
Пробовал так &НаСервере Функция ПолучитьФайл_СписокТНВЭД_НаСервере() Экспорт _ФайлМакета="D:\1sb8\Коды_ТНВЭД\Список ГСВС.mxl"; ФайлНаДиске = Новый Файл(_ФайлМакета); Если НЕ ФайлНаДиске.Существует() Тогда Сообщить("Не найден список кодов ТНВЭД нет файла - "+_ФайлМакета); Возврат Неопределено; КонецЕсли; _ТабличныйДок = Новый ТабличныйДокумент; _ТабличныйДок.Прочитать(_ФайлМакета); Адрес=ПоместитьВоВременноеХранилище(ЗначениеВСТрокуВнутр(_ТабличныйДок),Новый УникальныйИдентификатор); Возврат Адрес; КонецФункции &НаКлиенте Функция ПолучитьФайл_СписокТНВЭД_НаКлиенте() Экспорт Адрес=бвв_ОбщийМодульСервер.ПолучитьФайл_СписокТНВЭД_НаСервере(); ТД=ЗначениеИзСтрокиВнутр(ПолучитьИзВременногоХранилища(Адрес)); // Здесь пишет что: Ошибка при вызове метода контекста ПолучитьИзВременногоХранилища по причине Недопустимое значение параметра (параметр номер 1) УдалитьИзВременногоХранилища(Адрес); Возврат ТД; КонецФункции |
|||
10
Volodja
02.03.22
✎
17:01
|
(5) я его там сам создал. Он есть
|
|||
11
Kassern
02.03.22
✎
17:08
|
(9) Зачем ЗначениеИзСтрокиВнутр ? Вы же ПоместитьВоВременноеХранилище, так получайте из него соответствующим методом
|
|||
12
Kassern
02.03.22
✎
17:08
|
ПолучитьИзВременногоХранилища вам в помощь
|
|||
13
Volodja
02.03.22
✎
17:09
|
(11) это я после добавил.
ТД=ПолучитьИзВременногоХранилища(Адрес); так тоже самое выдает |
|||
14
Мимохожий Однако
02.03.22
✎
17:14
|
Помести ФайлНаДиске во временное хранилище и получай на клиенте.
|
|||
15
Мимохожий Однако
02.03.22
✎
17:14
|
Помещение макета в табличный документ не имеет смысла.
|
|||
16
Volodja
02.03.22
✎
17:26
|
(15) Так даже не доходит до этого:
... ФайлНаДиске = Новый Файл(_ФайлМакета); Если НЕ ФайлНаДиске.Существует() Тогда Сообщить("Не найден список кодов ТНВЭД нет файла - "+_ФайлМакета); Возврат Неопределено; КонецЕсли; .... Уже пишет, что нет его |
|||
17
ColonelAp4u
02.03.22
✎
17:41
|
(16) попробуй сделать на компе откуда запускаешь этот файл D:\1sb8\Коды_ТНВЭД\Список ГСВС.mxl и запусти обработку, если найдет то значит он и не ищет на сервере его, что скорее всего так и есть, хотя вообще не пойму почему ты не сделал диалог выбора файла и все.
|
|||
18
ColonelAp4u
02.03.22
✎
17:48
|
(16) и еще вот так попробуй
&НаКлиенте Процедура ЗагрузитьФайл(Команда) ИмяФайлаДляОбработки = «C:\ДанныеДляЗагрузки.xml»; // Описание процедуры, которая будет вызвана помещения файла во временное хранилище ОписаниеОповещения = Новый ОписаниеОповещения(«ЗагрузитьФайлЗавершение», ЭтотОбъект); // Начало помещение файла из файловой системы во временное хранилище НачатьПомещениеФайла(ОписаниеОповещения, , ИмяФайлаДляОбработки, Ложь, УникальныйИдентификатор); КонецПроцедуры &НаКлиенте Процедура ЗагрузитьФайлЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт ВыполнитьЗагрузкуНаСервере(Адрес); КонецПроцедуры &НаСервере Процедура ВыполнитьЗагрузкуНаСервере(Адрес) // Получение данных из временного хранилища Данные = ПолучитьИзВременногоХранилища(Адрес); // Получение имени временного файла ИмяВременногоФайла = ПолучитьИмяВременногоФайла(«xml»); // Сохранение данных во временный файл Данные.Записать(ИмяВременногоФайла); // Обработка файла… // Хорошим тоном будет удалить временный файл Попытка УдалитьФайлы(ИмяВременногоФайла); Исключение КонецПопытки; КонецПроцедуры |
|||
19
Мимохожий Однако
02.03.22
✎
18:49
|
Если это обработка, то макет можно положить внутри обработки без всяких файлов и ухищрений. В чём цель манипуляций с файлом?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |