Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 08:46

Программное заполнение реквизита справочника реквизитом из другого справочника

Автор OlegMorozov, 21 фев 2022, 14:36

0 Пользователей и 1 гость просматривают эту тему.

OlegMorozov

Добрый день/вечер!

Есть два справочника Статьи и Рецензенты, в каждом из них есть реквизит "Специализация"
Нужно сделать так, чтобы в справочнике Статьи в зависимости от выбранной специализации, при записи, автоматически заполнялось поле "Рецензент".
Помогите пожалуйста, все перепробовал ничего не работает!

LexaK

OlegMorozov, встречный вопрос:
по какой-то Специализации можно найти 100 Рецензентов, какого из них надо вставить в элемент справочника Статьи ?
если помогло нажмите: Спасибо!

OlegMorozov

LexaK ну допустим если специализации не пересекаются
а там уже в будущем в зависимости от нагрузки можно сделать выборку
мне просто хотя бы на реализацию данного модуля посмотреть и понять что я делаю не так

LexaK

OlegMorozov,
Цитироватьи понять что я делаю не так
так выкладывайте что вы делаете (сделали) не так, посмотрим, подскажем!
если помогло нажмите: Спасибо!

OlegMorozov

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

Ну как-то так
Ошибок не вылезает
Но и не работает при записи

LexaK

OlegMorozov, попробуйте такую процедуру
только непременно найдите это событие формы и назначьте обработчик (эту процедуру)

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
//Вставить содержимое обработчика
лкРецензент = Справочники.Рецензенты.НайтиПоРеквизиту("Специализация", Объкт.Специализация);
Если Не ЗначениеЗаполнено(лкРецензент) Тогда
Сообщить("По специализации: " + Объкт.Специализация + " - Рецензентов нет!")
КонецЕсли;
Объект.Рецензент = лкРецензент;

КонецПроцедуры
если помогло нажмите: Спасибо!

OlegMorozov


LexaK

OlegMorozov, включайте отладчик (заодно и его освоите) ставьте точку остановки в процедуре и проходите по шагам.
еще раз все перепроверьте! соответствию типов уделите особенное внимание! (на начальном этапе освоения 1С это самая распространенная ошибка)
если помогло нажмите: Спасибо!

Теги:

Похожие темы (2)

Рейтинг@Mail.ru

Поиск