Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Метод SaveContent не отпускает каталог #1001

Open
dorexpro opened this issue Feb 15, 2024 · 10 comments
Open

Метод SaveContent не отпускает каталог #1001

dorexpro opened this issue Feb 15, 2024 · 10 comments
Labels
Непонятное поведение Поведение не воспроизводится или поведение нужно исследовать

Comments

@dorexpro
Copy link

dorexpro commented Feb 15, 2024

После использования метод SaveContent() невозможно удалить каталог, куда сохранялся файл. Сам файл удаляется, а на каталог ругается "открыт в другой программе".
Код примерно такой:

Задача = Организация.CreatePackageSendTask2();
...
ДокументУПД = Задача.AddDocument(_TypeNamedId,_DocumentFunction,_DocumentVersion);
...
ДанныеДокументаУПД = Задача.DocumentsToSend.GetItem(0);
ДанныеДокументаУПД.SaveContent(Организация.Id,СохранитьВФайл);

Диадок API версии: AddIn x86 5.45.0.912

@NickZubashevskiy
Copy link

Здравствуйте!

Повторил у себя, баг не воспроизвелся. Возможно доступ к директории блокирует другой процесс. Это можно посмотреть следующим образом:

  1. Win+R
  2. В открывшемся окошке ввести: resmon
  3. В открывшемся окне монитора ресурсов перейти на вкладку ЦП, и внутри окна будет вкладка связанные дескрипторы, в ней ввести название директории. Ниже будут показаны процессы, в которых открыта эта директория

Если директория блокируется все-таки 1с-ным процессом, то нужно знать немного больше:
Как этот каталог создается?
Если не вызывать метод SaveContent, каталог удаляется?

@dorexpro
Copy link
Author

Каталог блокирует именно SaveContent. Если заремарить вызов этого метода, то никакой блокировки каталога нет.
Каталог создается вручную в "проводнике".

@NickZubashevskiy
Copy link

А какая версия Windows?

@dorexpro
Copy link
Author

Windows Server 2016 Datacenter на виртуальной машине под Hyper-V. На хосте Windows Server 2019 Datacenter.
Работа идет в терминале.

@NickZubashevskiy
Copy link

А в какой момент баг возник: при переходе в связи с чем-то на 5.45, или в принципе при первом использовании SaveContent? И если с переходом, то какая версия стояла до этого?
Проблема в том, что не получается воспроизвести ту же ошибку, и само поведение странное, т.к. в компоненте отдельно каталог нигде не открывается
Также хотелось бы точно удостовериться, что каталог блочит именно 1сный процесс, а не, к примеру, антивирус или что-то еще при записи в этот каталог

@dorexpro
Copy link
Author

Баг этот был замечен, когда понадобилось выгружать пакет из нескольких документов на отправку. Ранее использовали сохранение и проблем не возникало.

			ДанныеДокументаУПД = Задача.DocumentsToSend.GetItem(0);
			ДанныеДокументаУПД.SaveContent(Организация.Id,СохранитьВФайл);
			КаталогДляСохранения = СохранитьВФайл;
			Пока 1=1 Цикл
				Если Прав(КаталогДляСохранения,1) = "\" Тогда
					Прервать;
				КонецЕсли;
				КаталогДляСохранения = Лев(КаталогДляСохранения, СтрДлина(КаталогДляСохранения)-1);
				Если СокрЛП(КаталогДляСохранения) = "" Тогда
					Прервать;
				КонецЕсли;
			КонецЦикла;
			Если СокрЛП(КаталогДляСохранения) <> "" Тогда
				Для поз = 1 По Задача.DocumentsToSend.Count-1 Цикл
					ДанныеДокументаПакета = Задача.DocumentsToSend.GetItem(поз);
					Попытка
						ДанныеДокументаПакета.SaveContent(Организация.Id,КаталогДляСохранения + ДанныеДокументаПакета.FileName);
					Исключение
						Сообщить(ОписаниеОшибки());
						Сообщить("Ошибка сохранения документа из пакета");
					КонецПопытки;
				КонецЦикла;
			КонецЕсли;

@dorexpro
Copy link
Author

Какие-то дополнительные от меня требуются данные?

@GilimkhanovDenis
Copy link
Contributor

Не удаётся ни воспроизвести, ни аналитически найти что может захватывать репозиторий

До версии 5.49.0 не было вообще никакой логики, в которой бы захватывался хэндл папки - были только хэндлы на файлы. Пока мыслей, кроме предложения обновить компоненту нет

@GilimkhanovDenis
Copy link
Contributor

Может быть есть какой-то тестовый стенд, где можно воспроизвести и посмотреть?

@dorexpro
Copy link
Author

Может быть есть какой-то тестовый стенд, где можно воспроизвести и посмотреть?

К сожалению, нет.

Не удаётся ни воспроизвести, ни аналитически найти что может захватывать репозиторий

До версии 5.49.0 не было вообще никакой логики, в которой бы захватывался хэндл папки - были только хэндлы на файлы. Пока мыслей, кроме предложения обновить компоненту нет

Понятно, спасибо.

@GilimkhanovDenis GilimkhanovDenis added the Непонятное поведение Поведение не воспроизводится или поведение нужно исследовать label Jul 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Непонятное поведение Поведение не воспроизводится или поведение нужно исследовать
Projects
None yet
Development

No branches or pull requests

3 participants