ЭлементСправочника.Записать()

Тема в разделе "1C и всё что с ней связано", создана пользователем ich13, 13 авг 2010.

Статус темы:
Закрыта.
  1. ich13

    ich13 Гость

    После обновления базы при записи программно создаваего элемента справочника стала возникать "ошибка при выполнении обработчика Справочник.Номенклатура значение не является значением объектного типа (ссылка)". Проверил типы, параметры реквизитов справочника и значения которые им присваеваются - все как до обновления, но возникает ошибка. Подскажите пожалуйста что еще может быть? всю голову сломал. Заренее большое спасибо!

    СпрНомТек = Справочники.Номенклатура.СоздатьЭлемент();
    СпрНомТек.Код = Код;
    СпрНомТек.Наименование = Наименование;
    СпрНомТек.НаименованиеПолное = Наименование;
    СпрНомТек.Артикул = Код;
    СпрНомТек.ВидНоменклатуры = буЗаполнитьВидНоменклатуры( ТипДокумента, ТипНовогоДокумента );
    СпрНомТек.БазоваяЕдиницаИзмерения = ЗаполнитьЕдИзмИзКласс();
    СпрНомТек.Записать();
     
  2. Гость

    ich13
    а можно привести именно ту часть кода, в которой ошибка?
    Обработчика "Справочник.Номенклатура" в предоставленном коде нет :)
     
  3. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Это значит, что какая-то процедура использует ссылочное значение вновь создаваемого элемента, которого нет пока новый элемент не записан. Так как у Вас функции всего две -
    СпрНомТек.ВидНоменклатуры = буЗаполнитьВидНоменклатуры( ТипДокумента, ТипНовогоДокумента );
    СпрНомТек.БазоваяЕдиницаИзмерения = ЗаполнитьЕдИзмИзКласс();

    То скорее всего это одна из них (наиболее вероятна вторая). Попробуте СпрНомТек.Записать(); дополнительно поставить перед этими функциями. Либо ошибка вообще в другой строчке.
     
  4. ich13

    ich13 Гость

    Найлло

    Ошибки нет. Название менеджера справочника(или как-то так) СправочникМенеджер.ХХХ, а во встроенном языке Справочники.ХХХ.
     
  5. Гость

    :)
     
  6. ich13

    ich13 Гость

    puh14
    Поставить записать() после СпрНомТек.ВидНоменклатуры и СпрНомТек.БазоваяЕдиницаИзмерения я в отчаянной попытке найти ошибку уже пробывал, на что система резонно пишет что перед записью элемента данные реквизиты необходимо заполнить.
    И значения и тип данных которые возвращают функции точно такие же как в работающей базе до обновления,а обращения к ссылке тоже нет.



    на всякий случай:

    Функция буЗаполнитьВидНоменклатуры( ТипДокумента, ТипНовогоДокумента )
    Перем СпрЕдИзм, СпрЕдИзмШт;
    //----------------------------------------
    Если ( ТипДокумента = "Реализация" ) ИЛИ ( ТипДокумента = "ПоступлениеТМЦ" ) Тогда
    ВидНомНаименование = "Товар";
    ИначеЕсли ( ТипДокумента = "УслугиДоставки" ) Тогда
    ВидНомНаименование = "Услуга";
    КонецЕсли;
    СпрВидыНом = Справочники.ВидыНоменклатуры;
    СпрВидыНомТек = СпрВидыНом.НайтиПоНаименованию( ВидНомНаименование );
    Если ( СпрВидыНомТек.Пустая() ) Тогда
    ВызватьИсключение( "В справочние ВидыНоменклатуры не найден элемент с наименованием `" + ВидНомНаименование + "`" );
    КонецЕсли;

    Возврат СпрВидыНомТек;
    КонецФункции


    Функция ЗаполнитьЕдИзмИзКласс()
    Перем СпрЕдИзм, СпрЕдИзмШт;
    //----------------------------------------
    СпрКлЕдИзм = Справочники.КлассификаторЕдиницИзмерения;
    СпрКлЕдИзмШт = СпрКлЕдИзм.НайтиПоНаименованию( "шт" );
    Если ( СпрКлЕдИзмШт.Пустая() ) Тогда
    ВызватьИсключение( "В справочние КлассификаторЕдиницИзмеренич не найден элемент с наименованием `шт`" );
    КонецЕсли;

    Возврат СпрКлЕдИзмШт;
    КонецФункции
     
  7. Гость

    ich13
    напиши текст именно той процедуры, в которой происходит ошибка "значение не является значением объектного типа (ссылка)"

    А вообще поиск по наименованию это мове тон ИМХО.
     
  8. ich13

    ich13 Гость

    Найлло,
    ошибка возникает на строке СпрНомТек.Записать() (см. мое первое сообщение );

    Причем сравнив в отадчике свойства СпрНомТек в не обновленной и обновленной базах я вижу одно и тоже. Дважды проверял.
     
  9. ich13

    ich13 Гость

    Полный тескт ошибки:
    ОбщийМодуль.ХХХ: Ошибка при вызове метода контекста(Записать): Ошибка при выполнении обработчика -'Справочник.Номенклатура(114): Значение не является значением объектного типа (ССылка)'
     
  10. Гость

    ich13
    Процедуры "ПередЗаписью" и "ПриЗаписи" номенклатуры смотрел? Там есть то самое обращение к "ссылка"?
     
  11. ich13

    ich13 Гость

    Большое спасибо брашишка! в "ПередЗаписью" было дело. Спасибо еще раз! удачных выходных
     
  12. Гость

    ich13
    Пожалуйста :)
     
Статус темы:
Закрыта.

Поделиться этой страницей