1с удалить файл программно
1С Предприятие 8.3, УФ (толстый клиент), клиент-серверный режим, динамический список, множественное выделение.
В поле элементов справочника хранятся имена файлов.
Требуется при удалении из справочника удалять и файлы (с диска).
Прописал в модуле объекта справочника в ПередУдалением() Отмена = истина если выбивает исключение при удалении файла. (раз файл не удалился, то и элемент справочника оставить)
УдалитьФайлы() не удаляет файлы (и не выбивает исключений, если файлы заняты). По хелпу метод на сервере доступен.
Как побороть? Что я не учёл?
(12) Как вариант, создавайте их в расшаренной папке, которую видит сервер. И отправляйте ему сетевой путь.
ну и код свой бы приложил
(5) В том и вопрос что файлы всегда остаются на диске, УдалитьФайлы() не удаляет их. Если базу завести в файловом режиме - удаляёт; в клиент-серверном - не удаляет.
(6) значит у агента сервера, нет прав на файловые операции. На сервере, оно работает не от пользователя, а от агента.
Либо пути неверные.
Должно все работать и на сервере.
Еще, может быть какое то кэширование на самом сервере. У меня на прошлой работе, админы всю сетку на цитриксах и виртуалках намутили, - так много странностей насмотрелся при файловых операциях..то не появляется файлы, то не удаляются..потыкаешь, поперезапускаешь - раз, все заработает. Но тут, природы явления я не могу объяснить
А вообще, раз ошибки нет, значит реально пути некорректные. Она же ошибку генерит только если у файла read only, а если файла по пути нет - то и удалять нечего, никакой ошибки и не будет.
Думаю, в путях проблема.
(7) Еще есть вариант, что файл на месте, но у одной из папок в пути к нему нет доступа к чтению содержимого
(8) Всё равно непонятно, почему не бросаются исключения. Файла нет, либо прав - результат-эксепшн то должен быть? А оно ведёт себя никак, будто УдалитьФайлы() не компилируется…
(7) Sorry, поправочка. Файлы лежат на RDP сервере, сервер 1С предприятия на другой машине.
Выходит, пути к файлам клиентские.
(9) Передавайте пути так, как их видит сервер 1С. Тогда удалит. Ну и права проверить не помешает, конечно.
(10) Да, таки пути клиентские; файлы создаются/обрабатываются в функциях &НаКлиенте.
Значит, сервер 1С их никак не (у)видит?
(12) Как вариант, создавайте их в расшаренной папке, которую видит сервер. И отправляйте ему сетевой путь.
собрать файлы в массив и удалять по одному
потом снова собрать в массив и если его количество не ноль, значит столько то удалить не удалось по причинам. таким то
В программе 1С практически ни один объект нельзя сразу физически удалить. Данная возможность настраивается в ролях (права «удаление» и «интерактивное удаление»). Обычно разработчик не разрешает выполнение таких действий во избежание плачевных последствий в дальнейшем.
Пометка на удаление означает неактуальность объекта для пользователя. При установке пометки на документ, автоматически отменяется его проведение.
Далее будет подробно рассмотрено, как можно не только пометить объект на удаление в 1С 8.3, но и физически удалить помеченный объект. Этот принцип применяется во всех конфигурациях 1С.
Пример удаления элемента справочника Номенклатура
В нашем примере мы будем удалять элемент справочника «Номенклатура», но процесс удаления документа или любого другого объекта ничем не отличается от приведенной инструкции.
Установим пометку на удаление непосредственно из формы списка данного справочника. Для этого выделим нужную нам позицию и нажмем на клавиатуре клавишу Del (либо воспользовавшись контекстным меню).
Программа задаст нам вопрос о необходимости (либо снятии) пометки на удаление. Ответим «Да».
После этого у выбранного нами элемента справочника появится знак . Напоминаем, что если у объекта конфигурации доступны права на удаление, либо интерактивное удаление, тогда при помощи комбинации Shift+Del вы сразу сможете удалить его физически.
Теперь можно приступить к непосредственному удалению нашего объекта справочника. Если у вас не будет доступен данный функционал, значит, вы не имеете соответствующих на него прав.
Выберите в меню «Администрирование» пункт «Удаление помеченных объектов».
Получите понятные самоучители по 1С бесплатно:
Так же данный функционал доступен в меню «Все функции».
В открывшемся окне программа предложит вам выбрать, хотите ли вы удалить все помеченные на удаление объекты или только некоторые. В нашем примере мы будем удалять только номенклатуру «Доска обрезная 50*250*300».
После того, как вы нажмете «Далее», выведутся все помеченные на удаление объекты. Отметим флагом только нашу номенклатурную позицию «Доска обрезная 50*250*300» и нажмем «Удалить».
Некоторое время система будет вычислять, не ссылаются ли другие объекты информационной базы на нашу доску. В результате программа выдала нам уведомление о том, что удаление невозможно.
Нажмем на кнопку «Далее» для просмотра тех объектов, из-за которых удаление невозможно.
Чтобы наша номенклатура все-таки удалилась, необходимо пометить на удаления все объекты в таблице справа. Еще одним вариант – везде заменить наш объект на другой.
С простановкой пометки на удаления у связанных объектов у вас не должно возникнуть проблем, поэтому мы выберем замену.
Нажмите на кнопку «Заменить…».
Выберем ту номенклатурную позицию, на которую будет произведена замена во всех связанных объектах. После этого вам снова будет доступно окно для повторного удаления. На этот раз все прошло успешно, о чем нас уведомила программа.
Автоматическое удаление помеченных объектов по расписанию
В более новых версиях программы 1С (начиная с 8.3) разработчики добавили очень удобную возможность автоматического удаления помеченных объектов по расписанию. Давайте рассмотрим, как сделать данную настройку.
В открывшейся форме перейдите в раздел «Регламентные операции» и установите флаг в пункте «Автоматически удалять помеченные объекты по расписанию». После этого для вас станет активной гиперссылка «Настроить расписание». Перейдите по ней.
Перед вами откроется стандартная форма настройки расписания. При необходимости можете изменить установленные по умолчанию значения, но так чтобы время запуска данной регламентной операции не совпадало с рабочим временем сотрудников вашей организации.
Не редко мы встречаем такие ситуации, что после обновления конфигурации 1С у некоторых пользователей начинают появляться необъяснимые ошибки работы программы. На одном компьютере может работать обновленный код, а на другом старый. Для решения данной проблемы в первую очередь необходимо очистить кэш 1С в 8.3.
Дело в том, что в процессе работы большинство программ, в том числе и 1С автоматически создает временный буфер для быстрого доступа с наиболее часто используемой информацией. В случае с 1С, файлы конфигурации подгружаются из кэша, что существенно ускоряет работу с программой. При возникновении каких-либо сбоев кэш обрабатывается не правильно, что и приводит к некорректной работе программы.
Помимо прочего, очистка кэша является одним из первых способов устранения ошибки формата потока данных.
Самые быстрые и простые способы очистки кэша
Важно знать, что перед очисткой кэша необходимо выйти из 1С!
После очистки кэша автоматически сбросятся введенные ранее имена пользователей во всех информационных базах. В режиме конфигуратора будет необходимо заново открывать конфигурацию базы данных.
1 способ — выполнить скрипт
Данный способ очистки кеша будет в первую очередь полезен администратором и сотрудникам технической поддержки, к которым часто обращаются пользователи с различными проблемами.
Вам будет необходимо создать в блокноте файл с текстом:
@echo off
@FOR /D %%i in («%userprofile%\AppData\Local\1C\1Cv8\. -. -. -. -. ») do rd /s /q «%%i»
@FOR /D %%i in («%userprofile%\AppData\Local\1C\1Cv81\. -. -. -. -. ») do rd /s /q «%%i»
@FOR /D %%i in («%userprofile%\AppData\Local\1C\1Cv82\. -. -. -. -. ») do rd /s /q «%%i»
@FOR /D %%i in («%userprofile%\AppData\Roaming\1C\1Cv8\. -. -. -. -. ») do rd /s /q «%%i»
@FOR /D %%i in («%userprofile%\AppData\Roaming\1C\1Cv81\. -. -. -. -. ») do rd /s /q «%%i»
@FOR /D %%i in («%userprofile%\AppData\Roaming\1C\1Cv82\. -. -. -. -. ») do rd /s /q «%%i»
@FOR /D %%i in («%userprofile%\Application Data\1C\1Cv8\. -. -. -. -. ») do rd /s /q «%%i»
@FOR /D %%i in («%userprofile%\Application Data\1C\1Cv81\. -. -. -. -. ») do rd /s /q «%%i»
@FOR /D %%i in («%userprofile%\Application Data\1C\1Cv82\. -. -. -. -. ») do rd /s /q «%%i»
@FOR /D %%i in («%userprofile%\Local Settings\Application Data\1C\1Cv8\. -. -. -. -. ») do rd /s /q «%%i»
@FOR /D %%i in («%userprofile%\Local Settings\Application Data\1C\1Cv81\. -. -. -. -. ») do rd /s /q «%%i»
@FOR /D %%i in («%userprofile%\Local Settings\Application Data\1C\1Cv82\. -. -. -. -. ») do rd /s /q «%%i»
и сохранить его в файл с форматом .bat. Особо ленивые могут скачать его тут (замените расширение файла с .txt на .bat).
Перед запуском bat-файла для очистки кэша 1С не забудьте выйти из 1С.
Данный способ хорош тем, что он подходит для операционных систем Windows XP и Windows 7, а так же для всех версий технологической платформы 8.х, ведь кэш у них находится в разных местах.
2 способ — вручную
Если вы хотите почистить кэш вручную, то сначала необходимо определить, где он находится в файловой системе. Вам необходимо очистить сразу 2 папки, которые находятся в разных местах в зависимости от операционной системы и версии технологической платформы 1С.
В Windows XP:
%userprofile%\Local Settings\Application Data\1C\1Cv82
%userprofile%\Application Data\1C\1Cv82В Windows 7:
%userprofile%\AppData\Roaming\1C\1Cv82
%userprofile%\AppData\Local\1C\1Cv82Всерверныхоперационныхсистемах Windows 2008
C:\Users\\AppData\Local\1C
C:\Users\\AppData\Roaming\1C
Получите понятные самоучители по 1С бесплатно:
Так же вы можете узнать адрес хранения временных файлов в форме настройки из окна списка информационных баз.
В данном случае получен адрес такого типа:
«C:\Users\username\AppData\Roaming\1C\1cv8\tmplts» и кэш будет находиться по адресу: «C:\Users\username\AppData\Roaming\1C\1cv8\».
После того, как вы перешли в нужные каталоги с кэш-файлами, вам необходимо их очистить. Папки, которые нужно удалить имеют формат «fcb8341b-07bd-48b9-97f4-6d1cfae7f002». Подобные папки выделены красным на рисунке ниже:
При очистке кэша 1С вручную будьте осторожны и не удаляйте ничего лишнего!
3 способ — директива ClearCache
Данный способ подходит для случаев с частым возникновением случаев некорректной работы 1С 8 и суть его заключается в запуске программы с дополнительным параметром «/ClearCache». Параметр указывается при нажатии на кнопку «Изменить…» в списке информационных баз на последней вкладке.
К недостаткам данного метода можно отнести снижение производительности работы и доступность только на тонком клиенте.
Смотрите также видео по очистке временных файлов в 1С:
Из этой статьи вы узнаете, как в удалить в 1С объект при помощи программного кода, а также как поставить пометку на удаление.
В предыдущей статье, я рассказывал, как интерактивно удалить в 1С объект, и что для этого нужно настроить в правах конфигурации:
Программное удаление справочника в 1С
Для того чтобы программно удалить экземпляр справочника в 1С, необходимо воспользоваться методом Удалить объекта справочника. Для демонстрации разберу пример: разместим на форме обработки реквизит с ссылкой на справочник Контрагенты.
И при выполнении команды формы обработки, будем удалять этот экземпляр справочника.
В этом коде удаление экземпляра справочника я производил в серверном контексте. Сначала при помощи метода ПолучитьОбъект() из ссылки был получен экземпляр объекта справочника, а потом этот экземпляр удален при помощи метода Удалить(). В реквизит Контрагент управляемой формы я записал пустую ссылку, чтобы отображение ссылки удаленного объекта не вводило в заблуждение.
Замечу, что программное удаление произошло при таких правах на объект.
Право «Интерактивное удаление» снято, то есть мы не можем непосредственно удалять экземпляр этого объекта, но мы можем удалить его программно (благодаря установленному праву Удалить).
Замечу, что при программном удалении объекта контроль ссылочной целостности не происходит! Поэтом не следует злоупотреблять этой возможностью!
Программное удаление документа в 1С
Документ программным способом удаляется также, как и справочник: нужно воспользоваться методом Удалить() экземпляра объекта документа. Например, на форме этой обработки я размещу реквизит с ссылкой на документ.
А при выполнении команды документ будет удаляться.
Как и в случае справочника, программное удаление документа стало возможным благодаря установленному праву «Удалить».
Пометка на удаление программно в 1С
Для того, чтобы программно пометить на удаление объект необходимо воспользоваться методом объекта УстановитьПометкуУдаления.
Для документов он имеет следующий синтаксис: УстановитьПометкуУдаления(), где параметр ПометкаУдаления имеет тип булево.
Если — Истина, то пометка будет установлена, если Ложь – пометка будет снята.
Переделаем предыдущий пример: на форме разместим две команды.
Одна команда будет устанавливать пометку на удаление у документа в реквизите, вторая снимать.
В этом коде, в процедуре УстановитьНаСервере() мы устанавливаем пометку на удаление, передав в метод УстановитьПометкуУдаления параметр Истина, а в процедуре СнятьНаСервере() снимаем пометку, передав Ложь.
Для объектов справочников метод УстановитьПометкуУдаления имеет следующий синтаксис:
Параметр ВключаяПодчиненные имеет тип Булево, и если установлено Истина, то будут помечены на удаление подчиненные элементы (если справочник иерархический), а также все объекты подчиненного справочника (если есть).
Продемонстрируем работу второго параметра: на форму поместим реквизит с типом булево, реквизит с типом ссылка на справочник Контрагенты , и сделаем две команды: установить и снять.
В обработчиках команд будем устанавливать и снимать пометку на удаление.
У справочника Контрагенты включим иерархию.
И также сделаем подчиненный справочник.
Если мы установим пометку для группы с флажком подчиненные.
То будет помечена группа и все входящие в неё объекты.
А без установленного флага Подчиненные будет помечена только группа.
Тоже самое с объектами из подчиненного справочника. При установленном флаге Подчиненные.
Будет помечен на удаление и сам элемент справочника, и объекты подчиненного ему справочника.
А иначе, будет помечен только сам элемент.
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
В этой статье узнаем как осуществляется удаление в 1С, научимся удалять объекты в 1С 8.3 напрямую, помечать их на удаление, и удалять помеченные на удаление объекты 1С.
Прямое удаление в 1С
В платформе 1С 8.3 имеется возможность удалить любой объект так, что он сразу исчезнет из базы 1С. Чтобы такая возможность предоставлялась, необходимо для нужного объекта у роли установить право «Интерактивное удаление».
Если такое право у объекта установлено, то в меню «Ещё» формы списка объекта появится команда «Удалить».
После применения этой команды, объект будет полностью удален из базы. Перед его удалением появится вопрос о том, согласны мы удалить этот объект или нет.
Не рекомендуется в реальной базе оставлять возможность интерактивного удаления объектов.
Сейчас я продемонстрирую почему.
Допустим, у нас ссылка на элемент справочника Контрагент, который мы собираемся удалить, указана в каком-то реквизите документа.
Таким образом, интерактивное удаление проходит без контроля ссылочной целостности: удаляя какой-то объект, платформа не проверяет, указана ли ссылка этот объект где-то ещё, тем самым мы ставя под угрозу ссылочную целостность данных базы.
Пометка удаления 1С
Для того, чтобы случайно не удалить объект, ссылка на который возможно указана в каких-то других данных базы 1С, необходимо сначала пометить этот объект на удаление, а потом удалить его при помощи специальной утилиты, которая в процессе удаления будет осуществлять контроль ссылочной целостности.
Чтобы пользователь имел возможность пометить на удаление какой-то объект, необходимо, у роли для этого объекта было установлено право «Интерактивная пометка на удаление».
На рисунке выше я также снял право «Интерактивное удаление», с целью запретить удалять экземпляры объекта без контроля ссылочной целостности.
Сейчас пользователь не может сразу удалить какой-то элемент объекта, для этого ему необходимо сначала пометить этот объекта на удаление. Делается это так: нужно выделить объект в форме списка, вызвать контекстное меню и выполнить команду «Пометить на удаление/снять пометку» (или просто нажать клавишу Del).
Также, можно пометить сразу несколько элементов, выделив нужные.
После выполнения команды, выйдет вопрос о том, нужно ли помечать объекты или нет.
Если мы ответим Да, то выделенные объекты будут помечены на удаление — слева появятся соответствующие значки.
Нам осталось удалить помеченные объекты из базы.
Удаление помеченных в 1С
Если нам нужно дать пользователю возможность удалять из базы помеченные на удаление элементы какого-нибудь объекта, то необходимо, чтобы у роли было для этого объекта установлено право «Интерактивное удаление помеченных».
Для удаления помеченных на удаление объектов следует воспользоваться утилитой «Удаление помеченных объектов». Начиная с платформы 1С 8.3.15, путь к ней следующий: необходимо в меню «Сервис и настройка» выполнить команду «Функции для технического специалиста».
В открывшемся окне следует в ветке «Стандартные» найти и выполнить команду «Удаление помеченных объектов».
В платформе редакции 8.3.14 и ниже, путь к окну с командой «Удаление помеченных объектов» будет следующий:
В открывшейся утилите «Удаление помеченных объектов», сначала будет предложено выбрать вариант удаления: полное удаление или выборочное.
Если выбрать выборочное удаление, то в следующем окне будет предложено выбрать те объекты, которые следует удалить.
В этой же утилите можно посмотреть, где в базе присутствует ссылка на объект, который пытались удалить.
Таким образом, установка пометки на удаление и последующее применение утилиты «Удаление помеченных объектов» позволяет производить более щадящее для ссылочной целостности базы данных удаление объектов.
Более подробно и основательно разработка в 1С дается в моей книге:
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
Читайте также: