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

Изменение данных в справочнике используя запрос в базу данных

Автор Anachronizm, 04 апр 2021, 19:43

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

Anachronizm

Необходимо изменить значение реквизита Наименование в справочнике Сотрудники где ставка сотрудника "1" (Одна).

Пытаюсь использовать такой запрос с параметром:

&НаСервере
//Изменяет ФИО сотрудника у которого есть определённая ставка
//ПараметрЗапроса - параметр для хранения нового ФИО сотрудника
Процедура ЗапросСПараметромНаСервере(ПараметрЗапроса)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Сотрудники.Наименование КАК Наименование
|ИЗ Справочник.Сотрудники КАК Сотрудники
|ГДЕ Сотрудники.Ставка = ЗНАЧЕНИЕ(Перечисление.Ставка.Одна)
|;
|ИЗМЕНИТЬ Сотрудники.Наименование УСТАНОВИТЬ Наименование = &ФИО";
Запрос.УстановитьПараметр("ФИО", ПараметрЗапроса);
РезультатЗапроса = Запрос.Выполнить();
КонецПроцедуры


При попытке выполнить запрос платформа пишет, что ожидается выражение ВЫБРАТЬ хотя оно есть в запросе. В чём может быть проблема?

Ивашка

Цитата: Anachronizm от 04 апр 2021, 19:43
Необходимо изменить значение реквизита Наименование в справочнике Сотрудники где ставка сотрудника "1" (Одна).

Пытаюсь использовать такой запрос с параметром:

&НаСервере
//Изменяет ФИО сотрудника у которого есть определённая ставка
//ПараметрЗапроса - параметр для хранения нового ФИО сотрудника
Процедура ЗапросСПараметромНаСервере(ПараметрЗапроса)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Сотрудники.Наименование КАК Наименование
|ИЗ Справочник.Сотрудники КАК Сотрудники
|ГДЕ Сотрудники.Ставка = ЗНАЧЕНИЕ(Перечисление.Ставка.Одна)
|;
|ИЗМЕНИТЬ Сотрудники.Наименование УСТАНОВИТЬ Наименование = &ФИО";
Запрос.УстановитьПараметр("ФИО", ПараметрЗапроса);
РезультатЗапроса = Запрос.Выполнить();
КонецПроцедуры


При попытке выполнить запрос платформа пишет, что ожидается выражение ВЫБРАТЬ хотя оно есть в запросе. В чём может быть проблема?
в запросе нельзя изменять реквизиты, для изменения необходимо применить объектную модель, сначала от ссылки получаете объект методом ПолучитьОбъект(), далее изменяете реквизит, и и записываете его методом Записать()

Anachronizm

Цитата: Ивашка от 04 апр 2021, 21:29
Цитата: Anachronizm от 04 апр 2021, 19:43
Необходимо изменить значение реквизита Наименование в справочнике Сотрудники где ставка сотрудника "1" (Одна).

Пытаюсь использовать такой запрос с параметром:

&НаСервере
//Изменяет ФИО сотрудника у которого есть определённая ставка
//ПараметрЗапроса - параметр для хранения нового ФИО сотрудника
Процедура ЗапросСПараметромНаСервере(ПараметрЗапроса)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Сотрудники.Наименование КАК Наименование
|ИЗ Справочник.Сотрудники КАК Сотрудники
|ГДЕ Сотрудники.Ставка = ЗНАЧЕНИЕ(Перечисление.Ставка.Одна)
|;
|ИЗМЕНИТЬ Сотрудники.Наименование УСТАНОВИТЬ Наименование = &ФИО";
Запрос.УстановитьПараметр("ФИО", ПараметрЗапроса);
РезультатЗапроса = Запрос.Выполнить();
КонецПроцедуры


При попытке выполнить запрос платформа пишет, что ожидается выражение ВЫБРАТЬ хотя оно есть в запросе. В чём может быть проблема?
в запросе нельзя изменять реквизиты, для изменения необходимо применить объектную модель, сначала от ссылки получаете объект методом ПолучитьОбъект(), далее изменяете реквизит, и и записываете его методом Записать()

То есть именно так и ни как иначе? Зачем тогда запрос? Если просто нужно изменить одно значение в таблице грубо говоря? А ссылку на объект получать из результата запроса "ВЫБРАТЬ"?

Ивашка

Запрос он только читает данные, из БД
Можно обойтись и без запроса, но как говорят, запрос эффективнее!, Здесь на ваше усмотрение

Добавлено: 04 апр 2021, 23:30


Цитата: Anachronizm от 04 апр 2021, 23:19А ссылку на объект получать из результата запроса "ВЫБРАТЬ"?
РезультатЗапроса = Запрос.Выполнить().Выбрать();
Пока РезультатЗапроса.Следующий() Цикл
СпрОбъект = РезультатЗапроса.Ссылка.ПолучитьОбъект();
-----------------
КонецЦикла

примерно так

Anachronizm

Цитата: Ивашка от 04 апр 2021, 23:25
Запрос он только читает данные, из БД
Можно обойтись и без запроса, но как говорят, запрос эффективнее!, Здесь на ваше усмотрение

Добавлено: 04 апр 2021, 23:30


Цитата: Anachronizm от 04 апр 2021, 23:19А ссылку на объект получать из результата запроса "ВЫБРАТЬ"?
РезультатЗапроса = Запрос.Выполнить().Выбрать();
Пока РезультатЗапроса.Следующий() Цикл
СпрОбъект = РезультатЗапроса.Ссылка.ПолучитьОбъект();
-----------------
КонецЦикла

примерно так

Спасибо попробую так.

Теги:

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

Рейтинг@Mail.ru

Поиск