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

скд на форме

Автор sali, 08 июл 2025, 14:26

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

sali

казалось бы , но нет...как вывести результат запроса скд на форму обработки?
то бишь не устраивает табличная часть Снимок экрана 2025-07-08 172433.png
и нужно в иерархическом виде вывести данные, ну типо отчета только обработка это. ранее лишь выводил отбор на форму , а тут данные.....

antoneus

Ну в дерево значений же.

fruitella

Если результат тот, который у тебя в таблице запихнуть в скд, то создай макет, там рандомный запрос, а после получаешь макет и устанавливаешь ему нужный текст запроса, заполняешь параметры при необходимости и настройки, выводишь результат.

sali

antoneus, результат на фото выше. это реквизит с типом дерево значений и выбором отображения иерархический список

sali

fruitella, супер , так и продолжал делать. создал в обработке макет с типом скд, вставил туда действующий  код запроса. написал в модуле формы код на получение макета + создал реквизит с типом компоновки настроек скд.

sali

у меня сейчас такой текст кода
&НаКлиенте
Процедура ПоискНоменклатурыПриИзменении(Элемент)

    Если Не ЗначениеЗаполнено(ПоискНоменклатуры) Тогда
        Возврат;
    КонецЕсли;
   
    СтруктураПараметров = ЗаполнитьСвойстваНоменклатуры(ПоискНоменклатуры);
    ДобавитьПозициюНоменклатуры(СтруктураПараметров);                                                                                                                             
       
    ПоискНоменклатуры = Неопределено;

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

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

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

&НаСервере
Процедура ДобавитьПозициюНоменклатуры(СтруктураПараметров)
    Для каждого ПараметрСтруктуры Из СтруктураПараметров Цикл
        //СтруктураОтбора = Новый Структура;
        //СтруктураОтбора.Вставить("Номенклатура", ПараметрСтруктуры.Номенклатура);
        //НайденныеСтроки = Объект.Товары.НайтиСтроки(СтруктураОтбора);       
       
        //Если НайденныеСтроки.Количество() = 0 Тогда     
        //ДеревоДЗ = РеквизитФормыВЗначение("Объект.Товары", Тип("ДеревоЗначений"));
        //СтрокаТабличнойЧасти = ДеревоДЗ.Строки.Добавить();
            СтрокаТабличнойЧасти = оБъект.Товары.добавить();
            ЗаполнитьЗначенияСвойств(СтрокаТабличнойЧасти, ПараметрСтруктуры);
    //    КонецЕсли;   

        //ЗначениеВРеквизитФормы(ДеревоДЗ, "Объект.Товары");
    КонецЦикла;
       
КонецПроцедуры 

&НаКлиенте
Процедура ОтборНоменклатурыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    СтруктураПараметров = ЗаполнитьСвойстваНоменклатурыПоОтбору(ВыбранноеЗначение);
    ДобавитьПозициюНоменклатуры(СтруктураПараметров);   
КонецПроцедуры   


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

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


и тч Товары которое имеет отображение иерархический список  . имеет это все такой вид Снимок экрана 2025-07-09 110819.png
минус в том что номенклатура везде пишется , нет группировки. а ставлю - не срабатывает

fruitella

Я тебя не понимаю, что ты хочешь сделать? Ты выше пишешь, хочу свой результат запроса пихнуть в скд и вывести результат, а теперь ты хочешь чтобы на форме было дерево.

Максим75

fruitella, да как раз наеборот хочет. вывести результат запроса на форму в виде дерева.
ну вагон же примеров в сети, как в дерево выводить, как в таблицу значений.
но это не наши методы.

sali

fruitella, единственно что хочу это чтобы результат был читаемым , то бишь  так

НОМЕНКЛАТУРА                                  СКЛАД                            КОЛИЧЕСТВО
Обои
   Обои Лэнд
       "Обои Лэнд" 5701-06     
                                            Склад Ортобай                           100 
                                            Склад Основной                           27 
       "оБОИ ЛЭНД" 5701-07                  сКЛАД Электричество                      28     
   Обои гранд
    и так далее.......

и отвечу на ваш вопрос
Цитата: fruitella от 09 июл 2025, 08:44очу свой результат запроса пихнуть в скд ..., а теперь ты хочешь чтобы на форме было дерево

просто пробую по-разному

sali

Цитата: Максим75 от 09 июл 2025, 08:59ну вагон же примеров в сети, как в дерево выводить
результат не тот. именно косметический вид

Теги:

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

Рейтинг@Mail.ru

Поиск