|
Проверка на существование файла | ☑ | ||
---|---|---|---|---|
0
Wefast
21.01.16
✎
11:11
|
Пишу:
ФайлИмпорта = Новый Файл(ИмяФайла); Если ФайлИмпорта.Существует() Тогда Сообщить("Файл cуществует"); КонецЕсли; В общем он проверяет просто существует ли файл в каталоге в принципе. И не важно как он называется. Т.е. ИмяФАйла D:\1.doc ИмяФАйла D:\2.doc А в папке есть только 1.doc Но функция эта в обоих случаях выдает истину. |
|||
1
Масянька
21.01.16
✎
11:12
|
(0) Да вы что, издеваетесь сегодня?
|
|||
2
vicof
21.01.16
✎
11:13
|
(1) Пятница
|
|||
3
vicof
21.01.16
✎
11:13
|
Практически наступила
|
|||
4
НЕА123
21.01.16
✎
11:14
|
(1)
ТС не издевается. это все суслики (с) |
|||
5
Масянька
21.01.16
✎
11:14
|
(3) Судя по всему, и не заканчивалась...
|
|||
6
Serg_1960
21.01.16
✎
11:19
|
Вот интересно сколько постов натроллят, прежде чем автору помогут в его проблеме?
|
|||
7
vicof
21.01.16
✎
11:19
|
(6) Автор вопрос задать не может, остается только троллить
|
|||
8
aka AMIGO
модератор
21.01.16
✎
11:21
|
Вопрос вполне задан, суть его просматривается.
Постите по-существу дела. |
|||
9
Масянька
21.01.16
✎
11:21
|
(8) Извини, а где вопрос?
|
|||
10
mikecool
21.01.16
✎
11:23
|
автор врет, функция работает нормально
щас окажется, что либо линул, либо макось - место где лежит файл |
|||
11
aka AMIGO
21.01.16
✎
11:23
|
(9) ну, ведь ясно, что автор (по умолчанию) ищет файл 2.doc, функция возвращает истину, хотя этого файла нет.
|
|||
12
aka AMIGO
21.01.16
✎
11:25
|
+11 мог напутать в коде..
|
|||
13
vicof
21.01.16
✎
11:25
|
(0) Сообщить(ИмяФайла)
|
|||
14
Масянька
21.01.16
✎
11:25
|
(11) Не ясно... А если имя файла не важно - как можно найти 2.doc?
|
|||
15
Dotoshin
21.01.16
✎
11:26
|
(12) Тогда пусть полностью код выкладывает, иначе долго гадать придется...
|
|||
16
vicof
21.01.16
✎
11:27
|
(14) Плохая из тебя ванга
|
|||
17
Масянька
21.01.16
✎
11:29
|
(16) Не важно :)
|
|||
18
Serg_1960
21.01.16
✎
11:30
|
(7) А попросить автора озвучить алгоритм, где по его мнению "не работает" функция проверки?
|
|||
19
vicof
21.01.16
✎
11:31
|
(18) Лень...
|
|||
20
mikecool
21.01.16
✎
11:31
|
(18) так попроси, автор то слился )
|
|||
21
aka AMIGO
21.01.16
✎
11:38
|
(14) Ну я согласен, в общем топик далёк от совершенства. Ясно, однако, что "не важно как он называется" для ТС означает:
- есть путь (папка) - в этой папке есть файлы - в поиске указан отсутствующий файл - функция Существует() возвращает истину |
|||
22
Масянька
21.01.16
✎
11:41
|
(21) Это для ТС, а для программы - если "имя файла не важно" значит Истина :)
А так да - надо весь код глянуть. |
|||
23
Wefast
21.01.16
✎
15:21
|
ЗабиндинныйПуть = "\\NEWSERV\Share\123\!Files\";
ТипРекв = ТипЗнч(Элемент.Значение); Если Не(ТипРекв) = Тип("Неопределено") Тогда // Проверяю чтобы был выбран сам файл а не только тип файла. У меня там составной тип данных ЭлементыФормы.КоманднаяПанель2.Доступность = ИСТИНА; // если файл выбран, делаю доступной табличную часть формы Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗначенияСвойствОбъектов.Значение КАК Файл, | ЗначенияСвойствОбъектов.Свойство |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Объект = &Объект | И ЗначенияСвойствОбъектов.Свойство.Наименование ПОДОБНО ""%Путь%"""; Запрос.УстановитьПараметр("Объект", ВыбранноеЗначение); Результат = Запрос.Выполнить().Выгрузить(); // Тут я получил все доп свойсва документа (свойство начинается с "Путь"). ЧистаяТаблица = Результат.Скопировать(); // скопировал результа ЗаписиДляУдаления = Новый ТаблицаЗначений; // создал новую таблицу ЗаписиДляУдаления.Колонки.Добавить("Файл",Новый ОписаниеТипов("Строка"),"Файл"); ЗаписиДляУдаления.Колонки.Добавить("Свойство",,"Свойство"); Для каждого Строка из ЧистаяТаблица Цикл / Путь = ЗабиндинныйПуть + СтрЗаменить(Год(ВыбранноеЗначение.Дата),Символы.НПП,"")+"\"+ТипЗнч(ВыбранноеЗначение)+"\"+ВыбранноеЗначение.Номер+"\"+Строка.Файл; КаталогНаДиске = Новый Файл(Путь); Если НЕ КаталогНаДиске.Существует() Тогда // проверяю есть ли файл по нужному мне пути НоваяСтрока = ЗаписиДляУдаления.Добавить(); // раз нету, добавляю ее в таблицу созданую НоваяСтрока.Свойство = Строка.Свойство; НоваяСтрока.Файл = Строка.Файл; ЧистаяТаблица.Удалить(Строка); // удаляю из Скопированной таблицы эту строку КонецЕсли; КонецЦикла; Если ЗаписиДляУдаления.Количество()>0 Тогда // Если накопились файлы которых на самом деле нет Режим = РежимДиалогаВопрос.ДаНет; Текст = "ru = ""Некоторые файлы не найдены, удалить записи в регистре "";" + " en = ""Do you want to continue?"""; Ответ = Вопрос(НСтр(Текст), Режим, 0); Если Ответ = КодВозвратаДиалога.Да Тогда Для каждого Строка из ЗаписиДляУдаления Цикл Запись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); // удаляю записи из регистра Запись.Объект = ВыбранноеЗначение; Запись.Свойство = Строка.Свойство; Запись.Прочитать(); Запись.Удалить(); Сообщить("Запись о не существующем файле "+Строка.Файл+ " удалена!"); КонецЦикла; ЭтотОбъект.ТабличнаяЧасть1.Загрузить(ЧистаяТаблица); // И загружаю в таб часть таблицу только с файлами что существую Иначе ЭтотОбъект.ТабличнаяЧасть1.Загрузить(Результат); // либо же ничего не очищаю и все записи по данному доку загружаю в таб часть КонецЕсли; Иначе ЭтотОбъект.ТабличнаяЧасть1.Загрузить(Результат); // Если файлы все есть то просто загружаю Результат запроса в таб часть КонецЕсли; Иначе //тут хочу что то сделать чтобы не нажимать дважды кнопку выбора( т.е. выбрал тип файла и сразу же открылось окно с документами КонецЕсли; Пример. У меня в регистре 3 записи D:\d.doc ОН существует D:\dыва.doc его нет Абракадабра Просто строка, такого файла там тоже нет Он выдает мне в таблицу два значения |
|||
24
Stim
21.01.16
✎
15:23
|
зачем спрашивали весь код?
|
|||
25
Кирпич
21.01.16
✎
15:23
|
(23) отладчиком пройди и посмотри
|
|||
26
Wefast
21.01.16
✎
15:27
|
Да, скорее всего не в функции дело, а где то накосячил с логикой и условиями.
Тогда еще вопрос СтандартнаяОбработка = ЛОЖЬ; Путь = ЗабиндинныйПуть + СтрЗаменить(Год(Документ.Дата),Символы.НПП,"")+"\"+ТипЗнч(Документ)+"\"+ДОкумент.Номер+"\"+Элемент.Значение; Попытка ЗапуститьПриложение(Путь); Исключение // КонецПопытки; Открывает файл если есть приложение по умолчанию которое его открывает. Можно ли как то открыть каталог если к примеру не получается открыть сам файл? Если он еще в проводнике там и с позиционируется на файле то совсем круто. А еще лучше если он стандартное окно винды запустит, когда нет приложения по умолчанию |
|||
27
Масянька
21.01.16
✎
15:30
|
(26) А зачем ТАКОЙ бубен?
|
|||
28
Wefast
21.01.16
✎
15:31
|
(27) Что не так?
|
|||
29
Stim
21.01.16
✎
15:31
|
(27) где ты бубен увидела?
|
|||
30
Масянька
21.01.16
✎
15:32
|
(28) Вопрос: что сие значит? Для чего? Ну, весь код...
|
|||
31
Масянька
21.01.16
✎
15:34
|
(29) А что это по-твоему?
Грузить в таблицу файлы... В 1С... Зачем? |
|||
32
Wefast
21.01.16
✎
15:35
|
(30)
У ряда документов нет возможности прикреплять файлы. Но есть возможность хранить доп свойства. Строковое значение этого свойства ограничено 50символами. Поэтому хранить там весь путь затратно. Так как путь формируется в зависимости от документа Путь что мне дали/ГОД/Тип дока/Номер документа/файл То хранить в доп свойствах решено только имя самого файла. Выбрал документ. Заполнилась табличная часть с этими свойствами. По кнопке открытия должен открыться файл. Если за типом прикреплено какое то приложение, то Процедура ЗапуститьПриложение() замечательно открывает этот файл, если нет - то выдает ошибку. Не плохо бы открыть каталог в таком случае (30) |
|||
33
Wefast
21.01.16
✎
15:37
|
Таблица не правильно формируется, потому что я удаляю строку из таблицы которую обхожу, и он в итоге все строки не обходит. Так я понял.
Создам видимо еще таблицу. Но их количество мне кажется немного не правильным с точки зрения оптимизации. Ну да и ладно наверное |
|||
34
Fish
21.01.16
✎
15:38
|
(32) "У ряда документов нет возможности прикреплять файлы" - Конфа типовая? В чём проблема прикрутить типовой функционал из БСП?
|
|||
35
Stim
21.01.16
✎
15:39
|
(31) какие файлы, там только наименование файлов
|
|||
36
Wefast
21.01.16
✎
15:39
|
(34) Управление строительной организацией. Заказчик не захотел снимать конфигурацию с поддержки.
|
|||
37
Fish
21.01.16
✎
15:40
|
(36) Так не снимай, просто включи "редактируется с сохранением поддержки".
|
|||
38
Масянька
21.01.16
✎
15:41
|
(34) Поддержу.
(33) Не изобретай велосипед. (36) А ты зачем? Объясняй заказчику, что данные условия - ну, очень затратно... |
|||
39
HardBall
21.01.16
✎
15:44
|
||||
40
Wefast
21.01.16
✎
15:44
|
(38) Я тоже не вижу смысла править 19 документов снимая при этом конфигурацию частично с поддержки(что при какой нибудь новой редакции или обновление, принесет лишь головную боль).
|
|||
41
Wefast
21.01.16
✎
15:44
|
(39) спасибо
|
|||
42
Wefast
21.01.16
✎
15:51
|
Попытка
ЗапуститьПриложение(ПутьКфайлу) ИСключение КомандаСистемы ("start ПУтьККаталогу"); КонецПопытки Что то не отрабатывает как я хотел( |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |