Имя: Пароль:
1C
1С v8
Ошибка при записи элемента справочника в СОМ соединении
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) потому, что из этих модулей может что-то вызываться, чего на толстом клиенте, например, не существует