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

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

Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’

Часто бывает, что при настроенной синхронизации после обновления платформы появляется ошибка «Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’». Так происходит потому, что автоматически не зарегистрировалась компонента comcntr.dll из-за проблем с правами пользователя на компьютере.

Решить данную проблему можно двумя способами.

Способ №1.

Переустановить платформу под правами Администратора или под пользователем, у которого есть такие права.

Способ №2.

Если не получилось как в способе №1, то можно вручную зарегистрировать самому эту компоненту.

Перед этим нам необходимо изменить Параметры контроль учетной записи.

Для Windows 7 нам необходимо зайти в Пуск затем в Панель управления.

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

В правом верхнем углу Панели управления выбрать Просмотр-Мелкие значки и затем в списке перейти в Учетные записи пользователей.

Учетные записи пользователей

Там выбрать Изменить параметры контроля учетных записей.

Параметры контроля учетных записей

Затем поставить ползунок в самом нижнем положении.


Купон на ОЗОН за покупку программ 1С

Ползунок параметров контроля учетных записей

И перезапустить компьютер.

После перезагрузки необходимо:

Для Windows 7 надо перейти в Пуск, затем в строке поиска ввести cmd.exe,нам покажет что найдена Командная строка и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Командная панель или cmd.exe и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

Запуск командной строки

У нас откроется Командная строка, где нам необходимо ввести команду:

1.Для платформы x86

Regsvr32 «C:Program Files (х86)1cv8номер версии вашей платформыbincomcntr.dll» (regsvr32пробел»C:Program Files (х86)1cv8номер версии вашей платформыbincomcntr.dll»).

Команда для платформы x86

2.Для платформы х64

Regsvr32 «C:Program Files1cv8номер версии вашей платформыbincomcntr.dll» (regsvr32пробел»C:Program Files1cv8номер версии вашей платформыbincomcntr.dll»).

Команда для платформы x64

Затем нажать клавишу Enter.

Если все сделали правильно, то увидите вот такое окно.

Успешное выполнение команды

После этого необходимо перезагрузить компьютер. Как включится, пробуйте снова сделать синхронизацию.

   Ayvengo

13.02.14 — 17:32

Добрый вечер!

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

Случай 2: нашел контрагента, на котором всегда вылетает при обмене ошибка.

Что копать, куда копать.. не представляю :(

Не знаю, может чем-то поможет

Рабочий контрагент по выгрузке

                    <CatalogObject.Контрагенты>
                    <Ref>d0f06f24-5690-11e3-bab3-1cc1defa4c78</Ref>
                    <IsFolder>false</IsFolder>
                    <DeletionMark>false</DeletionMark>
                    <Parent>4d49400c-5362-11e3-bb18-0025900a8780</Parent>
                    <Code>Мт-000258</Code>
                    <Description>! ПРОББББА 1</Description>
                    <ГоловнойКонтрагент>d0f06f24-5690-11e3-bab3-1cc1defa4c78</ГоловнойКонтрагент>
                    <ДокументУдостоверяющийЛичность/>
                    <ДополнительноеОписание/>
                    <ИНН></ИНН>
                    <ИсточникИнформацииПриОбращении>00000000-0000-0000-0000-000000000000</ИсточникИнформацииПриОбращении>
                    <КодПоОКПО></КодПоОКПО>
                    <Комментарий>фвсвф</Комментарий>
                    <КПП></КПП>
                    <НаименованиеПолное>ООО "! ПРОББББА 1"</НаименованиеПолное>
                    <ОсновноеКонтактноеЛицо>5c8a92b5-7115-11e3-bab4-1cc1defa4c78</ОсновноеКонтактноеЛицо>
                    <ОсновнойБанковскийСчет>5c8a92a5-7115-11e3-bab4-1cc1defa4c78</ОсновнойБанковскийСчет>
                    <ОсновнойВидДеятельности>2f2bea5d-f5bd-11e2-84a9-0025900a8781</ОсновнойВидДеятельности>
                    <ОсновнойДоговорКонтрагента>d0f06f25-5690-11e3-bab3-1cc1defa4c78</ОсновнойДоговорКонтрагента>
                    <ОсновнойМенеджерПокупателя>75ade3d1-4126-11e3-bab3-1cc1defa4c78</ОсновнойМенеджерПокупателя>
                    <Покупатель>true</Покупатель>
                    <Поставщик>true</Поставщик>
                    <РасписаниеРаботыСтрокой/>
                    <СрокВыполненияЗаказаПоставщиком>0</СрокВыполненияЗаказаПоставщиком>
                    <НеЯвляетсяРезидентом>false</НеЯвляетсяРезидентом>
                    <ОКОПФ>bc1a4a0d-c02c-11e1-8d59-0025900a8781</ОКОПФ>
                    <Регион>7c01b4db-28e0-11e2-9c74-0025900a8781</Регион>
                    <ГруппаДоступаККонтрагенту>00000000-0000-0000-0000-000000000000</ГруппаДоступаККонтрагенту>
                    <ОбособленноеПодразделение>false</ОбособленноеПодразделение>
                    <ЮрФизЛицо>ЮрЛицо</ЮрФизЛицо>
                    <АдресЭП/>
                    <ВидыДеятельности>
                        <Row>
                            <ВидДеятельности>2f2bea5d-f5bd-11e2-84a9-0025900a8781</ВидДеятельности>
                            <Ответственный>00000000-0000-0000-0000-000000000000</Ответственный>
                        </Row>
                    </ВидыДеятельности>
                    <МенеджерыПокупателя>
                        <Row>
                            <МенеджерПокупателя>75ade3d1-4126-11e3-bab3-1cc1defa4c78</МенеджерПокупателя>
                        </Row>
                    </МенеджерыПокупателя>
                </CatalogObject.Контрагенты>

Не рабочий контрагент, вылетает ошибка

                    <CatalogObject.Контрагенты>
                    <Ref>1d51db54-6b96-11e3-bab3-1cc1defa4c78</Ref>
                    <IsFolder>false</IsFolder>
                    <DeletionMark>false</DeletionMark>
                    <Parent>7eab5792-9329-11e3-8f2a-08606ee4f6ee</Parent>
                    <Code>Рт-000078</Code>
                    <Description>1</Description>
                    <ГоловнойКонтрагент>1d51db54-6b96-11e3-bab3-1cc1defa4c78</ГоловнойКонтрагент>
                    <ДокументУдостоверяющийЛичность/>
                    <ДополнительноеОписание/>
                    <ИНН/>
                    <ИсточникИнформацииПриОбращении>00000000-0000-0000-0000-000000000000</ИсточникИнформацииПриОбращении>
                    <КодПоОКПО/>
                    <Комментарий/>
                    <КПП/>
                    <НаименованиеПолное>1</НаименованиеПолное>
                    <ОсновноеКонтактноеЛицо>00000000-0000-0000-0000-000000000000</ОсновноеКонтактноеЛицо>
                    <ОсновнойБанковскийСчет>00000000-0000-0000-0000-000000000000</ОсновнойБанковскийСчет>
                    <ОсновнойВидДеятельности>00000000-0000-0000-0000-000000000000</ОсновнойВидДеятельности>
                    <ОсновнойДоговорКонтрагента>7eab578f-9329-11e3-8f2a-08606ee4f6ee</ОсновнойДоговорКонтрагента>
                    <ОсновнойМенеджерПокупателя>00000000-0000-0000-0000-000000000000</ОсновнойМенеджерПокупателя>
                    <Покупатель>true</Покупатель>
                    <Поставщик>false</Поставщик>
                    <РасписаниеРаботыСтрокой/>
                    <СрокВыполненияЗаказаПоставщиком>0</СрокВыполненияЗаказаПоставщиком>
                    <НеЯвляетсяРезидентом>false</НеЯвляетсяРезидентом>
                    <ОКОПФ>00000000-0000-0000-0000-000000000000</ОКОПФ>
                    <Регион>00000000-0000-0000-0000-000000000000</Регион>
                    <ГруппаДоступаККонтрагенту>00000000-0000-0000-0000-000000000000</ГруппаДоступаККонтрагенту>
                    <ОбособленноеПодразделение>false</ОбособленноеПодразделение>
                    <ЮрФизЛицо/>
                    <АдресЭП/>
                    <ВидыДеятельности/>
                    <МенеджерыПокупателя/>
                </CatalogObject.Контрагенты>

Больше в файле для обмена нет никаких различий (ну .. кроме номера сообщения)

   Maxus43

1 — 13.02.14 — 17:42

на вскидку вижу разницу только в

<КодПоОКПО></КодПоОКПО>

<КодПоОКПО/>

По стандартам xml это монопесуально конечно… но всякое бывает

   Ayvengo

2 — 13.02.14 — 17:46

(1) да я просто коды удалил, на самом деле выводится просто

<КодПоОКПО/> , если значение пустое, а <КодПоОКПО></КодПоОКПО> Если что-то есть.

   Maxus43

3 — 13.02.14 — 17:48

по своей схеме xml выгружаешь?

   Ayvengo

4 — 13.02.14 — 17:50

нет, рибовская, типовая

   Maxus43

5 — 13.02.14 — 17:53

а, ну и главный вопрос, чо за ошибка то?)

   Maxus43

6 — 13.02.14 — 17:54

только то что в сабже, никакой другой инфы больше нет?

   Ayvengo

7 — 13.02.14 — 17:54

(5) так в названии темы :)

   Maxus43

8 — 13.02.14 — 17:56

хм… подумаю на досуге… а щас пора до дому

   Ayvengo

9 — 13.02.14 — 17:56

Если поможет, вот весь текст

Ошибка при чтении изменений из файла обмена.
 Ошибка при вызове метода контекста (ПрочитатьИзменения): Ошибка данных XML: [file://C:/***/Message_001_002.xml][34,59]
Чтение данных из файла обмена завершено с ошибками!

   Ayvengo

10 — 13.02.14 — 18:01

Конфиги одинаковые, ошибка вылетает не из-за различия и не из-за отсутствия главного узла, как раз при проверке различия и главного узла вызывается исключение.

И самое фиговое, никак не отладить это, т.к. исключение вызывается при использовании метода «ПрочитатьИзменения» для планов обмена.

   Ayvengo

11 — 13.02.14 — 18:18

Хехе, ошибка вылетает и при использовании обработки «Выгрузка из загрузка данных XML (2.1.8)»

{ВнешняяОбработка.ВыгрузкаЗагрузкаДанныхXML.МодульОбъекта(147)}: Ошибка при вызове метода контекста (ПрочитатьXML)
            ЗаписанноеЗначение = ПрочитатьXML(ЧтениеXML);
по причине:
Ошибка данных XML: [file://C:/***/Обмен.xml][124,12]
   Ayvengo

12 — 13.02.14 — 18:25

А как узнать идентичны ли конфигурации по каким-нибудь другим параметрам? Хз, мож какие-то идентификаторы и т.п.?

Сравнение объединение — конфиги одинаковые, нет различий.

   Ayvengo

13 — 13.02.14 — 18:34

Взято с ИТС — http://its.1c.ru/db/metod81#content:2265:1

При обмене данными в рамках распределенной информационной базы используются штатные механизмы записи/чтения XML - ситуации, связанные с передачей некорректных данных, могут возникать только вследствие искажения сообщения обмена данными. В таком случае необходимо получить новое сообщение обмена данными от информационной базы - источника сообщения. 
Если же сообщение содержит корректные данные и ошибка возникает в процессе считывания данных из базы данных (для последующего изменения их данными из сообщения обмена), то необходимо проверить наличие прав пользователя, от имени которого производится чтения сообщения обмена. 
Также необходимо удостовериться, что в процессе чтения сообщения не возникает блокировки данных (например, чтение производится в рамках транзакции, а данные заблокированы другим пользователем), можно предпринять попытку чтения сообщения в монопольном режиме доступа к информационной базе.  
Если вышеперечисленные способы не привели к устранению ошибки, то необходимо проверить целостность данных информационной базы

Реально, хз че делать :( Вроде база целая… проблем нет..

   Ayvengo

14 — 13.02.14 — 18:40

проверка с помощью chdbfl.exe — ошибок не обнаружено =

   Serginio1

15 — 13.02.14 — 18:46

Пробовал загружать через СериализаторXDTO, ФабрикаXDTO ?

   Serginio1

16 — 13.02.14 — 18:49

   Ayvengo

17 — 13.02.14 — 18:53

(15) Надо будет попробовать. Пока не делал.

   Serginio1

18 — 13.02.14 — 18:55

С фабрикой

ОбъектXDTO=ФабрикаXDTO.ПрочитатьXML(ЧтениеXML,ФабрикаXDTO.Тип(ЧтениеXML.URIПространстваИмен,ЧтениеXML.Имя));

   Serginio1

19 — 13.02.14 — 19:03

Можно для определения типа использовать ПолучитьXMLТип

   Ayvengo

20 — 13.02.14 — 19:36

Случайно нашел ошибку, ппц.. оказывается в базе приемнике для договоров установлен владелец с значением реквизита ЭтоГруппа = Истина. Ппц.. классные обмен с БП…

   Ayvengo

21 — 13.02.14 — 19:47

Кстати, помогло в отладке именно обработка выгрузки и загрузки данных хмл. Ох! Осталось теперь по другим метаданным пройтись, не только по контрагентам.. ..

   Ayvengo

22 — 14.02.14 — 13:24

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

Интересно, такое часто случается с РИБ, что бы в разных базах были одинаковые УИ для справочника, документ???

   Serginio1

23 — 14.02.14 — 13:34

(22) Скорее всего проблема может быть когда базы находятся на одном компютере, так как для них UUID вычисляется не совсем правильно

v8: Справочники. Обмен данными. Атрибут Ref.

   Ayvengo

24 — 14.02.14 — 13:41

(23) да нет, базы у меня взяты как раз с разных компов.

   Serginio1

25 — 14.02.14 — 13:53

(22) Тогда остается только два , что изменено  программно, либо при обмене произошел сбой и в контрагенте прописалось ЭтоГруппа = Истина

   Ayvengo

26 — 14.02.14 — 13:55

Нет, полная схема работы такая:

1. Есть Головная база

2. Есть РИБ1

3. Есть РИБ2

4. В базе РИБ1 есть справочник контрагентов и в этом справочнике есть ЭЛЕМЕНТ с каким-то Уникальным идентификатором.

5. В базе РИБ2 есть справочник контрагентов и в этом справочнике есть ГРУППА с таким же Уникальным идентификатором.

Нормальна ли такая ситуация?

Получаем данные из РИБ2 в головную.

Получаем данные из РИБ1 в головную.

Что происходит — у контрагентов в группе из РИБ2 установится родитель = ЭЛЕМЕНУ! из РИБ1.

Таким образом получается, что обмен посредством РИБ может привести к полной «*опе», т.к. после обмена с РИБ1, выгрузить данные в РИБ2 из головной не получится —

Ошибка при вызове метода контекста (ПрочитатьИзменения): Ошибка данных XML

РИБ1, РИБ2 и Головная ИБ находятся на разных компьютерах.

  

Serginio1

27 — 14.02.14 — 14:10

(26) То есть владельцем этого элемента является РИБ1 данные мигрировали в РИБ2 и там на этого контрагента навесили дочерние элементы.

Затем в РИБ1 изменили с группы на элемент?

Типовое сообщение об ошибке:

// Выводит сообщение об ошибке и выставляет параметр Отказ в «Истина».

// В случае работы на клиенте или на сервере выводит в окно сообщений,

// в случае внешнего соединения вызывает исключение.

//

// Параметры:

//  ТекстСообщения — строка, текст сообщения.

//  Отказ          — булево, признак отказа (необязательный).

//    Заголовок — Строка — Текст заголовка

//          (выводится пользователю в режиме обычного приложения;

//           в заголовке должен быть описан контекст выполняемых действий, например «Проведение документа №… от …»)

//    Статус — СтатусСообщения — Статус сообщения

//    РасшифровкаСообщения — Массив — Массив с данными расшифровки

//                         — Ссылка — Ссылка на объект

//

Процедура СообщитьОбОшибке(

   Знач ТекстСообщения,

   Отказ = Ложь,

   Заголовок = «»,

   Статус = Неопределено,

   РасшифровкаСообщения = Неопределено

   ) Экспорт

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

       Статус = СтатусСообщения.Важное;

   КонецЕсли;

   
   ТекстСообщения = СформироватьТекстСообщения(ТекстСообщения);

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

   
   #Если ВнешнееСоединение Тогда

       //Для клиента и сервера запись в журнал регистрации попадет внутри процедуры Сообщение

       ДублироватьСообщениеВЖурналРегистрации(ТекстСообщения, Статус, Заголовок);

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

           ТекстСообщения = Заголовок + Символы.ПС + ТекстСообщения;

           Заголовок = «»;

       КонецЕсли;

       
       ВызватьИсключение (ТекстСообщения);

       
   #Иначе

       
       Сообщение(ТекстСообщения, Статус, Заголовок, РасшифровкаСообщения, Неопределено, Истина, Истина);

       
   #КонецЕсли

   
КонецПроцедуры // СообщитьОбОшибке()

  1. Настроена интеграция 1С с интернет-магазином на битриксе, при выгрузке заказов 1С выдала такую ошибку:

    {ОбщийМодуль.ПроцедурыОбменаССайтом.Модуль(1167)}: Ошибка при вызове метода контекста (Выполнить)
    ТаблицаДокументов = Запрос.Выполнить().Выгрузить();
    по причине:
    Ошибка выполнения запроса
    по причине:
    В данной транзакции уже происходили ошибки!

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


  2. nbIpKuH_BaH9I

    Offline

    nbIpKuH_BaH9I
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    8.157
    Симпатии:
    553
    Баллы:
    204

    Код модуля дайте чтоли хотя бы?

  3. К сожалению не могу скинуть, я специалист по битриксу, а в 1С не разбираюсь, сам 1Сник теперь не работает с нами и не доступен, вот я и ищу проблему — внедряли НДС до этой ошибки и вероятно она что-то ломает


  4. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

    AlenaAS так в итоге обмен заказами работает или нет?

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

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


  6. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

    База данных 1С — файловый вариант, или клиент-серверный? Загрузка-выгрузка заказов в 1С настроена на автоматическое выполнение, или же менеджеры в ручную запускают обмен с сайтом?

  7. 1. База данных 1С — клиент-серверный вариант
    2. менеджеры в ручную запускают обмен с сайтом, автоматическая в отличие от ручной не работает, т.к . сервер 1С на линуксе и ждет кодировку utf-8, а вот сайт к сожалению в кодировке windows1251
    — как мне стало известно, техпо 1С не осуществляет поддержку 1С на линуксе и данная проблема автоматической выгрузки не будет решаться со стороны 1С


  8. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

    С учетом ответа на 1) вероятность того что напишу ниже, конечно небольшая, но все же: ошибка может быть связана с параллельным проведением документов. Т.е. в момент когда запускают обмен с сайтом, кто-то что-то делает с заказами. Т.е. нужно запускать обмен с сайтом в момент, когда в 1С активность пользователей небольшая + документы ЗаказПокупателя пока не завершится обмен не трогать. Больше ничего сказать не могу. Как писал выше — только на месте разбираться, причем поскольку ошибка плавающая, еще не известно сколько времени займет, чтобы воспроизвести ее, для понимания что не так.

    P.S.
    Непосредственно к главному вопросу отношения не имеет, но к вопросу автоматического обмена: неужели у битрикса проблемы с пониманием utf8?

  9. Спасибо, это уже похоже на истину, проверю, надеюсь поможет.

    >P.S.
    >Непосредственно к главному вопросу отношения не имеет, но к вопросу автоматического обмена: неужели у битрикса проблемы с пониманием utf8?

    нет, проблемы с пониманием utf8 не у битрикса (сейчас вообще новый модуль реал-тайм обмена с 1С вышел — который и решит проблему), просто сервера линукса ждут утф-8 в любом случае и при запуске автоматически сервер отдает 1Ске файл в другой кодировке (на сайте вин1251), хотя на сервере под виндой такой проблемы не наблюдается.
    Поэтому для автоматического обмена мне надо еще конвертировать файл в нужную кодировку, а потом отправлять ее в 1С, но это не страшно и уже другая история)

    Последнее редактирование: 27 авг 2014

  10. nickpugachev

    Offline

    nickpugachev
    Профессионал в 1С
    Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.397
    Симпатии:
    156
    Баллы:
    104

    Тут не небольшая вероятность, а наибольшая :)
    регистрация изменений при проведении документа в планах обмена блокирует таблицы изменений и обмен вешается на блокировках. причем иногда это даже к deadlock’ам приводит.


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

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