Имя: Пароль:
1C
1С v8
работа с файлами на управляемом приложении
0 Janna26
 
22.09.12
12:52
Доброго всем дня, возникла проблема при создании новых файлов. Часть когда выполняется в модуле( Что бы закрыть паролем) соответственно все процедуры из модуля выполняются на сервере, мне в некоторых из них нужно создавать файлы. при вызове "ПолучитьИмяВременногоФайла" он создается на сервере, и моя процедура его не находит...
1 Janna26
 
22.09.12
12:52
Как выйти из этого положения?
2 Wobland
 
22.09.12
12:56
читай про ПоместитьФайлы, ПоместитьВоВременноеХранилище и о пощдобных. сходи в мои последние две(?) темы, я как раз не так давно боролся с файлами
3 Wobland
 
22.09.12
12:58
вот это вроде работает...

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   НЗ=РегистрыСведений.ФайлыЗаданий.СоздатьНаборЗаписей();
   НЗ.Отбор.Задание.Установить(Объект.Ссылка);
   НЗ.Прочитать();
   Если НЗ.Количество() Тогда
       Данные=НЗ[0].Файл.Получить();
       РасширениеФайла=НЗ[0].Расширение;
   Иначе
       Данные=Неопределено;
       Расширение="";
   КонецЕсли;
   Если Данные<>Неопределено Тогда
       АдресФайла=ПоместитьВоВременноеХранилище(Данные, УникальныйИдентификатор);
   КонецЕсли;        
КонецПроцедуры

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

&НаКлиенте
Процедура Загрузить(Команда)
   Диалог=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   Диалог.МножественныйВыбор=Ложь;
   Диалог.Фильтр="Документы Word|*.doc|Все файлы|*.*";
   Если Диалог.Выбрать() Тогда
       АдресФайла=ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(Диалог.ПолноеИмяФайла), УникальныйИдентификатор);
       Ф=Новый Файл(Диалог.ПолноеИмяФайла);
       РасширениеФайла=Сред(Ф.Расширение, 2);
       Модифицированность=Истина;
   КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Показать(Команда)
   #Если ВебКлиент Тогда
       Предупреждение("Не доделано, не додумано");
   #Иначе
       Если НЕ ЭтоАдресВременногоХранилища(АдресФайла) Тогда
           Возврат;
       КонецЕсли;
       ВременноеИмя=ПолучитьИмяВременногоФайла(РасширениеФайла);
       ПолучитьФайл(АдресФайла, ВременноеИмя, Ложь);
       ЗапуститьПриложение(ВременноеИмя);
   #КонецЕсли
КонецПроцедуры
4 H A D G E H O G s
 
22.09.12
13:05
(0) Ерундой занимаетесь.
5 Janna26
 
22.09.12
13:11
Ну почему же ерундой? Есть определенная проблема, которую нужно решить.
6 Janna26
 
22.09.12
13:11
(3) спасибо, буду пробовать.
7 H A D G E H O G s
 
22.09.12
13:16
(5) Ваше решение обходится за 15 минут.
8 Janna26
 
22.09.12
13:22
(7) Хотелось бы услышать как?
9 H A D G E H O G s
 
22.09.12
13:35
(8) В Гугл.
10 Janna26
 
22.09.12
13:40
(9) Спасибо за дельный совет...
11 Janna26
 
22.09.12
14:20
у кого нить еще есть предложения?
12 simol
 
22.09.12
14:26
(10)Имеет в виду, что пароль легко снять
13 Wobland
 
22.09.12
14:28
(12) это если исходный код есть
14 GROOVY
 
22.09.12
14:30
(13) Декомпилятор есть. Любой модуль без включенного исходного текста декомпилируется за пару секунд.
15 Janna26
 
22.09.12
14:33
(14) Ну что бы убрать исходный код все равно его нужно поместить в модуль!
16 GROOVY
 
22.09.12
14:56
(15) Я переведу вышеописанное, а то мне кажется Вы меня и коллег не поняли.

Вы хотите убрать функции в общий модуль или модуль объекта для того чтобы защитить исходный код от посторонних глаз. Поставить на него пароль. Так вот, пароль на модуль вскрывается элементарно, за пару минут. Есть более навороченная защита, перед созданием файлов поставки можно предварительно скомпилировать код модуля и не включать его (исходный текст) в поставку, тогда модуль работать будет, а текста в нем не будет. Эту защиту также легко обойти на сегодняшний день, единственным минусом декомпиляции будут отсутствующие комментарии.
Резюме: подумайте стоит ли Вам тратить свое время на адаптацию решения для работы с файлами через процедуры модуля.
17 Janna26
 
22.09.12
14:59
(16) Вопрос даже не в этом. У меня все равно эти процедуры выполняются на сервере. В любом случае. Значит даже если они будут в модуле форме, все равно требуется обращение на сервер. А значит и файлы там так же нужно читать.
18 Новиков
 
22.09.12
15:00
=) Павел, не портите девушке уикэнд!
19 Wobland
 
22.09.12
15:02
(17) видала, как я в ПриЗаписиНаСервере файл читаю и в РС его пишу?
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn