• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы lira89
  • Дата начала
L

lira89

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

vbs

Похоже, надо так :
Если Спрл.НайтиПоРеквизиту("ФИО",ФИО) = 1 Тогда
Спрл.Возраст=Возраст;
Спрл.Записать();
КонецЕсли
 
S

strenuus

А если то же самое, только в версии 8.1. Просто синтаксис другой и я не знаком с предыдущими версиями.
 
S

strenuus

Просто нигде не написано как обращаться к определенной записи в справочнике из документа. Запись типа:
Спрл.Возраст=Возраст; вообще не поддерживается. Или может я где-то торможу.
А книг я перешерстил много. Очень много и просто так вопрос не задавал бы. Или дайте хоть название книги, где это можно прочесть.
 
U

unknown181538

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

Читать "Практичское пособие","Простые примеры", Синтаксис- помощник)
 
D

Darlock

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

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

Будет искать полное соответствие реквизита и "ФИО"
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!