Ошибка при вызове метода контекста записьжурналарегистрации

ЗаписьЖурналаРегистрации

Я

  

IF_THEN

10.11.09 — 13:34

Добрый день, ребята кто подскажет что я делаю не так. Из 8 ки по ОЛЕ соединяюсь с 7.7. в 7 ой базе создаю объект. Далее хочу в журнал 7ой базы записать событие создания объякта. Пишу База77.ЗаписьЖурналаРегистрации(«Создан новый объект»,»Refs»,»RefNew»,справочник77,2); справочник77   = База77.CreateObject(«Справочник.Номенклатура»);

  

ДенисЧ

1 — 10.11.09 — 13:35

не взлетит.

  

IF_THEN

2 — 10.11.09 — 13:47

ща турбо надув дам и взлетит!

  

dk

3 — 10.11.09 — 13:52

взлетит, если пнуть с подвывертом )

  

dk

4 — 10.11.09 — 13:58

EvalExpr и ExecuteBatch еще никто не отменял )))

  

IF_THEN

5 — 10.11.09 — 14:17

Щас протестю

  

IF_THEN

6 — 10.11.09 — 15:10

База77.EvalExpr(«НайденныйОбъект=СоздатьОбъект(«»Справочник.Договоры»»);»)

{(1)}: Ошибка при вызове метода контекста (EvalExpr): Произошла исключительная ситуация (1С:Предприятие): 1    НайденныйОбъект<<?>>=СоздатьОбъект(«Справочник.Договоры»);

Переменная не определена (НайденныйОбъект)

не подскажете почему ругается, синтаксис правильный же

  

Михей

7 — 10.11.09 — 15:12

(6) CreateObject?

  

IF_THEN

8 — 10.11.09 — 15:13

(7) смотри (0) надо взять ссылку на элемент 7 ки и подставить в процедуру регистрации события

  

dk

9 — 10.11.09 — 15:13

(6) неправильно идею понял

  

IF_THEN

10 — 10.11.09 — 15:14

(9) ммм, да? не подскажешь твою идею?

  

dk

11 — 10.11.09 — 15:14

(8) ЗначениеИзСтрокиВнутр(ЗначениеВстрокуВнутр())

+ двойные кавычки учесть

  

Шахид

12 — 10.11.09 — 15:15

(10) а может напрямую в mlg писать или режим разделенный?

  

IF_THEN

13 — 10.11.09 — 15:16

(11) ну да, тема так можно передать объект. Но я вот выполнил запись в журнал без передачи объекта,и чет в журнал нече не добавилось.

  

IF_THEN

14 — 10.11.09 — 15:16

(12) не напрямую не нужно писать

  

Шахид

15 — 10.11.09 — 15:17

(14) жаль. такая идея пропадает :)

  

dk

16 — 10.11.09 — 15:22

База77.ExecuteBatch(«ЗаписьЖурналаРегистрации(«»Создан новый объект»»,»»Refs»»,»»RefNew»»,ЗначениеИзСтрокиВнутр(«+База77.ЗначениеВстрокуВнутр(справочник77.ТекущийЭлемент())+»),2);»)

  

dk

17 — 10.11.09 — 15:23

База77.ExecuteBatch(«ЗаписьЖурналаРегистрации(«»Создан новый объект»»,»»Refs»»,»»RefNew»»,ЗначениеИзСтрокиВнутр(«»»+СтрЗаменить(База77.ЗначениеВстрокуВнутр(справочник77.ТекущийЭлемент(),»»»»,»»»»»»))+»»»),2);»);

или так ))

  

Шахид

18 — 10.11.09 — 15:24

ТекущийЭлемент() по оле вроде не летает?

  

dk

19 — 10.11.09 — 15:29

Кто сказал?

  

IF_THEN

20 — 10.11.09 — 15:29

(18) летает

  

dk

21 — 10.11.09 — 15:29

напрямую нет, но обернутый летает

  

IF_THEN

22 — 10.11.09 — 15:31

интересно а почему без объекта не записывается событие. в отладке показывает выполнение метода ExecuteBatch истина, а в списке журнала нече не появляется. Все фильтры выставлены по все да и период нормальный..

  

dk

23 — 10.11.09 — 15:37

(15) эта идея давно реализована, у меня в том числе )

  

IF_THEN

24 — 10.11.09 — 15:38

в общем просто журнал регистраций настроен так что регистрируе пока только вход и выход))) p.s. на демке тестю

dk спасибо за инфо

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

Исправляем ситуацию

Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.

Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:


	 Запрос = Новый Запрос;
	 Запрос.Текст =
	         "ВЫБРАТЬ
	          |        Номенклатура.Ссылка КАК Ссылка,
	          |        Номенклатура.ВерсияДанных КАК ВерсияДанных,
	          |        Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	          |        Номенклатура.Родитель КАК Родитель,
	          |        Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	          |        Номенклатура.Код КАК Код,
	          |        Номенклатура.Наименование КАК Наименование,
	          |        Номенклатура.Артикул КАК Артикул,
	          |        Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	          |        Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	          |        Номенклатура.Предопределенный КАК Предопределенный,
	          |        Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	          |ИЗ
	          |        Справочник.Номенклатура КАК Номенклатура
	          |ГДЕ
	          |         ";
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 КонецЦикла;

Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.

Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.

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


	 Запрос = Новый Запрос;
	            Запрос.Текст =
	                       "ВЫБРАТЬ
	                        |          Номенклатура.Ссылка КАК Ссылка,
	                        |          Номенклатура.ВерсияДанных КАК ВерсияДанных,
	                        |          Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	                        |          Номенклатура.Родитель КАК Родитель,
	                        |          Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	                        |          Номенклатура.Код КАК Код,
	                        |          Номенклатура.Наименование КАК Наименование,
	                        |          Номенклатура.Артикул КАК Артикул,
	                        |          Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	                        |          Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	                        |          Номенклатура.Предопределенный КАК Предопределенный,
	                        |          Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	                        |ИЗ
	                        |          Справочник.Номенклатура КАК Номенклатура
	                        |ГДЕ
	                        |          НЕ Номенклатура.ЭтоГруппа ";
	 НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель");
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов"));
	 КонецЦикла;

Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

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

Рис.3 Синтакс-помощник

Рис.3 Синтакс-помощник

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

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Чаще всего причиной подобных ошибок выступают следующие факторы:

  1. Невнимательность;
  2. Отсутствие опыта или знаний;
  3. Несогласованность действий разработчиков друг с другом;
  4. Изменения в методах контекста в новых версиях платформы.

Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 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. Сбросьте все привязки лицензии от хоста по инструкции.

Обратно к инструкциям

  1. Всем привет!
    Подскажите, пожалуйста, как решить проблему? У меня БП8.2 актуальный конфиг.
    Дело в том, что я пользуюсь процедурой ВыгрузитьЖурналРегистрации

        Отбор = Новый Структура("Метаданные", Метаданные.РегламентныеЗадания.Обмен_Логистика8_БИБ82);
        Задание = РегламентныеЗадания.ПолучитьРегламентныеЗадания(Отбор)[0];
        ДатаНач = Задание.ПоследнееЗадание.Начало;
        ЗаписьЖурналаРегистрации("Обмен.Логистика.Загрузка",УровеньЖурналаРегистрации.Информация, , ,ДатаНач);   
        ДатаКон = Задание.ПоследнееЗадание.Конец;
        ЗаписьЖурналаРегистрации("Обмен.Логистика.Загрузка",УровеньЖурналаРегистрации.Информация, , ,ДатаКон);   
       
        Фильтр = Новый Структура("ДатаНачала, ДатаОкончания", ДатаНач, ДатаКон);
        Журнал = Новый ТаблицаЗначений;
        ВыгрузитьЖурналРегистрации(Журнал, Фильтр);
    
    

    Когда вручную запускаю, то все ОК. Когда фоновое задание проходит этот код, то вылезает ошибка:
    Ошибка при загрузке файла обмена: ****Logistic8-BIB82-Data_0000000765.xml. {Обработка.ДТ_Обмен_Логистика8_БИБ82.МодульОбъекта(288)}: Ошибка при вызове метода контекста (ВыгрузитьЖурналРегистрации): Недопустимое значение параметра (параметр номер ‘2’)

    Это как раз второй аргумент процедуры.
    Не могу понять в чем дело. В журнал вывожу запись о том что помещается в Фильтр — все ОК — там две даты. Но ошибка все равно есть. Да, фоновое задание пробовал запускать от своего имени.

  2. Оказалось сам дурак (не удивительно как всегда). Когда запускал через обработку, то фоновое задание бралось предыдущее, а само фоновое задание видит себя, при этом ДатаОкончания не определена еще. И она не заполнялась.

  3. Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    8.697
    Симпатии:
    889
    Баллы:
    204

    ну как бы логично :)
    дату окончания более определенно задайте и будет вам Щастье…..

Поделиться этой страницей

Описание проблемы, ошибки, которую надо диагностировать

2.1

Текст типа события – локализуем, при этом всегда задается основной язык конфигурации.

В первом параметре метода глобального контекста ЗаписьЖурналаРегистрации должен быть НСтр с заполненными двумя параметрами.

2.3

Текст комментария – локализуем. Для записи в Журнал регистрации информации о возникшем исключении следует использовать конструкцию:

ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())

Если второй параметр метода ЗаписьЖурналаРегистрации содержит УровеньЖурналаРегистрации.Ошибка то 5 параметр должен содержать подробное представление ошибки, т.е. не содержать КраткоеПредставлениеОшибки и ОписаниеОшибки.

Ссылка на источник, подтверждающее нарушение либо обоснование наличия проблемы

https://its.1c.ru/db/v8std#content:498:hdoc

Параметры диагностики

Тип Статья на русском

  • 🐜 Ошибка
  • 👮 Уязвимость
  • 💩 Качество кода
  • :trollface: Другое

Важность Статья на русском

  • 💔 Блокирующая / Blocker
  • ❤️ Критическая / Critical
  • 💛 Важная / Major
  • 💙 Незначительная / Minor
  • 💚 Информационная / Info
  • 💞 Другое

Тэги Статья на русском

  • STANDARD — «Нарушение стандартов 1С»
  • LOCKINOS — «Не будет работать в другой ОС»
  • SQL — «Проблема с запросом»
  • PERFORMANCE — «Проблема производительности»
  • BRAINOVERLOAD — «Непонятный код»
  • BADPRACTICE — «Плохая практика программирования»
  • CLUMSY — «Излишние действия»
  • DESIGN — «Ошибка в проектировании»
  • SUSPICIOUS — «Подозрительный код»
  • UNPREDICTABLE — «Непредсказуемо работающий код»
  • DEPRECATED — «Устаревшая функциональность»
  • ERROR — «Ошибочная конструкция»

Время на исправление (минут)

5

Дополнительная информация

Обратно к инструкциям

Иногда возникает ситуация, когда журнал звонков перестает загружать новые записи истории звонков из АТС, и в журнале регистрации 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. Сбросьте все привязки лицензии от хоста по инструкции.

Обратно к инструкциям

ЗаписьЖурналаРегистрации

Я
   IF_THEN

10.11.09 — 13:34

Добрый день, ребята кто подскажет что я делаю не так. Из 8 ки по ОЛЕ соединяюсь с 7.7. в 7 ой базе создаю объект. Далее хочу в журнал 7ой базы записать событие создания объякта. Пишу База77.ЗаписьЖурналаРегистрации(«Создан новый объект»,»Refs»,»RefNew»,справочник77,2); справочник77   = База77.CreateObject(«Справочник.Номенклатура»);

   ДенисЧ

1 — 10.11.09 — 13:35

не взлетит.

   IF_THEN

2 — 10.11.09 — 13:47

ща турбо надув дам и взлетит!

   dk

3 — 10.11.09 — 13:52

взлетит, если пнуть с подвывертом )

   dk

4 — 10.11.09 — 13:58

EvalExpr и ExecuteBatch еще никто не отменял )))

   IF_THEN

5 — 10.11.09 — 14:17

Щас протестю

   IF_THEN

6 — 10.11.09 — 15:10

База77.EvalExpr(«НайденныйОбъект=СоздатьОбъект(«»Справочник.Договоры»»);»)

{(1)}: Ошибка при вызове метода контекста (EvalExpr): Произошла исключительная ситуация (1С:Предприятие): 1    НайденныйОбъект<<?>>=СоздатьОбъект(«Справочник.Договоры»);

Переменная не определена (НайденныйОбъект)

не подскажете почему ругается, синтаксис правильный же

   Михей

7 — 10.11.09 — 15:12

(6) CreateObject?

   IF_THEN

8 — 10.11.09 — 15:13

(7) смотри (0) надо взять ссылку на элемент 7 ки и подставить в процедуру регистрации события

   dk

9 — 10.11.09 — 15:13

(6) неправильно идею понял

   IF_THEN

10 — 10.11.09 — 15:14

(9) ммм, да? не подскажешь твою идею?

   dk

11 — 10.11.09 — 15:14

(8) ЗначениеИзСтрокиВнутр(ЗначениеВстрокуВнутр())

+ двойные кавычки учесть

   Шахид

12 — 10.11.09 — 15:15

(10) а может напрямую в mlg писать или режим разделенный?

   IF_THEN

13 — 10.11.09 — 15:16

(11) ну да, тема так можно передать объект. Но я вот выполнил запись в журнал без передачи объекта,и чет в журнал нече не добавилось.

   IF_THEN

14 — 10.11.09 — 15:16

(12) не напрямую не нужно писать

   Шахид

15 — 10.11.09 — 15:17

(14) жаль. такая идея пропадает :)

   dk

16 — 10.11.09 — 15:22

База77.ExecuteBatch(«ЗаписьЖурналаРегистрации(«»Создан новый объект»»,»»Refs»»,»»RefNew»»,ЗначениеИзСтрокиВнутр(«+База77.ЗначениеВстрокуВнутр(справочник77.ТекущийЭлемент())+»),2);»)

   dk

17 — 10.11.09 — 15:23

База77.ExecuteBatch(«ЗаписьЖурналаРегистрации(«»Создан новый объект»»,»»Refs»»,»»RefNew»»,ЗначениеИзСтрокиВнутр(«»»+СтрЗаменить(База77.ЗначениеВстрокуВнутр(справочник77.ТекущийЭлемент(),»»»»,»»»»»»))+»»»),2);»);

или так ))

   Шахид

18 — 10.11.09 — 15:24

ТекущийЭлемент() по оле вроде не летает?

   dk

19 — 10.11.09 — 15:29

Кто сказал?

   IF_THEN

20 — 10.11.09 — 15:29

(18) летает

   dk

21 — 10.11.09 — 15:29

напрямую нет, но обернутый летает

   IF_THEN

22 — 10.11.09 — 15:31

интересно а почему без объекта не записывается событие. в отладке показывает выполнение метода ExecuteBatch истина, а в списке журнала нече не появляется. Все фильтры выставлены по все да и период нормальный..

   dk

23 — 10.11.09 — 15:37

(15) эта идея давно реализована, у меня в том числе )

  

IF_THEN

24 — 10.11.09 — 15:38

в общем просто журнал регистраций настроен так что регистрируе пока только вход и выход))) p.s. на демке тестю

dk спасибо за инфо

невозможно включить использование «Домашней сети», выходит ошибка:

{ОбщийМодуль.ДеньгиВызовСервера.Модуль(246)}: Ошибка при вызове метода контекста (ЗаписьЖурналаРегистрации)
    ЗаписьЖурналаРегистрации(КлючЗаписиЖурнала,
по причине:
Недопустимое значение параметра (параметр номер ‘1’)

1С:Предприятие 8.3 (8.3.9.2170)

Деньги 8, редакция 2.0 (2.0.33.4) (http://v8.1c.ru/money)
Copyright © ООО «1С-Софт», 2009-2017. Все права защищены
(http://www.1c.ru)

и еще опечатки:

в таблице «Мобильные устройства» в колонке «Отправлено на устройства»: «Полседняя загрузка»

в таблице «Синхронизация через мобильный сервис» в колонке «Получение»: «Отправелно с устройства …»

    Процедура ПрименитьПараметрыУчета(ПараметрыУчета, ИзмененыПараметрыСубконто = Ложь, Отказ = Ложь) Экспорт

        ПризнакиУчета             = ПолучитьСтруктуруПризнаковУчетаСубконто();

        ДействияИзмененияСубконто = ПолучитьДействияИзмененияСубконто(ПараметрыУчета); // Иерархическая коллекция: на первом уровне действия с субконто на каждом из счетов, на втором — действия с призаками учета.

        // Сгруппируем изменения по счетам, так как записывать будем именно счет

        СчетаКИзменению = ОбщегоНазначения.ВыгрузитьКолонку(ДействияИзмененияСубконто, «Счет», Истина);

        ДействияИзмененияСубконто.Индексы.Добавить(«Счет»);

        Отбор = Новый Структура(«Счет»);

        НачатьТранзакцию();

        Для Каждого Счет Из СчетаКИзменению Цикл

            Отбор.Счет = Счет;

            ДействияДляСчета = ДействияИзмененияСубконто.НайтиСтроки(Отбор);

            Объект = Счет.ПолучитьОбъект();

            ПротоколИзменений = Новый Массив;

            Для Каждого Действие Из ДействияДляСчета Цикл

                // Действие: -1 удалить; 0 — не менять; 1 — установить

                // Действия с видом субконто

                Если Действие.Действие = 1 Тогда

                    // Добавить субконто

                    Если Счет = ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда Тогда

                        ВидыСубконтоСтрока = Объект.ВидыСубконто.Вставить(0);

                    Иначе          

                        ВидыСубконтоСтрока = Объект.ВидыСубконто.Добавить();

                    КонецЕсли;

                    ВидыСубконтоСтрока.ВидСубконто = Действие.Субконто;

                    ДобавитьВПротоколИзменениеСубконто(ПротоколИзменений, ВидыСубконтоСтрока.ВидСубконто, Действие.Действие);

                Иначе

                    ВидыСубконтоСтрока = Объект.ВидыСубконто.Найти(Действие.Субконто, «ВидСубконто»);

                    Если ВидыСубконтоСтрока = Неопределено Тогда

                        Продолжить;

                    КонецЕсли;

                КонецЕсли;

                Если Действие.Действие = -1 Тогда

                    ДобавитьВПротоколИзменениеСубконто(ПротоколИзменений, ВидыСубконтоСтрока.ВидСубконто, Действие.Действие);

                    Объект.ВидыСубконто.Удалить(ВидыСубконтоСтрока);

                    Продолжить;

                КонецЕсли;

                // Действия с признаками учета

                Для Каждого ПризнакУчета Из ПризнакиУчета Цикл

                    ДействиеСПризнаком = Действие[ПризнакУчета.Ключ];

                    Если ДействиеСПризнаком = 1 Тогда

                        ЗначениеПризнака = Истина;

                    ИначеЕсли ДействиеСПризнаком = -1 Тогда

                        ЗначениеПризнака = Ложь;

                    Иначе

                        Продолжить;

                    КонецЕсли;

                    Если ВидыСубконтоСтрока[ПризнакУчета.Ключ] = ЗначениеПризнака Тогда

                        Продолжить;

                    КонецЕсли;

                    ВидыСубконтоСтрока[ПризнакУчета.Ключ] = ЗначениеПризнака;

                    ДобавитьВПротоколИзменениеПризнакаУчета(

                        ПротоколИзменений,

                        ВидыСубконтоСтрока.ВидСубконто,

                        ПризнакУчета.Значение,

                        ДействиеСПризнаком);

                КонецЦикла; // По признакам учета

            КонецЦикла; // По ДействияДляСчета

            Если Не Объект.Модифицированность() Тогда

                Продолжить;

            КонецЕсли;

            ПротоколИзмененийСтрокой = СтрСоединить(ПротоколИзменений, Символы.ПС);

            Попытка

                Объект.Записать();//ВОТ ТУТ ВАЛИТСЯ

            Исключение

                ОписаниеОшибки = ИнформацияОбОшибке();

                ОтменитьТранзакцию();

                Отказ = Истина;

                ШаблонТекста = НСтр(«ru = ‘Ошибка при записи счета [КодСчета]:

                    |[ОписаниеОшибки]

                    |Ошибка произошла при попытке выполнить следующие изменения:

                    |[ПротоколИзменений]'»);

                ПараметрыТекста = Новый Структура;

                ПараметрыТекста.Вставить(«КодСчета»,          Объект.Код);

                ПараметрыТекста.Вставить(«ПротоколИзменений», ПротоколИзмененийСтрокой);

                // В журнал регистрации выведем подробную информацию

                ПараметрыТекста.Вставить(«ОписаниеОшибки», ПодробноеПредставлениеОшибки(ОписаниеОшибки));

                Текст = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(ШаблонТекста, ПараметрыТекста);

                ЗаписьЖурналаРегистрации(

                    СобытиеЖурналаРегистрацииПараметрыУчета(),

                    УровеньЖурналаРегистрации.Ошибка,

                    Счет.Метаданные(),

                    Счет, // Данные

                    Текст);

                // Пользователю выведем краткое сообщение

                ШаблонТекста = НСтр(«ru = ‘Ошибка при записи счета [КодСчета]

                    |Подробности см. в Журнале регистрации.'»);

                Текст = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(ШаблонТекста, ПараметрыТекста);

                ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Текст);

                Возврат;

            КонецПопытки;

            // Запишем в журнал регистрации подробную информацию об изменениях

            ЗаписьЖурналаРегистрации(

                СобытиеЖурналаРегистрацииПараметрыУчета(),

                УровеньЖурналаРегистрации.Информация,

                Счет.Метаданные(),

                Счет,

                ПротоколИзмененийСтрокой,

                РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная);

        КонецЦикла; // По СчетаКИзменению

        БухгалтерскийУчетПереопределяемый.УстановитьПараметрыУчетаРасчетовПоЗарплате(?(ПараметрыУчета.ВестиУчетПоРаботникам = 1, Ложь, Истина));

        БухгалтерскийУчетПереопределяемый.УстановитьУчетЗарплатыИКадровВоВнешнейПрограмме(?(ПараметрыУчета.УчетЗарплатыИКадровВоВнешнейПрограмме = 1, Истина, Ложь));

        БухгалтерскийУчетПереопределяемый.УстановитьНастройкиКадровогоУчета(ПараметрыУчета.КадровыйУчет, ?(ПараметрыУчета.УчетЗарплатыИКадровВоВнешнейПрограмме = 0, Истина, Ложь));

        ЗафиксироватьТранзакцию();

        ОбновитьПовторноИспользуемыеЗначения();

    КонецПроцедуры

  • Ошибка при вызове метода контекста записатьобъявлениеxml
  • Ошибка при вызове метода контекста записатьначалообъекта
  • Ошибка при вызове метода контекста записатьxml
  • Ошибка при вызове метода контекста записатьjson приемник данных json не открыт
  • Ошибка при вызове метода контекста записатьjson http сервис 1с