16.10.17 — 16:10
После обновления конфигурации 1с упрощенка 8 до версии 8.3.10.2580 платформы и 3.0.52.42 конфигурации при создании счета вылезла ошибка:
Несоответствие типов (параметр номер ‘1’)
в отладчике:
{ОбщийМодуль.РегламентныеЗаданияСервер.Модуль(838)}: Ошибка при вызове метода контекста (НайтиПоУникальномуИдентификатору)
РегламентноеЗадание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(Идентификатор);
по причине:
Несоответствие типов (параметр номер ‘1’)
На этом мои познания в программировании 1с заканчиваются. Где собака закопана?
1 — 16.10.17 — 16:18
У тебя Идентификатор имеет тип НЕ УНИКАЛЬНЫЙИДЕНТИФИКАТОР.
А нужно что бы был УникальныйИдентификатор.
МенеджерРегламентныхЗаданий (ScheduledJobsManager)
НайтиПоУникальномуИдентификатору (FindByUUID)
Синтаксис:
НайтиПоУникальномуИдентификатору(<Идентификатор>)
Параметры:
<Идентификатор> (обязательный)
Тип: УникальныйИдентификатор.
Идентификатор регламентного задания.
Возвращаемое значение:
Тип: РегламентноеЗадание; Неопределено.
Если задание для заданного идентификатора не найдено, возвращает Неопределено.
Описание:
Осуществляет поиск регламентного задания по уникальному идентификатору. Получение регламентного задания возможно только для администратора.
Доступность:
Сервер, толстый клиент, внешнее соединение.
2 — 16.10.17 — 16:21
Соответственно, что мне нужно сделать?
3 — 16.10.17 — 16:26
Присвоить переменной Идентификатор тип УникальныйИдентификатор.
4 — 16.10.17 — 16:27
Так заводская конфигурация и модуль только для чтения.
5 — 16.10.17 — 16:28
(4) А ну тогда все..ничего не сделать
6 — 17.10.17 — 14:45
Функция ПолучитьРегламентноеЗадание(Знач Идентификатор) Экспорт
ВызватьИсключениеЕслиНетПраваАдминистрирования();
Если ТипЗнч(Идентификатор) = Тип(«РегламентноеЗадание») Тогда
Идентификатор = Идентификатор.УникальныйИдентификатор;
КонецЕсли;
Если ТипЗнч(Идентификатор) = Тип(«УникальныйИдентификаторИдентификатор») Тогда
Идентификатор = Новый УникальныйИдентификатор(Идентификатор);
КонецЕсли;
Если ТипЗнч(Идентификатор) = Тип(«ОбъектМетаданных») Тогда
РегламентноеЗадание = РегламентныеЗадания.НайтиПредопределенное(Идентификатор);
Иначе
РегламентноеЗадание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(Идентификатор);
КонецЕсли;
Если РегламентноеЗадание = Неопределено Тогда
ВызватьИсключение( НСтр(«ru = ‘Регламентное задание не найдено.
|Возможно, оно удалено другим пользователем.'») );
КонецЕсли;
7 — 17.10.17 — 14:46
Вот весь текст модуля. Где исправить идентификатор?
8 — 17.10.17 — 14:47
(0) Кэш чистил?
9 — 17.10.17 — 14:54
Чистил
10 — 17.10.17 — 15:05
(9) выгрузку-загрузку базы делал?
11 — 17.10.17 — 15:09
(8) тии сделай
12 — 17.10.17 — 15:09
Выгрузку загрузку — не делал.
А что такое тии?
13 — 17.10.17 — 15:11
тестирование и исправление в конфигураторе
14 — 17.10.17 — 15:12
(12) Тааак. А как ты чистил кэш?
15 — 17.10.17 — 15:25
Тестирование и исправление запускал.
C:Users1AppDataRoaming1C1Cv82
C:Users1AppDataLocal1C1Cv82
Из них грохнул папки с длинными названиями
Еще пробовал через ClearCache и тонкий клиент
16 — 17.10.17 — 15:56
Выгрузил — загрузил. Все равно так-же.
17 — 17.10.17 — 16:33
Пройдись отладчиком, что у тебя в функцию передается? ИМХО, неопределено. И проблема не на самом деле не здесь, а при создании счета.
18 — 17.10.17 — 16:40
{ОбщийМодуль.РегламентныеЗаданияСервер.Модуль(838)}: Ошибка при вызове метода контекста (НайтиПоУникальномуИдентификатору)
РегламентноеЗадание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(Идентификатор);
по причине:
Несоответствие типов (параметр номер ‘1’)
Это в отладчике
19 — 17.10.17 — 16:43
Как посмотреть, что в функцию передается?
20 — 17.10.17 — 16:57
Проблема была в расположении информационной базы. Перенес в корень другого диска. Все завелось))))
21 — 17.10.17 — 17:01
(20) это значит кэш. про кэш наврал.
22 — 17.10.17 — 17:02
Как говАривала Алиса «все чудесатее и чудесатее»)
Heckfy
23 — 17.10.17 — 17:12
(21) Не обязательно. Скорее всего на клиенте почистил.
Sanr231
16.10.17 — 16:10
После обновления конфигурации 1с упрощенка 8 до версии 8.3.10.2580 платформы и 3.0.52.42 конфигурации при создании счета вылезла ошибка:
Несоответствие типов (параметр номер ‘1’)
в отладчике:
{ОбщийМодуль.РегламентныеЗаданияСервер.Модуль(838)}: Ошибка при вызове метода контекста (НайтиПоУникальномуИдентификатору)
РегламентноеЗадание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(Идентификатор);
по причине:
Несоответствие типов (параметр номер ‘1’)
На этом мои познания в программировании 1с заканчиваются. Где собака закопана?
Heckfy
1 — 16.10.17 — 16:18
У тебя Идентификатор имеет тип НЕ УНИКАЛЬНЫЙИДЕНТИФИКАТОР.
А нужно что бы был УникальныйИдентификатор.
МенеджерРегламентныхЗаданий (ScheduledJobsManager)
НайтиПоУникальномуИдентификатору (FindByUUID)
Синтаксис:
НайтиПоУникальномуИдентификатору(<Идентификатор>)
Параметры:
<Идентификатор> (обязательный)
Тип: УникальныйИдентификатор.
Идентификатор регламентного задания.
Возвращаемое значение:
Тип: РегламентноеЗадание; Неопределено.
Если задание для заданного идентификатора не найдено, возвращает Неопределено.
Описание:
Осуществляет поиск регламентного задания по уникальному идентификатору. Получение регламентного задания возможно только для администратора.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Sanr231
2 — 16.10.17 — 16:21
Соответственно, что мне нужно сделать?
Heckfy
3 — 16.10.17 — 16:26
Присвоить переменной Идентификатор тип УникальныйИдентификатор.
Sanr231
4 — 16.10.17 — 16:27
Так заводская конфигурация и модуль только для чтения.
СамыйУмный
5 — 16.10.17 — 16:28
(4) А ну тогда все..ничего не сделать
Sanr231
6 — 17.10.17 — 14:45
Функция ПолучитьРегламентноеЗадание(Знач Идентификатор) Экспорт
ВызватьИсключениеЕслиНетПраваАдминистрирования();
Если ТипЗнч(Идентификатор) = Тип(«РегламентноеЗадание») Тогда
Идентификатор = Идентификатор.УникальныйИдентификатор;
КонецЕсли;
Если ТипЗнч(Идентификатор) = Тип(«УникальныйИдентификаторИдентификатор») Тогда
Идентификатор = Новый УникальныйИдентификатор(Идентификатор);
КонецЕсли;
Если ТипЗнч(Идентификатор) = Тип(«ОбъектМетаданных») Тогда
РегламентноеЗадание = РегламентныеЗадания.НайтиПредопределенное(Идентификатор);
Иначе
РегламентноеЗадание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(Идентификатор);
КонецЕсли;
Если РегламентноеЗадание = Неопределено Тогда
ВызватьИсключение( НСтр(«ru = ‘Регламентное задание не найдено.
|Возможно, оно удалено другим пользователем.’») );
КонецЕсли;
Sanr231
7 — 17.10.17 — 14:46
Вот весь текст модуля. Где исправить идентификатор?
X Leshiy
8 — 17.10.17 — 14:47
(0) Кэш чистил?
Sanr231
9 — 17.10.17 — 14:54
Чистил
ildary
10 — 17.10.17 — 15:05
(9) выгрузку-загрузку базы делал?
h-sp
11 — 17.10.17 — 15:09
(8) тии сделай
Sanr231
12 — 17.10.17 — 15:09
Выгрузку загрузку — не делал.
А что такое тии?
h-sp
13 — 17.10.17 — 15:11
тестирование и исправление в конфигураторе
X Leshiy
14 — 17.10.17 — 15:12
(12) Тааак. А как ты чистил кэш?
Sanr231
15 — 17.10.17 — 15:25
Тестирование и исправление запускал.
C:Users1AppDataRoaming1C1Cv82
C:Users1AppDataLocal1C1Cv82
Из них грохнул папки с длинными названиями
Еще пробовал через ClearCache и тонкий клиент
Sanr231
16 — 17.10.17 — 15:56
Выгрузил — загрузил. Все равно так-же.
Heckfy
17 — 17.10.17 — 16:33
Пройдись отладчиком, что у тебя в функцию передается? ИМХО, неопределено. И проблема не на самом деле не здесь, а при создании счета.
Sanr231
18 — 17.10.17 — 16:40
{ОбщийМодуль.РегламентныеЗаданияСервер.Модуль(838)}: Ошибка при вызове метода контекста (НайтиПоУникальномуИдентификатору)
РегламентноеЗадание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(Идентификатор);
по причине:
Несоответствие типов (параметр номер ‘1’)
Это в отладчике
Sanr231
19 — 17.10.17 — 16:43
Как посмотреть, что в функцию передается?
Sanr231
20 — 17.10.17 — 16:57
Проблема была в расположении информационной базы. Перенес в корень другого диска. Все завелось))))
h-sp
21 — 17.10.17 — 17:01
(20) это значит кэш. про кэш наврал.
mr_K
22 — 17.10.17 — 17:02
Как говАривала Алиса «все чудесатее и чудесатее»)
Heckfy
23 — 17.10.17 — 17:12
(21) Не обязательно. Скорее всего на клиенте почистил.
Пользователь 17277 Заглянувший Сообщений: 12 |
Платформа: 1С:Предприятие 8.3 (8.3.10.2561) Скачал модуль 1С:Треккер Битрикс24 для Управление небольшой фирмой» , установил по инструкции. В чем причина? |
Администратор Сообщений: 4915 |
По всей видимости расширение 1С, которое используется в фунционале face кард, не может работать на вашем релизе. Расширение 1С тестировалось на 1.6.10.40 |
Пользователь 272462 Постоянный посетитель Сообщений: 268 |
#3 0 13.10.2017 16:01:58
Не подскажите что именно нужно удалить?) |
||
Александр Денисюк
Администратор Сообщений: 4915 |
#4 0 13.10.2017 16:33:18
Расширение 1С. Можно или через конфигуратор(в списке расширений 1С). Или через режим предприятия. В месте, где хранятся все расширения 1С |
||||
Несоответствие типов 1С
Ошибка по причине Несоответствие типов в 1С 8.3 связана с передачей параметров в командах и запросах 1С.
Изучив статью, вы:
- ознакомитесь с порядком исправления ошибки в запросе и командах 1С и узнаете, как исправить;
- получите два внешних отчета, демонстрирующих ошибочный и правильный коды.
В какой момент выходит ошибка
Как правило, параметры в командах 1С идут в определенной очередности и ссылаются на данные конкретного типа. Ошибка в указании параметра не на том месте или не того типа приводит к появлению сообщения о несоответствии типов:
Исправляется подобная ошибка восстановлением правильной последовательности в строке параметров команды или указанием нужного типа данных Ошибка 1С Несоответствие типов наиболее часто появляется при написании запросов и при некорректном указании параметров команды.
Рассмотрим причины ее возникновения и исправление на конкретном примере.
Ошибка в таблице запроса
При чтении цен номенклатуры по регистру сведений Цены номенклатуры из внешнего отчета появляется ошибка Неоднозначное поле «ТипЦен.Номенклатура».
В окне сообщений уже указано место возникновения ошибки: Несоответствие типов Параметр номер «1» в строке Регистр сведений.ЦеныНоменклатуры.СрезПоследних(&&ТипЦен,) КАК ЦеныНоменклатурыСрезПоследних.
Для исправления ошибки необходимо открыть отчет в Конфигураторе 1С и найти в модуле формы указанную строчку.
Правильность написания команды проверьте по выделенной кнопке Синтаксис-Помощник в меню 1 С Предприятие:
Из описания видно, что команда СрезПоследних имеет 2 параметра:
- Период;
- Отбор.
Если параметр Период не указывается, место в команде остается пустым, а через запятую указывается параметр отбора, в нашем случае: ТипЦен. Исправленная команда выглядит следующим образом: СрезПоследних(, ТипЦен = &ТипЦен ).
После исправления команды запустите отчет в 1 С Бухгалтерия по кнопке Главное меню — Файл — Открыть:
Теперь отчет формируется правильно!
Исправление ошибки в команде 1С
При поиске ссылок на контрагента в отчете 1С появляется ошибка Несоответствие типов (параметр номер 2):
1С сообщает место ошибки — Параметр номер 2 при нажатии кнопки ERROR.
Для ее исправления необходимо открыть отчет в Конфигураторе 1С и найти в модуле формы строчку с командой НайтиПоСсылкам.
Правильность написания команды проверьте по выделенной кнопке Синтаксис-Помощник в меню 1С:
Из описания идно, что команда НайтиПоСсылкам имеет 4 параметра:
- СписокСсылок;
- ОбластьПоиска;
- ВключитьОбъекты;
- ИсключитьОбъекты.
Параметр ОбластьПоиска имеет тип «массив», а в нашем примере указано число 1: НайтиПоСсылкам(МассивПоиска, 1, , МассивИсключений). Область поиска — необязательный параметр, поэтому исправленная команда может выглядеть следующим образом: НайтиПоСсылкам(МассивПоиска, , , МассивИсключений).
После исправления команды запустите внешний отчет в 1С по кнопке Главное меню — Файл — Открыть:
Теперь команда поиска ссылок на контрагента отрабатывает правильно.
Вот так можно получить ошибку 1С Несоответствие типов в 1С, поэтому контролируйте правильность указания параметров в запросах и командах 1С в Синтаксис-Помощнике!
Заказать консультацию
По этой или иной ошибке Вы можете обратиться к нашим специалистам, мы Вам поможем решить Вашу проблему.
1
2
Показывать по
10
20
40
сообщений
Новая тема
Ответить
Zebraaa
Дата регистрации: 16.03.2012
Сообщений: 23
Платформа 1с 8.2.15.310, релиз 1.0.12.2 При открытии стандартного отчета Карточка субконто выдается сообщение: Ошибка при вызове метода контекста (Найти поле). Если доступные поля. Найти поле(Отборы.Элементы [Я]_ Левое значение).=Неопределенно Тогда по причине Несоответствии типов (параметр номер 1) <br>Причем такая ошибка выходит только у одного пользователя, у других все нормально открывается.
Sh_S
Дата регистрации: 02.03.2007
Сообщений: 7730
где-то стоит отбор со сравнением с пустым значением, зайдите в настройку и посмотрите
Zebraaa
Дата регистрации: 16.03.2012
Сообщений: 23
А можно ,пожалуиста, по подробнее!
Sh_S
Дата регистрации: 02.03.2007
Сообщений: 7730
мне кажется теперь, что я не права. Под рукой бухгалтерии нет, но в УПП и ЗУПе если поставить отбор по пустому значению выходит просто шапка отчета. Но все-таки посмотрите внимательно на отборы в настройках.
Zebraaa
Дата регистрации: 16.03.2012
Сообщений: 23
Как я посмотрю, если я даже открыть отчет не могу.Выбираю Карточку субконто и сразу сообщение выдается, выше написанное.
Денис (САМАРА)
Дата регистрации: 09.04.2008
Сообщений: 8351
Платформу обновить до последней. Выполнить тестирование и исправление со всеми флагами.
Zebraaa
Дата регистрации: 16.03.2012
Сообщений: 23
Спасибо конечно! Но я думаю тестирование и исправление тут не причем, так как остальные пользователи в эту базу могут зайти, только один пользователь не может.Платформа вроде бы тоже относительно новая.
Денис (САМАРА)
Дата регистрации: 09.04.2008
Сообщений: 8351
У этого пользователя сохранились настройки отчета в старом формате. Теперь нужно либо как-то очистить эти настройки либо переконвертировать имеющиеся. У других пользователей нет этих старых настроек, вот они и не нарываются на ошибку. Попробуйте почистить кэш на компьютере пользователя.
Zebraaa
Дата регистрации: 16.03.2012
Сообщений: 23
Кстати, самое интересное, что сохраненных настроек по этому пользователю нет, а по другим есть.
Денис (САМАРА)
Дата регистрации: 09.04.2008
Сообщений: 8351
Имеются ввиду «Сохраненные варианты отчета».
Обновились на 1C:CRM КОРП 3.0.21.7 Платформа 8.3.18.1208
При попытке выполнить синхронизацию выходит сообщение(см. скриншот).
Подробно:
Несоответствие типов (параметр номер ‘1’)
{ОбщийМодуль.ДлительныеОперации.Модуль(759)}: Задание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания);
{ОбщийМодуль.ДлительныеОперации.Модуль(358)}: Задание = НайтиЗаданиеПоИдентификатору(ИдентификаторЗадания);
{Обработка.CRM_КалендарьМенеджера.Форма.Форма.Форма(3068)}: Возврат ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗадания);
{Обработка.CRM_КалендарьМенеджера.Форма.Форма.Форма(3050)}: Если ЗаданиеВыполнено(ИдентификаторЗадания) Тогда
по причине:
Несоответствие типов (параметр номер ‘1’)
В конфигураторе:
{ОбщийМодуль.ДлительныеОперации.Модуль(759)}: Ошибка при вызове метода контекста (НайтиПоУникальномуИдентификатору)
Задание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания);
по причине:
Несоответствие типов (параметр номер ‘1’)
Несоответствие типов (параметр номер ‘1’)
В платформе 1С сообщения об ошибках бывают достаточно запутаны, и без должных навыков разобраться в причинах достаточно сложно. Вот и сообщение об ошибке при вызове контекста может ввести в ступор начинающего разработчика. Однако в подавляющем большинстве случаев мы видим подобное сообщение, если разработчик допустил ошибку в своем коде. Причем речь зачастую идет не об орфографических ошибках, а о логических.
Исправляем ситуацию
Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.
Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.ВерсияДанных КАК ВерсияДанных,
| Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
| Номенклатура.Родитель КАК Родитель,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Номенклатура.Предопределенный КАК Предопределенный,
| Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| ";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
КонецЦикла;
Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.
Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.
Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.ВерсияДанных КАК ВерсияДанных,
| Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
| Номенклатура.Родитель КАК Родитель,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Номенклатура.Предопределенный КАК Предопределенный,
| Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ЭтоГруппа ";
НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель");
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов"));
КонецЦикла;
1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.
В конфигураторе находим строку и метод, на который указывало сообщение об ошибке, и нажимаем на него правой кнопкой мыши. Выбираем пункт «Поиск в синтакс-помощнике» и платформа самостоятельно ищет справочную информацию по выделенному методу. В справке мы видим не только подробное описание параметров и самого метода, но и пример. Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает.
Чаще всего причиной подобных ошибок выступают следующие факторы:
- Невнимательность;
- Отсутствие опыта или знаний;
- Несогласованность действий разработчиков друг с другом;
- Изменения в методах контекста в новых версиях платформы.
Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.
Ошибка при вызове метода контекста(?)
Автор Damates, 18 дек 2012, 20:30
0 Пользователей и 1 гость просматривают эту тему.
Есть такой код:
НайтиТО=Справочники.Тарифы.НайтиПоНаименованию(«ТО»);//находит
ЗначениеТО=РегистрыСведений.Тарифы.ПолучитьПоследнее(КонПериода,НайтиТО);
Сообщить(ЗначениеТО.Ресурс1);//ресурс в регистре сведений
Выдает ошибку:
{Справочник.Лицевые.Форма.ФормаСписка.Форма(79)}: Ошибка при вызове метода контекста (ПолучитьПоследнее)
ЗначениеТО=РегистрыСведений.Тарифы.ПолучитьПоследнее(КонПериода,НайтиТО);
по причине:
Несоответствие типов (параметр номер ‘2’)
Измерение в регистре сведений берется из справочника Тарифы. В чем проблема? Подскажите , пожалуйста!
Второй параметр должен быть: (И снова приходиться цитировать СП… =( , ну неужели клавиша F1 на клавиатуре заблокирована)
ПолучитьПоследнее (GetLast)
Синтаксис:
ПолучитьПоследнее(<КонецПериода>, <Отбор>)
Параметры:
<КонецПериода> (необязательный)
Тип: Дата; МоментВремени; Граница.
Определяет момент времени, по который необходимо получить значения ресурсов. Может задаваться значениями типа Дата, МоментВремени или Граница. Если параметр не указан, то будут возвращены значения ресурсов самой последней записи регистра.
<Отбор> (необязательный)
Тип: Структура.
Структура, содержащая отбор по измерениям регистра. Имя ключа структуры должно совпадать с именем измерения регистра, заданного в конфигураторе, а значение элемента структуры — задает отбираемое по данному измерению значение.
Структура дополнительно может иметь элементы, соответствующие разделителям регистра с уровнем разделения НезависимоИСовместно, в состав которых входит регистр. Если такой элемент структуры задан для используемого в сеансе разделителя, значение для этого элемента должно совпадать со значением разделителя, иначе будет вызвано исключение.
Если параметр не указан, то отбор не используется.
Если долго всматриваться в учебник…то в голову может прийти мысль его открыть!
Спасибо! Все понял Сделал так:
НайтиТО=Справочники.Тарифы.НайтиПоНаименованию(«ТО»);
//Сообщить(НайтиТО);
Тариф = Новый Структура;
Тариф.Вставить(«Тариф», НайтиТО);
ЗначениеТО=РегистрыСведений.Тарифы.ПолучитьПоследнее(КонПериода,Тариф);
Сообщить(ЗначениеТО.Ресурс1);
Фишка: Структура, содержащая отбор по измерениям регистра. Имя ключа структуры должно совпадать с именем измерения регистра, заданного в конфигураторе, а значение элемента структуры — задает отбираемое по данному измерению значение.