Ошибка при вызове метода контекста удалитьфайлы ошибка удаления файлов

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

При выполнении команды:

УдалитьФайлы(ИмяПорции); //Эта функция выполняется в толстом клиенте

                         // ИмяПорции = «C:Usersa.userAppDataLocalTemp5ba74ef2-9d66-4850-8a47-                   96b53b98bd35rphost_2007525_16102712.»

Такой файл существует.

Выходит ошибка:

{ОбщийМодуль.Анализ.Модуль(419)}: Ошибка при вызове метода контекста (УдалитьФайлы): Ошибка удаления файлов: Ошибка доступа к файлу ‘C:Usersa.malozemovAppDataLocalTemp5ba74ef2-9d66-4850-8a47-96b53b98bd35rphost_2007525_16102712.log’. 5(0x00000005): Отказано в доступе.

Если сделать в отладчике остановку по ошибке, и одновременно через проводник удалить этот файл — то он вручную удаляется, т.е. доступ есть.

Почему возникает ошибка?

ЧЯДНТ?

Спасибо.

В экселевском файле на определенной странице есть таблица. Нужно скопировать пару столбцов в справочник, в одном текст, в другом соответствующая картинка. Картинку с помощью сторонней библиотеки копирую в буфер и сохраняю в файл. Потом из файла в справочник. Все норм работает и отображает, но выдает ошибку при удалении временных файлов:

{ОбщаяФорма.ОсновнаяФорма.Форма(121)}: Ошибка при вызове метода контекста (УдалитьФайлы): Ошибка удаления файлов: Ошибка совместного доступа к файлу ‘C:tempРисунок12.bmp’

После закрытия 1ски все без проблем удаляется. Где-то эти файлы открыты и их закрыть надо, но не знаю где, и какой параметр обнулить. Наугад пробовал (строчки с «Неопределено» после закрытия экселя), но безрезультатно. Подскажите пожалуйста где ошибка.

З.Ы. 1С:Предприятие 8.3, учебная версия (8.3.5.1248).  конфигурация пустая, только справочник, общая форма и форма списка справочника. В 1с нуб, в программировании по большому счету тоже. :)

Эксель = Новый COMОбъект(«Excel.Application»);
Книга = Эксель.WorkBooks.Open(«C:LibraryIG.xls»);
Лист = Книга.WorkSheets(32);      

Для Строка = 12 По 15  Цикл   
      Лист.Cells(Строка,3).Copy();
        КартинкаПуть = «C:tempРисунок»+Строка+».bmp»;
      Буфер = Новый ComОбъект(«cClipBoardObject.cClipBoard»);
      Буфер.GetClipBoard(КартинкаПуть);

                   Файл = Новый Картинка(КартинкаПуть);
   Хранилище = Новый ХранилищеЗначения(Файл, Новый СжатиеДанных(9));

         НовыйОбъект = Справочники.Справочник1.СоздатьЭлемент();
      НовыйОбъект.Наименование = Лист.Cells(Строка,2).Value;
      НовыйОбъект.ДанныеФайлаКартинки = Хранилище;
      НовыйОбъект.Записать();

      КонецЦикла;
Эксель.Application.Quit();

         Буфер = Неопределено;
      КартинкаПуть = Неопределено;
      Картинка = Неопределено;
      Файл = Неопределено;
      Хранилище = Неопределено;

      УдалитьФайлы(«C:temp»);

simol3
20.06.2013 18:52 Комментарий: 105

simol3

При первом запуске:

Код 1C v 8.2 УП

 
{ВнешняяОбработка.Декомпилятор1Сv8.МодульОбъекта}: Ошибка при вызове метода контекста (УдалитьФайлы)
по причине:
Ошибка удаления файлов
по причине:
Ошибка доступа к файлу 'C:Userso.simashkevichAppDataLocalTempCv8cf.dll'

При втором запуске

Код 1C v 8.2 УП

 
{ВнешняяОбработка.Декомпилятор1Сv8.МодульОбъекта}: Ошибка при вызове метода контекста (Записать)
по причине:
Ошибка совместного доступа к файлу 'C:Userso.simashkevichAppDataLocalTempCv8cf.dll'

Если переименовать файл и запустить последующие разы

Код 1C v 8.2 УП

 Не удается загрузить dll (не хватает прав?)   

win7+KAV
Как победить?

caps_lock9
13.06.2013 02:20 Комментарий: 104

caps_lock9

Спасибо большое!) полезно и классно!)

soi
12.06.2013 13:09 Комментарий: 103

soi

Спасибо огромное

Gorynia
05.06.2013 15:58 Комментарий: 102

Gorynia

Декомпилятор 1Cv8.x Apocalypse edition (c) 2012 awa
Версия контейнера 1С: 216.0 (версия 1С 8.2)
Не достаточно значений в стеке на шаге 16
Неизвестный опкод 41 на шаге 23
Не достаточно значений в стеке на шаге 56
Не удалось декомпилировать общий модуль xxxx
{ВнешняяОбработка.Декомпилятор1Сv8.МодульОбъекта}: Индекс находится за границами массива
Возможно, модуль обфусцирован!
Обработка завершена!

Mark2k
04.06.2013 14:38 Комментарий: 101

Mark2k

Сказать «КРУТО» — значит ни чего не сказать! УАУ! Ай, да автор!!!
Для тех у кого
«Ошибка доступа к файлу ‘C:UsersaAppDataLocalTempCv8cf.dll’»
Найти эту либу, переименовать (удалить не даст, залочена), попробовать снова!
Наслаждаться творением!! И не вопить — «НЕ РАБОТАЕТ».

iones
03.06.2013 16:11 Комментарий: 100

iones

Супер!!! Спасибо огромное!!!

Make
29.05.2013 12:09 Комментарий: 99

Make

Великолепно! Автору респект.

bizneswork
10.05.2013 13:02 Комментарий: 98

bizneswork

СПАСИБО ОГРОМНОЕ !!!!!! *06

orfos
22.04.2013 21:38 Комментарий: 97

orfos

Авто Гений! Спасибо! Моему счастью нет границ!!

lucky07
15.04.2013 16:42 Комментарий: 96

lucky07

Спасибо большое, получилось.)

Alliene
03.04.2013 10:53 Комментарий: 95

Alliene

Автору спасибо, отработало как надо.

vvi
28.03.2013 15:35 Комментарий: 94

vvi

ААААААААААААААААААААААА АВТОРУ РЕСПЕКТ!!!!!!!!!!!!!!!!!

sstvit
28.03.2013 10:46 Комментарий: 93

sstvit

Может что не так делаю.. Обработал для теста свою же конфу *.cf с запароленным модулем, создался файл с добавлением к имени «_U». Загрузил его как новую конфу, мой модуль по прежнему требует ввести пароль. При работе обработка правильно определила имя запароленного модуля.

leews2
19.03.2013 15:28 Комментарий: 92

leews2

Огромное спасибище! мегаценная тулза, всё работает как надо.

irwin
18.03.2013 12:18 Комментарий: 91

irwin

Спасибо, работает

Всего 180 на 12 страницах по 15 на каждой странице

В платформе 1С сообщения об ошибках бывают достаточно запутаны, и без должных навыков разобраться в причинах достаточно сложно. Вот и сообщение об ошибке при вызове контекста может ввести в ступор начинающего разработчика. Однако в подавляющем большинстве случаев мы видим подобное сообщение, если разработчик допустил ошибку в своем коде. Причем речь зачастую идет не об орфографических ошибках, а о логических.

Исправляем ситуацию

Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.

Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:


	 Запрос = Новый Запрос;
	 Запрос.Текст =
	         "ВЫБРАТЬ
	          |        Номенклатура.Ссылка КАК Ссылка,
	          |        Номенклатура.ВерсияДанных КАК ВерсияДанных,
	          |        Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	          |        Номенклатура.Родитель КАК Родитель,
	          |        Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	          |        Номенклатура.Код КАК Код,
	          |        Номенклатура.Наименование КАК Наименование,
	          |        Номенклатура.Артикул КАК Артикул,
	          |        Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	          |        Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	          |        Номенклатура.Предопределенный КАК Предопределенный,
	          |        Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	          |ИЗ
	          |        Справочник.Номенклатура КАК Номенклатура
	          |ГДЕ
	          |         ";
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 КонецЦикла;

Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.

Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.

Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.


	 Запрос = Новый Запрос;
	            Запрос.Текст =
	                       "ВЫБРАТЬ
	                        |          Номенклатура.Ссылка КАК Ссылка,
	                        |          Номенклатура.ВерсияДанных КАК ВерсияДанных,
	                        |          Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	                        |          Номенклатура.Родитель КАК Родитель,
	                        |          Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	                        |          Номенклатура.Код КАК Код,
	                        |          Номенклатура.Наименование КАК Наименование,
	                        |          Номенклатура.Артикул КАК Артикул,
	                        |          Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	                        |          Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	                        |          Номенклатура.Предопределенный КАК Предопределенный,
	                        |          Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	                        |ИЗ
	                        |          Справочник.Номенклатура КАК Номенклатура
	                        |ГДЕ
	                        |          НЕ Номенклатура.ЭтоГруппа ";
	 НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель");
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов"));
	 КонецЦикла;

Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.

Рис.3 Синтакс-помощник

Рис.3 Синтакс-помощник

В конфигураторе находим строку и метод, на который указывало сообщение об ошибке, и нажимаем на него правой кнопкой мыши. Выбираем пункт «Поиск в синтакс-помощнике» и платформа самостоятельно ищет справочную информацию по выделенному методу. В справке мы видим не только подробное описание параметров и самого метода, но и пример. Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает.

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Чаще всего причиной подобных ошибок выступают следующие факторы:

  1. Невнимательность;
  2. Отсутствие опыта или знаний;
  3. Несогласованность действий разработчиков друг с другом;
  4. Изменения в методах контекста в новых версиях платформы.

Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.

Декомпилятор 1Cv8.x – обработка восстанавливающая тексты модулей с паролем или без исходного кода. Принцип действия – генерация исходного кода модулей на основе скомпилированных образов. Поэтому полученные модули могут немного отличаться от исходных, в частности, в сгенерированном коде модуля могут отсутствовать комментарии.

Скачать обработку можно по ссылке.

Обрабатываемые типы файлов: *.cf, *.epf и *.erf.

Для снятия пароля или восстановления исходного кода следует выбрать файл обработки, отчета или конфигурации и нажать — “Декомпилировать”.

Настройка “Не создавать копию”.

Если флаг не установлен, то перед декомпиляцией создастся копия файла с добавкой “_U” в имени. Установка данного флага сократит время выполнения восстановления кода(особенно если обрабатываются конфигурации *. cf), но при повреждении файла его уже будет не восстановить.

Наша команда предоставляет услуги по консультированию, настройке и внедрению 1С.

Связаться с нами можно по телефону +7 499 350 29 00.

Услуги и цены можно увидеть по ссылке.

Будем рады помочь Вам!

Настройка “Искать все модули (медленно)”.

Если флаг не установлен Декомпилятор обрабатывает только модули найденные в метаданных. При установке данного фдага Декомпилятор сканирует весь исходный файл в поисках внутренних файлов image, которые являются скомпилированными образами модулей. Использовать данную настройку стоит только если декомпиляция без нее не дала результата.

Ошибка при вызове метода контекста (Удалить)

по причине: Нарушение прав доступа! 

Ошибка при вызове метода контекста (Удалить)

Как программно удалить документ? Пример кода

&НаСервере

Процедура УдалитьРеализацииНаСервере()

Запрос = Новый Запрос;

Запрос.Текст = 

«ВЫБРАТЬ

| РеализацияТоваровУслуг.Ссылка

|ИЗ

| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг

|ГДЕ

| РеализацияТоваровУслуг.ПометкаУдаления = ИСТИНА»;

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

итератор =0;

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

итератор = итератор+1;

докОбъект = ВыборкаДетальныеЗаписи.ссылка.получитьОбъект();

докобъект.удалить();

КонецЦикла;

сообщить(«удалено » +итератор + » док. «);

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

нужно разрешить роль на чтение и запись, для последовательности.

кроме этого можно проверить галочки у всех регистров сведений

Теги: Ошибка при вызове метода контекста (Удалить)

yinfo
23.06.2013 18:50 Комментарий: 106

yinfo

Не удалось декомпилировать модуль внешней обработки
{ВнешняяОбработка.Декомпилятор1Сv8.МодульОбъекта}: Индекс находится за границами массива
Возможно, модуль обфусцирован!

Научите как вот так обфусцировать свою обработку, чтобы ее не взломать было )

simol3
20.06.2013 18:52 Комментарий: 105

simol3

При первом запуске:

Код 1C v 8.2 УП

 
{ВнешняяОбработка.Декомпилятор1Сv8.МодульОбъекта}: Ошибка при вызове метода контекста (УдалитьФайлы)
по причине:
Ошибка удаления файлов
по причине:
Ошибка доступа к файлу 'C:Userso.simashkevichAppDataLocalTempCv8cf.dll'

При втором запуске

Код 1C v 8.2 УП

 
{ВнешняяОбработка.Декомпилятор1Сv8.МодульОбъекта}: Ошибка при вызове метода контекста (Записать)
по причине:
Ошибка совместного доступа к файлу 'C:Userso.simashkevichAppDataLocalTempCv8cf.dll'

Если переименовать файл и запустить последующие разы

Код 1C v 8.2 УП

 Не удается загрузить dll (не хватает прав?)   

win7+KAV
Как победить?

caps_lock9
13.06.2013 02:20 Комментарий: 104

caps_lock9

Спасибо большое!) полезно и классно!)

soi
12.06.2013 13:09 Комментарий: 103

soi

Спасибо огромное

Gorynia
05.06.2013 15:58 Комментарий: 102

Gorynia

Декомпилятор 1Cv8.x Apocalypse edition (c) 2012 awa
Версия контейнера 1С: 216.0 (версия 1С 8.2)
Не достаточно значений в стеке на шаге 16
Неизвестный опкод 41 на шаге 23
Не достаточно значений в стеке на шаге 56
Не удалось декомпилировать общий модуль xxxx
{ВнешняяОбработка.Декомпилятор1Сv8.МодульОбъекта}: Индекс находится за границами массива
Возможно, модуль обфусцирован!
Обработка завершена!

Mark2k
04.06.2013 14:38 Комментарий: 101

Mark2k

Сказать «КРУТО» — значит ни чего не сказать! УАУ! Ай, да автор!!!
Для тех у кого
«Ошибка доступа к файлу ‘C:UsersaAppDataLocalTempCv8cf.dll'»
Найти эту либу, переименовать (удалить не даст, залочена), попробовать снова!
Наслаждаться творением!! И не вопить — «НЕ РАБОТАЕТ».

iones
03.06.2013 16:11 Комментарий: 100

iones

Супер!!! Спасибо огромное!!!

Make
29.05.2013 12:09 Комментарий: 99

Make

Великолепно! Автору респект.

bizneswork
10.05.2013 13:02 Комментарий: 98

bizneswork

СПАСИБО ОГРОМНОЕ !!!!!! *06

orfos
22.04.2013 21:38 Комментарий: 97

orfos

Авто Гений! Спасибо! Моему счастью нет границ!!

lucky07
15.04.2013 16:42 Комментарий: 96

lucky07

Спасибо большое, получилось.)

Alliene
03.04.2013 10:53 Комментарий: 95

Alliene

Автору спасибо, отработало как надо.

vvi
28.03.2013 15:35 Комментарий: 94

vvi

ААААААААААААААААААААААА АВТОРУ РЕСПЕКТ!!!!!!!!!!!!!!!!!

sstvit
28.03.2013 10:46 Комментарий: 93

sstvit

Может что не так делаю.. Обработал для теста свою же конфу *.cf с запароленным модулем, создался файл с добавлением к имени «_U». Загрузил его как новую конфу, мой модуль по прежнему требует ввести пароль. При работе обработка правильно определила имя запароленного модуля.

leews2
19.03.2013 15:28 Комментарий: 92

leews2

Огромное спасибище! мегаценная тулза, всё работает как надо.

Всего 181 на 13 страницах по 15 на каждой странице

Добрый день!

ЗуП 2.5 (2.5.90.1).
Выскакивают две ошибки:
1) Когда выбираю сотрудников для отправки:
{Форма.Форма.Форма(274)}: Значение не является значением объектного типа (Физлицо)
Если ДанныеСтроки.Руководитель = ДанныеСтроки.Сотрудник.Физлицо Тогда
Вопрос решаю, убрав физлицо.

2) когда начинаю отправлять:
{Форма.Форма.Форма(532)}: Значение не является значением объектного типа (Физлицо)
РезультатОтправки = ВыполнитьОтправку(СтрокаОтправки.Сотрудник.Физлицо, ПолучитьЕмаилФизлица(СтрокаОтправки.Сотрудник.Физлицо), ?(ОтправлятьКопиюСотрудникаОтветственному, ПолучитьЕмаилФизлица(Ответственный.ФизЛицо), «»), ПериодРегистрации, ОсновнаяУчетнаяЗапись, «», ФормаИндикатора, ОбщийСчетчик, (мСотруднику + мРуководителю));
тут тоже решается как и в первом пункте.
3)При самой отправке:
Не удалось отправить сотруднику «ХХХХХ» по причине «Не удалось отправить сообщение электронной почты по причине: {Обработка.РассылкаРасчетныхЛистков.МодульОбъекта(117)}: Ошибка при вызове метода контекста (Послать): Неверный синтаксис команды. Возможно ошибка в написании почтового адреса (SMTP error code 501, 5.1.3 Invalid address)»
С последним пунктом бы , Ваша помощь была бы не оценима.

Показывать по
10
20
40
сообщений

Новая тема

Ответить

rom19

Дата регистрации: 07.06.2011
Сообщений: 18

«Каталог=»/www/obmen»;<br>ИмяФайлаСообщения=»test.xml»;<br>Сервер.УстановитьТекущийКаталог(Каталог); <br>Сервер.Удалить(ИмяФайлаСообщения); <br> <br>Ошибка при вызове метода контекста Удалить!<br> <br>Хотя в этой же процедуре получаю спокойно по ftp этот же xml файл и разбираю его.<br>Использую локальный сервер Golden FTP Server. Права — Разрешить полный доступ.<br>FTP менеджером все спокойно удаляется. А через 1С — нет. <br>Запись и чтение через 1С — работает. Удаление только не работает!»

Показывать по
10
20
40
сообщений

Читают тему:

Понравилась статья? Поделить с друзьями:
  • Ошибка при вызове метода контекста удалитьрегистрациюизменений
  • Ошибка при вызове метода контекста удалить объекты
  • Ошибка при вызове метода контекста удалить объект удалить
  • Ошибка при вызове метода контекста удалить нарушение прав доступа
  • Ошибка при вызове метода контекста типы не совпадают