Имя: Пароль:
1C
1С v8
Значение не является значением объектного типа
0 _BeasT_
 
02.03.15
10:26
Здравствуйте!
Помогите пожалуйста решить задачу. Я делаю проверку поля на уникальность.
Выдается  следующая ошибка:
{Справочник.MyПереченьИзделий.Форма.ФормаЭлемента.Форма(40)}: Значение не является значением объектного типа (Наименование)
           Сообщить(ИскомоеНаименование.Наименование+" в папке: "+Результат.Группа);

При это м процедура проверни проходит верно и выдается сообщение что такое устройство уже есть.

Вот код:
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
СуществуетЭлементСТакимНаименованием(Объект.Наименование);    
КонецПроцедуры

Функция СуществуетЭлементСТакимНаименованием(ИскомоеНаименование) Экспорт
   Запрос = Новый Запрос;
   Запрос.Текст =
     "ВЫБРАТЬ
      |   MyПереченьИзделий.Наименование КАК Группа
      |ИЗ
      |   Справочник.MyПереченьИзделий КАК  MyПереченьИзделий
      |ГДЕ
      |    MyПереченьИзделий.Наименование = &Наименование";
   Запрос.УстановитьПараметр("Наименование", ИскомоеНаименование);
        
   Результат = Запрос.Выполнить().Выбрать();
        Если НЕ результат.Количество() = 0 тогда
            Сообщить("Номенклатура с таким именем уже существует:");
           Пока результат.Следующий() цикл
              Сообщить(ИскомоеНаименование.Наименование+" в папке: "+Результат.Группа);
           КонецЦикла;
            Отказ = истина;
        КонецЕсли;        
    Возврат (Отказ);
КонецФункции // ЭлементаСТакимНаименованиемНеСуществует()
1 zak555
 
02.03.15
10:28
ИскомоеНаименование.Наименование

заменить на

ИскомоеНаименование
2 Wobland
 
02.03.15
10:28
Объект.Наименование.Наименование?
3 salvator
 
02.03.15
10:29
Рукалицо...
Ты хоть головой подумай. Передаешь в функцию ИскомоеНаименование (строку) и пытаешься еще у нее получить св-во Наименование.
4 salvator
 
02.03.15
10:29
А, кстати, НайтиПоНаименованию уже не модно?
5 Web00001
 
02.03.15
10:31
(4)Отладчик судя по всему вышел из моды, если тупые опечатки (глаз замылился) нет возможности продиагностировать.
6 _BeasT_
 
02.03.15
10:33
Ребят я не программист 1С. Просто поставили задачу сделать для 1С маленькую вещь своими руками.Вот я и стараюсь..

(3) Если я убираю наименование то он добавляет изделие с таким же наименованием без вопросов.
7 Wobland
 
02.03.15
10:35
(4) если нужны все группы, где оно есть, то не модно
8 Fish
 
02.03.15
10:36
(6) "я не программист 1С. Просто поставили задачу сделать для 1С маленькую вещь своими руками" - Взаимоисключающие предложения.
9 salvator
 
02.03.15
10:36
(6) В синтакс-помощнике почитай про метод НайтиПоНаименованию.
10 salvator
 
02.03.15
10:37
(7) А он группу-то и не выбирает в своем запросе.
11 Web00001
 
02.03.15
10:39
(6) а что не должен? Судя по коду элемент запишется вне зависимости от того, что произойдет в "СуществуетЭлементСТакимНаименованием"
12 Wobland
 
02.03.15
10:40
(10) ему очень хочется ;)
13 Web00001
 
02.03.15
10:42
(11)
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Отказ = СуществуетЭлементСТакимНаименованием(Объект.Наименование);    
КонецПроцедуры
и переменную "Отказ" тоже хорошо бы инициализировать. А то она у тебя инициализируется только в случае если элемент существует.
14 _BeasT_
 
02.03.15
11:18
Спасибо большое!
15 D_E_S_131
 
02.03.15
11:34
"Допили" что бы было "прилично"

Результат = Запрос.Выполнить();

Возврат НЕ Результат.Пустой();
16 D_E_S_131
 
02.03.15
11:34
Вместо всего, что под УстановитьПараметр
17 D_E_S_131
 
02.03.15
11:35
И в запросе "ВЫБРАТЬ ПЕРВЫЕ 1" вместо "ВЫБРАТЬ"
18 _BeasT_
 
02.03.15
12:07
(15-17) Спасибо большое.. Сейчас "Допилю". А так всё работает :)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший