Ошибка при вызове метода контекста структуранастроекобмена

В платформе 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С.

Переполнение стека втроенного языка при обмене

Я
   lite777

22.07.22 — 16:12

Здравствуйте , Синхронизация УТ10- Розн, ошибка на стороне УТ10 пр обмене-выгрузке , зарегистровааных объектов для обмена- нет

{Обработка.ВыполнениеОбменаДанными.Форма.Форма.Форма(515)}: Ошибка при вызове метода контекста (ОбычнаяВыгрузкаДанных_ОбработкаДлительнойОперации)

    ОбычнаяВыгрузкаДанных_ОбработкаДлительнойОперации(Отказ, УзелИнформационнойБазы, ВидТранспортаСообщений);

по причине:

Переполнение стека встроенного языка на сервере

по причине:

Обработка.ВыполнениеОбменаДанными.Форма.Форма.Форма : 527 : ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(

ОбщийМодуль.ОбменДаннымиСервер.Модуль : 528 : ВыполнитьДействиеОбменаДляУзлаИнформационнойБазы(Отказ,

ОбщийМодуль.ОбменДаннымиСервер.Модуль : 1275 : ВыполнитьОбменДаннымиЧерезФайловыйРесурс(СтруктураНастроекОбмена);

ОбщийМодуль.ОбменДаннымиСервер.Модуль : 1780 : ЗаписатьСообщениеСИзменениямиДляУзла(СтруктураНастроекОбмена, СтруктураНастроекОбмена.ОбработкаТранспортаСообщенийОбмена.ИмяФайлаСообщенияОбмена());



Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта : 2050 : ВыгрузитьСвойства(Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКО, ПКО.СвойстваПоиска,

Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта : 10880 : СоздатьСложнуюИнформациюДляЗаписиВXML(СтруктураУзлаСвойств, УзелСвойства, ПКС.НуженУзелXMLПриВыгрузке, ПКС.Приемник, ПКС.ИмяПараметраДляПередачи);

Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта : 10617 : СоздатьОбъектыДляЗаписиДанныхВXML(СтруктураДанных, УзелСвойства, НуженУзелXML, ИмяПриемника, «Свойство»);

Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта : 0

по причине:

Переполнение стека встроенного языка на сервере

   lite777

1 — 22.07.22 — 16:22

КЭш чистил

   shuhard

2 — 22.07.22 — 16:23

(0) хвалишься ?

   lubitelxml

3 — 22.07.22 — 16:25

(0) в яндексе уже читал? например по кнопке 1 справа в первой ссылке описаны варианты, из-за чего такое происходит

   Kassern

4 — 22.07.22 — 16:27

(0) бесконечный цикл где-то словили скорее всего

   lite777

5 — 22.07.22 — 16:28

(4) Дэк объекто для выгрузки нет

   unenu

6 — 22.07.22 — 16:33

(5) а если добавить что-то в регистрацию. может рекурсия уходит на край вселенной из-за пустоты, нэ?

   Kassern

7 — 22.07.22 — 16:35

(5) отладку в руки и смотреть, что и как там грузится, может действительно какая-то логика заложена и пытается бесконечно выполнить кусок кода

   Garykom

8 — 22.07.22 — 16:42

(0) 1. Выкинь уже типовой обмен, он говно.

2. Напиши свой на JSON

3. Радуйся

   Kassern

9 — 22.07.22 — 16:44

(8) а если свой напишет на xml то не будет радоваться?)

   lite777

10 — 22.07.22 — 16:49

(6) (8) Чем Джон луше ХМЛ- Модно-молодежно ?

   lite777

11 — 22.07.22 — 16:50

(8) И за сколько ты напишеть типовой обмен в обе стороны ?

   unenu

12 — 22.07.22 — 16:52

(8) вам наверное 20 лет и вы оптимистно целеустреммленно пишише «убийцу 1С»

теорему БЖ никак подзабыли?

   lite777

13 — 22.07.22 — 16:53

одно название чего стоит JSON всего лишь текстовый файл с полями в ковычках и запятыми -разделителями,

   unenu

14 — 22.07.22 — 17:02

(13) вы идеальный клиенте маркетолога. пожалуй пора писать нетленку «JSON-обмен все по всем 100% успех».

ну и рекламку-аватар в сеть: девушка в мини с буферами на которых мигает JSON.

думаю, настало время когда взлетит)

   Garykom

15 — 22.07.22 — 17:04

(9) xml тороза

(10) быстрей, проще

(11) смотря сколько разных сущностей надо, если все что можно то неделя писать и еще неделя на отладку

(12) https://www.youtube.com/watch?v=vy-I7ybkH-c

   Garykom

16 — 22.07.22 — 17:05

(13) лучше чем текстовый (свой формат) потому что поддержка в платформе 1С встроенная и шустро пашет

   Garykom

17 — 22.07.22 — 17:07

теоретически похрен какую сериализацию использовать

но фактически в json самая удобная/быстрая

   lubitelxml

18 — 22.07.22 — 17:11

(17) + 1

   hawksib

19 — 22.07.22 — 20:43

(0) а розница какой версии?

   ДедМорроз

20 — 22.07.22 — 20:56

Срыв стека,это когда при выгрузке А аыгружается Б,а при выгрузке Б выгружается А.

И json тут ни чем не поможет,так как проблема не в формате,а в добавлении объектов в список выгрузки.

   ДедМорроз

21 — 22.07.22 — 20:59

(17) самая удобная сериализация по типу TLV,когда строка выгружается как длина и набор байтов — это и выгружать и читать быстрее,но такой файл вручную не поправишь.

   hawksib

22 — 22.07.22 — 21:08

(21) я тоже хотел написать, что в (8) не хватает 4. использовать rabbit (зачеркнуто) kafka

  

ДедМорроз

23 — 22.07.22 — 21:47

(22) тут нужно понимать,что может быть ситуация,когда Объект А имеет поле со значением Ссылка на Объект Б, а Объект Б имеет другое поле,которое содержит Ссылка на Объект А.

И как бы мы это не передавали,будет ситуация,когда мы читаем ссылкк,но объекта у нас еще нет.

Здравствуйте.

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

{ОбщийМодуль.ОбменДаннымиСервер.Модуль(3065)}: Ошибка при вызове метода контекста (Download) Прокси.Download(СтруктураНастроекОбмена.ИмяПланаОбмена, СтруктураНастроекОбмена.ТекущийУзелПланаОбменаКод, Новый ХранилищеЗначения(СообщениеОбмена, Новый СжатиеДанных(9)));по причине:Ошибка вызова операции сервиса:  {http://www.1c.ru/SSL/Exchange_2_0_1_6}:Exchange_2_0_1_6:Download()по причине:Ошибка SOAP сервера:  Неизвестная ошибка. {ОбщийМодуль.ОбменДаннымиСервер.Модуль(2677)}: Ошибка при инициализации процесса обмена данными.по причине:{ОбщийМодуль.ОбменДаннымиСервер.Модуль(2677)}: Ошибка при инициализации процесса обмена данными.

Также хотелось бы автоматическйо синхронизации при старте мобильного приложения. Спасибо.

План обмена. Выдается ошибка как отловить где она?

Я

  

Босечка

28.09.17 — 11:40

Ошибка при вызове метода контекста (ВыполнитьВыгрузку): Произошла исключительная ситуация (1C:Enterprise 8.3.8.2054): Ошибка инициализации модуля: Документ.ЗаказПоставщику.МодульОбъекта

{Документ.ЗаказПоставщику.МодульОбъекта(1897,127)}: Переменная не определена (РежимДиалогаВопрос)

Захожу в модуль,  а там пустая строка. В обработке заполнения.  Как быть без этого не работает план обмена.

  

Волшебник

Модератор

1 — 28.09.17 — 11:41

Не в тот модуль заходите

  

Босечка

2 — 28.09.17 — 11:43

А в какой надо заходить?

  

Волшебник

Модератор

3 — 28.09.17 — 11:44

Документ.ЗаказПоставщику.МодульОбъекта

  

Босечка

4 — 28.09.17 — 11:44

Как это найти отладчик туда не входит.

  

Босечка

5 — 28.09.17 — 11:45

(3)туда и захожу

  

Босечка

6 — 28.09.17 — 11:45

там вообще нет РежимДиалогаВопрос

  

aka AMIGO

7 — 28.09.17 — 11:47

Щелчок по строке сообщения об ошибке не открывает конфигуратор?

  

Ёпрст

8 — 28.09.17 — 11:47

(0)

>>>Захожу в модуль,  а там пустая строка. В обработке заполнения

Куда заходишь ?

Что за пустая строка и хде ?

  

aka AMIGO

9 — 28.09.17 — 11:48

(6) Глоб.поиском поищи этот текст в конфигурации

  

Ёпрст

10 — 28.09.17 — 11:49

в модуле документа нажимаешь Ctrl+G и вводищь номер строки из ошибки, позиционируешься на ней, исправляешь.

И, задавать вопросы в модуле, не комильфо

  

Босечка

11 — 28.09.17 — 11:50

(8)В Документ.ЗаказПоставщику.МодульОбъекта захожу и в 1897,127 пустая строка.

  

Босечка

12 — 28.09.17 — 11:50

там ничего нет. Если бы так просто все было.

  

Босечка

13 — 28.09.17 — 11:51

в этом модуле это вообще нет.

  

Босечка

14 — 28.09.17 — 11:54

Как отладчик там запустить?

  

Numerus Mikhail

15 — 28.09.17 — 11:54

(13) почисти кеш

  

aka AMIGO

16 — 28.09.17 — 11:58

(14) Не «отладчик», а «отладку»

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

Далее запускаешь свой обмен/отчет/обработку/ЧтоУтебяТам..

  

aka AMIGO

17 — 28.09.17 — 11:58

ИМХО 100% не тот модуль открыт..

  

drcrasher

18 — 28.09.17 — 12:02

(0) кэш, не та конфа, не тот конфигуратор

  

h-sp

19 — 28.09.17 — 12:20

(13) может вы к другой базе подключаетесь? а не к этой. Что за процедура «ВыполнитьВыгрузку?

  

ColonelAp4u

20 — 28.09.17 — 12:44

Как происходит обмен? подключением к другой базе?

Если да то возможно ошибка на стороне приемника, поищите эту строку в базе куда выгружаете.

  

Босечка

21 — 28.09.17 — 12:58

да. Там и ищу. Но все бесполезно.

  

h-sp

22 — 28.09.17 — 13:13

(21) ну покажите этот модуль

Документ.ЗаказПоставщику.МодульОбъекта(1897,127)

строка 1897. и в той и в этой базе.

  

aka AMIGO

23 — 28.09.17 — 13:35

  

Босечка

24 — 28.09.17 — 13:40

(23)Да.

(22)Вот сюда курсор переходит по ошибке

Процедура ПроизвестиОбменДаннымиПоНастройке(СтруктураНастроекОбменаДанными)

    

    // начальные функции инициализации обмена

    РезультатаНачалаОбмена = ВыполнитьДействияПередНачаломОбменаДанными(СтруктураНастроекОбменаДанными);

    Если Не РезультатаНачалаОбмена Тогда

        Возврат;

    КонецЕсли;

    

    // ВЫПОЛНЕНИЕ ОБМЕНА ДАННЫМИ

    ОбработкаОбменаПриемника = Неопределено;

    Попытка

        

        Если СтруктураНастроекОбменаДанными.ДанныеНастройки.OnLineОбмен

            И СтруктураНастроекОбменаДанными.ДанныеНастройки.ТипНастройки = Перечисления.ТипыАвтоматическогоОбменаДанными.ОбменЧерезComСоединение Тогда

            

            // обмен через com соединение

            // выполняем и выгрузку и загрузку данных

            ВыполнитьОбменДаннымиЧерезComСоединение(СтруктураНастроекОбменаДанными, ОбработкаОбменаПриемника);

            
        Иначе

        
            ВыполнитьОбычныйОбменДанными(СтруктураНастроекОбменаДанными);    

            
        КонецЕсли;

        

        // оставшееся действия после обмена данными выполняем

        ВыполнитьДействияПослеЗавершенияОбменаДанными(СтруктураНастроекОбменаДанными, ОбработкаОбменаПриемника);

                
    Исключение

        

        СтрокаОписанияОшибки = ОписаниеОшибки();

        // отмечаем то что обмен произведен

        ЗафиксироватьЗавершениеОбмена(СтруктураНастроекОбменаДанными, СтрокаОписанияОшибки, , ОбработкаОбменаПриемника);

        

        #Если Клиент Тогда

        ЗакрытьФормуОбработкиДанных(СтруктураНастроекОбменаДанными);

        #КонецЕсли

        
        ОбработкаОбменаПриемника = Неопределено;

        

        // прокидываем ошибку дальше

        ВызватьИсключение СтрокаОписанияОшибки;

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

    
    ОбработкаОбменаПриемника = Неопределено;

        

    #Если Клиент Тогда

        Состояние(«»);

    #КонецЕсли

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

  

Босечка

25 — 28.09.17 — 13:44

Процедура ОбработкаЗаполнения(Основание)

    ДокументОснование = Основание;

    Если ТипЗнч(Основание) = Тип(«ДокументСсылка.Событие») Тогда

        // Заполнение шапки

        КонтактноеЛицоКонтрагента = Основание.КонтактноеЛицо;

        Контрагент     = Основание.Контрагент;

        Организация =     УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной(«глТекущийПользователь»), «ОсновнаяОрганизация»);

        

        ДоговорКонтрагента     = ЗаполнениеДокументов.ПолучитьДоговорПоОрганизацииИКонтрагенту(Организация, Контрагент, мСтруктураПараметровДляПолученияДоговора);

    ИначеЕсли ТипЗнч(Основание) = Тип(«ДокументСсылка.ЗаказПокупателя») Тогда

        

        // Заполнение шапки

        ВалютаДокумента                   = Основание.ВалютаДокумента;

        ИспользоватьПлановуюСебестоимость = Основание.ИспользоватьПлановуюСебестоимость;

        ИтогПлановаяСебестоимость         = Основание.ИтогПлановаяСебестоимость;

        Комментарий                       = Основание.Комментарий;

        КратностьВзаиморасчетов           = Основание.КратностьВзаиморасчетов;

        КурсВзаиморасчетов                = Основание.КурсВзаиморасчетов;

        Подразделение                     = Основание.Подразделение;

        СтруктурнаяЕдиница                = Основание.СтруктурнаяЕдиница;

        СуммаВключаетНДС                  = Основание.СуммаВключаетНДС;

        СуммаДокумента                    = Основание.СуммаДокумента;

        УчитыватьНДС                      = Основание.УчитыватьНДС;

        

        Склад = ?(ТипЗнч(Основание.СкладГруппа) = Тип(«СправочникСсылка.Склады»), Основание.СкладГруппа, Неопределено);

        Если НЕ ЗначениеЗаполнено(Склад) Тогда

            Склад = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной(«глТекущийПользователь»), «ОсновнойСклад»);

        КонецЕсли;

        #Если Клиент Тогда

        Если НЕ ЗначениеЗаполнено(Склад) Тогда

            ВвестиЗначение(Склад, «Выберите склад», Тип(«СправочникСсылка.Склады»));

        КонецЕсли;

        #КонецЕсли

        ОрганизацияКонтрагента = ЗаполнениеДокументов.ПолучитьОрганизациюПоКонтрагенту(Основание.Контрагент);

        Если ЗначениеЗаполнено(ОрганизацияКонтрагента) Тогда

            Контрагент  = ЗаполнениеДокументов.ПолучитьКонтрагентаПоОрганизации( Основание.Организация);

            Организация = ЗаполнениеДокументов.ПолучитьОрганизациюПоКонтрагенту( Основание.Контрагент);

        
            ЗаполнениеДокументов.ПриИзмененииЗначенияКонтрагента(ЭтотОбъект, мСтруктураПараметровДляПолученияДоговора);

            

            СкопироватьТабличнуюЧасть(Основание, «ВозвратнаяТара»);

            СкопироватьТабличнуюЧасть(Основание, «Товары»);

            СкопироватьТабличнуюЧасть(Основание, «Услуги»);

        Иначе

            Организация = Основание.Организация;

            //переносим в документ необеспеченную часть заказа покупателя

            ЗаполнитьТабличнуюЧастьНеобеспеченнойЧастьюЗаказа(Товары, Основание);

            ЗаполнитьТабличнуюЧастьНеобеспеченнойЧастьюЗаказа(ВозвратнаяТара, Основание);

        КонецЕсли;

        
    ИначеЕсли ТипЗнч(Основание) = Тип(«ДокументСсылка.СчетНаОплатуПоставщика») Тогда

        // Заполнение шапки

        ВалютаДокумента                   = Основание.ВалютаДокумента;

        ДатаОплаты                        = Основание.ДатаОплаты;

        ДатаПоступления                   = Основание.ДатаПоступления;

        ДоговорКонтрагента                = Основание.ДоговорКонтрагента;

        ИспользоватьПлановуюСебестоимость = Основание.ИспользоватьПлановуюСебестоимость;

        ИтогПлановаяСебестоимость         = Основание.ИтогПлановаяСебестоимость;

        КратностьВзаиморасчетов           = Основание.КратностьВзаиморасчетов;

        Комментарий                       = Основание.Комментарий;

        КонтактноеЛицоКонтрагента         = Основание.КонтактноеЛицоКонтрагента;

        Контрагент                        = Основание.Контрагент;

        КурсВзаиморасчетов                = Основание.КурсВзаиморасчетов;

        Организация                       = Основание.Организация;

        Ответственный                     = Основание.Ответственный;

        Подразделение                     = Основание.Подразделение;

        Склад                             = Основание.Склад;

        СтруктурнаяЕдиница                = Основание.СтруктурнаяЕдиница;

        СуммаВключаетНДС                  = Основание.СуммаВключаетНДС;

        СуммаДокумента                    = Основание.СуммаДокумента;

        ТипЦен                            = Основание.ТипЦен;

        УчитыватьНДС                      = Основание.УчитыватьНДС;

        
        УправлениеЗаказами.УстановитьДатуОплатыПоДоговору(ЭтотОбъект);

        Для Каждого ТекСтрокаВозвратнаяТара Из Основание.ВозвратнаяТара Цикл

            НоваяСтрока = ВозвратнаяТара.Добавить();

            ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекСтрокаВозвратнаяТара);

        КонецЦикла;

        Для Каждого ТекСтрокаТовары Из Основание.Товары Цикл

            НоваяСтрока = Товары.Добавить();

            ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекСтрокаТовары);

        КонецЦикла;

        Для Каждого ТекСтрокаУслуги Из Основание.Услуги Цикл

            НоваяСтрока = Услуги.Добавить();

            ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекСтрокаУслуги);

        КонецЦикла;

    // Слепанов Р.И. 2016.10.11. Начало

    ИначеЕсли ТипЗнч(Основание) = Тип(«ДокументСсылка.ЗаказТранспорта») Тогда

        

        // Заполнение шапки

        Организация                       = Основание.Организация;

        Контрагент                        = Основание.Контрагент;

        ВалютаДокумента                   = мВалютаРегламентированногоУчета;

        ЗаполнениеДокументов.ПриИзмененииЗначенияКонтрагента(ЭтотОбъект, мСтруктураПараметровДляПолученияДоговора);

        
        ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ЭтотОбъект, глЗначениеПеременной(«глТекущийПользователь»), мВалютаРегламентированногоУчета, «Покупка», Основание, Основание, мСтруктураПараметровДляПолученияДоговора);

        

        НоваяСтрока = ЭтотОбъект.Услуги.Добавить();

        НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(«00000000929»);

        ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(НоваяСтрока, ЭтотОбъект, «Приобретение»);

        

        НоваяСтрока.Содержание = «Заказ транспорта № » + СокрЛП(Основание.Номер) + » от » + Формат(Основание.Дата, «ДЛФ=Д»);

        НоваяСтрока.Количество = 1;

        НоваяСтрока.Цена = Основание.СуммаДокумента;

        

        ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(НоваяСтрока, ЭтотОбъект);

        ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(НоваяСтрока, ЭтотОбъект);

        

    // Слепанов Р.И. 2016.10.11. Окончание

    КонецЕсли;

КонецПроцедуры // ОбработкаЗаполнения()

В предпоследней процедуре встает.

  

Босечка

26 — 28.09.17 — 13:44

извиняюсь строке

  

Волшебник

Модератор

27 — 28.09.17 — 13:50

Чистить кэш

  

Босечка

28 — 28.09.17 — 13:54

уже почистили. Все тоже самое.

  

h-sp

29 — 28.09.17 — 13:56

(26) Слепанов Р.И. виноват

  

h-sp

30 — 28.09.17 — 13:57

(28) запустите  Конфигурация-Проверка конфигурации с галкой «внешнее соединение» и «внешнее соединение Клиент-Сервер»

  

Tateossian

31 — 28.09.17 — 14:04

РежимДиалогаВопрос = это клиентская процедура, а обмен на сервере происходит.

И однозначно компилируется весь модуль.

Смотрите, есть ли вообще в модуле РежимДиалогаВпрос. По хорошему ее нужно убрать, ну или завернуть в директивы препроцессора #Если Клиент

  

aka AMIGO

32 — 28.09.17 — 14:11

И я бы посмотрел еще, что найдет глоб.поиск по конфигурации текста «РежимДиалогаВопрос»

  

Босечка

33 — 28.09.17 — 14:16

Я это уже делала. Но везде стоит если клиент

  

Галахад

34 — 28.09.17 — 14:22

А закомментить весь модуль. Временно?

  

Босечка

35 — 28.09.17 — 14:51

попробую…

  

mmmarat

36 — 28.09.17 — 14:53

(0) Попробуйте весь модуль документа ЗаказПоставщику убрать в условие:

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

//код модуля

#КонецЕсли

  

Босечка

37 — 28.09.17 — 15:03

(36) Это тоже не помогло.

  

Босечка

38 — 28.09.17 — 15:04

комментировала весь модуль все равно не работает

  

h-sp

39 — 28.09.17 — 15:07

(38) а в другой базе?

  

mmmarat

40 — 28.09.17 — 15:08

(37) Отладка — подключение — автоматическое подключение… галка на фоновые задания.

далее отладка — остановка по  ошибке — останавливаться по ошибке.

Запускаем обмен, смотрим ошибку и место вызова.

  

Босечка

41 — 28.09.17 — 15:24

делала так, все равно не работает. Ошибка неизвестно где.

  

Босечка

42 — 28.09.17 — 15:25

подставила там в одном месте

#Если клиент

#КонецЕсли

  

h-sp

43 — 28.09.17 — 15:52

(41) как это неизвестно? известно. При попытке открыть модуль объекта Заказ Поставщику.

  

h-sp

44 — 28.09.17 — 15:53

(41) вы (30) запускали?

  

vicof

45 — 28.09.17 — 15:53

Пригласить специалиста уже предлагали?

  

Лефмихалыч

46 — 28.09.17 — 16:01

(41) не в той конфигурации смотрите.

  

Босечка

47 — 28.09.17 — 17:29

Проблема решилась так. Обмен настроила в другой базе. Там было хоть понятно по каким ошибкам идти, не было пустых строк. Все исправила и все выгрузилось успешно.

  

Босечка

48 — 28.09.17 — 17:32

(45) Ты, что ли, главный специалист? Так что же ты ничего не посоветовал? Хамить все могут. А вот дельный совет дают на форумах единицы. Но это не вы.

  

Волшебник

Модератор

49 — 28.09.17 — 21:17

(48) Не грузите общественность магией.

Здравствуйте.

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

{ОбщийМодуль.ОбменДаннымиСервер.Модуль(3065)}: Ошибка при вызове метода контекста (Download) Прокси.Download(СтруктураНастроекОбмена.ИмяПланаОбмена, СтруктураНастроекОбмена.ТекущийУзелПланаОбменаКод, Новый ХранилищеЗначения(СообщениеОбмена, Новый СжатиеДанных(9)));по причине:Ошибка вызова операции сервиса:  {http://www.1c.ru/SSL/Exchange_2_0_1_6}:Exchange_2_0_1_6:Download()по причине:Ошибка SOAP сервера:  Неизвестная ошибка. {ОбщийМодуль.ОбменДаннымиСервер.Модуль(2677)}: Ошибка при инициализации процесса обмена данными.по причине:{ОбщийМодуль.ОбменДаннымиСервер.Модуль(2677)}: Ошибка при инициализации процесса обмена данными.

Также хотелось бы автоматическйо синхронизации при старте мобильного приложения. Спасибо.

Никаких проблем не вышло, обмен вручную идет а по регламенту нет, блокировки регламентных заданий в sql не стоит

Добавлено через 6 минут
При повторной проверке вышло {РегистрНакопления.ВзаиморасчетыСКонтрагентами(104 ,45)}: Переменная не определена (РежимДиалогаВопрос)
Ответ = Вопрос(«Все равно провести?», <<?>>РежимДиалогаВопрос.ДаНет); (Проверка: Внешнее соединение)
{РегистрНакопления.ВзаиморасчетыСКонтрагентами(106 ,20)}: Переменная не определена (КодВозвратаДиалога)
Если Ответ = <<?>>КодВозвратаДиалога.Да Тогда (Проверка: Внешнее соединение)
{РегистрНакопления.ВзаиморасчетыСКонтрагентами(104 ,15)}: Процедура или функция с указанным именем не определена (Вопрос)
Ответ = <<?>>Вопрос(«Все равно провести?», РежимДиалогаВопрос.ДаНет); (Проверка: Внешнее соединение)
{РегистрНакопления.ВзаиморасчетыСКонтрагентами(104 ,45)}: Переменная не определена (РежимДиалогаВопрос)
Ответ = Вопрос(«Все равно провести?», <<?>>РежимДиалогаВопрос.ДаНет); (Проверка: Внешнее соединение (вариант клиент-сервер))
{РегистрНакопления.ВзаиморасчетыСКонтрагентами(106 ,20)}: Переменная не определена (КодВозвратаДиалога)
Если Ответ = <<?>>КодВозвратаДиалога.Да Тогда (Проверка: Внешнее соединение (вариант клиент-сервер))
{РегистрНакопления.ВзаиморасчетыСКонтрагентами(104 ,15)}: Процедура или функция с указанным именем не определена (Вопрос)
Ответ = <<?>>Вопрос(«Все равно провести?», РежимДиалогаВопрос.ДаНет); (Проверка: Внешнее соединение (вариант клиент-сервер))
{РегистрНакопления.ВзаиморасчетыСКонтрагентами(104 ,45)}: Переменная не определена (РежимДиалогаВопрос)
Ответ = Вопрос(«Все равно провести?», <<?>>РежимДиалогаВопрос.ДаНет); (Проверка: Сервер)
{РегистрНакопления.ВзаиморасчетыСКонтрагентами(106 ,20)}: Переменная не определена (КодВозвратаДиалога)
Если Ответ = <<?>>КодВозвратаДиалога.Да Тогда (Проверка: Сервер)
{РегистрНакопления.ВзаиморасчетыСКонтрагентами(104 ,15)}: Процедура или функция с указанным именем не определена (Вопрос)
Ответ = <<?>>Вопрос(«Все равно провести?», РежимДиалогаВопрос.ДаНет); (Проверка: Сервер)

При выполнении некого обмена, возникает ошибка. Обмен не выполняется. Как можно начать поиск причины этого и попытаться устранить возникновение ошибки? выполнение обмена начинается из,  — Сервис-> Прочие обмены данными-> Все настройки обмена данными — обмен/выполнить обмен по текущей настройке Ошибка при выгрузке данных для узла плана обмена     ТипОбъекта             =  Документ объект: Поступление товаров и услуг     Объект                 =  Поступление товаров и услуг СВ000027019 от 31.12.2016 23:59:59     ОписаниеОшибки         =  Ошибка при вызове метода контекста (ПроизвестиЧтениеДанных): Произошла исключительная ситуация (1C:Enterprise 8.3.9.1850): Ошибка инициализации модуля: ОбщийМодуль.Модуль {ОбщийМодуль.Модуль(111,4)}: Переменная не определена (Перем_МеханизмСинонимов) Окончание выгрузки: 24.01.2017 11:35:07 Произошла ошибка при выгрузке объектов. Было выгружено: 1

Ну так вроде ошибка написана, не?

ну да написана я хотел подсказку о месте где её искать

Попробуйте здесь: {ОбщийМодуль.Модуль(111,4)}: Переменная не определена (Перем_МеханизмСинонимов)

+ Или здесь: Обработка.ОбменДаннымиXML.МодульОбъекта(14447)

+ Если что, цифры в скобках это позиция ошибки в строке

а может в обработчиках правил обмена ещё? в событиях?

(6+) В режиме предприятия конвертации данных.

План обмена типовой? Если самопальный, то, возможно, какого-то обработчика из типового не хватает. Поставьте точку останова на Обработка.ОбменДаннымиXML.МодульОбъекта(14447) и посмотрите что за переменная Перем_МеханизмСинонимов и где она должна заполняться, тогда поймете каких данных не хватает.

Да пробую отыскать это место, (111,4) — это обозначение какой то строки? Там просто много раз объявлена эта переменная

но в этой обработке, в её модуле объекта нет такой переменной

ТС, ты про отладчик слышал? А про «Останавливаться по ошибке»?

Ок, попробую этот метод! то есть, по этой записи строку не выявить? Обработка.ОбменДаннымиXML.МодульОбъекта(14447)

Прошелся по нему, ошибок конечно много встречается но что какая то переменная не определена, что в ошибке написана, не встретил разбираюсь далее

Ребят, как все же можно устранить ошибку? Ставил останавливаться по ошибке, останавливается, но ничего выявить не удается. Переменную что в тексте ошибки увидеть не удается. Ни в том ни в другом модуле. Как быть?

открой модуль объекта Обработка.ОбменДаннымиXML.МодульОбъекта и поставь точку останова на строке 14447

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

Эта строка вот, — в переменной СтрокаОшибкиВБазеПриемнике, всегда «» останавливается несколько раз на этой строке и все((( потом далее, и ошибка выходит!

но в этой строке просто выводится ошибка СтрокаСообщенияОбОшибке = ЗаписатьВПротоколВыполнения(72, ЗП, Истина); в модуле объекта обработки обмен данныи xml ЗП это структура, текст ошибки, номер строки почему то документ поступление товаров услуг ещё указан но как именно устранить эту ошибку не пойму (((( подскажите ?

ну ОбщийМодуль открой, строку 111

реально не пойму что поправить, как утсранить ошибку

Чисто на Ванге. В общем модуле, в самом начале у тебя объявление переменных, и там у тебя написано: Перем_МеханизмСинонимов; А надо Перем МеханизмСинонимов;

срабатывает исключение в попытке как вот его найти это место

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

Да остановиться по ошибке, там во многих местах останавливается. Но что это место возникновения данной ошибки не определяется. А если стоит ветвление попытка исключение конец попытки, и срабатывает исключение, то это и есть место возникновения ошибки? дальше программный код же не будет выполняться?

тогда в самом низу этого общего модуля смотрите. В общем запустить поиск в ОбщийМодуль слова Перем_МеханизмСинонимов

и вообще в ОбщийМодуль нажми синтаксический контроль

Поступление товаров и услуг СВ000027019 от 31.12.2016 23:59:59 вот этот документ указан в ошибке срабатывает это на вот этой строке на ней же срабатывает исключение, сейчас буду разбираться с этой строкой ничего это не выявляет????

вот на этой строке выходит ошибка, и по F11 не заходит в процедуру, как быть? Сваливается в исключение где выводится текст ошибки.

вы вообще ответы не читаете. У вас синтаксическая ошибка в модуле этом. Написано же «Ошибка инициализации модуля: ОбщийМодуль.Модуль » То есть ошибка при инициализации модуля. Модуль не инициализирован, а вы про какие-то процедуры. Процедур вообще нет еще. Ни одной. они возникнут, когда модуль проинициализируется.

да спасибо! Новая ошибка. Подскажите пожалуйста как начинать решать, где смотреть? Утомился, плохо соображаю, — бка в глобальном обработчике события ПередВыгрузкойОбъекта (конвертация)     ПВД                    =  бит_ЗаявкаНаРасходованиеСредств     Объект                 =  Заявка на расходование ДС СВ000022494 от 16.12.2016 11:09:53  (Документ объект: Заявка на расходование денежных средств (БИТ))     Обработчик             =  ПередВыгрузкойОбъектаВыборки (глобальный)     ОписаниеОшибки         =  Ошибка при вызове метода контекста (ПринадлежитЭлементу): Элемент не выбран! Ошибка при выгрузке данных для узла плана обмена     ТипОбъекта             =  Документ объект: Заявка на расходование денежных средств (БИТ)     Объект                 =  Заявка на расходование ДС СВ000022494 от 16.12.2016 11:09:53     ОписаниеОшибки         =  Ошибка в глобальном обработчике события ПередВыгрузкойОбъекта (конвертация)     ПВД                    =  бит_ЗаявкаНаРасходованиеСредств     Объект                 =  Заявка на расходование ДС СВ000022494 от 16.12.2016 11:09:53  (Документ объект: Заявка на расходование денежных средств (БИТ))     Обработчик             =  ПередВыгрузкойОбъектаВыборки (глобальный)     ОписаниеОшибки         =  Ошибка при вызове метода контекста (ПринадлежитЭлементу): Элемент не выбран!

Пишу в процедуре ПередВыгрузкойОбъекта сообщить но сообщить при выгрузке не показывается. Перенес сообщить в процедуру передВыгрузкойДанных сообщить показалось!!! Но я хотел бы смотреть реквизиты самих объектов перед выгрузкой, а точнее вот этого кода, —     И (НЕ(Объект.ПодразделениеДт.ПринадлежитЭлементу(ПодразделениеФильтр) ИЛИ Объект.ПодразделениеДт = ПодразделениеФильтр) ИначеЕсли Объект.Метаданные.Реквизиты.Найти(«ПодразделениеПолучатель») <> Неопределено И Объект.Метаданные.Реквизиты.Найти(«ПодразделениеОтправитель») <> Неопределено     И (НЕ(Объект.ПодразделениеПолучатель.ПринадлежитЭлементу(ПодразделениеФильтр) ИЛИ Объект.ПодразделениеПолучатель = ПодразделениеФильтр) ИначеЕсли Объект.Метаданные.Реквизиты.Найти(«Подразделение») <> Неопределено И Объект.Метаданные.Реквизиты.Найти(«ПодразделениеОтправитель») <> Неопределено     И (НЕ(Объект.Подразделение.ПринадлежитЭлементу(ПодразделениеФильтр) ИЛИ Объект.Подразделение = ПодразделениеФильтр) вставлен он в событии КД ПередВыгрузкойОбъекта. Как мне смотреть реквизиты подразделений объекта?

Тэги:

Комментарии доступны только авторизированным пользователям

Содержание:

1.       Диагностика ошибки инициализации модуля

2.       Устранение ошибки инициализации модуля

В данной статье будет описано, как устранять ошибку в системе «1С:Предприятие», когда при обновлении типовой конфигурации появляется объявление вида «Ошибка инициализации модуля:EF_00_00ХХХХХ». Будет проведён анализ данной неполадки и приведены способы по её устранению.   


1.    Диагностика ошибки инициализации модуля

Данная ошибка довольно часто появляется у юзеров системы 1С, когда после обновления выдает ошибку и всплывает объявление об ошибке по инициализации модуля. Окно с данной неполадкой в системе 1С представлено на скриншоте далее:

Окно ошибки инициализации модуля

Появление окна с данной неполадкой означает то, что система 1С не имеет возможности автоматического удаления патча с правками. Данный патч с правками недавно был внесён в обновление системы и позволяет быстро определять возможные неполадки и править их.

Обычно, специфика патчей с правками подразумевает то, что эта система автономная и будет удалять всё лишнее самостоятельно, как только версия 1С будет обновлена. Однако, в реальности, случается иначе: автоматическое удаление может не срабатывать, обновление прерывается и возникает ошибка по инициализации модуля.  

2.    Устранение ошибки инициализации модуля

Рассмотрим алгоритм действий пользователя для устранения ошибки инициализации модуля. Очевидно, что необходимо провести удаления патча самостоятельно.

Для удаления патча вручную существует два метода:

1.     Через режим «1С:Предприятие» в системе. Откроем вкладку в меню «Администрирование», после чего кликнем на «Обслуживание», перейдём на раздел «Обновление программы» и избираем «Установленные исправления(патчи)», как демонстрируется на скриншоте с примером ниже:

Установленные исправления в режиме 1С Предприятия в системе

Перед пользователем появится список патчей с правками, как показано далее:

Список патчей с правками и их удаление

Избираем тот патч, который подлежит удалению и кликаем «Удалить исправление».

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

Управление расширениями конфигурации

2.     Удалить патчи через «1С 8 Конфигуратор». Чтобы провести данную процедуру, понадобится избрать пункт «Конфигурация» и перейти по ссылке «Расширения конфигурации». Появится новая вкладка с перечнем все расширений, которые были установлены, выбираем нужное и кликаем на «Удалить», как демонстрируется на скриншоте с примером ниже:

Удаление расширения в 1С 8 Конфигуратор

Оба способа являются рабочими и возобновляют корректную работу системы 1С, избавляя ошибки после установки обновления.

В данной статье была продиагностирована ошибка после обновления1С по инициализации модуля, а также было приведено два метода по устранению данной неполадки.

Специалист компании «Кодерлайн»

Айдар Фархутдинов

We have installed Microsoft Exchange Server 2007 Service Pack1.
We have followed the pre-requisites as given in: http://technet.microsoft.com/en-us/library/aa996719.aspx
We have installed :

  • Windows Server 2003 SP2

  • Intel Pentium 32-bit processor, 2GB RAM

  • .Net Framework 2.0 with SP1

  • MMC 3.0

  • Microsoft PowerShell
  • Windows Media Encoder version 9.0

  • IIS 6.0

  • W3SVC

  • COM + access

  • RPC over HTTP

  • ASP.NET Version 2.0

  • Distribution Coordinator Transaction service

  • Microsoft Windows Media Audio Voice Codec

  • MSXML6.0

  • Incorrect time zone update

  • Exchange Server 2007 SP1 Build Version: 2.1.240.3

  • We have then installed Client Access, Hub Transport, Mailbox and Unified Messaging Roles in single system itself. Installation went successfully.

  1. During the installation of Unified messaging role, the Microsoft Speech Engine was already installed.
    So, we have disabled it. And then after some time, again we have enabled it.

  2. We were able to create mailbox users. We created UM dial plan, UM dial plan policy,UM Gateway and UM Auto Attendant.

  3. We have successfully completed, these steps.

  4. We encountered the below error while trying to enable Unified Messaging from Conole as well as powershell:

  5. We first started UM Service and then tried enabled the UM. But, soon after starting UM service, we get two errors as follows:

The Error EventViewer Log 1 :

Event Type: Error
Event Source: MSExchange Unified Messaging
Event Category: UMWorkerProcess
Event ID: 1057
Date:  12/21/2007
Time:  10:33:26 AM
User:  N/A
Computer: EXCH01
Description:
An unhandled exception occurred in a Unified Messaging worker process: «Microsoft.SpeechServer.Recognition.SrgsRecognitionEngineException: An error occurred initializing engine ‘Microsoft Speech Recognizer 9.0 for Microsoft Speech Server (English — US)’ for language ‘en-US’ —> System.Runtime.InteropServices.COMException (0x80040154): Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
   at SpeechLib.SpInprocRecognizerClass.set_Recognizer(SpObjectToken Recognizer)
   at Microsoft.SpeechServer.Recognition.SrgsGrammar.SrgsTextProcessor..ctor(CultureInfo cultureInfo)
   — End of inner exception stack trace —
   at Microsoft.SpeechServer.Recognition.SrgsGrammar.SrgsTextProcessor..ctor(CultureInfo cultureInfo)
   at Microsoft.Exchange.UM.UMCore.GalGrammarWriter.Generate(GalGrammar grammar, Boolean preCompile, TempGrammarFile& outputGrammarFile)
   at Microsoft.Exchange.UM.UMCore.GrammarGenerator.Generate(CultureInfo culture, Boolean preload, Boolean precompile, StreamWriter logFileStream)
   at Microsoft.Exchange.UM.UMCore.GrammarSchedule.GenerateGrammars(List`1 requiredGrammarFiles, List`1 grammarFiles, StreamWriter logwriter)
   at Microsoft.Exchange.UM.UMCore.GrammarSchedule.GenerateGrammarWorker(Object state)
   at System.Threading._ThreadPoolWaitCallback.WaitCallback_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading._ThreadPoolWaitCallback.PerformWaitCallbackInternal(_ThreadPoolWaitCallback tpWaitCallBack)
   at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object state)».

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

The Event Viewer log shows as an error in Speech Server class error while UM Worker process thread.
The Event ID was 1057.
Described as «An unhandled exception occurred in a Unified Messaging Worker Process: «%1″.»
in Unified MEssaging Error and Events in http://technet.microsoft.com/en-us/library/aa996572.aspx

The Error EventViewer Log 2 :

Event Type: Error
Event Source: MSExchange Common
Event Category: General
Event ID: 4999
Date:  12/21/2007
Time:  10:33:26 AM
User:  N/A
Computer: EXCH01
Description:
Watson report about to be sent to dw20.exe for process id: 3172, with parameters: E12, c-RTL-x86, 08.01.0240.006, UMworkerprocess, unknown, M.S.R.S.SrgsTextProcessor.ctor, S.R.InteropServices.COMException, c69d, unknown.  ErrorReportingEnabled: False

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

We tried things like restarting the system/restarting UM service/Restarting Speech Server, but did not resolve the issue.

Any help in this regard will be very much thankful.

We have installed Microsoft Exchange Server 2007 Service Pack1.
We have followed the pre-requisites as given in: http://technet.microsoft.com/en-us/library/aa996719.aspx
We have installed :

  • Windows Server 2003 SP2

  • Intel Pentium 32-bit processor, 2GB RAM

  • .Net Framework 2.0 with SP1

  • MMC 3.0

  • Microsoft PowerShell
  • Windows Media Encoder version 9.0

  • IIS 6.0

  • W3SVC

  • COM + access

  • RPC over HTTP

  • ASP.NET Version 2.0

  • Distribution Coordinator Transaction service

  • Microsoft Windows Media Audio Voice Codec

  • MSXML6.0

  • Incorrect time zone update

  • Exchange Server 2007 SP1 Build Version: 2.1.240.3

  • We have then installed Client Access, Hub Transport, Mailbox and Unified Messaging Roles in single system itself. Installation went successfully.

  1. During the installation of Unified messaging role, the Microsoft Speech Engine was already installed.
    So, we have disabled it. And then after some time, again we have enabled it.

  2. We were able to create mailbox users. We created UM dial plan, UM dial plan policy,UM Gateway and UM Auto Attendant.

  3. We have successfully completed, these steps.

  4. We encountered the below error while trying to enable Unified Messaging from Conole as well as powershell:

  5. We first started UM Service and then tried enabled the UM. But, soon after starting UM service, we get two errors as follows:

The Error EventViewer Log 1 :

Event Type: Error
Event Source: MSExchange Unified Messaging
Event Category: UMWorkerProcess
Event ID: 1057
Date:  12/21/2007
Time:  10:33:26 AM
User:  N/A
Computer: EXCH01
Description:
An unhandled exception occurred in a Unified Messaging worker process: «Microsoft.SpeechServer.Recognition.SrgsRecognitionEngineException: An error occurred initializing engine ‘Microsoft Speech Recognizer 9.0 for Microsoft Speech Server (English — US)’ for language ‘en-US’ —> System.Runtime.InteropServices.COMException (0x80040154): Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
   at SpeechLib.SpInprocRecognizerClass.set_Recognizer(SpObjectToken Recognizer)
   at Microsoft.SpeechServer.Recognition.SrgsGrammar.SrgsTextProcessor..ctor(CultureInfo cultureInfo)
   — End of inner exception stack trace —
   at Microsoft.SpeechServer.Recognition.SrgsGrammar.SrgsTextProcessor..ctor(CultureInfo cultureInfo)
   at Microsoft.Exchange.UM.UMCore.GalGrammarWriter.Generate(GalGrammar grammar, Boolean preCompile, TempGrammarFile& outputGrammarFile)
   at Microsoft.Exchange.UM.UMCore.GrammarGenerator.Generate(CultureInfo culture, Boolean preload, Boolean precompile, StreamWriter logFileStream)
   at Microsoft.Exchange.UM.UMCore.GrammarSchedule.GenerateGrammars(List`1 requiredGrammarFiles, List`1 grammarFiles, StreamWriter logwriter)
   at Microsoft.Exchange.UM.UMCore.GrammarSchedule.GenerateGrammarWorker(Object state)
   at System.Threading._ThreadPoolWaitCallback.WaitCallback_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading._ThreadPoolWaitCallback.PerformWaitCallbackInternal(_ThreadPoolWaitCallback tpWaitCallBack)
   at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object state)».

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

The Event Viewer log shows as an error in Speech Server class error while UM Worker process thread.
The Event ID was 1057.
Described as «An unhandled exception occurred in a Unified Messaging Worker Process: «%1″.»
in Unified MEssaging Error and Events in http://technet.microsoft.com/en-us/library/aa996572.aspx

The Error EventViewer Log 2 :

Event Type: Error
Event Source: MSExchange Common
Event Category: General
Event ID: 4999
Date:  12/21/2007
Time:  10:33:26 AM
User:  N/A
Computer: EXCH01
Description:
Watson report about to be sent to dw20.exe for process id: 3172, with parameters: E12, c-RTL-x86, 08.01.0240.006, UMworkerprocess, unknown, M.S.R.S.SrgsTextProcessor.ctor, S.R.InteropServices.COMException, c69d, unknown.  ErrorReportingEnabled: False

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

We tried things like restarting the system/restarting UM service/Restarting Speech Server, but did not resolve the issue.

Any help in this regard will be very much thankful.

Довольно часто начинающие 1С разработчики сталкиваются с ошибками, которых достаточно легко избежать. Ниже мы рассмотрим топ 11 ошибок и способы их исправления. Также доступна видеоверсия статьи

Содержание

Поле объекта не обнаружено

1С ошибка Поле объекта не обнаружено

Существует множество статей, которые описывают возможные причины возникновения в 1С ошибки “Поле объекта не обнаружено”. Порой это связывают с обновлением платформы, обновлением типового релиза, или с какими-то другими причинами.

Мы же будем оперировать фактами. В конце статьи прилагается внешняя обработка, в которой воспроизведена данная ошибка.

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

  • Удалили табличную часть, к которой обращаемся в коде?
  • Переименовали реквизит, а в коде не исправили?
  • Заменили значение со ссылки на неопределено?

Вуаля – платформа выдаст ошибку “Поле объекта не обнаружено”!

Как исправить? Исходя из природы ошибки – переименовать реквизит на нужное имя, отредактировать код, или использовать правильные обращения к стандартным свойствам объекта.

Например, у объекта “СообщениеПользователю” нет свойства “Таблица”, и следующий код приведет к ошибке:

Сообщение = Новый СообщениеПользователю;
Сообщение.Таблица = “Ошибка”;

Индекс находится за границами массива

1С ошибка Индекс находится за пределами массива

Что означает такое сообщение системы? Как правило, с данной ошибкой разработчик сталкивается при некорректной работе с коллекциями. Самые частые случаи появления ошибки “Индекс находится за границами массива”.

  • Использование при обходе коллекции количества элементов вместо индекса. Индексы начинаются с нуля, а количество элементов – с единицы. Поэтому следующий код гарантированно приведет к ошибке: Массив[Массив.Количество()]
  • Последствия удаления элементов из коллекции, очистки коллекции или замены коллекции на пустую
  • Ошибочное увеличение счетчика в цикле “Для”

 Как исправить? Для удаления элементов из коллекции по условию – использовать обратный цикл. Добавлять условие на соответствие счетчика цикла и индекса массива. Не увеличивать счетчик внутри кода цикла Для … Цикл … КонецЦикла

Обращение к процедуре как к функции

ОШибка

Суть этой ошибки в том, что процедура не может возвращать значение. И если мы в коде используем вызов процедуры справа от знака присваивания, это приведет к ошибке.

Данная ошибка имеет две вариации – если используется стандартная процедура из методов какого-нибудь объекта, то фраза будет звучать “Обращение к процедуре объекта как к функции”. Если же использовать процедуру, объявленную в коде, то текст ошибки будет “Обращение к процедуре как к функции”.
При этом ошибка использования процедуры объекта является ошибкой времени выполнения – т.е. на этапе сохранения и проверки конфигурации платформа эту ошибку не обнаружит.

А вот неправильное использование процедуры синтаксическая проверка (Ctrl + F7) успешно обнаруживает, и не даст сохранить конфигурацию или внешнюю обработку/отчет, пока ошибка не будет устранена.

Рассмотрим два примера:

1. Воспроизведем ошибку “Обращение к процедуре как к функции”. При этом платформа не даст сохранить изменения, т.к. не проходит синтакс-контроль.

2. Воспроизведем ошибку “Обращение к процедуре объекта как к функции”. Здесь мы неверно используем метод объекта массива “Добавить”, который является процедурой.

Как исправить? Ошибка тривиальная, и исправление тоже. Чаще всего, достаточно внимательно прочитать описание методов объекта во встроенной справке или синтакс-помощнике. Если метод является процедурой, то значений он возвращать не может. Следовательно, нужно модифицировать код так, чтобы такого ошибочного вызова не было.
Если же используется процедура, объявленная в коде, возможно, есть необходимость изменить ее на функцию, либо также скорректировать код, который эту процедуру использует.

Процедура не может возвращать значение

Родственная предыдущей ошибка. Для того, чтобы код возвращал какое-то значение, следует этот код размещать в функции, а не в процедуре.

В процедуре можно написать ключевое слово “Возврат” без параметров. Это будет означать выход из процедуры.

Следующий код является ошибочным, т.к. в теле процедуры Возврат используется с параметром:

Процедура ПроцедураНеМожетВозвращатьЗначение(Команда)
Возврат "Ошибка";
КонецПроцедуры

Как исправить? Платформа сама подсказывает, в каком месте кода ошибка. Нужно изменить текст модуля – либо удалить параметр у ключевого слова Возврат, либо убрать его вовсе, либо изменить процедуру на функцию – зависит от того, какая логика у вашей процедуры, и как вы предполагаете ее использовать.

Переменная не определена

Такой текст ошибки платформа 1С выдает на этапе синтаксического контроля, при сохранении конфигурации, внешнего отчета или обработки.
Причин у этой ошибки может быть несколько.

  • Опечатка в имени переменной
  • Обращение к переменной, которая нигде в области видимости не объявлена (неявной инициализацией с присвоением значения, явным образом с использованием ключевого слова “Перем”, или передана в качестве параметра)
  • Написание на клиенте серверного кода. Например, обращение к менеджеру справочников “Справочники”, и т.п. Клиентская часть приложения “не видит ” серверные объекты языка
  • Также ошибка может появиться, если ранее код использовался в режиме толстого клиента, но после был запущен в тонком клиенте.

Как исправить?

Внимательно следить за правильностью набранного кода, своевременно объявлять переменные или передавать их в качестве параметров. Писать серверный код только в серверных модулях, а также использовать соответствующие инструкции препроцессора, например “&НаСервере”.

Значение не является значением объектного типа

Ошибка “Значение не является значением объектного типа” может возникнуть при неверном обращении к объекту языка. Объектный тип – это такие объекты языка, которые содержат в себе другие объекты – свойства, реквизиты и т.п. Эти свойства доступны через точку, например “Объект.СвойствоЭтогоОбъекта”

Но если через точку попытаться использовать какое-то значение, которое внутри себя свойств не имеет – например, любое значение примитивного типа – это и приведет к ошибке.

Разберем более сложный пример:

&НаСервере
Процедура ЗначениеНеЯвляетсяЗначениемОбъектногоТипаНаСервере(Справочники = Ложь)
Сообщить(Справочники.Сотрудники.ПустаяСсылка());
КонецПроцедуры

Ошибка может быть “плавающей”. Если вместо параметра по умолчанию “Справочники = Ложь” будет передан менеджер справочников, то ошибки возникать не будет. А если вызвать процедуру без параметров, то будет использоваться параметр по умолчанию с типом Булево, что и приведет к ошибке.

Чаще всего чтобы исправить ошибку, нужно в отладчике посмотреть, какой тип значения используется. Можно внести изменения в код, чтобы обеспечить корректное поведение (например, в запросе вместо наименования товара выбрать ссылку, и в коде через точку уже обращаться к свойствам ссылки, а не текстового наименования). А можно добавить проверку на нужный тип значения. Т.е. – если значение того типа, который мы ожидаем – выполняем код. Иначе – не выполняем.

Ошибка при вызове метода контекста

Ошибка при вызове метода контекста

Обнаружены ошибки в 1С Синтаксическая ошибка

В языке 1С у разных объектов (запросов, справочников, табличных документов и др.) есть предопределенные методы, предусмотренные платформой. Обращение к этим методам требует соблюдения порядка и параметров, правильного синтаксиса и соблюдения условий использования. Например, при чтении табличного документа из файла он не должен быть открыт в другой программе, при подключении к http-соединению оно должно быть доступно, и т.п.

Если эти условия не соблюдать, платформа в зависимости от версии может выдавать сообщения вида “Ошибка при вызове метода контекста”, и далее будут следовать более подробные сведения об ошибке – стек вызовов, приведших к ошибке, номер строки и позиции в строке, где произошла ошибка.

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

  1. Записать
  2. Прочитать
  3. Выполнить
  4. Создать
  5. ПроверитьВывод

Разберем эту ошибку на примере метода Выполнить объекта Запрос:

Запрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 1 1 ГДЕ ИСТИНА И");
Запрос.Выполнить();

В тексте запроса допущена ошибка –  после первого условия “ГДЕ ИСТИНА” указан оператор И, но после него нет еще одного условия. В результате при попытке выполнения запроса, платформа вернет ошибку.

Для исправления ошибки зачастую достаточно внимательно использовать методы, при необходимости уточнять порядок, количество и тип параметров – это можно сделать в справке или синтакс-помощнике (встать курсором на имя метода в коде, и нажать сочетание клавиш Ctrl+F1). В случае запроса – нужно передавать синтаксически корректный текст запроса; в случае проверки вывода на печать – в системе должен быть установлен принтер; в случае подключения к почте – должны быть корректно указаны логин и пароль, и т.п.

Тип не может быть выбран в запросе в 1С 8.3 (8.2)

Ошибка Тип не может быть выбран в запросе

С такой ошибкой начинающие разработчики (да и не только начинающие 😉 ) сталкиваются чаще всего, при чтении запросом данных из таблиц значений, либо из регистров сведений. Все дело в том, что запросы поддерживают далеко не все типы значений. Так, например, нельзя запросом выбрать тип Картинка, ХранилищеЗначений, Шрифт, и многие другие типы, которые не относятся к примитивным или ссылочным типам значений.

Так, если ресурс регистра сведений имеет тип ХранилищеЗначений, выбрать его запросом будет нельзя. Также, если в таблицу значений поместить значения не подходящих типов, а после передать эту таблицу в качестве параметра-источника данных, выполнение запроса также приведет к ошибке “Тип не может быть выбран в запросе”.

Еще одна ситуация, когда запрос будет выдавать ошибку – если таблица значений, которая передается в качестве параметра, имеет не типизированные колонки.

Неверно:

//ТЗОшибочныйТип.Колонки.Добавить("Контрагент");

Верно:

//ТЗОшибочныйТип.Колонки.Добавить("Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));

Для исправления ошибки нужно правильным образом инициализировать колонки таблицы значений, а также не обращаться в запросе к полям, типы которых запросами не поддерживаются.

Использование в 1С модальных окон в данном режиме запрещено

Ошибка Использование в 1С модальных окон в данном режиме запрещено​

Платформа будет выдавать такое сообщение, если в коде используются методы, приводящие к открытию модальных окон. Модальные окна – это окна, которые при открытии блокируют весь остальной интерфейс. В 1С есть несколько модальных методов – например – “Вопрос”, “ОткрытьЗначение”, “Предупреждение”. Кроме того, в коде может использоваться модальный синтаксис открытия форм: “ОткрытьМодально()”

Если в свойствах конфигурации выбран режим использования модальности “Не использовать”, то выполнение модальных методов будет приводить к этой ошибке “Использование в 1С модальных окон в данном режиме запрещено”.

Для устранения ошибки можно пойти несколькими путями. Как водится, один – быстрый, другой – правильный 🙂

Быстрый способ – переключить режим использования модальности в положение “Использовать”.

Более правильный способ – использовать в коде немодальные вызовы методов. Например, у метода “Вопрос” есть немодальный аналог  – “ПоказатьВопрос”, у метода “Предупреждение” – “ПоказатьПредупреждение”, и т.п. Чаще всего об этих методах дополнительно указано в синтакс-помощнике и справке.

Кроме того, в последних версиях платформы появились асинхронные методы – “ВопросАсинх”, “ПредупреждениеАсинх” и др. Появление этих методов позволяет писать более простой и понятный асинхронный код, и направлено в первую очередь, на более полноценную поддержку браузерами и работу в веб-клиенте.

1С 8.3 и 8.2: Запись с такими ключевыми полями существует!

Данная ошибка появляется при некорректной записи в регистр сведений. Чаще всего с этой ошибкой сталкиваются начинающие разработчики, не до конца понимающие механизмы работы с ключевыми полями (измерениями).

Суть ошибки следующая – регистр сведений позволяет записать запись (строку таблицы) с уникальным набором ключевых полей – а для периодических регистров также и поля Период. Если следующая запись полностью повторяет значение ключевых полей, но осуществляется методом Записать с параметром Замещать = Истина, то запись в таблице регистра просто заменится на идентичную.

Однако если поместить две абсолютно одинаковые записи в набор записей, и попытаться его записать – платформа выдаст ошибку. Еще один распространенный случай, когда 1С сообщает “Запись с такими ключевыми полями существует” – это запись в периодический регистр сведений с периодичностью от “День” и выше, подчиненный регистратору.

В типовых конфигурациях часто эту ошибку можно воспроизвести, если в пользовательском режиме создать два документа “Установка цен номенклатуры” с одной и той же номенклатурой и за один и тот же день. Попытка провести второй документ приведет к ошибке.

В случае, когда ошибка возникает не в результате действий пользователя, а при выполнении кода, чтобы устранить ее, чаще всего необходимо проанализировать алгоритм записи в регистр. Если запись осуществляется одним набором данных, его предварительно нужно свернуть до уникальных записей. Например, выгрузить в таблицу значений, свернуть, и загрузить в набор записей.

Поле объекта недоступно для записи в 1С

Ошибка Поле объекта недоступно для записи в 1С​

Чаще всего начинающие программисты 1С сталкиваются с этой ошибкой в двух ситуациях.

Первый случай – это попытка редактирования системных полей, недоступных для записи. Например, в модуле формы сама форма будет содержаться в объекте ЭтаФорма. И попытка присвоить этому реквизиту любое значение приведет к ошибке “Поле объекта недоступно для записи”.

Второй случай – и с ним новички как раз допускают больше всего ошибок – это попытка редактирования полей ссылки, а не самого объекта. Чаще всего код выглядит примерно так:

Элемент = Справочники.Сотрудники.НайтиПоКоду("12345");
Элемент.Наименование = "Новое наименование";

 

Исполнение данного кода приведет к ошибке, т.к. поля ссылки доступны только для чтения, а метод НайтиПоКоду вернет именно ссылку. Чтобы можно было внести изменения, следует из ссылки получить сам объект – используя соответствующий метод ПолучитьОбъект().

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

Ссылка на обработку

По ссылке вы можете скачать внешнюю обработку, в которой воспроизводится большая часть ошибок, описанных в статье. Для воспроизведения части ошибок нужно будет убрать комментарии в коде.

Заключение

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

Понравилась статья? Поделить с друзьями:
  • Ошибка при вызове метода контекста создатьэлемент нарушение прав доступа
  • Ошибка при вызове метода контекста создатьфабрикуxdto
  • Ошибка при вызове метода контекста создатькаталог установлен безопасный режим
  • Ошибка при вызове метода контекста создатькаталог ошибка создания каталога
  • Ошибка при вызове метода контекста создатьдокумент