Попытка с определенным промежутком времени.

1. Intercititude 30.03.21 14:53 Сейчас в теме
Добрый день всем!
Следующая ситуация:

1) Пользователь руками жмёт по кнопке и попадает в метод "УдалитьФайлы(ПутьПапки,"*") ( чистим папку сперва) , после туда записываются новые файлы. Этот метод находится в общем модуле "На сервере".

2) Так же есть обмен, который выгружает эти файлы из этой папки с определенной переодичностью.

3) В итоге если будет пересечение 1 и 2, вылезет ошибка "совместного доступа к файлу".

Собственно помогите, как с помощью попытки, сделать так, чтобы в (1) через некоторое время попыталось это сделать ещё раз,если с первой попытки не получилось!?
Ну или без попытки..
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
2. user1058740 30.03.21 15:03 Сейчас в теме
Было уже похожее обсуждение, My Webpage в нем рассматриваются два варианта, один с именами файлов, второй при помощи попытки получения двоичных данных. Второй кстати используется так же в типовых конфигурациях. Еще я где-то видел что без попытки можно через Новый Файл, метод Существует().
Intercititude; +1 Ответить
5. user633533_encantado 11 30.03.21 15:05 Сейчас в теме +0.14 $m
Попытка

Исключение

КонецПопытки;

			КонДата = ТекущаяДата() + 10;
			Пока ТекущаяДата() < КонДата Цикл
				  //ждем 10 секунд
			КонецЦикла;

///снова попытка
Показать
Intercititude; +1 1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1058740 30.03.21 15:03 Сейчас в теме
Было уже похожее обсуждение, My Webpage в нем рассматриваются два варианта, один с именами файлов, второй при помощи попытки получения двоичных данных. Второй кстати используется так же в типовых конфигурациях. Еще я где-то видел что без попытки можно через Новый Файл, метод Существует().
Intercititude; +1 Ответить
3. kceon 30.03.21 15:05 Сейчас в теме
Процедура ПробуемУдалитьФайлы()
Попытка
  УдалитьФайлы(ПутьПапки,"*")
Исключение
  СтрокаЗапроса = "ping -n 1 -w "+Формат(1000 * ЗадержкаСекунд, "ЧДЦ=0; ЧГ=") + " 127.255.255.255"; 
  WshShell = Новый COMОбъект("WScript.Shell"); 
 WshShell.Run(СтрокаЗапроса, 0, -1); 
 ПробуемУдалитьФайлы();
КонецПопытки

КонецПроцедуры
Показать


Как то так)
Intercititude; +1 Ответить
4. starik-2005 3039 30.03.21 15:05 Сейчас в теме
Я борол созданием дополнительного файла с другим расширением. Этот файл создавался после полной записи первого, а второй процесс проверял наличие второго файла, и если он есть - удалял первый и второй. Ну и пока второго файла нет - первый не записан полностью...
5. user633533_encantado 11 30.03.21 15:05 Сейчас в теме +0.14 $m
Попытка

Исключение

КонецПопытки;

			КонДата = ТекущаяДата() + 10;
			Пока ТекущаяДата() < КонДата Цикл
				  //ждем 10 секунд
			КонецЦикла;

///снова попытка
Показать
Intercititude; +1 1 Ответить
9. Intercititude 30.03.21 15:14 Сейчас в теме
(5) Только это надо в "Исключение же "?

КонДата = ТекущаяДата() + 10;
            Пока ТекущаяДата() < КонДата Цикл
                  //ждем 10 секунд
            КонецЦикла;
10. user633533_encantado 11 30.03.21 15:27 Сейчас в теме
(9) Это уже нюансы. Главное сам способ вполне рабочий.
11. Intercititude 30.03.21 15:38 Сейчас в теме
(10) Решил проверить Ваш способ.

Открыл файл в этой папке и попробовал выполнить метод "УдалитьФайлы". Поставил на 30 сек.
Закрыл файл.
30 сек прошло и всё равно вылазит ошибка: "Ошибка совместного доступа к файлу 'путь\Thumbs.db"

Непонятно сколько времени файл Thumbs.db винда держит...

Спустя примерно пару минут отработало.. Как то криво выходит.
13. Intercititude 30.03.21 17:36 Сейчас в теме
(10) Плюс интересно насколько это влияет на производительность за 120 сек он 7милионов раз по циклу прошёл..
14. user633533_encantado 11 30.03.21 18:00 Сейчас в теме
(13) Ну посмотри как загружен процессор и память в эти 2 минуты. Не думаю, что будет заметно, он же не делает в эти две минуты ничего. Я такую задержку делал для автоматической рассылки из 1С иначе почтовый сервер не давал отправлять сразу кучу писем.
6. ab_initio 95 30.03.21 15:08 Сейчас в теме
Может быть по кнопке (1) не сразу кидаться удалять файлы, а подключить обработку ожидания с попыткой и повтором сколько-то раз..
8. Intercititude 30.03.21 15:11 Сейчас в теме
(6) Она для клиента вроде как только.
12. ab_initio 95 30.03.21 15:39 Сейчас в теме
(8) Ну да. Всё верно. Кнопку пользователь на клиенте нажимает, запускается обработка ожидания, а из нее - серверный вызов.
7. DenisVol 3 30.03.21 15:09 Сейчас в теме
  // Удалим в каталоге все файлы CSV
Попытка
		    УдалитьФайлы(Каталог, "*"); 
		Исключение
			#Если Клиент Тогда
				Сообщить(ОписаниеОшибки());
			#КонецЕсли
    	КонецПопытки;

Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот