5

1С и ДокументPDF

Столкнулся со странностью, прошу совета.
Тонкий клиент, платформа 8.3.23.2040.


В клиентской процедуре нужно показать файл на форме, в другой клиентской процедуре - переименовать файл, файлы локально на клиенте.

Есть реквизит формы ПДФ с типом ДокументPDF, вынесен на форму в поле с видом Поле PDF документа.

Процедура П1()
_____ФайлПДФ = "какой-то файл";
_____ПДФ.Прочитать(ФайлПДФ);
КонецПроцедуры;

Процедура П2()
_____ПереместитьФайл(ФайлПДФ, ДругойФайл);
//Просто так переименовать не получается - файл занят.
КонецПроцедуры;

Пробовал так:

Процедура П2()

_____ПустойПДФ = Новый ДокументPDF();

_____ПДФ = ПустойПДФ;

_____ПереместитьФайл(ФайлПДФ, ДругойФайл); //Всё равно выходит та же ошибка.

КонецПроцедуры;

Но если вставить серверный вызов, то всё работает.

Процедура П2()

_____ПустойПДФ = Новый ДокументPDF();

_____ПДФ = ПустойПДФ;

_____КакаяТоПроцедураНаСервере();

_____ПереместитьФайл(ФайлПДФ, ДругойФайл); //Работает идеально

КонецПроцедуры;

Дело не в задержке перед переименованием - ждал до минуты, не отпускает.

1C:Предприятие 8

394 поста4.1K подписчиков

Правила сообщества

В 1С можно всё. Я проверял.

0
Автор поста оценил этот комментарий

если есть доступ в каталог, то может быть файлы по 1 Гб и более размером?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Нет, 50-100 КБ.
И опять же - если перед переименованием сделать серверный вызов, то всё работает.

1
Автор поста оценил этот комментарий

У пользователя под которым запущен клиент есть право записи и удаления в целевой папке?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Да.

показать ответы
0
Автор поста оценил этот комментарий
Если надо только прочитать, то надо использовать ЧтениеPDF и там есть закрыть. Если надо изменить, то надо завершить через документpdf.записать
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Спасибо, проверю как доберусь до работы.

0
Автор поста оценил этот комментарий
Могу и ошибаться, но тут похоже так. Когда вызывается П1, в ней нет явного закрытия файла, и поэтому для системы он занят. А т.к. процедура П2 происходит на уровне клиента, то и происходит ошибка, а когда происходит серверный вызов и возврат, происходит обновление окружения. Думаю надо в П1 явно добавить файл.закрыть()
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

".закрыть()" выглядит самым логичным решением, но такого метода у ДокументPDF не существует, насколько я знаю.

показать ответы
0
Автор поста оценил этот комментарий

В доках написано что нужно строки в синтаксисе. У вас там строки?

Просто по синтаксису не понятно.

Иллюстрация к комментарию
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да, код рабочий, там всё верно. Всё работало для файлов других типов (картинок), теперь нужно добавить пдф - и тут столкнулся с такими особенностями. Собственно, оно же работает, если втиснуть серверный вызов. Кажется, что у типа ДокументPDF не хватает метода "Развидеть()" или чего-то подобного.

показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества