|
Ошибка при записи элемента справочника в СОМ соединении | ☑ | ||
---|---|---|---|---|
0
Альбатрос
27.10.16
✎
12:24
|
Соединение по СОМ, платформа 8.3.8.2167. Есть вот такой код:
Функция СоздатьНоменклатуруВРознице(СтрокаТЗ) НоваяНоменклатура = Источник.Справочники.Номенклатура.СоздатьЭлемент(); НоваяНоменклатура.Артикул = СТрокаТЗ.АртикулУТ; НоваяНоменклатура.Наименование = СтрокаТЗ.Наименование; НоваяНоменклатура.АлкогольнаяПродукция = Истина; НоваяНоменклатура.ВидАлкогольнойПродукцииЕГАИС = Источник.Справочники.ВидыАлкогольнойПродукцииЕГАИС.НайтиПоКоду(СтрокаТЗ.АП.ВидПродукции.КодГруппы); НоваяНоменклатура.Крепость = СтрокаТЗ.АП.Крепость; НоваяНоменклатура.ОбъемДал = СтрокаТЗ.АП.Объем; НоваяНоменклатура.Родитель = Источник.Справочники.Номенклатура.НайтиПоНаименованию(СтрокаТЗ.АП.ВидПродукции.Наименование); НоваяНоменклатура.ВидНоменклатуры = Источник.Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Алкоголь"); НоваяНоменклатура.ЕдиницаИзмерения = Источник.Справочники.БазовыеЕдиницыИзмерения.НайтиПоКоду(СтрокаТЗ.КодЕИ); НоваяНоменклатура.СтавкаНДС = Источник.Перечисления.СтавкиНДС.БезНДС; НоваяНоменклатура.КодАП_ЕГАИС = СтрокаТЗ.АП.Код; Попытка НоваяНоменклатура.Записать(); Возврат НоваяНоменклатура.ССылка(); Исключение Сообщить(ОписаниеОшибки()); Возврат Ложь; КонецПопытки; КонецФункции Его выполнение приводит ошибке: Ошибка при вызове метода контекста (Записать): Произошла исключительная ситуация (1C:Enterprise 8.3.8.2167): Ошибка при выполнении обработчика - 'ПриЗаписи' Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода ЗарегистрироватьИзмененияСправочника (). Не могу понять, чего не так? Где мутабельное значение? |
|||
1
delavar
27.10.16
✎
12:27
|
Конфигурация какая?
|
|||
2
Лефмихалыч
27.10.16
✎
12:27
|
(0) во внешнем соединение, как и в неуправляемом толстом режиме, все подписки на клиенте выполняются. А на вход подписки получают ОБЪЕКТ. Очевидно, у тебя подписка выпоняется в модуле, у которого есть только галка "Сервер" и нет галки "Внешнее соединение".
|
|||
3
Рэйв
27.10.16
✎
12:27
|
Попробуй добавить еще перед записью
НоваяНоменклатура.ОбменДанными.Загрузка=Истина; |
|||
4
Beduin
27.10.16
✎
12:27
|
(0) У тебя подписка вызывается
|
|||
5
mehfk
27.10.16
✎
12:28
|
(0) А ты запусти в конфигураторе проверку конфигурации с галкой "Внешнее соединение".
|
|||
6
Лефмихалыч
27.10.16
✎
12:29
|
то есть, если конфигурация будет использоваться в толстом режиме или в режиме внешнего соединения, то все подписки должны быть расположены в модулях, которые могут быть не серверными (галка "Клиент толстый" или/и "Внешнее соединение")
|
|||
7
Лефмихалыч
27.10.16
✎
12:37
|
(5) по крайней мере в 8.3.6 ни чего не найдет эта проверка. https://i.imgur.com/NQgNozc.png
|
|||
8
Альбатрос
27.10.16
✎
12:43
|
(1) Розница 2.2
(3) Не помогает (6) Прикольно. А как мне определить, какая подписка срабатывает? Только визуально пересмотрев их в пофигураторе? |
|||
9
Лефмихалыч
27.10.16
✎
12:44
|
(8) перебрать все подписки на справочник номенклатуры, посмотреть, где лежат их процедуры
|
|||
10
Cyberhawk
27.10.16
✎
12:50
|
Проще сразу привести все флажки в ОМ к стандартам с ИТС: https://its.1c.ru/db/v8std#content:2149184118:hdoc
|
|||
11
Cyberhawk
27.10.16
✎
12:51
|
В случае автора у всех ОМ, у которых стоит только один флажок "Сервер", поставить "Внешнее соединение" и "Клиент (ОП)"
|
|||
12
Лефмихалыч
27.10.16
✎
12:54
|
(11) в этом случае есть риск утонуть нафиг в красной бороде потом...
|
|||
13
Михаил Козлов
27.10.16
✎
12:54
|
(11) Если в названии модуля нет суффикса Сервер или Клиент.
Например для ПроцедурыОбменаДанными - нужно, а для ПроцедурыОбменаДаннымиСервер - нет. Вообще странно, если в типовой флажки стоят не должным образом. |
|||
14
Cyberhawk
27.10.16
✎
13:06
|
(12) Почему? Ошибок компиляции возникать не должно, т.к. вроде для всех объектов встроенного языка доступность "Сервер, толстый клиент, внешнее соединение" всегда идет вместе...
|
|||
15
Cyberhawk
27.10.16
✎
13:08
|
(13) А при чем тут суффикс? Не понял твоего примера, где не нужно ставить галку...
|
|||
16
Альбатрос
27.10.16
✎
13:11
|
(9) Нашел модуль, поставил галку на внешнееСоединение, заработало. Возник второй вопрос, а как правильно ссылку вытащить из новосозданного объекта? вот так неправильно:
НоваяНоменклатура.Записать(); Возврат НоваяНоменклатура.ССылка(); |
|||
17
Альбатрос
27.10.16
✎
13:15
|
(16) Все, нашел, Ref вроде как
|
|||
18
Альбатрос
27.10.16
✎
13:25
|
(9) Большое спасибо за пояснения, все работает.
Всем большое спасибо! |
|||
19
Лефмихалыч
27.10.16
✎
13:26
|
(14) потому, что из этих модулей может что-то вызываться, чего на толстом клиенте, например, не существует
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |