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

Регламентное задание: НайтиФайлы не работает, права вроде все есть

Я
   План счетов

20.03.13 — 10:19

х.з. в чем дело, права есть.

регламентным заданием файл создается.

Путь2 = «\Trmsrv30test_1s»;

Текст = Новый ТекстовыйДокумент;

Текст.ДобавитьСтроку(СтрокаСоединенияИнформационнойБазы()+» ->  «+ТекущаяДата());

Текст.Записать(Путь2+»22.txt»);        

а если добавляю:

МассивНайденных = НайтиФайлы(Путь2,».txt»);

регламентное задание не запускается

ошибка при вызове метода контекста «НайтиФайлы»

   Галахад

1 — 20.03.13 — 10:23

Может так?

МассивНайденных = НайтиФайлы(Путь2,»*.txt»);

   План счетов

2 — 20.03.13 — 10:31

(1) и так тоже не работает,

по всякому пробовал

и  так НайтиФайлы(«\Trmsrv30test_1s22.txt»)

задание не выполняется, в консоли пишет:

ошибка при вызове метода контекста «НайтиФайлы»

тупик какой то, х.з. че ей надо

   ДенисЧ

3 — 20.03.13 — 10:33

правей на каталог не хватает?

   hhhh

4 — 20.03.13 — 10:34

(2) баян, сервер 1с под каким пользователем запускается, у него должны быть права на папку \Trmsrv30

  

План счетов

5 — 20.03.13 — 10:37

(4) знаю что баян.

регламентные настроил месяц назад, сначала сделал выгрузку, тоже сначала не работало, права на папку дал, выгрузка работает, логи выгружаются в текстовый файл.

ща делаю загрузку, из этого же каталога

и НайтиФайлы на работает

даже если я его перед этим создал, вернее не я а сервер регламентным заданием

  • Главная
  •  — 
  • Форум
  •  — 
  • ТЕХПОДДЕРЖКА
  •  — 
  • БОНЛИОН — Бонусная система для 1С
  •  — 
  • Обмен по FTP
 

vep

Пользователь

Сообщений: 7
Регистрация: 15.03.2017

Помогите, пожалуйста. Не можем настроить выгрузку файлов обмена по ftp. Соединение проверяем — все нормально. Каталог на сервере где сайт прописан. Но файл выгрузки в папку на сайт не сохраняется.

В проводнике Windows или Total Commander — все нормально ровно с теми же настройками. Все соединяется и прописанный в поле Каталог путь отрабатывает.

 

покажите скрин настроек в 1С

 

vep

Пользователь

Сообщений: 7
Регистрация: 15.03.2017

#3


0
 

28.06.2021 09:19:57

Цитата
Александр Носов написал:
покажите скрин настроек в 1С

https://yadi.sk/i/nFJ51v5kDjfrrQ

 

вы похоже указываете лишние папки на каталог FTP
скорее всего нужно оставить то что идет после www

поэкспериментируйте разными вариантами
также возможно нужно указывать слэш перед каталогом FTP

Пример как должно быть
/new.site.ru/public_html/upload/

 

vep

Пользователь

Сообщений: 7
Регистрация: 15.03.2017

#5


0
 

28.06.2021 10:07:29

Цитата
Александр Носов написал:
вы похоже указываете лишние папки на каталог FTP
скорее всего нужно оставить то что идет после www

поэкспериментируйте разными вариантами
также возможно нужно указывать слэш перед каталогом FTP

Пример как должно быть
/new.site.ru/public_html/upload/

Мы эксперементировали уже по-всякому. Не работает. Без слэшей был последний вариант потому что в прилагаемой инструкции на скриншоте именно так прописано.

 

vep

Пользователь

Сообщений: 7
Регистрация: 15.03.2017

#6


0
 

28.06.2021 10:08:23

Цитата
vep написал:
вы похоже указываете лишние папки на каталог FTPскорее всего нужно оставить то что идет после www

Попробую. Но если смотреть в ftp-клиенте, то путь к папке именно такой как на скриншоте.

 

vep

Пользователь

Сообщений: 7
Регистрация: 15.03.2017

С урезанным адресом выдает ошибку:

Ошибка при соединении с FTP : /upload/1c_exchange_bonuses/ ! {ОбщийМодуль.APPLIX_RU_СМ_FTP.Модуль(76)}: Ошибка при вызове метода контекста (НайтиФайлы): Ошибка аутентификации при доступе к ресурсу:  

ftp://magellanbooks.ru:21

Access denied to remote resource

 

пришлите доступ к вашему ftp на

support@applix.ru

в письме укажиет ссылку на эту тему
протестим

 

vep

Пользователь

Сообщений: 7
Регистрация: 15.03.2017

#9


0
 

30.06.2021 12:37:46

Я уже сам проверил. Следующий код с использованием вышеуказанных параметров отлично работает:

Цитата
   Соединение = Новый FTPСоединение(Объект.FTPСервер, Объект.Порт, Объект.FTPПользователь, Объект.FTPПароль,,Объект.FTPПассивноеСоединение);
   Соединение.УстановитьТекущийКаталог(«/repository/www/upload/1c_exchange_bonuses»);
   Соединение.Записать(Объект.КаталогОбменаБонусами, «info.txt»);

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

Цитата
Иначе
      Соединение = Новый FTPСоединение(Объект.FTPСервер, Порт, Объект.FTPПользователь, Объект.FTPПароль);
КонецЕсли;

Изменено: vep30.06.2021 12:38:57

 

Александр Носов

Администратор

Сообщений: 359
Регистрация: 18.10.2019

#10


0
 

22.07.2021 15:00:54

Работа в FTP переведена на служебный модуль.
Сейчас обмен работает без сбоев.

Обновление уже можно заказать, отправьте запрос на наш email  

ПОСЛЕДНИЕ СООБЩЕНИЯ

Сейчас на форуме (гостей: 51)

Всего зарегистрированных пользователей: 2220

Приняло участие в обсуждении: 367

Всего тем: 822

В платформе 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С.

Добрый день!


По какой-то причине перестал работать обмен сайта на ocstore 3 с 1С Розница 8. Не устанавливается соединение с сайтом, при попытке обмена выдаёт такие сообщения:
 

Не удалось установить соединение с сервером. Проверьте имя пользователя и пароль.
Не удалось получить данные с сервера. Проверьте правильность адреса сервера, порт, имя пользователя и пароль,
а также настройки подключения к Интернет.
{ОбщийМодуль.ПроцедурыОбменаССайтом(427)}: Ошибка при вызове метода контекста (Получить): Ошибка доступа к файлу ‘export/neoseo_exchange1c.php?type=catalog&mode=checkauth’: Ошибка работы с Интернет:  доступ запрещен (403). <!doctype html><html lang=»ru» class=»is_adaptive» data-panel-url=»https://vip194.hosting.reg.ru/manager»><head><meta charset=»UTF-8″><meta name=»viewport» content=»width=device-width,initial-scale=1″><meta name=»robots» content=»noindex»><title>В&nbsp;доступе на&nbsp;страницу отказано</title><style media=»all»>@keyframes moveClouds{0%{background-position:100vw 35%}to{background-position:-105vw 35%}}@keyframes moveCityClouds{0%{background-position:100vw 35%,bottom,center bottom 33vh}to{background-position:-105vw 35%,bottom,center bottom 33vh}}.b-page{display:flex;flex-direction:column;width:100%;min-width:320px;height:100%;padding:60px 0 0;margin:0;font:12px Arial,Helvetica Neue,Helvetica,FreeSans,sans-serif;background:#fff;color:#364364;-webkit-tap-highlight-color:transparent}html:not(.is_adaptive) .b-page{overflow-x:hidden}@media (min-width:1024px){.is_adaptive .b-page{overflow-x:hidden}}.b-page_type_parking{display:block!important}.b-page_type_error-page{padding:0}html:not(.is_adaptive) .b-page_menu-additi: Ошибка работы с Интернет:  доступ запрещен (403)
Соединение с сайтом не установлено.
Выгрузка товаров отменена.
Не удалось установить соединение с сервером. Проверьте имя пользователя и пароль.
Не удалось получить данные с сервера. Проверьте правильность адреса сервера, порт, имя пользователя и пароль,
а также настройки подключения к Интернет.
{ОбщийМодуль.ПроцедурыОбменаССайтом(427)}: Ошибка при вызове метода контекста (Получить): Ошибка доступа к файлу ‘export/neoseo_exchange1c.php?type=catalog&mode=checkauth’: Ошибка работы с Интернет:  доступ запрещен (403). <!doctype html><html lang=»ru» class=»is_adaptive» data-panel-url=»https://vip194.hosting.reg.ru/manager»><head><meta charset=»UTF-8″><meta name=»viewport» content=»width=device-width,initial-scale=1″><meta name=»robots» content=»noindex»><title>В&nbsp;доступе на&nbsp;страницу отказано</title><style media=»all»>@keyframes moveClouds{0%{background-position:100vw 35%}to{background-position:-105vw 35%}}@keyframes moveCityClouds{0%{background-position:100vw 35%,bottom,center bottom 33vh}to{background-position:-105vw 35%,bottom,center bottom 33vh}}.b-page{display:flex;flex-direction:column;width:100%;min-width:320px;height:100%;padding:60px 0 0;margin:0;font:12px Arial,Helvetica Neue,Helvetica,FreeSans,sans-serif;background:#fff;color:#364364;-webkit-tap-highlight-color:transparent}html:not(.is_adaptive) .b-page{overflow-x:hidden}@media (min-width:1024px){.is_adaptive .b-page{overflow-x:hidden}}.b-page_type_parking{display:block!important}.b-page_type_error-page{padding:0}html:not(.is_adaptive) .b-page_menu-additi: Ошибка работы с Интернет:  доступ запрещен (403)

Логин и пароль, ссылка на файл обмена те же что были недавно когда все работало. Программист 1С говорит надо почистить какие-то временные файлы на хостинге. В логах модуля при этом пусто. Что можно сделать, ошибка из-за самой 1С скорее всего?
 

  1. Добрый день!
    Платформа 8.2.19.76.
    Есть обработка. при нажатии на кнопку должна вывести имя папки.
    При запуске выдает Ошибку: {Форма.Форма.Форма(602)}: Ошибка при вызове метода контекста (GetFolder): Произошла исключительная ситуация (0x800a004c). Помогите разобраться, где я ошибаюсь.

    Вот код:

    &НаКлиенте
    Процедура Файлы(Команда)
        ФайлыСервер();
    КонецПроцедуры
    
    &НаСервере
    Процедура ФайлыСервер()
        Попытка
        FSO = Новый COMОбъект("Scripting.FileSystemObject");
        File = FSO.GetFolder("D:Files");
        Сообщить(File.Name); //сообщить имя папки
       
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки;
    
    КонецПроцедуры

  2. alexburn

    Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    559
    Баллы:
    204


  3. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.685
    Симпатии:
    1.011
    Баллы:
    204

    Как вариант:
    Если не файловый вариант работы, то сервер 1С ничего не знает про путь на локальной машине пользователя.

  4. Попробовала. Выводит «нет папки», хотя папка есть.

    &НаКлиенте
    Процедура Файлы(Команда)
        ФайлыСервер();
       
    КонецПроцедуры
    
    &НаСервере
    Процедура ФайлыСервер()
        Попытка
        ИмяПапки = "D:Files";
        FSO = Новый COMОбъект("Scripting.FileSystemObject");
        Если FSO.FolderExists(ИмяПапки) Тогда
            Сообщить("Есть папка");
        Иначе
            Сообщить("Папки нет");
        КонецЕсли;
       
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки;
    
    КонецПроцедуры
    

    — Объединение сообщений, 29 янв 2015

    У меня Клиент-серверный вариант работы. И как тогда быть?

  5. Вообще я начала изучать FileSystemObject, потому что мне нужно сформировать обработку, которая будет запускаться регламентно на сервере.
    Обработка загружает информацию из текстовых файлов, которые лежат в папке на сервере.
    Файлов будет несколько и имеют одинаковое начало в имени. Я хочу получить имена файлов и поочередно их читать.

    Может есть гораздо легкие способы это сделать?


  6. KrivosheevEV

    Offline

    KrivosheevEV
    Новичок в 1С

    Регистрация:
    3 мар 2014
    Сообщения:
    35
    Симпатии:
    2
    Баллы:
    4

    Вот это замах. Мне нравится.

    Но, судя по новым данным, нужно сделать ещё один шаг назад и объяснить задачу ещё более детально.

  7. Хорошо.
    Платформа 8.2.19.76. Клиент-серверный вариант.
    Есть обработка, которая считывает информацию из текстового файла и загружает ее в справочник/длокумент.

       КаталогФайлов = "D:Files";
       ИмяФайла = "File1.txt";
       ПолноеИмяФайла = КаталогФайлов + "" + ИмяФайла;
      
       Файл = Новый ТекстовыйДокумент;
       Файл.Прочитать(ПолноеИмяФайла)
      
       Для Строка = 1 По файл.КоличествоСтрок()Цикл
         //загружаю строки файла  
       КонецЦикла;

    Как быть, если файлов в папке несколько, и их нужно обработать все?
    Я планировала получить с помощью FileSystemObject все имена файлов в папке и по ним обращаться.


  8. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.685
    Симпатии:
    1.011
    Баллы:
    204

    чем не устраивает типовой метод 1С НайтиФайлы()?
    Если файлы будут располагаться на той же машине, на которой запущен 1С сервер, то проблемы могут возникнуть, только в случае, если у пользователя, от которого запущен сервер 1С, нет прав на чтение содержимого указанного пути.

  9. Спасибо! Сейчас буду пробовать.

  10. Файлы располагаются на моей локальной машине (для тестирования). Обработку запускаю в толстом клиенте на своей локальной машине.
    Сервер 1С запущен на другой машине (физический сервер). Файла в каталоге 3, а выдает 0.

    &НаКлиенте
    Процедура Файлы(Команда)
        ФайлыСервер();
       
    КонецПроцедуры
    
    &НаСервере
    Процедура ФайлыСервер()
        
        НайденныйФайлы = НайтиФайлы("D:Files", "*.txt");
        Сообщить(НайденныйФайлы.Количество());
    
    КонецПроцедуры
    

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


  11. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.685
    Симпатии:
    1.011
    Баллы:
    204

    Если толстый клиент, то уберите выполнение со стороны сервера.

    Даже если пользователь, под которым запущен сервер 1С, будет иметь доступ к папке на вашей машине, это ему не поможет, т.к. он не знает ничего про буквы дисков.
    для него существует абсолютный адрес общего ресурса в сети вида \ИМЯ_МАШИНЫИМЯ_РЕСУРСА


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

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