![]() |
![]() |
![]() |
|
Как узнать Полное Имя Файла? | ☑ | ||
---|---|---|---|---|
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. При вызове пользователем команды "Сохранить как…". Сериализуется. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |