ОБСУЖДЕНИЕ

Изменение реквизита Справочника через Документ

6 ответов 6,2 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
Есть заполненный справочник Обучение в котором реквизиты ФИО и возраст например. Есть документ, в котором есть реквизиты ФИО и возраст. Тип ФИО и в справочнике и в документе Справочник.Люди. Надо с помощью документа изменить возраст в нужной записи в справочнике Обучение. Вот такой пример не срабатывает(см ниже). Вопрос, почему не срабатывает метод НайтиЭлемент, он равен 0, хотя в справочнике Обучение есть строка с таким ФИО?
Код:
Спрл=СоздатьОбъект("Справочник.Обучение");
Если ФИО .Выбран()=1 Тогда 
Спрл.НайтиЭлемент(ФИО); //вот здесь =0
Спрл.Возраст=Возраст; //здесь пишет что не выбран элемент
Спрл.Записать();
КонецЕсли;
 
Похоже, надо так :
Если Спрл.НайтиПоРеквизиту("ФИО",ФИО) = 1 Тогда
Спрл.Возраст=Возраст;
Спрл.Записать();
КонецЕсли
 
А если то же самое, только в версии 8.1. Просто синтаксис другой и я не знаком с предыдущими версиями.
 
;)
 
Просто нигде не написано как обращаться к определенной записи в справочнике из документа. Запись типа:
Спрл.Возраст=Возраст; вообще не поддерживается. Или может я где-то торможу.
А книг я перешерстил много. Очень много и просто так вопрос не задавал бы. Или дайте хоть название книги, где это можно прочесть.
 
Эх... могу наврать по памяти:
Спрл = Справочники.МойСправочник.НайтиПоРеквизиту("ФиО",Фио);
Если ЗначениеЗаполнено(Спрл) Тогда
Об = Спрл.ПолучитьОбъект();
Об.Возраст=Возраст;
Об.Записать();
КонецЕсли

Читать "Практичское пособие","Простые примеры", Синтаксис- помощник)
 
Спрл = Справочники.МойСправочник.НайтиПоРеквизиту("ФиО",Фио);
Если ЗначениеЗаполнено(Спрл) Тогда
Об = Спрл.ПолучитьОбъект();
Об.Возраст=Возраст;
Об.Записать();
КонецЕсли

В "НайтиПоРеквизиту" используйте третий параметр "Истина" т.е.
Код:
Спрл = Справочники.МойСправочник.НайтиПоРеквизиту("ФиО",Фио, Истина);

Будет искать полное соответствие реквизита и "ФИО"