ЗаписьЖурналаРегистрации |
Я |
10.11.09 — 13:34
Добрый день, ребята кто подскажет что я делаю не так. Из 8 ки по ОЛЕ соединяюсь с 7.7. в 7 ой базе создаю объект. Далее хочу в журнал 7ой базы записать событие создания объякта. Пишу База77.ЗаписьЖурналаРегистрации(«Создан новый объект»,»Refs»,»RefNew»,справочник77,2); справочник77 = База77.CreateObject(«Справочник.Номенклатура»);
1 — 10.11.09 — 13:35
не взлетит.
2 — 10.11.09 — 13:47
ща турбо надув дам и взлетит!
3 — 10.11.09 — 13:52
взлетит, если пнуть с подвывертом )
4 — 10.11.09 — 13:58
EvalExpr и ExecuteBatch еще никто не отменял )))
5 — 10.11.09 — 14:17
Щас протестю
6 — 10.11.09 — 15:10
База77.EvalExpr(«НайденныйОбъект=СоздатьОбъект(«»Справочник.Договоры»»);»)
{(1)}: Ошибка при вызове метода контекста (EvalExpr): Произошла исключительная ситуация (1С:Предприятие): 1 НайденныйОбъект<<?>>=СоздатьОбъект(«Справочник.Договоры»);
Переменная не определена (НайденныйОбъект)
не подскажете почему ругается, синтаксис правильный же
7 — 10.11.09 — 15:12
(6) CreateObject?
8 — 10.11.09 — 15:13
(7) смотри (0) надо взять ссылку на элемент 7 ки и подставить в процедуру регистрации события
9 — 10.11.09 — 15:13
(6) неправильно идею понял
10 — 10.11.09 — 15:14
(9) ммм, да? не подскажешь твою идею?
11 — 10.11.09 — 15:14
(8) ЗначениеИзСтрокиВнутр(ЗначениеВстрокуВнутр())
+ двойные кавычки учесть
12 — 10.11.09 — 15:15
(10) а может напрямую в mlg писать или режим разделенный?
13 — 10.11.09 — 15:16
(11) ну да, тема так можно передать объект. Но я вот выполнил запись в журнал без передачи объекта,и чет в журнал нече не добавилось.
14 — 10.11.09 — 15:16
(12) не напрямую не нужно писать
15 — 10.11.09 — 15:17
(14) жаль. такая идея пропадает 🙂
16 — 10.11.09 — 15:22
База77.ExecuteBatch(«ЗаписьЖурналаРегистрации(«»Создан новый объект»»,»»Refs»»,»»RefNew»»,ЗначениеИзСтрокиВнутр(«+База77.ЗначениеВстрокуВнутр(справочник77.ТекущийЭлемент())+»),2);»)
17 — 10.11.09 — 15:23
База77.ExecuteBatch(«ЗаписьЖурналаРегистрации(«»Создан новый объект»»,»»Refs»»,»»RefNew»»,ЗначениеИзСтрокиВнутр(«»»+СтрЗаменить(База77.ЗначениеВстрокуВнутр(справочник77.ТекущийЭлемент(),»»»»,»»»»»»))+»»»),2);»);
или так ))
18 — 10.11.09 — 15:24
ТекущийЭлемент() по оле вроде не летает?
19 — 10.11.09 — 15:29
Кто сказал?
20 — 10.11.09 — 15:29
(18) летает
21 — 10.11.09 — 15:29
напрямую нет, но обернутый летает
22 — 10.11.09 — 15:31
интересно а почему без объекта не записывается событие. в отладке показывает выполнение метода ExecuteBatch истина, а в списке журнала нече не появляется. Все фильтры выставлены по все да и период нормальный..
23 — 10.11.09 — 15:37
(15) эта идея давно реализована, у меня в том числе )
IF_THEN
24 — 10.11.09 — 15:38
в общем просто журнал регистраций настроен так что регистрируе пока только вход и выход))) p.s. на демке тестю
dk спасибо за инфо
В платформе 1С сообщения об ошибках бывают достаточно запутаны, и без должных навыков разобраться в причинах достаточно сложно. Вот и сообщение об ошибке при вызове контекста может ввести в ступор начинающего разработчика. Однако в подавляющем большинстве случаев мы видим подобное сообщение, если разработчик допустил ошибку в своем коде. Причем речь зачастую идет не об орфографических ошибках, а о логических.
Исправляем ситуацию
Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.
Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.ВерсияДанных КАК ВерсияДанных,
| Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
| Номенклатура.Родитель КАК Родитель,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Номенклатура.Предопределенный КАК Предопределенный,
| Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| ";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
КонецЦикла;

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

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

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

Чаще всего причиной подобных ошибок выступают следующие факторы:
- Невнимательность;
- Отсутствие опыта или знаний;
- Несогласованность действий разработчиков друг с другом;
- Изменения в методах контекста в новых версиях платформы.
Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.
Обратно к инструкциям
Иногда возникает ситуация, когда журнал звонков перестает загружать новые записи истории звонков из АТС, и в журнале регистрации 1С можно обнаружить следующую ошибки:
Ошибка запуска регламентной задачи: {ОбщийМодуль.МИКО_стЗагрузкаИсторииЗвонков_v7.Модуль}:
Ошибка при вызове метода контекста (ЗаписьЖурналаРегистрации): Недопустимое значение параметра (параметр номер ‘1’)
Решение данной проблемы:
1. Проверьте не заблокировано ли приложение системы лицензирования mlworker.exe службами AppLocker, защитником Windows, любыми другими службами или брандмауэрами.
Расположение приложения:
%USERPROFILE%AppDataLocalMIKObinMIKOmlworker.exe
Приложение устанавливается на сервере 1С:Предприятия.
%USERPROFILE% — директория пользователя, под которым запущена служба «сервер 1С:Предприятия» (rphost).
2. У пользователя, под которым запущена служба Агент сервера 1С:Предприятия, достаточно прав доступа на чтение и запись в директорию %USERPROFILE%AppDataLocalMIKO
3. Попробуйте удалить приложение системы лицензирования mlworker.exe на сервере 1С:Предприятия, предварительно завершив процесс приложения.
4. Удалите содержимое каталога %USERPROFILE%AppDataLocalMIKO.
5. Сбросьте все привязки лицензии от хоста по инструкции.
Обратно к инструкциям
-
Всем привет!
Подскажите, пожалуйста, как решить проблему? У меня БП8.2 актуальный конфиг.
Дело в том, что я пользуюсь процедурой ВыгрузитьЖурналРегистрацииОтбор = Новый Структура("Метаданные", Метаданные.РегламентныеЗадания.Обмен_Логистика8_БИБ82); Задание = РегламентныеЗадания.ПолучитьРегламентныеЗадания(Отбор)[0]; ДатаНач = Задание.ПоследнееЗадание.Начало; ЗаписьЖурналаРегистрации("Обмен.Логистика.Загрузка",УровеньЖурналаРегистрации.Информация, , ,ДатаНач); ДатаКон = Задание.ПоследнееЗадание.Конец; ЗаписьЖурналаРегистрации("Обмен.Логистика.Загрузка",УровеньЖурналаРегистрации.Информация, , ,ДатаКон); Фильтр = Новый Структура("ДатаНачала, ДатаОкончания", ДатаНач, ДатаКон); Журнал = Новый ТаблицаЗначений; ВыгрузитьЖурналРегистрации(Журнал, Фильтр);Когда вручную запускаю, то все ОК. Когда фоновое задание проходит этот код, то вылезает ошибка:
Ошибка при загрузке файла обмена: ****Logistic8-BIB82-Data_0000000765.xml. {Обработка.ДТ_Обмен_Логистика8_БИБ82.МодульОбъекта(288)}: Ошибка при вызове метода контекста (ВыгрузитьЖурналРегистрации): Недопустимое значение параметра (параметр номер ‘2’)Это как раз второй аргумент процедуры.
Не могу понять в чем дело. В журнал вывожу запись о том что помещается в Фильтр — все ОК — там две даты. Но ошибка все равно есть. Да, фоновое задание пробовал запускать от своего имени. -
Оказалось сам дурак (не удивительно как всегда). Когда запускал через обработку, то фоновое задание бралось предыдущее, а само фоновое задание видит себя, при этом ДатаОкончания не определена еще. И она не заполнялась.
-
Offline
nomad_irk
Гуру в 1С- Регистрация:
- 20 окт 2008
- Сообщения:
- 8.697
- Симпатии:
- 889
- Баллы:
- 204
ну как бы логично

дату окончания более определенно задайте и будет вам Щастье…..
Поделиться этой страницей
Описание проблемы, ошибки, которую надо диагностировать
2.1
Текст типа события – локализуем, при этом всегда задается основной язык конфигурации.
В первом параметре метода глобального контекста ЗаписьЖурналаРегистрации должен быть НСтр с заполненными двумя параметрами.
2.3
Текст комментария – локализуем. Для записи в Журнал регистрации информации о возникшем исключении следует использовать конструкцию:
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())
Если второй параметр метода ЗаписьЖурналаРегистрации содержит УровеньЖурналаРегистрации.Ошибка то 5 параметр должен содержать подробное представление ошибки, т.е. не содержать КраткоеПредставлениеОшибки и ОписаниеОшибки.
Ссылка на источник, подтверждающее нарушение либо обоснование наличия проблемы
https://its.1c.ru/db/v8std#content:498:hdoc
Параметры диагностики
Тип Статья на русском
- 🐜 Ошибка
- 👮 Уязвимость
- 💩 Качество кода
-
Другое
Важность Статья на русском
- 💔 Блокирующая / Blocker
- ❤️ Критическая / Critical
- 💛 Важная / Major
- 💙 Незначительная / Minor
- 💚 Информационная / Info
- 💞 Другое
Тэги Статья на русском
-
STANDARD— «Нарушение стандартов 1С» -
LOCKINOS— «Не будет работать в другой ОС» -
SQL— «Проблема с запросом» -
PERFORMANCE— «Проблема производительности» -
BRAINOVERLOAD— «Непонятный код» -
BADPRACTICE— «Плохая практика программирования» -
CLUMSY— «Излишние действия» -
DESIGN— «Ошибка в проектировании» -
SUSPICIOUS— «Подозрительный код» -
UNPREDICTABLE— «Непредсказуемо работающий код» -
DEPRECATED— «Устаревшая функциональность» -
ERROR— «Ошибочная конструкция»
Время на исправление (минут)
5