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

Объединение функции и запроса.

Автор maxxi, 29 сен 2025, 13:07

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

maxxi

Здравствуйте, помогите пожалуйста, есть функция:

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

    Результат = Запрос.Выполнить();
   
    Выборка = Результат.Выбрать();
   
    Пока Выборка.Следующий() Цикл
               
        Массив.Добавить(Выборка.Ссылка);
   
    КонецЦикла;

    Возврат Массив;
   
КонецФункции

////////////////////////////////////////////////


этой функцией я выбираю только НАЗВАНИЕ ТОВАРА, ПРОДАЖИ и ОСТАТКИ какого склада добавить в анализ.

Эти колонки постоянные, меняются только количество складов, иногда 2, а иногда 10 складов.


///////////////////////////////////////////////////

МассивСкладов  = ВыбратьИзСправочника("Склады", "Спр.Активен");
   
МассивФилиалов = ВыбратьИзСправочника("Филиал", "Спр.Активен");
       
///////////////////////////////////////////////////

Колонки генерирую этой функцией:
     
    Для каждого Филиал Из МассивФилиалов Цикл
       
        Заголовок = Заголовок + ";" + "Остаток__" + Филиал.Ссылка;
       
        Заголовок = Заголовок + ";" + "Продажи__" + Филиал.Ссылка;
       
    КонецЦикла;




кроме этого еще есть другой запрос.

Этим запросом получаю, навание товара, остатки, продажи, на сколько дней хватить запаса, название филилала и склада.

Скажите пожалуйста как объединить или соединить это все.

antoneus

Зачем? Сейчас код разбит на логичные блоки, каждый из которых делает что-то одно.
Как писал Роберт Мартин: "Функция должна выполнять только одну операцию. И она должна выполнять ее хорошо."

maxxi

я с вами согласен, но мне надо в .csv все это записать, для передачи.

antoneus

Так, что тогда подразумевается под "объединить это всё"? Поподробнее.

maxxi

antoneus, мне надо записать все это в такой файл.

maxxi

серую часть записиваю без проблем, но желтую часть хочу автоматизировать.

antoneus

Ну тогда заводим массив структур с ключами "Заголовок", "Ссылка" - заголовок колонки, ссылка на филиал. Выводим заголовки в цикле.
В запросе можно сделать итог по товару, выгрузить запрос в дерево.
Идем по дереву

Для каждого стрТовар из Дерево.Строки Цикл
//выводим серую часть
Для каждого стрФилиал из НашМассив Цикл
    стрПоказатели = стрТовар.Строки.Найти(стрФилиал.Ссылка, "Филиал");
    Если стрПоказатели = Неопределено Тогда
        //присоединяем пустую область по филиалу
    Иначе
        //заполняем область с филиалом, присоединяем
    КонецЕсли;
КонецЦикла;

Ну или на скд запилить группировку таблица, программно сформировать и выгрузить в ексель.

Теги:

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

Рейтинг@Mail.ru

Поиск