|
6 | 6 | // |
7 | 7 | ///////////////////////////////////////////////////////////////////// |
8 | 8 |
|
9 | | - |
10 | 9 | // Проверяет существование файла или каталога |
11 | 10 | // |
12 | 11 | // Параметры: |
|
35 | 34 |
|
36 | 35 | Объект = Новый Файл(Путь); |
37 | 36 |
|
38 | | - Возврат Объект.Существует() и Объект.ЭтоФайл(); |
| 37 | + Возврат Объект.Существует() И Объект.ЭтоФайл(); |
39 | 38 |
|
40 | 39 | КонецФункции // ФайлСуществует() |
41 | 40 |
|
|
51 | 50 |
|
52 | 51 | Объект = Новый Файл(Путь); |
53 | 52 |
|
54 | | - Возврат Объект.Существует() и Объект.ЭтоКаталог(); |
| 53 | + Возврат Объект.Существует() И Объект.ЭтоКаталог(); |
55 | 54 |
|
56 | 55 | КонецФункции // КаталогСуществует() |
57 | 56 |
|
|
138 | 137 | // Возвращаемое значение: |
139 | 138 | // <Строка> - относительный путь файла |
140 | 139 | // |
141 | | -Функция ОтносительныйПуть(Знач ПутьКорневогоКаталога, Знач ПутьВнутреннегоФайла, Знач РазделительПути = Неопределено) Экспорт |
| 140 | +Функция ОтносительныйПуть(Знач ПутьКорневогоКаталога, Знач ПутьВнутреннегоФайла, |
| 141 | +Знач РазделительПути = Неопределено) Экспорт |
142 | 142 |
|
143 | 143 | Если ПустаяСтрока(ПутьКорневогоКаталога) Тогда |
144 | 144 | ВызватьИсключение "Не указан корневой путь в методе ФС.ОтносительныйПуть"; |
|
155 | 155 | Рез = Сред(Рез, 2); |
156 | 156 | КонецЕсли; |
157 | 157 | Если Найти("\/", Прав(Рез, 1)) > 0 Тогда |
158 | | -Рез = Лев(Рез, СтрДлина(Рез)-1); |
| 158 | +Рез = Лев(Рез, СтрДлина(Рез) - 1); |
159 | 159 | КонецЕсли; |
160 | 160 | Если РазделительПути <> Неопределено Тогда |
161 | 161 | Рез = СтрЗаменить(Рез, "\", РазделительПути); |
|
182 | 182 | Возврат Файл.ПолноеИмя; |
183 | 183 | КонецФункции // ПолныйПуть(Знач ОтносительныйИлиПолныйПуть) Экспорт |
184 | 184 |
|
185 | | - |
186 | 185 | // Подготовить шаблон к использованию в регулярке путем экранирования служебных символов |
187 | 186 | // |
188 | 187 | // Параметры: |
|
218 | 217 | Возврат Шаблон; |
219 | 218 |
|
220 | 219 | КонецФункции |
| 220 | + |
| 221 | +// Дополнение к методу ОбъединитьПути |
| 222 | +// - разделители пути приводятся к единому разделителю, которые актуален для текущей системы |
| 223 | +// - если в одном из путей встречается корневой слеш, то исключается получения корневого пути от диска, |
| 224 | +// чем страдает метод движка ОбъединитьПути |
| 225 | +// ОбъединитьПути("E:\my\test", "\images", "upload\pic.png") выведет неожиданное \images\upload\pic.png |
| 226 | +// а ОбъединитьПутиПравильно выведет ожидаемое E:\my\test\images\upload\pic.png |
| 227 | +// |
| 228 | +// Параметры: |
| 229 | +// Путь1 - Строка - часть пути. |
| 230 | +// Путь2 - Строка - часть пути. |
| 231 | +// Путь3 - Строка - часть пути. Необязательно. |
| 232 | +// Путь4 - Строка - часть пути. Необязательно. |
| 233 | +// |
| 234 | +// Возвращаемое значение: |
| 235 | +// Строка - финальный путь с разделителями, которые актуальны для текущей системы |
| 236 | +// |
| 237 | +Функция ОбъединитьПути(Знач Путь1, Знач Путь2, Знач Путь3 = "", Знач Путь4 = "") Экспорт |
| 238 | + |
| 239 | +ВсеПути = Новый Массив; |
| 240 | +ВсеПути.Добавить(Путь1); |
| 241 | +ВсеПути.Добавить(Путь2); |
| 242 | + |
| 243 | +Если Не ПустаяСтрока(Путь3) Тогда |
| 244 | +ВсеПути.Добавить(Путь3); |
| 245 | +КонецЕсли; |
| 246 | + |
| 247 | +Если Не ПустаяСтрока(Путь4) Тогда |
| 248 | +ВсеПути.Добавить(Путь4); |
| 249 | +КонецЕсли; |
| 250 | + |
| 251 | +Компоненты = Новый Массив; |
| 252 | +Для каждого Путь Из ВсеПути Цикл |
| 253 | + |
| 254 | +// К единому виду разделителей. |
| 255 | +ВремПуть = СтрЗаменить(Путь, "\", "/"); |
| 256 | +ВремКомпоненты = СтрРазделить(ВремПуть, "/", Ложь); |
| 257 | +Для каждого Компонент Из ВремКомпоненты Цикл |
| 258 | +Компоненты.Добавить(Компонент); |
| 259 | +КонецЦикла; |
| 260 | + |
| 261 | +КонецЦикла; |
| 262 | + |
| 263 | +РезультирующийПуть = СтрСоединить(Компоненты, ПолучитьРазделительПути()); |
| 264 | + |
| 265 | +Возврат РезультирующийПуть; |
| 266 | + |
| 267 | +КонецФункции |
0 commit comments