Здравствуйте, выходит ошибка когда доходит до Нов.Записать(); помогите разобраться.

{Справочник.Номенклатура.Форма.ФормаВыбора.Форма(307)}: Ошибка при вызове метода контекста (СозданиеСпр)
  СозданиеСпр(Нов, Внкод, Вннам, Внобз, Внедн, Группа);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Текст: ec86ebe3-0f1e-11e8-ba36-b870f4dcd721

вот код

```1c
    &НаСервере
    Процедура СозданиеСпр(Нов, Внкод, Вннам, Внобз, Внедн, Группа)
    Справочник = Справочник1();
    Если Нов = Справочник.ПустаяСсылка() Тогда
    Нов = Справочник.СоздатьЭлемент();
    //Нов.Код = Внкод;
    Нов.Артикул = Внкод;
    Нов.Наименование = Вннам;
    Нов.НаименованиеПолное = Вннам + " " + Внобз;
    Нов.Родитель = Группа;
    ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Материалы");
    Нов.ВидНоменклатуры = ВидНоменклатуры;

    //Едхр=Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("кг");

    СправочникЕдИзм = СправочникЕдИзм();
    Едхр=СправочникЕдИзм.НайтиПоНаименованию("кг");
    Если Найти(Внедн,"шт")>0 Тогда
    //Едхр=Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт");
    Едхр=СправочникЕдИзм.НайтиПоНаименованию("шт");
    КонецЕсли;
    Если Внедн="м" Тогда
    //Едхр=Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("м");
    Едхр=СправочникЕдИзм.НайтиПоНаименованию("м");
    КонецЕсли;
    Если Внедн="м2" Тогда
    //Едхр=Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("м2");
    Едхр=СправочникЕдИзм.НайтиПоНаименованию("м2");
    КонецЕсли;
    Если Внедн="м3" Тогда
    //Едхр=Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("м3");
    Едхр=СправочникЕдИзм.НайтиПоНаименованию("м3");
    КонецЕсли;
    Если Внедн="л" Тогда
    //Едхр=Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("л");
    Едхр=СправочникЕдИзм.НайтиПоНаименованию("л");
    КонецЕсли;
    Нов.ЕдиницаИзмерения = Едхр;
    Нов.Записать();
    Иначе
    Сообщить("!!!!!!! Код "+Внкод+" уже есть у "+Нов.Наименование);
    КонецЕсли;

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

    &НаКлиенте
    Процедура Команда1(Команда)
    //Команда1НаСервере();
    Группа = НайтиГруппу();
    //Если Группа = Справочник.ПустаяСсылка() Тогда
    // Сообщить("Группы Классификатор еще нет!");
    // Возврат;
    //КонецЕсли;

    ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогВыбораФайла.Заголовок = "Выбор файла-классификатора для загрузки";
    ДиалогВыбораФайла.МножественныйВыбор = Ложь;
    ДиалогВыбораФайла.Фильтр = "Файл протокола(Классификатор.xls)|Классификатор.xls";

    Если ДиалогВыбораФайла.Выбрать() Тогда
    Файл=ДиалогВыбораФайла.ПолноеИмяФайла;
    Иначе
    Возврат;
    КонецЕсли;

    Состояние("Выполняется загрузка...");

    Попытка
    Екс= НОвый COMОбъект("Excel.Application") ;
    Исключение
    Предупреждение("Неудалось создание Excel объекта.");
    Возврат;
    КонецПопытки;
    НашФайл = Екс.Workbooks.Open(Файл); //Открываем файл

    стр = 2;
    Внкод = НашФайл.Sheets(1).Cells(стр,1).Value;
    Вннам = НашФайл.Sheets(1).Cells(стр,2).Value;
    Внобз = НашФайл.Sheets(1).Cells(стр,3).Value;
    Внедн = НашФайл.Sheets(1).Cells(стр,4).Value;

    Пока НЕ Пустаястрока(Внкод) Цикл

    Сообщить("Код " + Внкод + " " + Вннам);
    Нов = Справочник(Внкод);

    СозданиеСпр(Нов, Внкод, Вннам, Внобз, Внедн, Группа);

    стр = стр + 1;

    Внкод = НашФайл.Sheets(1).Cells(стр,1).Value;
    Вннам = НашФайл.Sheets(1).Cells(стр,2).Value;
    Внобз = НашФайл.Sheets(1).Cells(стр,3).Value;
    Внедн = НашФайл.Sheets(1).Cells(стр,4).Value;

    КонецЦикла;
    НашФайл.Close();

    КонецПроцедуры
    // Конец СтандартныеПодсистем
```
---
Все логично - в параметр Нов процедуры присваивается объект. После завершения процедуры он возвращается на клиент, а передача объекта справочника с сервера на клиент не возможна.
Если значение Нов на клиенте не нужна, можно добавить Знач перед параметром Нов. В этом случае возврата объекта на клиент не будет.
Выглядеть это будет так:
Процедура СозданиеСпр(Знач Нов, Внкод, Вннам, Внобз, Внедн, Группа)
А ещё лучше переписать код так, что бы изменения значений параметров внутри процедуры не было.
---
Какой тип у переменной Нов?
---
Приведите листинг функции Справочник(Внкод)
---
на клиенте нужно записывать
---
Стесняюсь спросить, что на клиенте записывать?
---
Все логично - в параметр Нов процедуры присваивается объект. После завершения процедуры он возвращается на клиент, а передача объекта справочника с сервера на клиент не возможна.
Если значение Нов на клиенте не нужна, можно добавить Знач перед параметром Нов. В этом случае возврата объекта на клиент не будет.
Выглядеть это будет так:
Процедура СозданиеСпр(Знач Нов, Внкод, Вннам, Внобз, Внедн, Группа)
А ещё лучше переписать код так, что бы изменения значений параметров внутри процедуры не было.
---
Спасибо, получилось