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

Запрос.

Автор Vasya25, 16 июл 2018, 17:26

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

Vasya25

Добрый день!
Пишу обработку для редактирования реквизитов справочника.
Запрос, изменение результата запроса, запись.
Конфигуратор ругается на всё, что угодно. Просит конец процедуры сразу после запроса " |";"
Что я делаю не так?

&НаКлиенте
Процедура Сформировать(Команда)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               | ОбъектыОбслуживания.Ссылка,
               | ОбъектыОбслуживания.Клиент,
               | ОбъектыОбслуживания.СтатусВесов
               |ИЗ
               | Справочник.ОбъектыОбслуживания КАК ОбъектыОбслуживания
               |ГДЕ
               | ОбъектыОбслуживания.Родитель.Клиент В ИЕРАРХИИ(&Клиент)
               | И ОбъектыОбслуживания.ПометкаУдаления = &ПометкаУдаления"
           |";

   
Запрос.УстановитьПараметр("Клиент", ЭтотОбъект.НашКлиент);
Запрос.УстановитьПараметр("ПометкаУдаления",Ложь);    


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

//Если Выборка.Количество() > 0 Тогда
Пока Выборка.Следующий() Цикл
КЕОбъект = Выборка.Ссылка.ПолучитьОбъект();
КЕОбъект.ОбъектыОбслуживания = ПолучитьКЕ(Выборка.Ссылка);

//ИЗМЕНИТЬ РЕКВИЗИТ КЛИЕНТ перед записью
КЕОбъект.Записать();
Сообщить("Успешно перезаписали КЕ: " + Выборка.Ссылка);
КонецЦикла;
//КонецЕсли;

КонецПроцедуры


{ВнешняяОбработка.СнятиеКеС_Учёта.Форма.Форма.Форма(13,14)}: Ожидается ключевое слово 'КонецПроцедуры' ('EndProcedure')
           <<?>>|"; (Проверка: Сервер)
{ВнешняяОбработка.СнятиеКеС_Учёта.Форма.Форма.Форма(20,29)}: Ошибка в выражении
Выборка = Запрос.Выполнить(<<?>>).Выбрать(); (Проверка: Сервер)
{ВнешняяОбработка.СнятиеКеС_Учёта.Форма.Форма.Форма(30,14)}: Обнаружено логическое завершение исходного текста модуля
КонецЦикла;<<?>> (Проверка: Сервер)
{ВнешняяОбработка.СнятиеКеС_Учёта.Форма.Форма.Форма(3,17)}: Тип не определен (Запрос)
Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
{ВнешняяОбработка.СнятиеКеС_Учёта.Форма.Форма.Форма(13,14)}: Ожидается ключевое слово 'КонецПроцедуры' ('EndProcedure')
           <<?>>|"; (Проверка: Тонкий клиент)
{ВнешняяОбработка.СнятиеКеС_Учёта.Форма.Форма.Форма(20,29)}: Ошибка в выражении
Выборка = Запрос.Выполнить(<<?>>).Выбрать(); (Проверка: Тонкий клиент)
{ВнешняяОбработка.СнятиеКеС_Учёта.Форма.Форма.Форма(30,14)}: Обнаружено логическое завершение исходного текста модуля
КонецЦикла;<<?>> (Проверка: Тонкий клиент)





wise

(0) &ПометкаУдаления" уберите кавычки
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Alex26

Цитата: Vasya25 от 16 июл 2018, 17:26Что я делаю не так?

потому что запрос работает только на сервере

&НаКлиенте
Процедура Сформировать(Команда)
    СфомироватьНаСервере();
КонецПроцедуры

&НаСервере
Процедура СфомироватьНаСервере()
    //Здесь свой текст пишите с запросом
КонецПроцедуры


AIFrame

Цитата: Alex26 от 17 июл 2018, 05:15потому что запрос работает только на сервере
Как и все последующие манипуляции с объектом. Там всю процедуру можно смело на сервер пихать.

Vasya25

Что-то ничего не изменилось. Так же ругается на конец процедуры после запроса....

&НаКлиенте
Процедура Сформировать(Команда)
    СфомироватьНаСервере();
КонецПроцедуры

&НаСервере
Процедура СфомироватьНаСервере()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               | ОбъектыОбслуживания.Ссылка,
               | ОбъектыОбслуживания.Клиент,
               | ОбъектыОбслуживания.СтатусВесов
               |ИЗ
               | Справочник.ОбъектыОбслуживания КАК ОбъектыОбслуживания
               |ГДЕ
               | ОбъектыОбслуживания.Родитель.Клиент В ИЕРАРХИИ(&Клиент)
               | И ОбъектыОбслуживания.ПометкаУдаления = &ПометкаУдаления"
           |";

   
Запрос.УстановитьПараметр("Клиент", ЭтотОбъект.НашКлиент);
Запрос.УстановитьПараметр("ПометкаУдаления",Ложь);    


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

//Если Выборка.Количество() > 0 Тогда
Пока Выборка.Следующий() Цикл
КЕОбъект = Выборка.Ссылка.ПолучитьОбъект();
КЕОбъект.ОбъектыОбслуживания = ПолучитьКЕ(Выборка.Ссылка);

//ИЗМЕНИТЬ РЕКВИЗИТ КЛИЕНТ перед записью
КЕОбъект.Записать();
Сообщить("Успешно перезаписали КЕ: " + Выборка.Ссылка);
КонецЦикла;
//КонецЕсли;

КонецПроцедуры

wise

(4) посмотри (1)
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Alex26

Цитата: Vasya25 от 17 июл 2018, 11:48ект.НашКлиент); Запрос.УстановитьПараметр("ПометкаУдаления",Ложь);

Цитата: Vasya25 от 17 июл 2018, 11:48
Что-то ничего не изменилось. Так же ругается на конец процедуры после запроса....

&НаКлиенте
Процедура Сформировать(Команда)
    СфомироватьНаСервере();
КонецПроцедуры

&НаСервере
Процедура СфомироватьНаСервере()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               | ОбъектыОбслуживания.Ссылка,
               | ОбъектыОбслуживания.Клиент,
               | ОбъектыОбслуживания.СтатусВесов
               |ИЗ
               | Справочник.ОбъектыОбслуживания КАК ОбъектыОбслуживания
               |ГДЕ
               | ОбъектыОбслуживания.Родитель.Клиент В ИЕРАРХИИ(&Клиент)
               | И ОбъектыОбслуживания.ПометкаУдаления = &ПометкаУдаления"
           |";

   
Запрос.УстановитьПараметр("Клиент", ЭтотОбъект.НашКлиент);
Запрос.УстановитьПараметр("ПометкаУдаления",Ложь);    


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

//Если Выборка.Количество() > 0 Тогда
Пока Выборка.Следующий() Цикл
КЕОбъект = Выборка.Ссылка.ПолучитьОбъект();
КЕОбъект.ОбъектыОбслуживания = ПолучитьКЕ(Выборка.Ссылка);

//ИЗМЕНИТЬ РЕКВИЗИТ КЛИЕНТ перед записью
КЕОбъект.Записать();
Сообщить("Успешно перезаписали КЕ: " + Выборка.Ссылка);
КонецЦикла;
//КонецЕсли;

КонецПроцедуры

ты че вручную пишешь запросы? тебе написали  |ГДЕ
                  |   ОбъектыОбслуживания.Родитель.Клиент В ИЕРАРХИИ(&Клиент)
                  |   И ОбъектыОбслуживания.ПометкаУдаления = &ПометкаУдаления" убери кавычки эти и замени эту строку на ОбъектыОбслуживания.ПометкаУдаления = ЛОЖЬ и убери эту строку Запрос.УстановитьПараметр("ПометкаУдаления",Ложь);
сообщение тоже не сработает у тебя на сервере Сообщить("Успешно перезаписали КЕ: " + Выборка.Ссылка); замени на
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ("Успешно перезаписали КЕ:"  + Выборка.Ссылка);
Сообщение.Сообщить();

Vasya25


[/quote]
ты че вручную пишешь запросы? тебе написали  |ГДЕ
                  |   ОбъектыОбслуживания.Родитель.Клиент В ИЕРАРХИИ(&Клиент)
                  |   И ОбъектыОбслуживания.ПометкаУдаления = &ПометкаУдаления" убери кавычки эти и замени эту строку на ОбъектыОбслуживания.ПометкаУдаления = ЛОЖЬ и убери эту строку Запрос.УстановитьПараметр("ПометкаУдаления",Ложь);
сообщение тоже не сработает у тебя на сервере Сообщить("Успешно перезаписали КЕ: " + Выборка.Ссылка); замени на
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ("Успешно перезаписали КЕ:"  + Выборка.Ссылка);
Сообщение.Сообщить();

[/quote]
Убрал, заработало...
Спасибо
Добавлено: 17 июл 2018, 13:35


{ВнешняяОбработка.СнятиеКеС_Учёта.Форма.Форма.Форма(21)}: Поле объекта не обнаружено (НашКлиент)
   Запрос.УстановитьПараметр("Клиент", ЭтотОбъект.НашКлиент);

Обращение к реквизиту обработки/формы(они кстати называются одинаково). Ругается...
КАК вывести результат запроса перед изменением на форму?
Я так понимаю нужно делать еще одну кнопку, где будет просто вывод?

Alex26

Цитата: Vasya25 от 17 июл 2018, 13:08{ВнешняяОбработка.СнятиеКеС_Учёта.Форма.Форма.Форма(21)}: Поле объекта не обнаружено (НашКлиент)
   Запрос.УстановитьПараметр("Клиент", ЭтотОбъект.НашКлиент);

Напиши не ЭтотОбъект а просто Объект.НашКлиент

Vasya25

Получаю из запроса ссылку на элемент справочника "оборудование". И пытаюсь записать в него новый реквизит "клиент". По отладчику иду, в цикл не попадаю. Хотя клиента находит, запрос работает.

&НаКлиенте
Процедура Сформировать(Команда)
    СфомироватьНаСервере();
КонецПроцедуры

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

Запрос.УстановитьПараметр("Клиент", Объект.НашКлиент);
Запрос.УстановитьПараметр("ПометкаУдаления",Ложь);    

РЗ = Запрос.Выполнить().Выбрать();
ТекСправочник = Справочники.Клиенты;

//Если РЗ.Количество()> 0 тогда
Пока РЗ.Следующий() цикл
КЕОбъект = РЗ.Ссылка.ПолучитьОбъект();
  КЕОбъект.Клиент = ТекСправочник.НайтиПоНаименованию("Архив");
КЕОбъект.Записать();
КонецЦикла;
//КонецЕсли;
КонецПроцедуры

Теги:

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

Рейтинг@Mail.ru

Поиск