Локальная файловая система из 1С, как это работает.

06.11.20

Администрирование - Информационная безопасность

Внешняя обработка для работы с файлами из 1С по типу FAR или Norton Commander, Total Commander и немного занудной философии. Работает 8.3.15 и выше. Работает в тонком, толстом, Web и мобильном клиенте. Поставляется отдельным файлом можно включить куда угодно, зависит только от платформы 1С.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
РаботаСФайламиИз1С
.epf 13,94Kb
16
16 Скачать (1 SM) Купить за 1 850 руб.

Доброго времени суток!

Долгое время, изучая изменения функций работы с файлами в 1С, я не понимал, что же нам предлагают. Нет, старый дубовый подход со времен 7.7 был прост и понятен. Но новый, "безмодальный", "асинхронный" и еще "Расширения для работы с Файлами" в браузере в принудительном варианте всегда вызывали вопросы. Пришло время разобраться. 

Так что же мы имели раньше?

Для программиста получение информации о файле всегда сопровождалось работой с объектами файловой системы или функциями типа file_exists (в php) или Файл.Существует() (в 1С) - получаем сразу результат и пишем дальше алгоритм действий. Ведь просто же получем объект Файл, смотрим результат Файл.Существует() и в зависимости от результата делаем дополнительные действия:

КаталогНаДиске = Новый Файл(ИмяКаталога);
Если КаталогНаДиске.Существует() Тогда
    Возврат Истина;
Иначе
    Ответ = Вопрос("Каталог не существует. Создать?", РежимДиалогаВопрос.ОКОтмена);
    Если Ответ = КодВозвратаДиалога.ОК Тогда
        СоздатьКаталог(ИмяКаталога);
        Возврат Истина;
    Иначе
        Возврат Ложь;
    КонецЕсли;
КонецЕсли;

Но с 2009 года в 1С стало все по-другому и теперь мы имеем встроенный метод НачатьПроверкуСуществования. И результат этой проверки мы получим не сразу, а уже внутри другой функции, специально указанной внутри вызова. Получается неудобно, длинно и непонятно где искать. Но так нам говорят необходимо для web. И маркетологи уже шепчут нам в ухо - это же асинхронно...

И вот тут у меня возникает диссонанс. То есть нам хотят сказать, что получение существования файла это длительный процесс запроса к удаленной системе и ожидание ответа от нее? Стоп, но на сервере не нужно никаких НачатьПроверку, там все прекрасно работает Файл.Существует(). То есть  если мы переходим на событийную модель, как в nodеjs то это должно работать именно на сервере.

Так как же нам работать (что делать)  и как во всем этом разобраться (кто виноват).

На первый вопрос практика и стальные нервы  принесут нам плоды успеха.

Для циклической проверки существования файлов мы используем зацикливание на себя типа с правильной точкой входа и выхода из стека вызовов типа:

&НаКлиенте
Процедура ПолучитьМассивДисковКомпьютераЗавершение(Существует, ДополнительныеПараметры) Экспорт
	
	Номер = ДополнительныеПараметры.Номер;
	Файл  = ДополнительныеПараметры.Файл;
	Поз   = ДополнительныеПараметры.Поз;
	
	Если Существует Тогда
		НовыйЭлемент = ДеревоПапок.ПолучитьЭлементы().Добавить();
		НовыйЭлемент.Папка = Файл.ПолноеИмя;
		НовыйЭлемент.ЭтоПапка = Истина;
		НовыйЭлемент.ДочерниеЗагружены = Ложь;
		НовыйЭлемент.ПолучитьЭлементы().Добавить();
		Элементы.ДеревоПапок.Обновить();
	КонецЕсли;
	
	Если Номер < НачальныйСписокКорневыхПапок.Количество() - 1 Тогда
		Номер = Номер + 1;
		Файл = Новый Файл(НачальныйСписокКорневыхПапок[Номер].Значение);
	    Файл.НачатьПроверкуСуществования(Новый ОписаниеОповещения("ПолучитьМассивДисковКомпьютераЗавершение", ЭтаФорма, Новый Структура("Файл, Номер, Поз", Файл, Номер, Поз)));
	КонецЕсли;	
	
КонецПроцедуры

 Многие скажут, что стоит подождать еще немного и с 8.3.18 можно будет писать в циклах

СуществуетФайл = Ждать Файл.СуществуетАсинх();

Но немногие понимают, что это практически немного другая оболочка закручивания того же самого, просто 1С воспользовалась текущей технологией Web(promise) по организации по организации получения многочисленных данных из удаленной системы, применив ее к задаче на локальной машине.

Так что же нам предложили в 2009 году как прикладным программистам? Получается нам предложили callback, завернутый в ОписаниеОповешения(). И даже функции работы с обещаниями в 8.3.18 не меняют этой сути, а просто перепаковывают примерно как программисты javascript свои callback-и в promise. Но в отличие от Web вся остальная схема работы 1С осталась синхронной. Взаимодействие с сервером в 1С само синхронно - последовательно вызываются функции клиента и сервера, ответ у HTTPЗапрос - получаем последовательно. А ОписаниеОповещения повесили на клиента и функции взаимодействия с пользователем. Бардак в головах? 

Нет не все функции в 1С будут прикрывать столь срамную реализацию. Есть и правильная  тенденция в ПолучитьФайлССервера с Оповещением и в них мы как раз начинаем получать правильное использование технологии. И это радует.

 

В второе важное, будем разбираться. 

В Web всегда была важна безопасность. Локальная файловая система отделена от доступа скриптов в браузере. Но 1С здесь решила сделать "все для пользователей" в результате при установке Расширений для работы с файлами, мы получаем доступ к локальной файловой системе. Да с подтверждением разрешения однократного и навсегда, но пускает и в техническом понимании это вызывает взрыв мозга. Ведь в Вэб пользователь каждый раз своими действиями переносить локальный файл, с которым будет работать в зону ответственности сервера. И это совсем не тоже, что дать разрешение однократно. 

Берем вот так просто и копируем выделенные файлы с сервера на указанную папку пользовательской машины в браузере.

Выделяем файлы для переноса, выделаем паку назначения и нажимаем копировать.

 

А функция НачатьЗапускПриложения с доступностью в браузере заставляет сердце йокать и подозревать что-то сильно нехорошее.

 

 

Но главное же быть полезным, а не правдивым ведь правда ;) 

И для ИСКЛЮЧИТЕЛЬНО для полезности предлагаю обработку для работы с файловыми системами клиента и сервера в виде всеми любимых двух панелей по типу FAR, Norton Commander. 

 

Чтобы пленить оригинальностью подхода, приведу список ссылок:

//infostart.ru/public/204472/

//infostart.ru/public/236487/

 

Р.S.

Проблема в мобильной приложении это поиск корневых папок, Android это будет типа /storage/emulated/0 или другое специально подобранное и доступ опять такой как у всей платформы 1С. Возможность накосячить большая ;)

Файлы Доступ к Файловой системе удалить копировать выполнить открыть

См. также

SALE! 15%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

26280 руб.

12.06.2017    142227    802    297    

423

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.236.x) и БП 3.0 (3.0.164.x). Правила подходят для версии ПРОФ и КОРП.

35000 руб.

15.12.2021    24354    172    51    

131

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.20.x).

35000 руб.

23.07.2020    51929    229    71    

187

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

48278 43450 руб.

25.02.2015    171438    305    257    

381

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

53111 47800 руб.

03.12.2020    36869    95    66    

92

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Платформа 1C v8.2 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

15300 руб.

18.02.2016    187192    591    512    

529

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в УПП 1.3 | из КА 2 в КА 1.1 | из КА 2 в УПП 1.3 | из КА 2 в УТ 10.3 | из ERP в КА 1.1 | из ERP в УТ 10.3 | из УТ 11 в УТ 10.3 | из УТ 11 в УПП 1.3 | из УТ 11 в КА 1.1 | Можно переносить только новые объекты, найденные в приемнике перезаписываться не будут | Есть фильтр по организации при выгрузке данных | Оперативно обновляем на новые релизы 1С

53111 47800 руб.

28.11.2015    83391    33    125    

65

SALE! 10%

Перенос данных 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Предлагаем качественное и проверенное временем решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных.

55778 50200 руб.

24.04.2015    195320    152    244    

282
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SeiOkami 3522 17.09.20 18:43 Сейчас в теме
В Web всегда была важна безопасность. Локальная файловая система отделена от доступа скриптов в браузере. Но 1С здесь решила сделать "все для пользователей" в результате при установке Расширений для работы с файлами, мы получаем доступ к локальной файловой системе.


а ещё доступ к файловой системе сервера, который можно получить внешней обработкой
privin731; +1 Ответить
2. Patriot1S 101 17.09.20 22:14 Сейчас в теме
(1) Ну доступ к файловой системе сервера web в той или иной мере есть всегда и здесь 1С ничего не мудрила.
А вот из Web запустить файл на локальной компьютере вот это и разрыв шаблона.
privin731; +1 Ответить
3. SeiOkami 3522 17.09.20 22:19 Сейчас в теме
(2) часто у пользователя веб-ресурса есть возможность работать с файлами сервера?)
privin731; +1 Ответить
4. Patriot1S 101 17.09.20 22:40 Сейчас в теме
(3) А Вам могу привести пример такого файла прямо сейчас https://infostart.ru/upload/main/a46/a46014992139602f90e106a31bff389a.png ;)
Ну вы скажете что это не напрямую, так и в 1С через функции 1С и конечно по разному...
privin731; +1 Ответить
5. SeiOkami 3522 18.09.20 07:33 Сейчас в теме
(4) ну так это ссылка специально опубликованная, а файлы сервера - нет. И не предполагаются к публикации. Было бы прикольно, если бы мы сейчас на ИС лазили по серверу и его диску C: )
11. Patriot1S 101 07.07.22 09:58 Сейчас в теме
(5) Эту дырку 1С пофиксили с помощью профилей безопасности сервера.
6. zqzq 25 18.09.20 09:28 Сейчас в теме
Но с 2009 года в 1С стало все по-другому и теперь мы имеем встроенный метод НачатьПроверкуСуществования. И результат этой проверки мы получим не сразу, а уже внутри другой функции, специально указанной внутри вызова. Получается неудобно - ДА. Но альтернативы нам не дают.
Как бы 1С уже пофиксили костыльную асинхронность:
https://wonderland.v8.1c.ru/blog/uluchsheniya-v-sintaksise-yazyka-1s-dlya-raboty-s-asinkhronnymi-funktsiyami/?sphrase_id=174831
(не проверял сам)
7. Patriot1S 101 22.09.20 15:22 Сейчас в теме
(6) Я бы сказал не пофиксили, а обернули аналогично javascript callback->promise, а суть осталась прежней.

Шутка про эти нововведения: Павел, а где установить флажок чтобы старая функция ПоместитьФайл стала работать так как ПоместитьФайлНаСерверАсинх без дополнительных заклинаний АСИНХ и Ждать? Спасибо ;)
8. пользователь 23.09.20 10:31
Сообщение было скрыто модератором.
...
9. Student1C 58 23.09.20 18:04 Сейчас в теме
На Мобильном клиенте будет работать, если ее внедрить в конфигурацию?
10. Patriot1S 101 23.09.20 22:05 Сейчас в теме
(9) Будет, на iphone не пробовал. а для Android корневую папку поставил /storage/emulated/0, но я так понимаю возможно для разных устройств она будет разная...
privin731; +1 Ответить
Оставьте свое сообщение