Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
23 Апр 2021, 17:42
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Изменение данных в справочнике используя запрос в базу данных  (Прочитано 195 раз)

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

Оффлайн Anachronizm

  • *
  • Сообщений: 14
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2020-12-12
  • Сайт: 
  • Профессия: Ученик 1С
Необходимо изменить значение реквизита Наименование в справочнике Сотрудники где ставка сотрудника "1" (Одна).

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

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


Оффлайн Ивашка

  • *
  • Сообщений: 49
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2019-08-27
  • Сайт: 
  • Профессия: Ученик 1С
Необходимо изменить значение реквизита Наименование в справочнике Сотрудники где ставка сотрудника "1" (Одна).

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

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

Оффлайн Anachronizm

  • *
  • Сообщений: 14
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2020-12-12
  • Сайт: 
  • Профессия: Ученик 1С
Необходимо изменить значение реквизита Наименование в справочнике Сотрудники где ставка сотрудника "1" (Одна).

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

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

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

Оффлайн Ивашка

  • *
  • Сообщений: 49
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2019-08-27
  • Сайт: 
  • Профессия: Ученик 1С
Запрос он только читает данные, из БД
Можно обойтись и без запроса, но как говорят, запрос эффективнее!, Здесь на ваше усмотрение

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

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

Последний раз редактировалось: Ивашка; 04 Апр 2021, 23:31

Оффлайн Anachronizm

  • *
  • Сообщений: 14
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2020-12-12
  • Сайт: 
  • Профессия: Ученик 1С
Запрос он только читает данные, из БД
Можно обойтись и без запроса, но как говорят, запрос эффективнее!, Здесь на ваше усмотрение

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

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

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


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
76 Сообщений
LexaK
31 Сообщений
DmitriyF DmitriyF
11 Сообщений
Татьяна Шлотгауэр Татьяна Шлотгауэр
10 Сообщений
alexandr_ll
10 Сообщений
Мария2021
9 Сообщений
slimuz
8 Сообщений
zorro777
8 Сообщений
margo
7 Сообщений
Funt Фунтиков
6 Сообщений

* Кто онлайн

  • Точка Гостей: 465
  • Точка Скрытых: 0
  • Точка Пользователей: 7
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal