Имя: Пароль:
1C
 
Как узнать Полное Имя Файла?
0 ПТР
 
13.09.09
16:21
Платформа 8.1.14.
Файл, размещен в том же каталоге, что и обработка, его создавшая.
1.ПУТЬ файла - ПУСТОЙ!?
2.ИМЯФАЙЛА совпадает с ПОЛНЫМИМЕНЕМФАЙЛА!?
Получается, что каталог, в котором создана обработка, становится "ТЕКУЩИМКАТАЛОГОМ" файловой системы 1С8, хотя не ЯСНО, почему выхолощены такие понятия как: ПУТЬ и ПОЛНОЕИМЯ. Как в этой ситуации определить имя этого каталога из текущей или другой внешней обработки, возможно созданой ранее???
Я просмотрел форум по этой теме и доминирует мнение, что это невозможно.
1 Vitello
 
13.09.09
16:32
Нужно узнать полное имя файла внешней обработки? или что?
2 ПТР
 
13.09.09
18:26
Я в текущей обработке создал файл как новый. Объявил в строке Короткое имя файла:  
1.ВыбФайл = Новый Файл("КороткоеИмя");
2.Убедился,что ВыбФайл.Существует()=Истина.
3.И что я получаю Далее:
3.1   ВыбФайл.ПолноеИмя="КороткоеИмя";
3.2   ВыбрФайл.Путь="";
Где Полное Имя в обычном смысле, относительно корневого каталога?
Где Путь от корневого каталога до короткого имени?
3 hhhh
 
13.09.09
20:38
(2) вопрос на засыпку. Корневого каталога чего?
4 Jolly Roger
 
13.09.09
20:52
(0) у обработки есть ИспользуемоеИмяФайла...
ну, вообще, не стоит класть файлы куда попало...
5 ПТР
 
13.09.09
21:23
Тогда какой смысл ВЛОЖЕН в понятия ПУТЬ И ПОЛНОЕИМЯФАЙЛА?
6 Mitriy
 
13.09.09
21:41
(5) ты чем недовольный? ты путь указал, для того, чтобы требовать его?
7 ПТР
 
13.09.09
22:29
Я в каталог базы добавил текст с путями возможного размещения обработок.
При загрузке я вывожу на рабочий стол  "Обработку-Диспетчер" в таблице которого размещены  файловые адреса моих "горячих" обработок. Диспетчер сам по Путям Текста находит объявленные в таблице короткими именами обработки. Эти обработки могут размещаться в разных каталогах. Но главная задача диспетчера заключается в избавлении меня от необходимости изменять пути в таблице диспетчера при переносе БД с одного компьютера на другой. Повышая интеллект "Диспетчера" я столкнулся с невполне объяснимыми явлениями, в т.ч. и в части обсуждаемых понятий.
8 Vitello
 
13.09.09
22:31
(7)Храни обработку прямо в базе и не парься.
9 Vitello
 
13.09.09
22:31
+(8)пример см. справочник Внешние обработки в типовых.
10 Serg_1960
 
13.09.09
22:33
Автор не подозревает о наличие в конфе справочника "Внешние обработки"? К чему этот цирк-шапито с "диспетчером"?
11 Vitello
 
13.09.09
22:35
(10)Вполне вероятно что он "свежий" семерошник :)
12 Serg_1960
 
13.09.09
22:38
Упс, сорри, - не подумал об этом.
13 ПТР
 
13.09.09
23:01
Справочник "Внешние обработки" конфигуратора не обеспечивает значительной доли сервиса, по сравнению с моим диспетчером. В справочнике д.б. заполнено поле с файловым адресом обработки и как быть при смене файлового пространства, например, при переносе БД с одного компютера на другой. Кроме того, через справочник оперативно редактировать текст обработки с помощью отладчика нельзя. Необходимо после каждой коррекции модулей активизировать обработку в справочнике заново.
14 Vitello
 
13.09.09
23:05
(13)Этот справочник хранит обработку в двоичном виде целиком, и пофигу ему "файловое пространство".
15 Serg_1960
 
13.09.09
23:29
Справочник внешних обработок, по сути своей, является хранилишем данных. Можете его использовать вместо каталога для обработок. Разрешаю :)
Достаточно написать процедуру выгрузки обработки из справочника во внешний файл для редактирования и процедуру загрузки после редактирования...
Впрочем, как с ним работать, интерактивно или программно, - решать Вам.
16 ПТР
 
14.09.09
09:28
Все таки мы ушли от начальной темы.
Что такое ПУТЬ и что такое ПОЛНОЕИМЯФАЙЛА в терминах 1С8 применительно к такой сущности как ФАЙЛ?
17 hhhh
 
14.09.09
09:34
(16) если написано, ПОЛНОЕИМЯФАЙЛА, ты должен указать ей полное имя файла. На бред, типа

ВыбФайл.ПолноеИмя="КороткоеИмя";

она не ведется.
18 ПТР
 
14.09.09
12:14
Видимо мой вопрос неправильно понят.
Мой фрагмент: ВыбФайл.ПолноеИмя="КороткоеИмя"; это не оператор присвоения, а запись, показвывающая чему равно фактическое значение левой части равенства.
ПОДЧЕРКИВАЮ для файла объявленного существующим по короткому имени
1. фактическое значение(ВыбФайл.ПОЛНОЕИМЯ)="Короткое имя";
2. фактическое значение(ВыбФайл.ПУТЬ)="";
19 Serg_1960
 
14.09.09
14:47
А как Вас правильно понять с Вашей абстрактной конструкцией "КороткоеИмя"? Синтакс-помощник ясно и недвухсмысленно требует:
"...<Имя> (обязательный) Тип: Строка. ПОЛНОЕ имя файла или каталога, с которым будет связан конструируемый объект..." Озвучьте реальный пример - будет конкретный разговор :(
20 ПТР
 
14.09.09
15:12
//Пример
//ПолноеИмя обработки: "e:\1C\ВнОбработки\ЗагрКТЛ.epf"
//Объявляю файл
ФайлОбр= Новый Файл("ЗагрКТЛ.epf");
Если ФайлОбр.Существует() тогда
   //Файл по короткому имени найден.
   //Допускаю, что нахожусь в текущем каталоге
   //Перед этим из этого каталога загружал др.обработки
   //Ожидаю увидеть:
   //1.Факт.знач.(ФайлОбр.Имя) д.б.="ЗагрКТЛ.epf"    
   //2.Факт.знач.(ФайлОбр.Путь) д.б.="e:\1C\ВнОбработки"    
   //3.Факт.знач.(ФайлОбр.ПолноеИмя)д.б.="e:\1C\ВнОбработки\ЗагрКТЛ.epf"    
   //Что Вижу:
   //1.Факт.знач.(ФайлОбр.Имя)="ЗагрКТЛ.epf"    
   //2.Факт.знач.(ФайлОбр.Путь)=""    
   //3.Факт.знач.(ФайлОбр.ПолноеИмя)="ЗагрКТЛ.epf"    
КонецЕсли;
21 Wehrmacht
 
14.09.09
15:16
(20) А вопрос-то в чем? Почему вы видите не то, что ожидаете?
22 ПТР
 
14.09.09
15:19
Собственно вопрос в этом и заключается. Почему я не вижу ожидаемого пути и ожидаемого полного имени.
Платформа не древняя, Конфы и УТ и УПП результат одинаковый.
23 НЕА123
 
14.09.09
15:27
(0)
пустота - это и есть ТЕКУЩИЙКАТАЛОГ.
если ТЕКУЩИЙКАТАЛОГ изменится, то должно измениться полноеИмя и путь?
24 Wehrmacht
 
14.09.09
15:27
(22) Может вы не того ожидаете? =)
25 НЕА123
 
14.09.09
15:29
(0)
> Получается, что каталог, в котором создана обработка,становится "ТЕКУЩИМКАТАЛОГОМ" файловой системы 1С8...

неправда.
26 НЕА123
 
14.09.09
15:32
+(25)
неа. скорее всего тут Вы правы. но "ТЕКУЩИЙКАТАЛОГ" можно меняется многими методами.
27 Jolly Roger
 
14.09.09
15:43
(0) читаем внимательно СП (капсы мои):
Файл (File)
По имени файла
Синтаксис:
Новый Файл(<Имя>)
Параметры:
<Имя> (обязательный)
Тип: Строка. ПОЛНОЕ имя файла или каталога, с которым будет связан конструируемый объект.

Какие еще могут быть вопросы? Вопрос может быть один - почему платформа не генерит исключение, когда ей передаешь <Имя>, не содержащее разделителя каталогов...
28 Serg_1960
 
14.09.09
15:48
Отвяньте все :) Автор прав. Есть такой баг или фича (кому как).
  Если во внешней обработке работать с файлами, не указывая явно каталог, то используется "по умолчанию" каталог из полного имени файла внешней обработки. И этот "по умолчанию" каталог не прописывается в соответствующих свойствах.

Корректно работает код, когда явно указывается полное имя файла, везде где оно требуется. Например:

ПолноеИмяФайлаОбработки = ЭтотОбъект.ИспользуемоеИмяФайла;
ИмяКаталогаОбработки = "";
ИмяФайлаОбработки = "";
РаботаСФайлами.ПолучитьКаталогИИмяФайла(ПолноеИмяФайлаОбработки, ИмяКаталогаОбработки, ИмяФайлаОбработки);
Сообщить("ИмяКаталогаОбработки="+ИмяКаталогаОбработки);
Сообщить("ИмяФайлаОбработки="+ИмяФайлаОбработки);
   
ИмяФайла = ИмяКаталогаОбработки + "\" + "Короткое.Имя";
   
Текст = Новый ТекстовыйДокумент;
Текст.ДобавитьСтроку("Новая строка");
Текст.Записать(ИмяФайла, КодировкаТекста.UTF8);
Текст = Неопределено;
   
Файл = Новый Файл(ИмяФайла);
Если Файл.Существует() Тогда
  Сообщить("Имя="+Файл.Имя);
  Сообщить("ИмяБезРасширения="+Файл.ИмяБезРасширения);
  Сообщить("ПолноеИмя="+Файл.ПолноеИмя);
  Сообщить("Путь="+Файл.Путь);
  Сообщить("Расширение="+Файл.Расширение);
КонецЕсли;
Файл = Неопределено;
Возврат;
29 Wehrmacht
 
14.09.09
15:50
(28) Т.е. а если я не во внешней обработке сделаю тоже самое, он мне покажет чо?
30 Wehrmacht
 
14.09.09
15:50
(29) +всмысле не ваш код, а код автора.
31 Serg_1960
 
14.09.09
15:54
Увидите то, что автор озвучил :) Точнее сказать - НЕ увидите :(
32 hhhh
 
14.09.09
16:01
(25) да нет правда, последний каталог 1С автоматом делает текущим. Например делаю сравнение объединение конфигураций, каталог шаблонов, потом например хочу открыть внешнюю обработку - он мне сразу подсовывает в качестве текущего каталог шаблонов, хотя ни я ни ПТР этого не ожидаем.
33 Jolly Roger
 
14.09.09
16:01
(28) >Корректно работает код, когда явно указывается полное имя файла, везде где оно требуется.

конгениально! СП курит в сторонке...
34 ПТР
 
14.09.09
16:07
Понятно. Спасибо!
Кстати, как можно программно, не используя диалог выбора изменять текущий каталог в 1С8?
35 Serg_1960
 
14.09.09
16:12
(32) Ой-ли? Поведение конфигуратора, интерактивная работа - не стоит "переносить" на язык...
(33) Можешь сказать/объяснить лучше - делай. Или нервно покури в сторонке :)
(34) А зачем? Зачем использовать "текущий" каталог. Есть что - то можно использовать значения из настройки пользователя, КаталогВременныхФайлов(), ПолучитьИмяВременногоФайла()...
36 Jolly Roger
 
14.09.09
16:15
(35) все предельно ясно изложено в (27)...
37 Serg_1960
 
14.09.09
16:18
Поясню: Если использовать для записи файлов "текущий" каталог (не нравится мне такой термин, да Бог с ним) - то юзверь может нарваться на каталог с ограничением доступа - "только чтение"...

(36) Читай (19) - я первый "ясно и недвухсмысленно" :)
38 Serg_1960
 
14.09.09
16:22
И кстати, раз пошла такая пьянка, - кое-что еще из СП:

ТекстовыйДокумент (TextDocument)
ИспользуемоеИмяФайла (UsedFileName)
Использование:
Чтение и запись.
Описание:
Тип: Строка. Содержит полное имя файла, которое будет использоваться при сохранении текстового документа пользователем.
Данное свойство будет заполняться:
1. При программной установке значения;
2. При интерактивном открытии документа из файла;
3. При вызове метода Показать, если в нем указано имя файла;
4. При вызове пользователем команды "Сохранить как…".
Сериализуется.