Каталог решений - Новый запрос и новая таблица значений как функции

Новый запрос и новая таблица значений как функции

Новый запрос и новая таблица значений как функции

В наличии

Предлагается две простые функции,  использование которых уменьшает объем кода в конфигурациях на платформе «1С:Предприятие 8». Эти функции можно добавлять к своему общему модулю, что сделает процесс программирования более эффективным.

Категория:

Описание

Программы на языке программирования платформы «1С:Предприятие» довольно многословны. В них часто повторяются одни и те же шаблоны. Например, постоянно приходится видеть повторение конструкций вида:

Запрос = Новый Запрос;

Запрос.УстановитьПараметр(«ИмяПараметра1», ЗначениеПараметра1);

Запрос.УстановитьПараметр(«ИмяПараметраN», ЗначениеПараметраN);

Запрос.Текст = «ВЫБРАТЬ … «;

Или конструкций вида:

ТЗ = Новый ТаблицаЗначений;

ТЗ.Колонки.Добавить(ИмяКолонки1);

ТЗ.Колонки.Добавить(ИмяКолонкиN);

Для ускорения ввода конструкций языка по шаблонам есть соответствующие средства. Однако существует и другой путь справиться со ставшей уже привычной избыточностью кода. Этот путь – использование функций.

Для получения готового к выполнению запроса можно использовать функцию:

Функция НовыйЗапрос(Текст, Параметры = 0) Экспорт

   
Результат = Новый Запрос(Текст);

    Для Каждого Параметр Из Результат.НайтиПараметры() Цикл Результат.Параметры.Вставить(Параметр.Имя)
    КонецЦикла;

    Если Параметры <> 0 Тогда ЗаполнитьЗначенияСвойств(Результат.Параметры, Параметры)
    КонецЕсли;

    Возврат Результат

КонецФункции

Здесь параметрами является текст запроса и структура или объект, реквизиты которого содержат значения параметров запроса. В модуле объекта удобнее использовать в качестве параметра значение «ЭтотОбъект». А параметры запроса именовать также как реквизиты этого объекта.

Примеры использования функции:

Для получения количества всех элементов справочника можно использовать код:


ВсегоВНоменклатуре = НовыйЗапрос(«ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура»).Выполнить().Выгрузить().Количество();

 

Для получения таблицы значений из табличной части «Товары» документа «РеализацияТоваровИУслуг» можно использовать код:

Товары_ = НовыйЗапрос(«ВЫБРАТЬ * ИЗ Документ.РеализацияТоваровУслуг.Товары ГДЕ Ссылка = &Ссылка», ЭтотОбъект).Выполнить().Выгрузить();

Также, например, в обработке заполнения табличной части для удаления строк с нулевой суммой в модуле объекта обработки достаточно будет записать такую короткую процедуру:

Процедура Инициализировать (Объект, ИмяТабличнойЧасти, ТабличноеПолеОбъекта)  Экспорт

   
Объект.Товары.Загрузить(

    НовыйЗапрос(«ВЫБРАТЬ * ИЗ Документ.РеализацияТоваровУслуг.Товары ГДЕ Ссылка = &Ссылка И Сумма > 0»

    , Объект).Выполнить().Выгрузить())

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

Конечно, это только небольшая часть возможных примеров. После того, как использование этой функции входит в привычку, к обычному варианту через повторение «УстановитьЗначениеПараметра» возвращаться уже не хочется. В редких случаях, когда объекта-параметра с походящим набором свойств подобрать не удается, в качестве параметра можно использовать Новый Структура(«ИмяПараметра1, … «, ЗначениеПараметра1, … ). Все равно за счет возможности записать после функции через точку метод «Выполнить» код получается короче.

 

Для получения таблицы значений, имена колонок которой перечислены в строке через запятую, можно использовать функцию:

Функция НоваяТаблицаЗначений(ИменаКолонокЧерезЗапятую) Экспорт

   
Результат = Новый ТаблицаЗначений;

    Для Каждого Элемент Из Новый Структура(ИменаКолонокЧерезЗапятую) Цикл Результат.Колонки.Добавить(Элемент.Ключ)
    КонецЦикла;

    Возврат Результат

КонецФункции

 

Пример использования функции:

ВзаимоРасчетыФИФО = НоваяТаблицаЗначений(«ДокументОтгрузки, ДокументОплаты, Сумма»);


has been added to your cart:
Оформление заказа