Nikitos
14.03.13
✎
02:36
Доброй ночи.
Не могу понять как так происходит. Есть некая обработка загрузки документов и подписка на событие ПередЗаписью() документа РеализацияТоваровИУслуг.
Во время выполнения загрузки идет запись документа 2 раза (почему так не знаю — писал не я). И из подписки идет обращение к функции:
Функция ПолучитьСприсокКонтрагентов(ИД_Базы)
СК = Новый СписокЗначений;
Если ИД_Базы = «1» Тогда
СК.Добавить(Справочники.Контрагенты.НайтиПоРеквизиту(«ИНН», «4716022531»);
…….
Иначе
…….
КонецЕсли;
Возврат СК;
КонецФункции
Собственно говоря вопрос в следующем:
при первом обращении в эту функцию происходит нормальное формирование списка значений, а вот при втором обращении в функцию происходит ошибка «Ошибка при вызове метода контекста (НайтиПоРеквизиту)».
Как так происходит?
rotting
14.03.13
✎
02:39
что пишет при нажатии на кнопку подробно?
Nikitos
14.03.13
✎
02:46
(1) Ошибка при вызове метода контекста (НайтиПоРеквизиту)
Прояснило?
Nikitos
14.03.13
✎
03:08
хм… Все страньше и страньше…
С горя переписал заполнение списка значений запросом. При втором обращении вылазит ошибка:
Ошибка при вызове метода контекста (Выполнить) : Ошибка выполнения запроса
Вообще ничего не понимаю
simol
14.03.13
✎
03:16
Для НайтиПоРеквизиту реквизит должен быть проиндексирован
Nikitos
14.03.13
✎
03:19
Я в курсе. Это «допиленная» БП. К тому же смотри (3) и «… при первом обращении в эту функцию происходит нормальное формирование списка значений, а вот при втором обращении в функцию происходит ошибка …»
simol
14.03.13
✎
03:24
СК.Добавить(Справочники.Контрагенты.НайтиПоРеквизиту(«ИНН», «4716022531»);
Скобки не хватает
Nikitos
14.03.13
✎
03:28
(6) Когда сюда набивал недопоставил.
и (0) «… при первом обращении в эту функцию происходит нормальное формирование списка значений, а вот при втором обращении в функцию происходит ошибка …»
simol
14.03.13
✎
03:35
По «подробно» что пишет?
Nikitos
14.03.13
✎
03:36
(8) смотри (2)
rotting
14.03.13
✎
04:03
(9) отладчик что говорит? Вбей в отладчике Справочники.Контрагенты.НайтиПоРеквизиту(«ИНН», «4716022531»)
Nikitos
14.03.13
✎
04:10
(1) При первом обращении к функции находит контрагента.
При втором — {(1)}: Ошибка при вызове метода контекста (НайтиПоРеквизиту)
Nikitos
14.03.13
✎
04:11
причем Справочники.Контрагенты имеет значение СправочникМенеджер.Контрагенты, т.е. вроде как все правильно
rotting
14.03.13
✎
04:16
(12) ну оно ж должно писать при нажатии на кнопку «подробно» что-то типа «по причине..», мистика какая-то….
Nikitos
14.03.13
✎
04:24
вот оно такую причину и пишет
Nikitos
14.03.13
✎
04:25
шла вторая ночь…
Godofsin
14.03.13
✎
04:29
Батюшку приглашал бесов изгонять?
Nikitos
14.03.13
✎
04:38
наверное пора
Sasha_Rapira
14.03.13
✎
04:44
У ИНН стоит индексирование? У ИНН длина ограничена?
wertyu
14.03.13
✎
05:05
комп ребутни
Nikitos
14.03.13
✎
05:12
(18) учимся читать внимательно
(19) минимум на 3 разных компах такое наблюдается
wertyu
14.03.13
✎
05:16
(20).2 ну так сервак ребутни )
Nikitos
14.03.13
✎
05:23
(21) раз в сутки ребутится
cw014
14.03.13
✎
07:51
(11) При нажатии на кнопку подробно должно написать что-то типа: «{(1)}: Ошибка при вызове метода контекста (НайтиПоРеквизиту): метод объекта не обнаружен» или «{(1)}: Ошибка при вызове метода контекста (НайтиПоРеквизиту): реквизит не является индексируемым» или «{(1)}: Ошибка при вызове метода контекста (НайтиПоРеквизиту): бесы пошалили, батюшка» ну или что-то в этом роде, но причина ошибки вызова метода должна быть
Nikitos
14.03.13
✎
08:58
(23) Дословно выглядит вот так (если убрать всякие попытки-исключения) :
{Обработка.З.Форма.Форма.Форма(788)}: Ошибка при вызове метода контекста (Записать)
СтрОбъект.Записать(РежимЗаписиДокумента.Запись);
по причине:
Ошибка при выполнении обработчика — ‘ПриЗаписи’
по причине:
{ОбщийМодуль.ВыгрузкаДанныхБУ.Модуль(384)}: Ошибка при вызове метода контекста (НайтиПоРеквизиту)
СтрОбъект.Записать(РежимЗаписиДокумента.Запись);
по причине:
В данной транзакции уже происходили ошибки!
Nikitos
14.03.13
✎
09:16
апну
Nikitos
14.03.13
✎
09:42
люди!!!!
wertyu
15.03.13
✎
01:47
(26) так у тебя ошибки были до неё )
Добрый день! Хочу обратиться к регистру и получить из него данные: Ругается: {Справочник.Номенклатура.Форма.ФормаЭлемента.Форма}: Ошибка при вызове метода контекста (НайтиПоРеквизиту) НоваяЗапись.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту(«КодТовара», КодТовара).Наименование; по причине: Неверно указан реквизит Делаю все по синтакс-помощнику. Реквизит этот имеем тип «Строка» и передаю в него при поиске тоже строку. А ошибку все равно прёт. Что делаю не так?
для этого в 8.Х используются только и исключительно запросы
оваяЗапись.Номенклатура — явно имеет не тип СТРОКА.
и пихать туда Наименование — тут что-то надо в консерватории подправить
Откуда уверенность, что у номенклатуры есть реквизит КодТовара?
Ну и для метода НайтиПоРеквизиту, нужно указывать индексируемый реквизит, если че.. коим КодТовара не является, судя по ошибке.
и — не, тут я согласен. Поправил: НО! Ошибка в том, кто ругается на реквизит, а он, именно с таким названием, у моего справочника «Номенклатура» ЕСТЬ!
Плохо поправил) Оно тебе и так ссылку найдет) а по ошибке, наверняка
— «Индексировать» для всех моих реквизитов с типом «Строка» не активен и стоит значение «Не индексировать». Получается, что обратиться через этот метод я не могу?
да вроде пофиг уже давно на индексацию хз че с реквизитом, но писать нужно просто НоваяЗапись.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту(«КодТовара», КодТовара); , а лучше запрос самому делать
может это строка неограниченной длины??
Ну, раз пофиг, значит КодТовара — строка неограниченной длины поди..
делай ограниченной, это будет правильно во всех смыслах
Ну, блин, ребят вы БОГИ 1С)))))))))) Да, ошибка в том, что этот реквизит и был неограниченной длины, который поэтому и индексировать нельзя. Снял галку «Неограниченная длина» и оставил только: Действительно ссылку возвращает! ВСЕМ СПАСИБО!!! Хорошего дня!)
ты длину там смотри выстави нормальную, а то порежет коды существующие
Только писать начал а ты сам разобрался
— спасибо, уже учёл!) — спасибо всё равно!)
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
|
|
|
Правила раздела:
- Перед тем, как задать вопрос, желательно почитать документацию и воспользоваться поиском.
- Когда задаёте вопрос, то обязательно указывайте платформу (7.7, 8.0, 8.1, 8.2, etc), причем желательно в заголовке. Если речь идёт о типовой конфигурации, то указывайте её название и релиз. Текущие версии можно посмотреть здесь.
- Ещё раз напоминаем о необходимости соблюдать не только правила, но и законы. Уважайте авторские права.
Высказать своё мнение о модераторах раздела можно здесь: evGenius
Бух 3.0 ПКО
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Создаю документ ПКО с ВидОперации = Перечисления.ВидыОперацийПКО.РозничнаяВыручка Добавлено Теперь другая ошибка появилась: Ошибка при вызове метода контекста (НайтиПоРеквизиту) НовыйДок.Контрагент = Справочники.Склады.НайтиПоРеквизиту(«Комментарий»,ЭксельФН) ; по причине: Неверно указан реквизит Добавлено |
lastlogic |
|
Через запрос с ВЫРАЗИТЬ можно… |
^D^ima |
|
Why? ЭксельДата = «2017.12.22» НовыйДок.Дата = Дата(ЭксельДата+» 0:00:01″); Дата документа должна быть не ранее 2000 года |
kosten |
|
^D^ima, читай СП дт = Дата(«20171222»); Разницу видишь? Цитата Литералы: ГГГГ — четыре цифры года (включая тысячелетие и век); Сообщение отредактировано: kosten — |
^D^ima |
|
ок |
^D^ima |
|
Не могу понять по какой причине не формируются проводки при проведении? Вродебы как и ошибок не выдает и проводок не создает. Забыл скорее всего какой-то реквизит заполнить. Сообщить(«Создаем документ ПКО»); НовыйДок = Документы.ПриходныйКассовыйОрдер.СоздатьДокумент(); НовыйДок.ВалютаДокумента = Справочники.Валюты.НайтиПоНаименованию(«руб.»); НовыйДок.Организация =Справочники.Организации.ОрганизацияПоУмолчанию(Пользователи.ТекущийПользователь()); НовыйДок.Дата =Дата(ЭксельДата); НовыйДок.ВидОперации = Перечисления.ВидыОперацийПКО.РозничнаяВыручка; НовыйДок.СчетКасса = ПланыСчетов.Хозрасчетный.НайтиПоКоду(«50.01»); НовыйДок.СуммаДокумента = Число(ЭксельСумма); СкладЗапрос = новый Запрос; СкладЗапрос.Текст= «ВЫБРАТЬ | Склады.Ссылка КАК Ссылка, | Склады.Наименование КАК Наименование |ИЗ | Справочник.Склады КАК Склады |ГДЕ | Склады.Комментарий ПОДОБНО &Комментарий»; СкладЗапрос.УстановитьПараметр(«Комментарий»,ЭксельФН); Выборка = СкладЗапрос.Выполнить().Выбрать(); Выборка.Следующий(); НовыйДок.Контрагент = Выборка.Ссылка; НовыйДок.ПринятоОт = строка(Выборка.Наименование); //НовыйДок.СтатьяДвиженияДенежныхСредств = Справочники.СтатьиДвиженияДенежныхСредств.НайтиПоНаименованию(Выборка.Наименование); НовыйТовар = НовыйДок.РасшифровкаПлатежа.Добавить(); НовыйТовар.СуммаПлатежа = Число(ЭксельСумма); НовыйТовар.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС; НовыйТовар.СтатьяДвиженияДенежныхСредств = Справочники.СтатьиДвиженияДенежныхСредств.НайтиПоНаименованию(Выборка.Наименование); НовыйДок.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС; НовыйДок.Записать(РежимЗаписиДокумента.Запись); Добавлено НовыйДок.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.НайтиПоКоду(«90.01.1»); НовыйДок.СубконтоКт1 = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию(«Основная номенклатурная группа»); НовыйДок.СубконтоКт2 = Перечисления.СтавкиНДС.БезНДС; НовыйДок.СубконтоКт3 = «»; НовыйДок.ПодразделениеКт = Справочники.ПодразделенияОрганизаций.НайтиПоНаименованию(«Основное подразделение»);
|
^D^ima |
|
Как-то можно посмотреть из конфигуратора значения объектов базы данных? Чтобы не нужно было открывать в исполняемой конфигурации «Построитель запросов» и дергать данные? |
kosten |
|
Цитата ^D^ima @ НовыйДок.Записать(РежимЗаписиДокумента.Запись); Разве запись формирует проводки? Попробуй не Записать,а Провести. |
^D^ima |
|
Цитата kosten @ Разве запись формирует проводки? Попробуй не Записать,а Провести. нет конечно. но мне не надо проводить сразу документ, вначале его проверяет бухгалтер. |
evGenius |
|
Цитата ^D^ima @ Как-то можно посмотреть из конфигуратора значения объектов базы данных? Чтобы не нужно было открывать в исполняемой конфигурации «Построитель запросов» и дергать данные? Скачай «Инструменты разработчика». Замечательная штука, набор инструментов. Среди них есть редактор реквизитов любого объекта. |
^D^ima |
|
evGenius |
evGenius |
|
Цитата ^D^ima @ имеется в виду 1C:Enterprise Development Tools? Нет, вот это. |
^D^ima |
|
evGenius А то получается какая-то шляпа: |
^D^ima |
|
Ещё не понятно где новая подсистема из расширения. Расширение применилось, а новая подсистема не появилась |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- 1С: Проблемы и решения
- Следующая тема
[ Script execution time: 0,0662 ] [ 21 queries used ] [ Generated: 21.09.23, 05:23 GMT ]
ПоискДокументаПоРеквизиту. Ошибка: Не верно задан реквизит… |
Я |
IBTM
30.11.12 — 10:21
как тут говорят, б..н полюбому. Помогите всеже…
ПервыйДоукентНачисления = Документы.РегистрацияРазовыхНачисленийРаботниковОрганизаций.НайтиПоРеквизиту(«Комментарий», «» + «По инд. графику №» + Номер);
Ошибка при вызове метода контекста (НайтиПоРеквизиту): Неверно указан реквизит.
Я использую обработку табл. частей (если есть разница).
Реквизит — Комментарий(Тип:Строка, Длина:Переменная)
ЧЯДНТ?
IBTM
1 — 30.11.12 — 10:22
ПервыйДоукентНачисления = Документы.РегистрацияРазовыхНачисленийРаботниковОрганизаций.НайтиПоРеквизиту("Комментарий", "" + "По инд. графику №" + Номер); Ошибка при вызове метода контекста (НайтиПоРеквизиту): Неверно указан реквизит.
Рэйв
2 — 30.11.12 — 10:22
нет реквизита «Комментарий» в документе.
IBTM
3 — 30.11.12 — 10:24
(2) не ну я как бэ проверил… есть.
Alexperumov
4 — 30.11.12 — 10:25
(0) А что в Номер?
IBTM
5 — 30.11.12 — 10:26
Номер = Документ.Номер;
Тип номера: строка
beer_fan
6 — 30.11.12 — 10:27
Насколько я помню нельзя осуществлять поиск по строке неограниченной длины. Если ограничишь, тогда будет код работать.
cw014
7 — 30.11.12 — 10:27
Комментарий — строка неограниченной длины, для которой нельзя установить «индексировать»
Почитай СП по «НайтиПоРеквизиту» повнимательнее, Доу-Кент!!!
Alexperumov
8 — 30.11.12 — 10:28
Доукент — это описка?)
cw014
9 — 30.11.12 — 10:29
(8) Нет, это фамилия :)))
Serg_1960
10 — 30.11.12 — 10:30
(7) +1 ТС, читай СП.
IBTM
11 — 30.11.12 — 10:30
(6), (7) спасибо за помощь. ща гляну.
фрагмент такой:
Процедура Инициализировать(Документ, ТабличнаяЧасть, ТабличноеПоле) Экспорт; Если Документ.ЭтоНовый() Тогда ТекстВопроса = "Внимание, это новый ""инд. график""! Для дальнейшей перезаписи документа ""разового начисления"" необходимо записать этот документ. Записать?"; Если Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда Документ.Записать(); КонецЕсли; Иначе Номер = Документ.Номер; ПервыйДокументНачисления = Документы.РегистрацияРазовыхНачисленийРаботниковОрганизаций.НайтиПоРеквизиту("Комментарий", "По инд. графику №"); КонецЕсли; КонецПроцедуры
IBTM
12 — 30.11.12 — 10:31
все спасибо, понел надо ограничить «комментарий».
Serg_1960
13 — 30.11.12 — 10:41
(12) … или использовать полнотекстовый поиск. Как? Поищи в конфе ПолнотекстовыйПоискВДанных.
cw014
14 — 30.11.12 — 10:42
(13) Ты человека не смущай, он ведь нахимичит с ним
Нуф-Нуф
15 — 30.11.12 — 10:42
А запросом?
cw014
16 — 30.11.12 — 10:45
(15) +1
Artful Den
17 — 30.11.12 — 10:53
(0) Юзай запрос
beer_fan
18 — 30.11.12 — 11:04
(15) (17) Ну да запросом проще, а то придется пробелами до конца строки добивать…
IBTM
19 — 30.11.12 — 11:08
для запроса я вырос). Но сделаю им, проще согласен.
Я так пока и не понел как ограничить «Комментарий» в этом методе…
kosts
20 — 30.11.12 — 18:35
(19) >Я так пока и не понел как ограничить «Комментарий» в этом методе…
Скорее всего имели ввиду изменить метаданные — сделать комментарий ограниченной определенной длины.
Используй лучше запрос, что то в этом роде
…
ГДЕ
ВЫРАЗИТЬ(Комментарий КАК СТРОКА(200)) ПОДОБНО «%1»
IBTM
21 — 30.11.12 — 19:05
(20) спасибо, учту.
А я сразу так сделал. Вроде как работает…
РегистрацияРазовыхНачисленийРаботниковОрганизаций.Комментарий ПОДОБНО «»По номеру: №%»» + &Номер
Добрый день! Хочу обратиться к регистру и получить из него данные: Ругается: {Справочник.Номенклатура.Форма.ФормаЭлемента.Форма}: Ошибка при вызове метода контекста (НайтиПоРеквизиту) НоваяЗапись.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту(«КодТовара», КодТовара).Наименование; по причине: Неверно указан реквизит Делаю все по синтакс-помощнику. Реквизит этот имеем тип «Строка» и передаю в него при поиске тоже строку. А ошибку все равно прёт. Что делаю не так?
для этого в 8.Х используются только и исключительно запросы
оваяЗапись.Номенклатура — явно имеет не тип СТРОКА.
и пихать туда Наименование — тут что-то надо в консерватории подправить
Откуда уверенность, что у номенклатуры есть реквизит КодТовара?
Ну и для метода НайтиПоРеквизиту, нужно указывать индексируемый реквизит, если че.. коим КодТовара не является, судя по ошибке.
и — не, тут я согласен. Поправил: НО! Ошибка в том, кто ругается на реквизит, а он, именно с таким названием, у моего справочника «Номенклатура» ЕСТЬ!
Плохо поправил) Оно тебе и так ссылку найдет) а по ошибке, наверняка
— «Индексировать» для всех моих реквизитов с типом «Строка» не активен и стоит значение «Не индексировать». Получается, что обратиться через этот метод я не могу?
да вроде пофиг уже давно на индексацию хз че с реквизитом, но писать нужно просто НоваяЗапись.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту(«КодТовара», КодТовара); , а лучше запрос самому делать
может это строка неограниченной длины??
Ну, раз пофиг, значит КодТовара — строка неограниченной длины поди..
делай ограниченной, это будет правильно во всех смыслах
Ну, блин, ребят вы БОГИ 1С)))))))))) Да, ошибка в том, что этот реквизит и был неограниченной длины, который поэтому и индексировать нельзя. Снял галку «Неограниченная длина» и оставил только: Действительно ссылку возвращает! ВСЕМ СПАСИБО!!! Хорошего дня!)
ты длину там смотри выстави нормальную, а то порежет коды существующие
Только писать начал а ты сам разобрался
— спасибо, уже учёл!) — спасибо всё равно!)
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
|
|
|
Правила раздела:
- Перед тем, как задать вопрос, желательно почитать документацию и воспользоваться поиском.
- Когда задаёте вопрос, то обязательно указывайте платформу (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,0471 ] [ 21 queries used ] [ Generated: 11.04.23, 12:46 GMT ]
61 / 60 / 17 Регистрация: 17.02.2011 Сообщений: 161 |
|
1 |
|
Ошибка при вызове метода контекста28.03.2013, 09:13. Показов 7367. Ответов 3
есть ссылка «e79ba7ae-0747-11db-9244-0011955c22cb»… как присвоить ее новому элементу справочника Добавлено через 7 минут док = документы.РеализацияТоваровУслуг; Ссылка=»e79ba7ae-0747-11db-9244-0011955c22cb»; {Форма.Форма.Форма(53)}: Ошибка при вызове метода контекста (НайтиПоРеквизиту) 0 |
206 / 180 / 31 Регистрация: 24.10.2011 Сообщений: 738 |
|
28.03.2013, 12:01 |
2 |
Никак. e79ba7ae-0747-11db-9244-0011955c22cb — внутренний идентификатор объекта. Ссылка=»e79ba7ae-0747-11db-9244-0011955c22cb»; — не является ссылкой, это строка. 1 |
2954 / 1766 / 82 Регистрация: 03.11.2011 Сообщений: 8,280 |
|
28.03.2013, 16:39 |
3 |
погуглите по синтпому ПолучитьСсылку(), ЗначениеВСтроку(), получить уник.идент. 1 |
Dethmontt Модератор 3711 / 2907 / 573 Регистрация: 10.03.2011 Сообщений: 11,447 Записей в блоге: 1 |
||||
29.03.2013, 01:04 |
4 |
|||
0 |
-
Здрасте!!!! Подскажите плиз. Что такое не пойму.
В справочнике Номенклатура есть Реквизит НаименованиеПолное, я по нему пытаюсь вытащить просто Наименование. След функцией:
Справочники.Номенклатура.НайтиПоРеквизиту(«НаименованиеПолное»,СокрЛП(Параметр)).Наименование;
Выдает ошибку:
Отчет.ГодовойПлан.Форма.ГодовойПлан(42)}: Ошибка при вызове метода контекста (НайтиПоРеквизиту): Неверно указан реквизит
Позиция = Справочники.Номенклатура.НайтиПоРеквизиту(«НаименованиеПолное»,СокрЛП(Параметр)).Наименование;
по причине:
Неверно указан реквизитПоскажите кто знает. Заранее спасибо.
-
Offline
x_under
Модераторы
Команда форума
Модератор
- Регистрация:
- 25 апр 2007
- Сообщения:
- 2.576
- Симпатии:
- 16
- Баллы:
- 29
Синтаксис:
НайтиПоРеквизиту(<Имя реквизита>, <Значение реквизита>, <Родитель>, <Владелец>)
Параметры:
<Имя реквизита> (обязательный)
Тип: Строка. Имя реквизита, как он задан в конфигураторе, по значению которого осуществляется поиск. Тип значения произвольный, кроме ХранилищеЗначения и СТРОК ПРОИЗВОЛЬНОЙ ДЛИНЫ.
А полное наименование обычно делают строкой произвольной длины. Проверь -
Спасибо помогло!!!! :unsure:
На чтение 2 мин Просмотров 492 Опубликовано 12.01.2021
//Реквизит1, Реквизит2, Реквизит3 — реквизиты документа
//В Реквизит3 (с типом «Справочник.Контрагенты»)
//помещается значение из «Справочник.Контрагенты»
НовыйДок = СоздатьОбъект( «Документ.Платежка» );
НовыйДок . Новый ();
НовыйДок . Реквизит1 = «ЗначениеРеквизита1» ;
НовыйДок . Реквизит2 = «ЗначениеРеквизита2» ;
СпрКонтрагенты = СоздатьОбъект( «Справочник.Контрагенты» );
СпрКонтрагенты . НайтиПоРеквизиту ( «РеквизитГдеИскать» , «ТоЧтоШщется» , 1 );
Если СпрКонтрагенты . Выбран () > 0 Тогда
НовыйДок . Реквизит3 = СпрКонтрагенты . ТекущийЭлемент ();
Иначе
Сообщить( «В СпрКонтрагенты ничего не найдено» );
КонецЕсли;
НовыйДок . Записать ();
НовыйДок . Провести ();
БП 3.0 Банковские выписки были разнесены с ошибками (неправильно указаны наименование контрагента, назначение платежа). Возможно одной обработкой исправить данную ситуацию?
Для редактирования выписок открыть Банк и касса — Банк — Банковские выписки. (Рис.1,2) Выделить необходимые банковские выписки (если их несколько, они выделяются с нажатой клавишей Shift) и, кликнув правой кнопкой мыши, выбрать команду «Изменить выделенные. » (Рис.3 список выбранных элементов.рис.4 — список реквизитов для редактирования) В окне формы «Изменение выделенных элементов «Списание с расчетного счета» найти реквизит, который подлежит изменению, установить флажок и выбрать новое значение из соответствующего справочника. «Изменить реквизиты» и проверить результат изменения (рис.5).
Найти элемент справочника по значению реквизита.
НайтиПоРеквизиту( , , Ф лагГлобальногоПоиска>)
ИмяРеквизита >
Строковое выражение с наименованием реквизита.
3начение >
Значение реквизита для поиска.
ФлагГлобальногоПоиска >
Числовое выражение. Если 0, то поиск должен выполняться в пределах подчинения справочника, если 1, то поиск должен выполняться по всему справочнику.
Число 1 — если действие выполнено;
Число 0 — если действие не выполнено (элемент не найден).
Метод НайтиПоРеквизиту выполняет поиск первого элемента с указанным значением заданного реквизита и позиционирует объект справочник на этом элементе.
Данный метод может использоваться только в том случае, если в конфигураторе при описании данного реквизита установлен признак «Сортировка» (Свойства реквизита — Дополнительные — Сортировка).
Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект .
// Позиционируем созданный объект Спр по реквизиту
Спр.НайтиПоРеквизиту(«СерияПаспорта», «XXVII-OP», 1);
Если Спр.Выбран() > 0 Тогда
Предупреждение(«Не найден сотрудник с таким паспортом!»);
- Распечатать
Оцените статью:
- 5
- 4
- 3
- 2
- 1
(0 голосов, среднее: 0 из 5)
Поделитесь с друзьями!
В платформе 1С сообщения об ошибках бывают достаточно запутаны, и без должных навыков разобраться в причинах достаточно сложно. Вот и сообщение об ошибке при вызове контекста может ввести в ступор начинающего разработчика. Однако в подавляющем большинстве случаев мы видим подобное сообщение, если разработчик допустил ошибку в своем коде. Причем речь зачастую идет не об орфографических ошибках, а о логических.
Исправляем ситуацию
Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.
Приглашаем на
бесплатный вебинар!
18 апреля в 11:00 мск
40 мин.
Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.ВерсияДанных КАК ВерсияДанных,
| Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
| Номенклатура.Родитель КАК Родитель,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Номенклатура.Предопределенный КАК Предопределенный,
| Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| ";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
КонецЦикла;
Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.
Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.
Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.ВерсияДанных КАК ВерсияДанных,
| Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
| Номенклатура.Родитель КАК Родитель,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Номенклатура.Предопределенный КАК Предопределенный,
| Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ЭтоГруппа ";
НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель");
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов"));
КонецЦикла;
1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.
В конфигураторе находим строку и метод, на который указывало сообщение об ошибке, и нажимаем на него правой кнопкой мыши. Выбираем пункт «Поиск в синтакс-помощнике» и платформа самостоятельно ищет справочную информацию по выделенному методу. В справке мы видим не только подробное описание параметров и самого метода, но и пример. Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает.
Чаще всего причиной подобных ошибок выступают следующие факторы:
- Невнимательность;
- Отсутствие опыта или знаний;
- Несогласованность действий разработчиков друг с другом;
- Изменения в методах контекста в новых версиях платформы.
Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.