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

Отобразить результат запроса

Автор Максипес, 23 июн 2015, 17:53

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

Максипес

Вопрос простой, как мне кажется, но 2 дня штудирования интеренета и попыток что-то сделать, как-то разобраться, пока не привели у успеху. Я в полном ступоре, как тут все работает. Начал разбираться в 1с 3 дня назад.

Никак не въеду в объектную модель, поэтому очень прошу помощи на нижеследующем конкретном примере. Мне бы понять общий прием для решения такой ситуации.

итак.

1. создан справочник.. в нем уже есть несколько тестовых записей.
2. создана ФормаСписка с дополнительной кнопкой Фильтр
3. на форме есть некий объект Список, который визуально выглядит таблица с которой как раз и работает юзер и где уже показываются данные из справочника.
4. по нажатии кнопки Фильтр должен выполнится простейший запрос типа Запрос = Новый Запрос("ВЫБРАТЬ .."); Результат = Запрос.Выполнить(); и результат этого запроса должны отразиться в той самой таблице на форме.

я застрял на том моменте, что не понимаю что возвращает запрос и как эти данные визуализировать. вроде бы есть визуальная таблица которая что-то показывает и ей по идее нужно дать ссылку на новый объект для отображение или .. ну не знаю..  или.. или есть другие вообще способы?

заранее спасибо.


cska-fanat-kz

фильтр который отбор - это стандартный механизм формы в целом и формы списка в частности.
может быть не стоит изобретать велосипед?

разговор про обычное или управляемое приложение?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Максипес

Цитата: cska-fanat-kz от 24 июн 2015, 11:31
фильтр который отбор - это стандартный механизм формы в целом и формы списка в частности.
может быть не стоит изобретать велосипед?

разговор про обычное или управляемое приложение?

Пока не очень разобрался в терминологии.. вроде бы обычное приложение.

По отбору в форме поковырявшись сделал пока так:

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

Список.ТекстЗапроса = ТексЗапроса;
Список.ОсновнаяТаблица = "Справочник.Сделки";
Список.ДинамическоеСчитываниеДанных = Истина;

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



тут у меня такие вопросы:
1. насколько адекватен такой подход? особенно в части со столбцами.
2. я добавляю 2 столбца и они показываются.. но куда делись остальные? т.е. до выполнения этого когда было 10 столбцов.. я добавил два.. и .. стало 2 столбца.. мне так и нужно.. но все же вопрос почему исчезли остальные?
3. почему ПутьКДанным = "Список.КодКлиента"; а не ПутьКДанным = "Справочиники.Сделки.КодКлиента";


еще раз спасибо.

vitasw

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

Максипес

Цитата: vitasw от 24 июн 2015, 13:49
То что вы наваяли - не дает оснований для понимания, какое же вы используете приложение.
Тут надо однозначно понимать какое приложение: обычное или управляемое. В данном случае реализация будет принципиально разная.

Управляемое.

vitasw

В таком случае, все что вы наваяли = неправильно
Делайте по совету cska-fanat-kz, т.е. вам нужно просто наложить правильный отбор на ваш динамический список.

Максипес

Цитата: vitasw от 24 июн 2015, 15:44
В таком случае, все что вы наваяли = неправильно
Делайте по совету cska-fanat-kz, т.е. вам нужно просто наложить правильный отбор на ваш динамический список.

но как это сделать?!

но ведь работает!

vitasw

Хотите попасть в рубрику "я все починил"? - это намек на индусский код

Максипес

Цитата: vitasw от 24 июн 2015, 15:59
Хотите попасть в рубрику "я все починил"? - это намек на индусский код

я просто хочу узнать.. вы даже не сказали, что именно неправильно.
Добавлено: 24 июн 2015, 16:25


Сделал через отбор.. так:


    Список.Отбор.Элементы.Очистить();
    ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Наименование");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение = "EDM5";
    ЭлементОтбора.Использование = Истина;


чем это принципиально отличается от первоначального варианта:

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

Список.ТекстЗапроса = ТексЗапроса;
Список.ОсновнаяТаблица = "Справочник.Сделки";
Список.ДинамическоеСчитываниеДанных = Истина;


Вроде бы тот же самый объект только другие методы и свойства заюзаны. Я думал это альтерантива просто, тем кто не хочет писать запросы.

Колонки тоже добавляются тем же способом как я вначале приводил..


НоваяКолонка = Элементы.Добавить("Наименование", Тип("ПолеФормы"), Элементы.Список);
НоваяКолонка.ПутьКДанным = "Список.Наименование";


.. только на этот раз в конец, а существующие уже не пропадают.. как очистить набор колонок перед добавлением?



   


vitasw

Цитата: Максипес от 24 июн 2015, 16:05Сделал через отбор.. так:

Вот так правильно.
А по-другому - это выход через окно, а не через дверь.

Теги:

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

Рейтинг@Mail.ru

Поиск