1с ошибка при вызове метода контекста скопировать

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

17.07.2019, 22:40. Показов 5240. Ответов 3


Студворк — интернет-сервис помощи студентам

Добрый день!
Бухгалтерия 3.0 КОРП
При проведении дописанного документа «корректировка реализации» вылезает ошибка:

{ОбщийМодуль.ОбщегоНазначенияБПВызовСервера.Модуль(209)}: Ошибка при вызове метода контекста (Скопировать)
Возврат ИсходнаяТаблица.Скопировать(, СписокКолонок);
по причине:
Неверное имя колонки
Неверное имя колонки

Перечень переменной «СписокКолонок»:

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

ИмяСписка,НомерСтроки,Номенклатура,Количество,СуммаВзаиморасчетов,СуммаРуб,Сумма НДСРуб,СуммаБУ,СуммаНУ,СчетДоходов,Субконто,СтавкаНДС,СчетУчетаНДСПоРеализации,С уммаСписания,СуммаСписанияНУ,КорСчет,КорСубконто1,КорСубконто2,КорСубконто3,Конт рагент,ВалютаВзаиморасчетов,Подразделение,ПодразделениеЗатрат,ЭтоКомиссия,ЭтоУсл уга,Комитент,ДоговорКомиссии,СчетРасчетовСКомитентом,СчетАвансовСКомитентом,Валю таРасчетовСКомитентом,СуммаРасчетовСКомитентом,СуммаПоступленияОтКомитента

Из всего списка внесенный дополнительный элемент «ПодразделениеЗатрат».

Не могу понять в каком направлении искать причину.



0



2021-09-17_19-32-03.mp4

Информация для технической поддержки

Платформа: 8.3.19.1229
Режим БД: клиент-серверный
Конфигурация. Название: 1С:ERP Управление предприятием 2 (2.5.6.261)
Конфигурация. Основной режим запуска: Управляемое приложение
Конфигурация. Вариант встроенного языка: Русский
Конфигурация. Режим управления блокировкой данных: Управляемый
Конфигурация. Режим совместимости: Версия8_3_16
Конфигурация. Версия БСП: 301
Инструменты разработчика. Версия: Портативный 6.09.1p
Инструменты разработчика. Инструмент: Консоль запросов
Инструменты разработчика. Перехват клавиатурного ввода: Да
Инструменты разработчика. Объекты на сервере: Нет
Инструменты разработчика. Серверный модуль: Да
Клиент. ОС: Майкрософт Windows 10 Pro 64-разрядная Русский
Клиент. Приложение: Обычное приложение 64б
Клиент. Проверка модальных вызовов: Нет
Клиент. Язык интерфейса конфигурации: ru
Клиент. Язык интерфейса системы: ru
Клиент. От имени администратора Windows: Нет
Сервер. ОС: Windows x86-64 Microsoft Windows 10 version 10.0 (Build 19043)

При клике на ячейку в нижней ТЧ на вкладке «Поля объединения» возникает ошибка при установленном флажке «Автоматически отвязывать текущее поле»:

Ошибка при вызове метода контекста (Скопировать)
{ВнешняяОбработка.ирКлсПолеТекстаПрограммы.Форма.КонструкторЗапроса.Форма(4141)}:		ИмяПоля = ирОбщий.АвтоУникальноеИмяВКоллекцииЛкс(СтрокаПоля.Владелец().Скопировать(ОтборКонкурентов, "НИмя"), ИмяПоля, "НИмя",,,, Истина);
{ВнешняяОбработка.ирКлсПолеТекстаПрограммы.Форма.КонструкторЗапроса.Форма(8425)}:			АвтоПсевдонимОтвязанногоПоля = ПолучитьАвтоПсевдонимПоля(СтрокаДляОтвязки, ВыбраннаяЧасть);
{ВнешняяОбработка.ирКлсПолеТекстаПрограммы.МодульОбъекта(2760)}:	РезультатФормы = КонструкторЗапроса.ОткрытьМодально();
{ВнешняяОбработка.ирКлсПолеТекстаПрограммы.МодульОбъекта(930)}:			Результат = ВызватьКонструкторЗапросов(Истина);
{ВнешняяОбработка.ирКлсПолеТекстаПрограммы.МодульОбъекта(891)}:	Результат = ВыполнитьКоманду(Команда);
{ВнешняяОбработка.ирКонсольЗапросов.Форма.Форма.Форма(284)}:		Результат = ЭкземплярКомпоненты.Нажатие(Кнопка);
по причине:
Неверное имя колонки

Пример запроса:

ВЫБРАТЬ
	"Тест" КАК Поле1,
	NULL КАК Поле2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
	NULL КАК Поле1,
	"Тест" КАК Поле2

Неверное имя колонки

Я
   Shaggart

05.05.15 — 17:54

День добрый! Подскажите, пожалуйста, подгружаю документы из txt внешней обработкой, досталась от предыдущего программиста, после обновления выдает такое сообщение  

{Обработка.ИмпортДокументов.Форма.ФормаУправляемая.Форма(1824)}: Ошибка при вызове метода контекста (Записать)

                Возв.Записать(РежимЗаписиДокумента.Проведение);                    

по причине:

Ошибка при выполнении обработчика — ‘ОбработкаПроведения’

по причине:

{ОбщийМодуль.ОбщегоНазначенияБПВызовСервера.Модуль(195)}: Ошибка при вызове метода контекста (Скопировать)

        Возврат ИсходнаяТаблица.Скопировать(, СписокКолонок);

по причине:

Неверное имя колонки

В какую сторону смотреть?

   ssh2006

1 — 05.05.15 — 17:56

(0) в сторону неверного имени колонки)

   Drac0

2 — 05.05.15 — 17:58

(1) которые находятся в списке СписокКолонок. Вдруг так понятнее будет.

   Shaggart

3 — 06.05.15 — 09:02

Как ни странно, я догадался что в СписокКолонок, как мне именно этот список увидеть, я пересмотрел все, где именно формируется этот список не понял(

   Ненавижу 1С

4 — 06.05.15 — 09:04

в отладчике же

   Фокусник

5 — 06.05.15 — 09:06

(0) стань курсором на СписокКолонок и нажми F12

   User_Agronom

6 — 06.05.15 — 09:07

(1) Не, должен быть более захватывающий сюжет!

   User_Agronom

7 — 06.05.15 — 09:08

(5) Получит параметр процедуры. И что дальше?

Не, только (4) спасёт отца русской демократии!

   Фокусник

8 — 06.05.15 — 09:12

(7) Если пришло параметром в процедуру, то стек вызовов дальше используем (в отладчике конечно) ;)

   User_Agronom

9 — 06.05.15 — 09:15

(8) Мне не нужно объяснять. Нужно ТС дать рекомендацию, которая максимально поможет. А это точка прерывания и просмотр значения переменной в отладчике.

Значение переменной может формироваться динамически на основании данных запроса, например.

   Shaggart

10 — 06.05.15 — 17:43

При F12 натыкаюсь сюда

Функция ПолучитьТаблицуПараметровПроведения(ИсходнаяТаблица, СписокКолонок) Экспорт

    Если ИсходнаяТаблица = Неопределено Тогда

        
        ТаблицаРезультат = Новый ТаблицаЗначений;

        Колонки = Новый Структура(СписокКолонок);

        Для каждого Колонка Из Колонки Цикл

            ТаблицаРезультат.Колонки.Добавить(Колонка.Ключ);

        КонецЦикла;

        Возврат ТаблицаРезультат;

    Иначе

        Возврат ИсходнаяТаблица.Скопировать(, СписокКолонок);

    КонецЕсли;

КонецФункции

   VikingKosmo

11 — 06.05.15 — 17:47

(10) и что в этой процедуре непонятного?

   Shaggart

12 — 06.05.15 — 17:48

непонятно из каких колонок состоит этот СписокКолонок

   VikingKosmo

13 — 06.05.15 — 17:49

из колонок ИсходнаяТаблица? Внезапно…

   Shaggart

14 — 06.05.15 — 17:50

Согласен, тупанул, ИсходнаяТаблица — она каким образом и с какими колонками формируется

   VikingKosmo

15 — 06.05.15 — 17:50

(14) отладчик?

   Shaggart

16 — 06.05.15 — 17:54

далее чем Если ИсходнаяТаблица = Неопределено Тогда  

отладчик никуда не идет

   hhhh

17 — 06.05.15 — 17:55

(16) тебе дальше и не нужно, переменную списокКолонок посмотри отладчиком, чего тупишь?

   Shaggart

18 — 06.05.15 — 17:59

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

  

Serg_1960

19 — 06.05.15 — 18:04

Анализируй стек вызовов — строки выше по списку, чем строка с вызовом функции ПолучитьТаблицуПараметровПроведения()

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

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

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

Планшет

Приглашаем на
бесплатный вебинар!

06 июня в 11:00 мск

1 час

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


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

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

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

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


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

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

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

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

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

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

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

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

  1. Добрый день!возникла такая проблема с загрузкой файла. Есть центральная база,обмен данными идем с двумя другими,на одной из них при загрузке данных выдает сообщение( см.ниже) хотя выгрузка идет! 1с 8.2

    Ошибка при копировании файла из \192.168.10.2ExchangeMessage_111_333.zip в C:Documents and SettingsОбмен_РИБLocal SettingsTemp1ПолныйМагистральнаяMessage_111_333.zip
    Ошибка при вызове метода контекста (КопироватьФайл): Ошибка копирования файлов: Ошибка копирования файлов из ‘\192.168.10.2ExchangeMessage_111_333.zip’ в ‘C:Documents and SettingsОбмен_РИБLocal SettingsTemp1ПолныйМагистральнаяMessage_111_333.zip’ : Ошибка доступа к файлу

    Техническая информация:
    {ОбщийМодуль.ПроцедурыОбменаДанными.Модуль(571)}: Ошибка при вызове метода контекста (КопироватьФайл): Ошибка копирования файлов: Ошибка копирования файлов из ‘\192.168.10.2ExchangeMessage_111_333.zip’ в ‘C:Documents and SettingsОбмен_РИБLocal SettingsTemp1ПолныйМагистральнаяMessage_111_333.zip’ : Ошибка доступа к файлу


  2. Элла

    Offline

    Элла
    Опытный в 1С

    Регистрация:
    19 фев 2013
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26

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

  3. Общий доступ открыт…он файл то выгружает в ту папку,но не может чтото сделать с загрузкой…
    просто в папку Exchange захожу и нормально


  4. Dmitriy_76

    Offline

    Dmitriy_76
    Опытный в 1С
    Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.224
    Симпатии:
    15
    Баллы:
    29

    ну а в паку : C:Documents and SettingsОбмен_РИБLocal SettingsTemp1ПолныйМагистральная как заходишь ?

  5. это локальная папка на серваке,просто заходит и все,а и кстати когда захожу просто в Exchange и хочу копировать,пишет сетевое имя более не доступно


  6. Tiger86

    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    папка то на серваке, а обращаетесь вы к ней с обычного рабочего компа?

    вот так он ищет по адресу в сети у вас \192.168.10.2ExchangeMessage_111_333.zip, а так на конкретной машине на диске С — C:Documents and SettingsОбмен_РИБLocal SettingsTemp1ПолныйМагистральнаяMessage_111_333.zip, проверьте адрес

  7. \192.168.10.2ExchangeMessage_111_333.zip — это папка на др.сервере(общий доступ) с которой качаются файлы для обмена… вон этот файл: Message_111_333.zip по идее должен копировать в C:Documents and SettingsОбмен_РИБLocal SettingsTemp1ПолныйМагистральная и там как то делает в .xml


  8. Tiger86

    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    я не совсем поняла, доступа нет к какому файлу? к тому что на сервере или на машине?


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

Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

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

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии