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

06.11.20

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

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

Файлы

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

Наименование Скачано Купить файл
РаботаСФайламиИз1С
.epf 13,94Kb
16 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

Долгое время, изучая изменения функций работы с файлами в 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! 10%

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

29040 руб.

12.06.2017    153968    905    304    

467

SALE! 10%

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

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

61356 55220 руб.

15.04.2019    79577    214    164    

153

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" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

52967 47670 руб.

25.02.2015    178627    330    278    

397

SALE! 10%

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

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

58422 52580 руб.

03.12.2020    42441    121    75    

115

SALE! 10%

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

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

38000 34200 руб.

15.12.2021    30237    217    58    

161

Информационная безопасность Поиск данных ServiceDesk, HelpDesk Журналы и реестры данных 8.3.14 Россия Бухгалтерский учет Бюджетный учет Налоговый учет Управленческий учет Платные (руб)

Полный контроль над изменениями в 1С без нагрузки на вашу базу. Мгновенный доступ к истории изменений, удобное сравнение и откат данных в один клик. Простой отчет с визуальным отображением изменений Откат на любую версию объекта в два клика История изменения данных хранится во внешней базе

180000 руб.

05.09.2025    1543    1    0    

3

SALE! 10%

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

Правила переноса кадровых и расчетных данных и справочной информации из "1С:УПП1.3" или "1С:КА 1.1" в "1С:ЗУП 3.1 | Разработан в формате КД 2 (правила конвертации данных) | При выгрузке есть фильтр по организациям | Обновляется при выходе новых релизов 1С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы

61356 55220 руб.

29.10.2018    59599    68    122    

68

SALE! 10%

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:ERP Управление предприятием 2.5 и 1С:Комплексную автоматизацию 2.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.255.x), ERP 2.5 (2.5.24.x), КА 2.5 (2.5.24.x).

38000 34200 руб.

24.06.2020    68029    92    28    

101
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SeiOkami 3604 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 3604 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 3604 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 61 23.09.20 18:04 Сейчас в теме
На Мобильном клиенте будет работать, если ее внедрить в конфигурацию?
10. Patriot1S 101 23.09.20 22:05 Сейчас в теме
(9) Будет, на iphone не пробовал. а для Android корневую папку поставил /storage/emulated/0, но я так понимаю возможно для разных устройств она будет разная...
privin731; +1 Ответить
Для отправки сообщения требуется регистрация/авторизация