Ошибка при вызове метода контекста (НайтиПоРеквизиту) |
Я |
14.03.13 — 02:36
Доброй ночи.
Не могу понять как так происходит. Есть некая обработка загрузки документов и подписка на событие ПередЗаписью() документа РеализацияТоваровИУслуг.
Во время выполнения загрузки идет запись документа 2 раза (почему так не знаю — писал не я). И из подписки идет обращение к функции:
Функция ПолучитьСприсокКонтрагентов(ИД_Базы)
СК = Новый СписокЗначений;
Если ИД_Базы = «1» Тогда
СК.Добавить(Справочники.Контрагенты.НайтиПоРеквизиту(«ИНН», «4716022531»);
…….
Иначе
…….
КонецЕсли;
Возврат СК;
КонецФункции
Собственно говоря вопрос в следующем:
при первом обращении в эту функцию происходит нормальное формирование списка значений, а вот при втором обращении в функцию происходит ошибка «Ошибка при вызове метода контекста (НайтиПоРеквизиту)».
Как так происходит?
1 — 14.03.13 — 02:39
что пишет при нажатии на кнопку подробно?
2 — 14.03.13 — 02:46
(1) Ошибка при вызове метода контекста (НайтиПоРеквизиту)
Прояснило?
3 — 14.03.13 — 03:08
хм… Все страньше и страньше…
С горя переписал заполнение списка значений запросом. При втором обращении вылазит ошибка:
Ошибка при вызове метода контекста (Выполнить) : Ошибка выполнения запроса
Вообще ничего не понимаю
4 — 14.03.13 — 03:16
Для НайтиПоРеквизиту реквизит должен быть проиндексирован
5 — 14.03.13 — 03:19
Я в курсе. Это «допиленная» БП. К тому же смотри (3) и «… при первом обращении в эту функцию происходит нормальное формирование списка значений, а вот при втором обращении в функцию происходит ошибка …»
6 — 14.03.13 — 03:24
СК.Добавить(Справочники.Контрагенты.НайтиПоРеквизиту(«ИНН», «4716022531»);
Скобки не хватает
7 — 14.03.13 — 03:28
(6) Когда сюда набивал недопоставил.
и (0) «… при первом обращении в эту функцию происходит нормальное формирование списка значений, а вот при втором обращении в функцию происходит ошибка …»
8 — 14.03.13 — 03:35
По «подробно» что пишет?
9 — 14.03.13 — 03:36
(8) смотри (2)
10 — 14.03.13 — 04:03
(9) отладчик что говорит? Вбей в отладчике Справочники.Контрагенты.НайтиПоРеквизиту(«ИНН», «4716022531»)
11 — 14.03.13 — 04:10
(1) При первом обращении к функции находит контрагента.
При втором — {(1)}: Ошибка при вызове метода контекста (НайтиПоРеквизиту)
12 — 14.03.13 — 04:11
причем Справочники.Контрагенты имеет значение СправочникМенеджер.Контрагенты, т.е. вроде как все правильно
13 — 14.03.13 — 04:16
(12) ну оно ж должно писать при нажатии на кнопку «подробно» что-то типа «по причине..», мистика какая-то….
14 — 14.03.13 — 04:24
вот оно такую причину и пишет
15 — 14.03.13 — 04:25
шла вторая ночь…
16 — 14.03.13 — 04:29
Батюшку приглашал бесов изгонять?
17 — 14.03.13 — 04:38
наверное пора
18 — 14.03.13 — 04:44
У ИНН стоит индексирование? У ИНН длина ограничена?
19 — 14.03.13 — 05:05
комп ребутни
20 — 14.03.13 — 05:12
(18) учимся читать внимательно
(19) минимум на 3 разных компах такое наблюдается
21 — 14.03.13 — 05:16
(20).2 ну так сервак ребутни )
22 — 14.03.13 — 05:23
(21) раз в сутки ребутится
23 — 14.03.13 — 07:51
(11) При нажатии на кнопку подробно должно написать что-то типа: «{(1)}: Ошибка при вызове метода контекста (НайтиПоРеквизиту): метод объекта не обнаружен» или «{(1)}: Ошибка при вызове метода контекста (НайтиПоРеквизиту): реквизит не является индексируемым» или «{(1)}: Ошибка при вызове метода контекста (НайтиПоРеквизиту): бесы пошалили, батюшка» ну или что-то в этом роде, но причина ошибки вызова метода должна быть
24 — 14.03.13 — 08:58
(23) Дословно выглядит вот так (если убрать всякие попытки-исключения) :
{Обработка.З.Форма.Форма.Форма(788)}: Ошибка при вызове метода контекста (Записать)
СтрОбъект.Записать(РежимЗаписиДокумента.Запись);
по причине:
Ошибка при выполнении обработчика — ‘ПриЗаписи’
по причине:
{ОбщийМодуль.ВыгрузкаДанныхБУ.Модуль(384)}: Ошибка при вызове метода контекста (НайтиПоРеквизиту)
СтрОбъект.Записать(РежимЗаписиДокумента.Запись);
по причине:
В данной транзакции уже происходили ошибки!
25 — 14.03.13 — 09:16
апну
26 — 14.03.13 — 09:42
люди!!!!
wertyu
27 — 15.03.13 — 01:47
(26) так у тебя ошибки были до неё )
Добрый день! Хочу обратиться к регистру и получить из него данные: Ругается: {Справочник.Номенклатура.Форма.ФормаЭлемента.Форма}: Ошибка при вызове метода контекста (НайтиПоРеквизиту) НоваяЗапись.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту(«КодТовара», КодТовара).Наименование; по причине: Неверно указан реквизит Делаю все по синтакс-помощнику. Реквизит этот имеем тип «Строка» и передаю в него при поиске тоже строку. А ошибку все равно прёт. Что делаю не так?
для этого в 8.Х используются только и исключительно запросы
оваяЗапись.Номенклатура — явно имеет не тип СТРОКА.
и пихать туда Наименование — тут что-то надо в консерватории подправить
Откуда уверенность, что у номенклатуры есть реквизит КодТовара?
Ну и для метода НайтиПоРеквизиту, нужно указывать индексируемый реквизит, если че.. коим КодТовара не является, судя по ошибке.
и — не, тут я согласен. Поправил: НО! Ошибка в том, кто ругается на реквизит, а он, именно с таким названием, у моего справочника «Номенклатура» ЕСТЬ!
Плохо поправил) Оно тебе и так ссылку найдет) а по ошибке, наверняка
— «Индексировать» для всех моих реквизитов с типом «Строка» не активен и стоит значение «Не индексировать». Получается, что обратиться через этот метод я не могу?
да вроде пофиг уже давно на индексацию хз че с реквизитом, но писать нужно просто НоваяЗапись.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту(«КодТовара», КодТовара); , а лучше запрос самому делать
может это строка неограниченной длины??
Ну, раз пофиг, значит КодТовара — строка неограниченной длины поди..
делай ограниченной, это будет правильно во всех смыслах
Ну, блин, ребят вы БОГИ 1С)))))))))) Да, ошибка в том, что этот реквизит и был неограниченной длины, который поэтому и индексировать нельзя. Снял галку «Неограниченная длина» и оставил только: Действительно ссылку возвращает! ВСЕМ СПАСИБО!!! Хорошего дня!)
ты длину там смотри выстави нормальную, а то порежет коды существующие
Только писать начал а ты сам разобрался
— спасибо, уже учёл!) — спасибо всё равно!)
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
jediAlex 4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 627 |
||||
1 |
||||
15.12.2017, 10:09. Показов 3281. Ответов 5 Метки нет (Все метки)
здравствуйте. Есть собственная конфигурация 1С 8.3 со справочником «Сотрудники». В этом справочнике сделал реквизит «ЭлПочта»(Строка) для записи адресов почты сотрудников. Есть файл Excel с перечнем сотрудников и адресами, откуда я и пытаюсь подгрузить адреса в справочник. В файле указаны имена сотрудников без уникальных табельных номеров. Сделал обработку для загрузки с кодом:
В режиме предприятия при выполнении команды ругается(См. приложение).Что не так? подскажите пожалуйста. Миниатюры
0 |
4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 627 |
|
15.12.2017, 10:52 [ТС] |
2 |
вот текст ошибки:
0 |
Phil 434 / 305 / 92 Регистрация: 28.05.2014 Сообщений: 1,247 |
||||
15.12.2017, 11:44 |
3 |
|||
jediAlex,
попробуйте
1 |
4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 627 |
|
15.12.2017, 13:44 [ТС] |
4 |
попробовал. При выполнении ругается:
0 |
Модератор 3722 / 2917 / 574 Регистрация: 10.03.2011 Сообщений: 11,489 Записей в блоге: 1 |
|
15.12.2017, 14:41 |
5 |
Реквизит «ФИОПолное» в справочнике есть и заполнен данными… по этому реквизиту должно быть включено ИНДЕКСИРОВАНИЕ Добавлено через 12 минут Имя реквизита, как он задан в конфигураторе, по значению которого осуществляется поиск.
0 |
4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 627 |
|
15.12.2017, 15:18 [ТС] |
6 |
вот и была как раз строка произвольной длины. Забыл я про это. Теперь исправил — все работает. Могу обойтись и фиксированной строкой
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
15.12.2017, 15:18 |
6 |
|
|
|
Правила раздела:
- Перед тем, как задать вопрос, желательно почитать документацию и воспользоваться поиском.
- Когда задаёте вопрос, то обязательно указывайте платформу (7.7, 8.0, 8.1, 8.2, etc), причем желательно в заголовке. Если речь идёт о типовой конфигурации, то указывайте её название и релиз. Текущие версии можно посмотреть здесь.
- Ещё раз напоминаем о необходимости соблюдать не только правила, но и законы. Уважайте авторские права.
Высказать своё мнение о модераторах раздела можно здесь: evGenius
Бух 3.0 ПКО
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Создаю документ ПКО с ВидОперации = Перечисления.ВидыОперацийПКО.РозничнаяВыручка Добавлено 11.01.18, 12:00 Теперь другая ошибка появилась: Ошибка при вызове метода контекста (НайтиПоРеквизиту) НовыйДок.Контрагент = Справочники.Склады.НайтиПоРеквизиту(«Комментарий»,ЭксельФН) ; по причине: Неверно указан реквизит Добавлено 11.01.18, 12:20 |
lastlogic |
|
Через запрос с ВЫРАЗИТЬ можно… |
^D^ima |
|
Why? ЭксельДата = «2017.12.22» НовыйДок.Дата = Дата(ЭксельДата+» 0:00:01″); Дата документа должна быть не ранее 2000 года |
kosten |
|
^D^ima, читай СП дт = Дата(«20171222»); Разницу видишь? Цитата Литералы: ГГГГ — четыре цифры года (включая тысячелетие и век); Сообщение отредактировано: kosten — 11.01.18, 13:21 |
^D^ima |
|
ок |
^D^ima |
|
Не могу понять по какой причине не формируются проводки при проведении? Вродебы как и ошибок не выдает и проводок не создает. Забыл скорее всего какой-то реквизит заполнить. Сообщить(«Создаем документ ПКО»); НовыйДок = Документы.ПриходныйКассовыйОрдер.СоздатьДокумент(); НовыйДок.ВалютаДокумента = Справочники.Валюты.НайтиПоНаименованию(«руб.»); НовыйДок.Организация =Справочники.Организации.ОрганизацияПоУмолчанию(Пользователи.ТекущийПользователь()); НовыйДок.Дата =Дата(ЭксельДата); НовыйДок.ВидОперации = Перечисления.ВидыОперацийПКО.РозничнаяВыручка; НовыйДок.СчетКасса = ПланыСчетов.Хозрасчетный.НайтиПоКоду(«50.01»); НовыйДок.СуммаДокумента = Число(ЭксельСумма); СкладЗапрос = новый Запрос; СкладЗапрос.Текст= «ВЫБРАТЬ | Склады.Ссылка КАК Ссылка, | Склады.Наименование КАК Наименование |ИЗ | Справочник.Склады КАК Склады |ГДЕ | Склады.Комментарий ПОДОБНО &Комментарий»; СкладЗапрос.УстановитьПараметр(«Комментарий»,ЭксельФН); Выборка = СкладЗапрос.Выполнить().Выбрать(); Выборка.Следующий(); НовыйДок.Контрагент = Выборка.Ссылка; НовыйДок.ПринятоОт = строка(Выборка.Наименование); //НовыйДок.СтатьяДвиженияДенежныхСредств = Справочники.СтатьиДвиженияДенежныхСредств.НайтиПоНаименованию(Выборка.Наименование); НовыйТовар = НовыйДок.РасшифровкаПлатежа.Добавить(); НовыйТовар.СуммаПлатежа = Число(ЭксельСумма); НовыйТовар.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС; НовыйТовар.СтатьяДвиженияДенежныхСредств = Справочники.СтатьиДвиженияДенежныхСредств.НайтиПоНаименованию(Выборка.Наименование); НовыйДок.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС; НовыйДок.Записать(РежимЗаписиДокумента.Запись); Добавлено 30.01.18, 21:10 НовыйДок.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.НайтиПоКоду(«90.01.1»); НовыйДок.СубконтоКт1 = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию(«Основная номенклатурная группа»); НовыйДок.СубконтоКт2 = Перечисления.СтавкиНДС.БезНДС; НовыйДок.СубконтоКт3 = «»; НовыйДок.ПодразделениеКт = Справочники.ПодразделенияОрганизаций.НайтиПоНаименованию(«Основное подразделение»);
|
^D^ima |
|
Как-то можно посмотреть из конфигуратора значения объектов базы данных? Чтобы не нужно было открывать в исполняемой конфигурации «Построитель запросов» и дергать данные? |
kosten |
|
Цитата ^D^ima @ 30.01.18, 20:16 НовыйДок.Записать(РежимЗаписиДокумента.Запись); Разве запись формирует проводки? Попробуй не Записать,а Провести. |
^D^ima |
|
Цитата kosten @ 31.01.18, 06:25 Разве запись формирует проводки? Попробуй не Записать,а Провести. нет конечно. но мне не надо проводить сразу документ, вначале его проверяет бухгалтер. |
evGenius |
|
Цитата ^D^ima @ 31.01.18, 06:16 Как-то можно посмотреть из конфигуратора значения объектов базы данных? Чтобы не нужно было открывать в исполняемой конфигурации «Построитель запросов» и дергать данные? Скачай «Инструменты разработчика». Замечательная штука, набор инструментов. Среди них есть редактор реквизитов любого объекта. |
^D^ima |
|
evGenius |
evGenius |
|
Цитата ^D^ima @ 19.02.18, 14:38 имеется в виду 1C:Enterprise Development Tools? Нет, вот это. |
^D^ima |
|
evGenius А то получается какая-то шляпа: |
^D^ima |
|
Ещё не понятно где новая подсистема из расширения. Расширение применилось, а новая подсистема не появилась |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- 1С: Проблемы и решения
- Следующая тема
[ Script execution time: 0,2171 ] [ 21 queries used ] [ Generated: 6.06.23, 02:03 GMT ]
-
Справочник Контрагенты реквизит Наименованиеполное!!!!
Здравствуйте, уже замучилась не знаю что ему надо!!!
есть внешняя обработка, все нормально, забивает в таблицу данные их excel, теперь из этой таблицы надо записать данные в справочник, в котором есть реквизит контрагент, ну или владелец, делаю так
контр=справочники.контрагенты.найтипореквизиту(«наименованиеполное», стр.контрагент)
он тут ругается что ошибка при вызове метода контекста найтипореквизиту, а что не так то????????
платформа 8,2,15,301 бухгалтерия 2,0.34,13стр.контрагент — строка неограниченая, в отладчике он её показывает, как строку без всяких пробелов по бокам,
может этот реквизит наименованиеполное какой то не простой, где узнать, только вы у меня есть, помогите плиииз… -
Offline
Azamat
Опытный в 1С- Регистрация:
- 29 июл 2011
- Сообщения:
- 275
- Симпатии:
- 0
- Баллы:
- 26
Если открыть синтакс-помощник, то вы увидете, что у метода НайтиПоРеквизиту может быть Тип значения произвольный, кроме ХранилищеЗначений и строк произвольной длины. А реквизит НаименованиеПолное имеет тип строки произвольной длины.
-
спасибо, тоесть к этому реквизиту не применим этот метод, круто, но тогда как мне владельца указать, у меня в моей таблице есть только этот реквизит по отношению к владельцу, конечно можно руками, но блиин,спасибо
-
Offline
for_maricat
Опытный в 1С- Регистрация:
- 11 ноя 2010
- Сообщения:
- 236
- Симпатии:
- 0
- Баллы:
- 26
Запросом ищите. Там можно преобразование типа сделать.