Локальная файловая система из 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! 20%

Перенос данных 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 22338 руб.

12.06.2017    141458    798    297    

419

SALE! 10%

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

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

35000 31500 руб.

15.12.2021    23984    169    51    

127

SALE! 10%

Перенос данных 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.19.x).

35000 31500 руб.

23.07.2020    51175    228    69    

185

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    36568    94    66    

89

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    171154    303    257    

378

SALE! 15%

Перенос данных 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 13005 руб.

18.02.2016    186854    589    509    

526

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    194948    150    243    

280

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    83235    32    125    

64
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SeiOkami 3515 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 3515 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 3515 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 Ответить
Оставьте свое сообщение