Здравствуйте, никак не могу разобраться с проблемой
не срабатывает вот такой код
Спр=База.Справочники.Номенклатура.НайтиПоРеквизиту(«КодУТ»,СокрЛП(КодУТ));
Если ЗначениеЗаполнено(Спр.Код) Тогда
Попытка
ОбНом=Спр.ПолучитьОбъект();
ИСключение
Сообщить(«Не взлетело»);
Сообщить(База.ИнформацияОбОшибке());
КонецПопытки;
КонецЕсли;
Ссылку в базе находит (проверял в отладчике), но метод ПолучитьОбъект() почему то не срабатывает
Причем потом таким же образом получаю объект документа, там всё работает
Помогите разобраться
Загружаю контрагентов в справочник Контрагенты из внешнего файла Эксель. Выдает ошибку: {Форма.Форма}: Ошибка при вызове метода контекста (ПолучитьОбъект): Элемент не выбран! Вот мой текст:
А какой должен быть объект у пустой ссылки?
Объект у пустой ссылки получить нельзя..
а что хотим получить если ссылка пустая ?
Он наверно в условии НЕ забыла поставить — Если НЕ СсылкаКА.Пустая Тогда и по невнимательности не замечает этого
— А какой должен быть объект у пустой ссылки? — Объект у пустой ссылки получить нельзя.. — А какой должен быть объект у пустой ссылки? — Объект у пустой ссылки получить нельзя.. — а что хотим получить если ссылка пустая ?
хотя судя по комментариям …
Вы меня совсем запутали! В базе ИНН не заполнено, в файле этот ИНН — есть. Мне надо из файла загрузить ИНН в базу. Для этого я пишу условие в : Если СсылкаКА.Пустая Тогда //не нашли ИНН Но выдает ошибку в . И еще вопрос, надо учесть три возможных случая: 1. ИНН в базе = ИННвФфайле (тогда пропустить) 2. ИНН в базе <>ИННвФайле (тогда на выбор пользователю: перезаписать или пропустить) 3. ИНН в базе пусто (тоже на выбор пользователю).
Не нашли с таким ИНН — создай новый или пропусти, задав вопрос пользователю! Не в пустой же ссылке объект искать… п.2. особенно мощно. Каждого контрагента из справочника, у которого ИНН не совпадает с ИНН из файла надо перезаписать, изменив ему ИНН! Чтоб у всех один и тот же был. И наименование не забудьте у всех одно поставить. С ума сойти…
Спасибо, тёзка !!! У меня все это крутится в цикле, поэтому ИНН у всех не поменяется ))
В вы пишите: Не нашли с таким ИНН — создай новый или пропусти, задав вопрос пользователю! Я так и делаю в , задаю вопрос пользователю: если он отвечает Да, то ИНН в базе должен перезаписаться ИНН из файла. Но у меня выходит ошибка в !!!
Вместо того, чтобы получать объект из пустой ссылки — надо создать новый.
+ Либо ищи по другому признаку нужный, а не по ИНН.
Я представляю справочник контрагентов хотя бы на 100 элементов. И в файле строк 50. Сидит пользователь за компом и ему вопрос «Найден контрагент с ИНН 123456789, перезаписать ему ИНН на 543765? Да, Нет?» И так в цикле 100*50=5000 раз. Дерзайте, Лера! Останется опять одна Шапокляк на форуме. Ну так создай! СПКА=Справочники.Контрагенты.СоздатьЭлемент; а потом ему присваивай че надо! СПКА.ИНН=….
в каком месте Вы создаете новый?
НОВЫЕ ЭЛЕМЕНТЫ СОЗДАВАТЬ в справочнике — НЕ НАДО! Надо у существующих контрагентов, у кого ИНН — пустые, заполнить их значениями из файла.
ты всё прододжаешь жечь напалмом. Сколько ты уже этих несчастных контрагентов грузишь из Ёкселя? :)) Головного научилась выставлять?
Капец справочнику контрагенты (((
Ну так как ты сопоставляешь того контрагента, что в Excel и того, что в справочнике?
попробуйте переписать код еще раз
И 3 года стажа. Умереть — не встать…
Логика — жесть!!! 1. Ищешь контрагента по ИНН 2. Если не находишь пытаешься записать значение. Куда?!!! (пультик пультик, включи телевизор :)))
Вот она уже 3 года и пытается этих контрагентов выгрузить. С невосполнимыми потерями для психики
уже-б писал весь код, без недомолвок… :))
Может ну его, этот 1С? В жизни столько вещей интересных, нафиг за компом сидеть?
неужели на инфостарте нет ничего подобного?
Старуха Шапокляк != Шапокляк
Это разные Шапокляки! АААА!!! Тысячи их! ВНЕЗАПНО!
загрузки из екселя, как бы.
БЛИН! Меня-то за что? Я просто молодая красивая Шапокляк И на форуме пораньше немного зарегилась.
>>>>Я просто молодая красивая Шапокляк Мы не видели фото!
гы — бабка внучку экзаменует?
не понял, в риторический вопрос.
Да я ж помощи-то не прошу, а так бы опубликовала
Только без наездов, пожалуйста.
Да вас тут скоро вся семья Шапокляков соберется…
Вдуй там бабке, чтоб 1с не занималась.
о блин все семейство похоже прется ). Все живые с генеалогического (или гинеклологичекого) древа шапокляков.
Юмористы, блин, из кулинарного техникума
уже послал ужин готовить. Совсем расшалилась.
Ты там сначала на крысе, что ли, ужин испытай, а то если она еще и готовит как программирует… Короче, береги себя, дедуля.
готовит хорошо, когда не программирует.
напоминает семейку Квери Аналайзера :))
Ну тогда ладно, не совсем никчемная бабуся.
Шаgокляков развелось аки Гениев 1С на дубовом
некоторые прямо сейчас народились.
Тэги:
Комментарии доступны только авторизированным пользователям
Всех приветствую.
Столкнулся с проблемой, возникла она из ниоткуда. Пользовались 1С: Альфа авто 4.1. 1С 8.3. Сегодня, запустив 1С и вызвав список заказ-нарядов вышла вот такая ошибка
Ошибка при вызове контекста (ПолучитьОбъект)
{ОбщийМодуль.дкДокументы.Модуль(11401)}: Ошибка при вызове метода контекста (ПолучитьОбъект)
ДокументОбъект = Элемент.ТекущаяСтрока.Ссылка.ПолучитьОбъект();
по причине:
Элемент не выбран!
При переходе в конфигуратор ошибку кидает именно на эту строку
1C | ||
|
Подскажите, пожалуйста, в чём может быть проблема? В конфигураторе не было практически никаких изменений.
Искренне говорю, я дилетант в программировании 1С, но очень нуждаюсь в в вашей помощи.
skillman |
|
||
---|---|---|---|
|
Добрый день. Был рабочий обмен между УТ 10.3 и бп2, предположительно после обновления конфигурации обмен стал зависать и загрузка из бп в ут не выполняется. При запуске обмена в отладке с остановкой ошибок. У меня вываливается ошибка в процедуре Процедура УстановитьОбменДаннымиЗагрузка(Объект, Значение = Истина) Экспорт Попытка Объект.ОбменДанными.Загрузка = Значение; Исключение КонецПопытки; Если УзелОбменаЗагрузкаДанных <> Неопределено И НЕ УзелОбменаЗагрузкаДанных.Пустая() Тогда Попытка Объект.ОбменДанными.Отправитель = УзелОбменаЗагрузкаДанных; Исключение КонецПопытки; КонецЕсли; КонецПроцедуры // УстановитьОбменДаннымиЗагрузка() на строке Объект.ОбменДанными.Отправитель = УзелОбменаЗагрузкаДанных; скрин ошибки https://i.imgur.com/hklr5VX.png Содержание в переменной «УзелОбменаЗагрузкаДанных» видно на скрине https://i.imgur.com/yBBsBnI.png Содержание «Объект.ОбменДанными.Отправитель» — неопределено Потом появляется ошибка на строке СтрокаНачальная = ПолучитьДанныеОбъектаСтрокой(Объект.Ссылка.ПолучитьОбъект()); Скрин ошибки «https://i.imgur.com/zqSP84C.png»; Содержимое «(Объект.Ссылка.ПолучитьОбъект())» вот скрин https://i.imgur.com/nGBqf0E.png Вот содержимое объекта https://i.imgur.com/dzl32xo.png документ, который должен загрузиться из БП в УТ. Соответственно загрузка завершается с ошибкой, см скрин https://i.imgur.com/Y56X2NR.png Вот текст ошибки полный: Ошибка при выгрузке данных для узла плана обмена ТипОбъекта = Документ объект: Поступление на расчетный счет Объект = Поступление на расчетный счет Б2-00000052 от 18.01.2019 0:00:00 ОписаниеОшибки = Ошибка при записи документа: Платежное поручение входящее Б2-00000052 от 18.01.2019 0:00:00 {Обработка.ОбменДаннымиXML.МодульОбъекта(6773)}: Ошибка при вызове метода контекста (ПолучитьОбъект): Элемент не выбран! ПозицияМодуля = Обработка.ОбменДаннымиXML.МодульОбъекта(1299) КодСообщения = 72 УзелПланаОбмена = 1С:Управление торговлей 8 (начиная с версии 10.3) Ошибка при загрузке объектов. Было загружено: 2 Произошла ошибка при выгрузке объектов. Было выгружено: 3 Техническая информация: ОписаниеОшибки = {Обработка.ОбменДаннымиXML.МодульОбъекта(7638)}: Ошибка при записи документа: Платежное поручение входящее Б2-00000052 от 18.01.2019 0:00:00 Уже голову из ломал, что проверить и исправить. В общем «I need help» |
Yandex |
|
||
---|---|---|---|
|
Подсказка: Вы получили ответ на свой вопрос — закройте вопрос! |
Солнце
01.08.13 — 09:44
Пишу так
Книга = ПолучитьCOMОбъект(Файл,»Excel.Application»);
Ошибка: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: No such interface supported
А если так
Книга = ПолучитьCOMОбъект(Файл);
Ошибка: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: Moniker cannot open file
Код что первый что втрой в файловой базе выполняется на ура…
А в серверной не хочет…
На сервере установлен Excel.
Код выполняется на сервере….
Помогите справиться с проблемкой…
Лефмихалыч
Модератор
1 — 01.08.13 — 09:46
(0) на сервере нет нужных COM-объектов. Установить MSOffice на сервер.
Солнце
2 — 01.08.13 — 09:50
MSOffice Установлен…
Солнце
3 — 01.08.13 — 09:54
Эксель = Новый COMОбъект(«Excel.Application»);
Книга = Эксель.WorkBooks.Open(Файл);
К Excel подключается а к открытию файла говорит:
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Excel): Приложению Microsoft Excel не удается получить доступ к файлу Это может быть вызвано одной из следующих причин.
• Указан несуществующий файл или путь.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем другой книги, открытой в данный момент.
Хотя доступ есть к нему… Файл нигде не используется и он закрыт!
Солнце
4 — 01.08.13 — 10:03
Никто не может помочь?…((
Лефмихалыч
Модератор
5 — 01.08.13 — 10:05
(2) он установлен на клиенте, а не на сервере. Установите офис на сервер
Лефмихалыч
Модератор
7 — 01.08.13 — 10:06
а, ну или файла нет на сервере.
В переменной «Файл» поди путь относительно твоей клиентской машины?
Солнце
9 — 01.08.13 — 10:07
(7) сетевой путь такие же ошибки делает
lEvGl
10 — 01.08.13 — 10:07
а что значит «выполняется на сервере» — регламентное задание?
Солнце
11 — 01.08.13 — 10:08
Нет процедура выполняется &НаСервере
Лефмихалыч
Модератор
12 — 01.08.13 — 10:09
(9) а у пользователя, под которым сервер 1С предприяти запущен, права-то на шару есть?
Солнце
13 — 01.08.13 — 10:09
(12) Конечно
Serginio1
14 — 01.08.13 — 10:09
Лефмихалыч
Модератор
15 — 01.08.13 — 10:10
(13) не верю
wowik
16 — 01.08.13 — 10:10
Лефмихалыч, +100. Сам недавно с этой ерундой занимался. Все по делу.
Солнце
17 — 01.08.13 — 10:11
(15) Все права настроены. Права на все даны!
Лефмихалыч
Модератор
18 — 01.08.13 — 10:13
(17) Ты имя пользователя, под которым служба сервера запущена-то хоть знаешь?
Лефмихалыч
Модератор
19 — 01.08.13 — 10:14
да и не через шару надо на сервер файлы передавать, а через временное хранилище
lEvGl
20 — 01.08.13 — 10:14
(15) если права точно есть, тогда попробуйте через ADODB
Connection = Новый COMОбъект («ADODB.Connection»);
Connection.Open («Provider=Microsoft.ACE.OLEDB.12.0;Data Source=» + Файл + «;Extended Properties=»»Excel 8.0;HDR=Yes;IMEX=1″»»);
Catalog = Новый COMОбъект («ADOX.Catalog»);
Catalog.ActiveConnection = Connection;
ИмяЛиста = Catalog.Tables.Item(0).Name;
String = «Select * from [» + ИмяЛиста + «]»;
Recordset = Новый COMОбъект («ADODB.Recordset»);
Recordset.Open (String, Connection, 2, 3);
Пока НЕ Recordset.EOF() Цикл
Строка = СокрЛП(Строка(Recordset.Fields(1).Value));
КонецЦикла;
Солнце
21 — 01.08.13 — 10:15
USR1CV82
lEvGl
22 — 01.08.13 — 10:16
(21) возможно админ менял пользователя, из под которого rphost запускается
Лефмихалыч
Модератор
23 — 01.08.13 — 10:16
(21) тебе эксель русским языком все сказал в (3)
Галахад
24 — 01.08.13 — 10:17
Права можно так проверить:
Файл = Новый Файл(ИмяФайла);
Файл.Удалить()
Serginio1
25 — 01.08.13 — 10:18
(17) Посмотри права DCOM
Солнце
26 — 01.08.13 — 10:18
(22)Не менял
Солнце
27 — 01.08.13 — 10:18
(25) Дали
Лефмихалыч
Модератор
28 — 01.08.13 — 10:20
как вариант — на клиентской тачке висит срежи процессов excel.exe, созданный при отладке ы файловом варианте и корректно не закрытый при завершении обработки. Этот процесс залочил файл.
lEvGl
29 — 01.08.13 — 10:20
(26) может процесс экселя на сервере висит — занял файл. проверьте — (24)
Солнце
30 — 01.08.13 — 10:21
(28)Это тоже проверяла
Солнце
31 — 01.08.13 — 10:21
(29) НЕТУ
Солнце
32 — 01.08.13 — 10:21
(24) есть права)
Лефмихалыч
Модератор
33 — 01.08.13 — 10:21
(30) тогда я знаю ответ — не твой день
lEvGl
34 — 01.08.13 — 10:21
ПРОВЕРЬТЕ через удаление
Добрый день, возникла следующая проблема. Имеется модуль с простыми функциями типа отметить документ на удаление по номеру или провести документ по номеру. Проблема с методом .ПолучитьОбъект — при вызове функции ПометитьРасходнаяНакладная через COM из .NET приложения вылетает исключение, которое не перехватывается в теле функции ПометитьРасходнаяНакладная и более того некорректно сериализуется. То есть на стороне .NET приходит объект Exception с указателями-null’ами, не несущий никакой информации. Что интересно: — если эти функции вызываются непосредственно из 1С, то все прекрасно работает. — если изменить тип документа с РасходнаяНакладная на некоторый другой, то все выполняется корректно. Есть еще как минимум один тип, для которого это также не работает. Заметить отличия этих типов документов от других, с которыми все ок, не удалось — гарантируется, что сам вызов через COM осуществляется, если убрать проблемный вызов .ПолучитьОбъект, то вызов отрабатывает корректно -COM соединение выполняется под тем же аккаунтом, под которым функция корректно работает при выполнении через 1С:Предприятие -другие методы типа .ПолучитьФорму этой же ссылки работают корректно Итого: непонятная ошибка, которая не ловится trycatch и возникает при вызове метода .ПолучитьОбъект на ссылках документа типа РасходнаяНакладная при соединении через COM. .NET код: Могу выложить код GetConnection если необхдимо
Сначала найти, потом проверить найденность, потому уже получать объект
Гарантируется, что объект с заданным номером в базе есть и, повторюсь, этот код с такими же параметрами корректно отрабатывает будучи вызванным через 1С Предприятие. Да и наверняка тогда поймалось бы исключение в самой функции ПометитьРасходнаяНакладная
Посмотри подписчики при записи. И посмотри стоит ли у этих модулей галка внешнее соединение
Или смотри модуль РасходнаяНакладная, что там вызывается при инициализации в модуле расходной накладной
Спасибо за помощь, но не вижу каких-либо проблем. Насчет ПриЗаписи, причем оно тут? Галка «Внешнее соединение» установлена, однако и с ней и без нее эффект одинаковый. Работает с другими документами и другими методами и без «внешнего соединения». В модуле РасходнаяНакладная вообще нет никаких функций, связанных с инициализацией (или я их не вижу). Вообще чисто гипотетически как может возникнуть описанная ситуация? 1) не ловится исключение в ПометитьРасходнаяНакладная 2) работает через 1С Предприятие 3) не работает через COM и только для некоторых типов документов
НайтиПоНомеру(Номер) — это гарантированно не найдет. Пиши не через задницу, а по-человечески НайтиПоНомеру(Номер, Дата)
четвертый день вижу 1С, НайтиПоНомеру(Номер) находит то, что нужно, повторюсь, код работает будучи вызванным через 1С Предприятие. Поискал по коду 1С — почти всюду НайтиПоНомеру используется без второго аргумента. Из того, что сейчас прочитал — второй аргумент целесообразен при использовании периодичной нумерации (так?). В свойствах РасходнаяНакладная Периодичность «Непериодический». Готов попробовать тем не менее. Не представляю только какую дату указывать. Дата?
Не функций а кода который вызывает функции из других модулей. Код инициализации это код после последней процедуры функции модуля
Спасибо за пояснение. В модуле объекта РасходнаяНакладная кроме процедур и одной глобальной переменной нет никакого другого кода.
Сделай проверку на неопределено Если док=неопределено Тогда возврат «Не найден документ»; а на строчке документ=Док.ПолучитьОбъект; в отладчике «Шагнуть В»;
Изменил: Запустил под отладчиком привязав вызов ПроведениеДокументов.ПометитьРасходнаяНакладная(«00008121»,Истина,Ложь); к одному из событий интерфейса. В результате ПолучитьОбъект отработал корректно. При «Шагнуть В» вход внутрь не выполнился. Я не знаю типично ли это для системных вызовов в 1С или мне нужно изменить какие-то настройки отладчика. Проверил и вызов через COM — все то же исключение, которое даже не удается идентифицировать.
не понимаю смысла. я и так знаю какой оператор приводит к ошибке, как мне мои же сообщения в журнале должны помочь? более реально было бы запустить отладчик удаленно, но в моей ситуации на одном физическом сервере запущены две базы (Dev и Production). Как я понимаю, переключение сервера в режим Debug приведет к замедлению в работе Production базы
Ну хотя бы в Исключение ЗаписьЖурналаРегистрации(«ПометитьРасходнаяНакладная», А откуда знаешь, если отладчиком не пользуешься?
первый пост, объяснил все там. Как до этого дошел — опытным путем, вызывая разные методы вместо .ПолучитьОбъект и проверяя другие типы документов (не РасходнаяНакладная). Возвращается «Ok» (ну или я ставил Возвраты сразу до или после оператора с .ПолучитьОбъект). Если документ не найден, вызывается некорректный метод или не указаны обязательный аргументы (что я только не делал) и т.д. и т.п., то исключение в ПометитьРасходнаяНакладная перехватывается и мне на .NET клиент возвращается ошибка «Описание=’» + Инфо.Описание + «‘»; Еще раз — ошибка в .ПолучитьОбъект для документа типа РасходнаяНакладная при соединении через COM. Это ОЧЕНЬ странно и именно поэтому я пишу все это. Я не вижу никакого смысла имея Исключение писать
ну разобрались же. Дату надо указать. Почему странно? Детский сад. ведь понятно же и во всех букварях написано, что по COM надо все параметры указывать, а иначе будет параметр NULL.
разобрались? По-моему нет. Дальше начала не продвинулись
Не пиши. А вообще то всегда хорошо регистрировать ошибки и знать почему и когда они произошли. При этом ошибка у тебя не возвращается. Хозяин барин.
имхо, тут бесполезно что-то пояснять
добавил, проверил, предсказуемо в журнал ничего не добавилось. Проблема все та же — невозможно даже перехватить КОНКРЕТНО ЭТО исключение в 1С, соответственно ничего не возвращается и не пишется в журнал. Писал выше, что другие ситуации типа некорректного метода или некорректных параметров отлично перехватываются и на стороне .NET’а (даже) я получаю соответствующую диагностику. Почему так — не знаю, это и хотел понять малой кровью.
НЕ а Если ссылка = Неопределено ИЛИ ссылка.Пустая ————-
Ну можно еще потрассировать ЗаписьЖурналаРегистрации(«ПометитьРасходнаяНакладная»,
А, и попробуйте не ИнформацияОбОшибке, а ОписаниеОшибки.
а какая платформа точно ? ТИИ делал базы ?
заметил появление записи в журнале «Описание=’Error calling context method (ПолучитьОбъект)» появляется она далеко не всегда и не сразу после вызова (то есть я уже получил результат, а запись в журнале появляется с приличной задержкой). Получается, Ваша правда. Что можно об этом сказать? Насчет ТИИ — узнал об этом только сейчас, запустил тестирование и, может быть, зря — уже несколько минут конфигуратор висит.
Добавь еще Инфо.Описание + «‘»+Инфо.ИмяМодуля+ «‘»+Инфо.НомерСтроки
«Описание=’Error calling context method (ПолучитьОбъект)’; ‘ОбщийМодуль.ПроведениеДокументов.Модуль’; 22;» Строка 22 это документ = ссылка.ПолучитьОбъект;
тебе уже сказали нихрена он сылку не получил, без указания периода найтипономеру не работает по ком
а вот это сработало, вопрос как быть дальше? в интерфейсе 1C Предприятия этот документ есть и без каких-либо видимых проблем, также наблюдаю его в базе уже давно исправил, так что мимо
вызов .ПолучитьОбъект выполняет код вне процедур в модуле объекта, может туда копать.
Посмотри подписчики. Ошибка может происходить при компиляции модуля
Установи в конфигураторе ПараметрыМодулипроверка галку напротив внешнее соединение. И сделай проверку модуля или проверка модулей в меню конфигурация
Я ошибся с утверждением насчет ЗначениеЗаполнено(ссылка). Все нормально и через COM. сделал, в модуле РасходнаяНакладная нашлась ошибка {Документ.РасходнаяНакладная.МодульОбъекта(201,98)}: Переменная не определена (глВалютаУпр) глВалютаУпр как я понял — глобальная переменная, устанавливаемая при запуске приложения строка 201 с ошибкой это в Процедура ОбработкаПроведения вызов которой так и не осуществляется, ошибка в ПолучитьОбъект — раньше, может ли все равно это быть причиной? Заметил, что подобной ошибки для «Толстый клиент» нет. И тем не менее. Как-то удалось получить подробную ошибку в журнале {ОбщийМодуль.ПроведениеДокументов.Модуль}: Error calling context method (ПолучитьОбъект) документ = ссылка.ПолучитьОбъект; because: No element selected! то есть проверка ЗначениеЗаполнено(ссылка) проходит, а дальше не удается получить объект.
Так, это все в модуле «Модуль обычного приложения», а в «Модуль внешнего соединения» ничего нет. Режим запуска приложения — «Обычное приложение». В этом причина?
Да :). там уже другие ошибки, но они хотя бы «постоянны» и информативны. Спасибо
Для интереса сделай так #Если НЕ ВнешнееСоединение Тогда Запрос.УстановитьПараметр(«Курс»,(КурсДокумента/КратностьДокумента)/ПолучитьКурсКратностьВалюты(глВалютаУпр,Дата)); #иначе Запрос.УстановитьПараметр(«Курс»,(КурсДокумента/КратностьДокумента)/ПолучитьКурсКратностьВалюты(Константы.ВалютаУправленческогоУчета.Получить,Дата)); #КонецЕсли
Или пропиши в модуле внешнего соединения эту переменную и метод
ну я сразу так и сделал, таким образом заработало
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям