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

06.11.20

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

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

Скачать файлы

Наименование Файл Версия Размер
РаботаСФайламиИз1С
.epf 13,94Kb
12
.epf 13,94Kb 12 Скачать

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

Долгое время, изучая изменения функций работы с файлами в 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С. Возможность накосячить большая ;)

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

См. также

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    133772    715    291    

385

SALE! 10%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0

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

Перенос позволяет настроить собственный обмен данными между указанными программами, альтернативный предлагаемому фирмой 1С. Перенос данных осуществляется из 1С:ERP 2 / 1С:КА 2 / 1С:УТ 11 в 1С:БП 3.0. Правила обмена оперативно обновляются при выходе новых релизов программы 1С, так что вы всегда будете иметь самую актуальную версию обработки.

38500 34650 руб.

15.04.2019    67939    175    136    

107

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3

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

Обработка позволяет не только перенести все документы, справочную информацию и начальные остатки из ERP 2 или КА 2 в ЗУП 3, но и организовать регулярный перенос данных между программами 1С:ERP 2 / КА 2 и 1С:ЗУП 3. Вы можете выбрать период отбора данных и установить фильтр по организациям, чтобы выгружать только необходимую информацию. Более того, перенос оперативно обновляется при выходе новых релизов программы 1С, так что вы всегда будете иметь самую актуальную версию обработки.

48278 43450 руб.

03.12.2020    33861    79    57    

77

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

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

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

28000 руб.

15.12.2021    19843    130    38    

88

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

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

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

28000 руб.

23.07.2020    45584    193    64    

151

SALE! 10%

Перенос данных из УПП 1.3 в ЗУП 3.1 или из КА 1.1 в ЗУП 3.1

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

Перенос кадровых и расчетных данных и справочной информации из "1С:Комплексная автоматизация, ред. 1.1" или "1С:Управление производственным предприятием, ред.1.3" в "1С:Зарплата и управление персоналом", ред. 3.1. Правила позволяют перенести кадровые данные сотрудников за весь период ведения учета в КА 1.1 / УПП 1.3 и расчетные данные за выбранный период (минимально необходимый - 2 года). Позволяют осуществить переход на ведение учета зарплаты и кадров в программе 1С:Зарплата и управление персоналом, ред. 3.1.

50722 45650 руб.

29.10.2018    54014    52    97    

55

SALE! 10%

Перенос данных из УПП 1.3 / КА 1.1 в БП 3.0

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

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

43889 39500 руб.

25.02.2015    168097    287    240    

371

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

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

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 11.12.2023, версия 9.5 - 9.9)

13200 руб.

20.11.2015    149873    363    375    

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


а ещё доступ к файловой системе сервера, который можно получить внешней обработкой
privin731; +1 Ответить
2. Patriot1S 99 17.09.20 22:14 Сейчас в теме
(1) Ну доступ к файловой системе сервера web в той или иной мере есть всегда и здесь 1С ничего не мудрила.
А вот из Web запустить файл на локальной компьютере вот это и разрыв шаблона.
privin731; +1 Ответить
3. SeiOkami 3410 17.09.20 22:19 Сейчас в теме
(2) часто у пользователя веб-ресурса есть возможность работать с файлами сервера?)
privin731; +1 Ответить
4. Patriot1S 99 17.09.20 22:40 Сейчас в теме
(3) А Вам могу привести пример такого файла прямо сейчас https://infostart.ru/upload/main/a46/a46014992139602f90e106a31bff389a.png ;)
Ну вы скажете что это не напрямую, так и в 1С через функции 1С и конечно по разному...
privin731; +1 Ответить
5. SeiOkami 3410 18.09.20 07:33 Сейчас в теме
(4) ну так это ссылка специально опубликованная, а файлы сервера - нет. И не предполагаются к публикации. Было бы прикольно, если бы мы сейчас на ИС лазили по серверу и его диску C: )
11. Patriot1S 99 07.07.22 09:58 Сейчас в теме
(5) Эту дырку 1С пофиксили с помощью профилей безопасности сервера.
6. zqzq 23 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 99 22.09.20 15:22 Сейчас в теме
(6) Я бы сказал не пофиксили, а обернули аналогично javascript callback->promise, а суть осталась прежней.

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