Версия для печати темы (https://pro1c.org.ua/index.php?s=9e3374d9027a5308246eedc9928f9a09&showtopic=44558)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Отбор файлов в каталоге по дате изменения (8.3.10.2561)

Автор: AleksWhite7 06.03.18, 16:23

Здравствуйте!
Кто может поделитесь опытом отбора файлов в каталоге по дате изменения.

Количество обрабатываемых файлов более 300тыс.
На данный момент использую поиск по маске и перебор по файл.ПолучитьВремяИзменения(). Решение получается очень долгое.
Хочу ускорить за счёт откидывания файлов с датой изменения менее требуемой.

Переискал много информации, но решения так и не нашёл.
Склоняюсь к тому, что средствами 1С не решить и надо использовать сторонний метод.

Дайте импульс, куда смотреть. Спасибо.

Автор: andr_andrey 07.03.18, 12:29

AleksWhite7 @ Вчера, 16:23 * ,
Насчет стороннего метода - идея правильная, и выбор огромный.

Автор: AleksWhite7 07.03.18, 15:13

Вот и начал двигаться в эту сторону.
Пока есть батничек

@echo off
::введите маску для искомых файлов
set mask=*.*
::исходная папка
set src="D:\Мой каталог"
::Будем отбирать файлы изменённые от даты. Формат даты dd.MM.yyyy
set mydate=+1.1.2018

:: Засекаем время начала скрипта
set _time=%time%
set /a _hours=100%_time:~0,2%%%100,_min=100%_time:~3,2%%%100,_sec=100%_time:~6,2%%%100,_cs=%_time:~9,2%
set /a _started=_hours*60*60*100+_min*60*100+_sec*100+_cs

forfiles /p %src% /m %mask% /d %mydate% /c "cmd /c echo @fname;@ext;@fdate @ftime" >> Findfiles.txt

:: Определяяем время завершения работы
set _time=%time%
set /a _hours=100%_time:~0,2%%%100,_min=100%_time:~3,2%%%100,_sec=100%_time:~6,2%%%100,_cs=%_time:~9,2%
set /a _duration=_hours*60*60*100+_min*60*100+_sec*100+_cs-_started

:: заполнение переменных
set /a _hours=_duration/60/60/100,_min=100+_duration/60/100%%60,_sec=100+(_duration/100%%60%%60),_cs=100+_duration%%100

echo Done at: %_time% took : %_hours%:%_min:~-2%:%_sec:~-2%.%_cs:~-2%


Если надо использовать UNC путь тогда:
Монтируем диск x:
net use x: %src%

И отключаем после работы
net use x: /delete

Нарисовалась такая картина:
Вызываем скрипт из 1С. Потом грузим полученный файл в ТаблицуЗначений и обрабатываем как надо.



Автор: andr_andrey 07.03.18, 16:43

AleksWhite7 @ Сегодня, 15:13 * ,
Тоже вариант. Мне привычнее Perl/Python/Go.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua