Метод Прочитать в безопасном режиме

1. Alexponenta 19.03.22 15:05 Сейчас в теме
Написал обработку. В обработке есть строка:
ТабДокумент.Прочитать(Файл);
В безопасном режиме данная строка вызывает ошибку. Что мол безопасный режим. Как это можно исправить/ дополнить.
Обработку нужно адаптировать под fresh - так что Безопасный режим = Ложь не вариант
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
17. SlavaKron 21.03.22 14:45 Сейчас в теме
(1)
ТабДокумент.Прочитать(Файл);
Как вариант, табличный документ разместить на форме и требовать от пользователя заполнять его из буфера обмена интерактивно.
21. Alexponenta 21.03.22 15:45 Сейчас в теме
(17)
Ну это крайний вариант. В выгрузке может быть 10000+ строк.
2. hroa 20.03.22 00:20 Сейчас в теме
в обработке должны быть заданы разрешения. в процедуре СведенияОВнешнейОбработке
dyelibayev; laperuz; user930087; +3 Ответить
3. Alexponenta 20.03.22 09:26 Сейчас в теме
4. maraty 439 20.03.22 09:43 Сейчас в теме
5. Alexponenta 20.03.22 09:54 Сейчас в теме
(4)
Читал я про эти разрешения. Но ни одно из них не дает возможности игнорировать .Прочитать
6. laperuz 46 20.03.22 09:55 Сейчас в теме
Есть вариант обработку включить в расширение, при добавлении расширения в МС указать разрешение к временным файлам, тогда он будет исполнять не в безопасном режиме.
7. Alexponenta 20.03.22 10:13 Сейчас в теме
(6)
Хотелось бы все же, чтобы чисто обработка была.

В крайнем случае придумать какую нить альтернативу использования метода табличного документа .Прочитать. (что-то кроме Com объекта)
19. laperuz 46 21.03.22 15:11 Сейчас в теме
(7)Все-таки чем не нравится расширение? Тем, что в подсистему включать нужно? Зато нет заморочек с безопасным режимом.
29. petrobol25 28.03.24 14:23 Сейчас в теме
(19) это на каком этапе можно указать? Мне как раз нужно с документа считывать csv во фреше.
8. hroa 20.03.22 21:12 Сейчас в теме
(7) вам надо прочитать на клиенте. Через ДвоичныеДанные, например. Затем передаете через временное хранилище данные на сервер. И на сервере пишете во временный файл. А потом уже прочитать на сервере табдок из временного файла - это уже дело техники, как вы читаете в (0).
9. Alexponenta 21.03.22 08:08 Сейчас в теме
(8) Да я уже делал так - но один черт почему то на ТабДок.Прочитать спотыкается
10. Alexponenta 21.03.22 09:38 Сейчас в теме
(8)
На клиенте:
ДанныеФайла = Новый ДвоичныеДанные(Документ);
АдресДанных = ПоместитьВоВременноеХранилище(ДанныеФайла);

На сервере:
Данные = ПолучитьИзВременногоХранилища(АдресДанных);
ПутьКФайлуНаСервере = ПолучитьИмяВременногоФайла("xls");
Данные.Записать(ПутьКФайлуНаСервере); - спотыкается тут

ТабДокумент.Прочитать(ПутьКФайлуНаСервере);
11. user1278383 4 21.03.22 09:40 Сейчас в теме
(10) почему бы тогда не отправлять на сервер просто табличный документ?
12. Alexponenta 21.03.22 10:01 Сейчас в теме
(11) метод прочитать не работает на клиенте
13. vadim.semyonov.rzn 21.03.22 12:23 Сейчас в теме
(10) Я в соответствии с новыми стандартами БСП, делаю трехшаговую конструкцию:
&НаКлиенте
Процедура ДействияНаКлиенте()
	ОповещениеЗавершитьПомещениеФайла = Новый ОписаниеОповещения("ПолучитьДДанныеФайла", ЭтотОбъект);
	ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов;
	ПараметрыДиалога.МножественныйВыбор = Ложь;
	ПараметрыДиалога.Заголовок = НСтр("ru = 'Выберите файл'; en = 'Select file'");
	ПараметрыДиалога.Фильтр = НСтр("ru = 'Файл Excel'; en = 'Excel file'") + " (*.xls;*.xlsx)|*.xls;*.xlsx|";
	НачатьПомещениеФайлаНаСервер(ОповещениеЗавершитьПомещениеФайла,,,, ПараметрыДиалога,
								ЭтаФорма.УникальныйИдентификатор);
КонецПроцедуры

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

&НаСервере
Процедура ДействияНаСервере(ОписаниеФайла)
	Если ЭтоАдресВременногоХранилища(ОписаниеФайла.Адрес) Тогда
		ДвоичныеДанные = ПолучитьИзВременногоХранилища(ОписаниеФайла.Адрес);
		ИмяВременногоФайла = ПолучитьИмяВременногоФайла(ОписаниеФайла.Расширение);
		ДвоичныеДанные.Записать(ИмяВременногоФайла);
		Исходник = Новый ТабличныйДокумент;
		Исходник.Прочитать(ИмяВременногоФайла, СпособЧтенияЗначенийТабличногоДокумента.Текст);
		// делаем, что требуется
	КонецЕсли;
КонецПроцедуры
Показать

Работает без сбоев с любым клиентом, даже веб.
14. Alexponenta 21.03.22 13:22 Сейчас в теме
(13)
А проверялось ли это на Фреше и Безопасном режиме?
20. glek 119 21.03.22 15:28 Сейчас в теме
(14) У фреша нет категоричного запрета на разрешения. Вам надо указать разрешение и аргументировать его.
Разумеется, прив. режим не пропустят. Но так там разрешения этим не исчерпываются.
Посмотрите остальные разрешения. Там есть еще вроде с файловыми операциями.
15. Alexponenta 21.03.22 13:27 Сейчас в теме
(13)
Я вот запускаю из доп.обработок с БезопаснымРежимом = Истина и у меня на моменте

ДвоичныеДанные.Записать(ИмяВременногоФайла);

и

Исходник.Прочитать(ИмяВременногоФайла, СпособЧтенияЗначенийТабличногоДокумента.Текст);

Улетает в ошибку - безопасный режим
16. vadim.semyonov.rzn 21.03.22 14:30 Сейчас в теме
(15)
Улетает в ошибку - безопасный режим
Попробуйте в серверном коде добавить
ЗначениеРежима = БезопасныйРежим();
Если ТипЗнч(ЗначениеРежима) = Тип("Булево") И ЗначениеРежима тогда
УстановитьОтключениеБезопасногоРежима(Истина);
// здесь исполняемый код
КонецЕсли;

Но это для относительно свежих платформ.
18. laperuz 46 21.03.22 14:58 Сейчас в теме
(16)написали же, что фреш, такие фокусы завернет аудит.
22. Alexponenta 21.03.22 15:46 Сейчас в теме
(16)
В файловой - возможно сработает. Фреш завернет
23. hroa 23.03.22 12:51 Сейчас в теме
(16) а то что сначала говорили, сделали? Задание разрешений в обработке.
24. Alexponenta 23.03.22 13:01 Сейчас в теме
(23) разрешение на временное хранилище? да
25. hroa 23.03.22 13:34 Сейчас в теме
26. hroa 23.03.22 13:35 Сейчас в теме
у вас же запись в файл не работает?
27. Alexponenta 23.03.22 13:54 Сейчас в теме
(26)

Код модуля СведенияОВнешнейОбработке:

Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Истина,Истина);
ПараметрыРегистрации.Разрешения.Добавить(Разрешение);

Однако запись в файл валится с ошибкой безопасного режима. Возможно я что-то не так делаю. Фреш для меня это - темный лес.
28. mart-sha 295 07.02.24 18:17 Сейчас в теме
Удалось ли разобраться с этой проблемой ? Права менять не можем, база в облаке.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот