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

Сократить код

Автор skillful, 01 янв 2021, 18:31

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

skillful

Добрый! С новым годом.

&НаСервере
Процедура ПрайсПриИзмененииНаСервере()

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НастройкиПрайсаПоставщиков.НомерПервойСтроки КАК НомерПервойСтроки,
| НастройкиПрайсаПоставщиков.КодПоставщика КАК КодПоставщика,
| НастройкиПрайсаПоставщиков.НоменклатураПоставщика КАК НоменклатураПоставщика,
| НастройкиПрайсаПоставщиков.Количество КАК Количество,
| НастройкиПрайсаПоставщиков.Цена КАК Цена
|ИЗ
| Справочник.НастройкиПрайсаПоставщиков КАК НастройкиПрайсаПоставщиков
|ГДЕ
| НастройкиПрайсаПоставщиков.Поставщик = &Поставщик
| И НастройкиПрайсаПоставщиков.Наименование = &Наименование";

Запрос.УстановитьПараметр("Поставщик", ЭтотОбъект.Объект.Поставщик.Ссылка);
Запрос.УстановитьПараметр("Наименование", ЭтотОбъект.Объект.Прайс.Наименование);

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

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

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ТЧНайстройкиПрайса = Объект.ТЧНайстройкиПрайса.Добавить();
ТЧНайстройкиПрайса.Наименование = "НомерПервойСтроки";
ТЧНайстройкиПрайса.Параметр = ВыборкаДетальныеЗаписи.НомерПервойСтроки;

ТЧНайстройкиПрайса = Объект.ТЧНайстройкиПрайса.Добавить();
ТЧНайстройкиПрайса.Наименование = "КодПоставщика";
ТЧНайстройкиПрайса.Параметр = ВыборкаДетальныеЗаписи.КодПоставщика;

ТЧНайстройкиПрайса = Объект.ТЧНайстройкиПрайса.Добавить();
ТЧНайстройкиПрайса.Наименование = "НоменклатураПоставщика";
ТЧНайстройкиПрайса.Параметр = ВыборкаДетальныеЗаписи.НоменклатураПоставщика;

ТЧНайстройкиПрайса = Объект.ТЧНайстройкиПрайса.Добавить();
ТЧНайстройкиПрайса.Наименование = "Количество";
ТЧНайстройкиПрайса.Параметр = ВыборкаДетальныеЗаписи.Количество;

ТЧНайстройкиПрайса = Объект.ТЧНайстройкиПрайса.Добавить();
ТЧНайстройкиПрайса.Наименование = "Цена";
ТЧНайстройкиПрайса.Параметр = ВыборкаДетальныеЗаписи.Цена;

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


Как можно сократить код внутри цикла ВыборкаДетальныеЗаписи.Следующий()

LexaK

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

    ...
    Объект.ТЧНайстройкиПрайса.Загрузить(Запрос.Выполнить().Выгрузить());

без всяких циклов
(правда сам запрос и его параметры вызывают кучу вопросов, но это уже другая задача)
ответ Понравился? (в смысле пригодился?)

Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск