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

Как работать с результатом запроса.

Автор aboba174, 15 мая 2023, 15:28

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

aboba174

Здравствуйте. Я хочу сделать так, чтобы при проведении документа "ТрудоустройствоРаботника", данные в реквизитах и табличной части записывались в справочник "Сотрудники".

Написал вручную запрос, а дальше не знаю как работать с ним, не подскажите?



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

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТрудоустройствоРаботникаОбразовательноеУчреждение.Учреждение КАК Учреждение,
| ТрудоустройствоРаботникаОбразовательноеУчреждение.НачалоОбучения КАК НачалоОбучения,
| ТрудоустройствоРаботникаОбразовательноеУчреждение.КонецОбучения КАК КонецОбучения
|ИЗ
| Документ.ТрудоустройствоРаботника.ОбразовательноеУчреждение КАК ТрудоустройствоРаботникаОбразовательноеУчреждение";


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

Пока Выборка.Следующий() Цикл

КонецЦикла;
КонецПроцедуры

Yury_B

Добрый день.
Данные в документе не берутся по ссылке из справочника "Сотрудники"?

aboba174


Yury_B

Если поля документа будут ссылаться на справочник, то он будет заполняться. А в документе будет ссылка на справочник.

Kvark5d

aboba174, объясните подробнее зачем нужен этот документ? правильно ли я понимаю: при проведении документа должен создаваться новый сотрудник? Но тогда зачем здесь запрос, ведь все необходимые данные есть в ТекущийОбъект.

aboba174

Kvark5d,
Да, при проведении документа должен создаваться сотрудник и помещаться в справочник "Сотрудники."
Я что то не понимаю как обратиться то к табличной части справочника, чтобы ему передать заполненные данные
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
СозданиеСтр = Справочники.Сотрудники.СоздатьЭлемент();

СозданиеСтр.Наименование = Объект.Фамилия;
СозданиеСтр.Имя = Объект.Имя;
СозданиеСтр.Отчество = Объект.Отчество;
СозданиеСтр.Пол = Объект.Пол;
СозданиеСтр.Должность = Объект.Должность;
СозданиеСтр.Телефон = Объект.Телефон;

СозданиеСтр.ОбразовательноеУчреждение.Учреждение = ТекущийОбъект.ОбразовательноеУчреждение.Учреждение;
КонецПроцедуры

Kvark5d

aboba174, для начала обязательно добавить в документ реквизит сотрудник (справочник Сотрудники). Это необходимо для того, чтобы при перезаписи не создавать каждый раз нового сотрудника.

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

далее заполним созданным выше новым сотрудником реквизит в нашем документе.
ТекущийОбъект.Сотрудник = НовыйСотрудник;

Afinogen

aboba174, а если вы проведете документ а затем снимите его с проведения или пометите на удаление,  что будет с созданным элементом справочника? вы же так можете наплодить вагон и телегу элементов справочника

aboba174

Afinogen, Я думаю можно сделать проверку, если он будет удален, то и удалить справочник или такое нельзя реализовать?

Afinogen


Теги:

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

Рейтинг@Mail.ru

Поиск