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

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

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

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

Максипес

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

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

может подскажете еще как правильно убирать ненужные колонки с формы.. и как правильно их добавлять.
Добавлено: 24 июн 2015, 17:59


пока ничего кроме этого не придумал:


        Для каждого Элем Из Элементы Цикл   
Если Тип(Элем) = Тип("ПолеФормы") Тогда
Элем.Видимость = Ложь;
КонецЕсли
КонецЦикла;
Элементы.Наименование.Видимость = Истина;


Сначала срыть все.. а потом показать нужные. Как вы это наз индусский код?

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

но все равно явно это не правильный способ. должно быть более правильное решение.
       

Добавлено: 24 июн 2015, 22:32


Так как до сих пор мне не удалось найти решения простой как казалось вначале задачи, я еще раз прошу помощи зала.

1. есть таблица в базе данных где много строк и 10 столбцов. я так понимаю это Справочники.МойСправочник
2. есть форма с визуальной таблицей. Форма.Список
3. надо чтобы в этом списке отобразились по условию строки из базы данных и только 2 определенных столбца из 10.

главный вопрос на данный момент вопрос - как задать какие столбцы показывать?

почему если приложение управляемое надо использовать "отбор", а не "произвольный запрос"?




cska-fanat-kz

Цитата: Максипес от 24 июн 2015, 17:24Так как до сих пор мне не удалось найти решения простой как казалось вначале задачи, я еще раз прошу помощи зала.

1. есть таблица в базе данных где много строк и 10 столбцов. я так понимаю это Справочники.МойСправочник
2. есть форма с визуальной таблицей. Форма.Список
3. надо чтобы в этом списке отобразились по условию строки из базы данных и только 2 определенных столбца из 10.

главный вопрос на данный момент вопрос - как задать какие столбцы показывать?

почему если приложение управляемое надо использовать "отбор", а не "произвольный запрос"?

Альтернативное решение: сделать отдельную форму списка с нужным набором колонок и пр. настройками.

Основная мысль не претендующая на аксиому: нужно по максимуму использовать средства платформы (одним из которых и является отбор, имеется ввиду не столько программный, сколько настраиваемый в пользовательском режиме) и только при самой большой необходимости лезть в код.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Максипес

Вот такой способ работает..

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

        // подсовываем его в объект Cписок, хтя это не тот объект что лежит на форме..
        // пока не понял что это есть точно.. какое место он занимает в иерархии
        // но через него делается настройка списка на форме
Список.ТекстЗапроса = ТексЗапроса;
Список.ОсновнаяТаблица = "Справочник.Сделки";
Список.ДинамическоеСчитываниеДанных = Истина;

        // он делает запрос в Справочник и возвращает кроме данных, кстати, и список столбцов,
        // которые были в запросе
        // в моем случае это как раз Наименование,КодКлиента,Операция
СписокПолей = Список.КомпоновщикНастроек.Настройки.ДоступныеПоляГруппировок.Элементы;

        // тут скрываем все столбцы
Для каждого Элем Из Элементы Цикл   
Если Тип(Элем) = Тип("ПолеФормы") Тогда
Элем.Видимость = Ложь;
КонецЕсли
КонецЦикла;

        // а тут показываем искомые
Для каждого Пл Из СписокПолей Цикл
Эл = Элементы.Найти(Пл.Поле);
Эл.Видимость = Истина;
Сообщить(Пл.Поле);
КонецЦикла;


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

ну примерно так..

Процедура Кнопка5(Команда)
УстФильр("Тут текст запроса");
КонецПроцедуры


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

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

Очень надеюсь и жду разъяснений.

vitasw

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

Максипес

Цитата: vitasw от 25 июн 2015, 13:15
Никто не говорил, что нельзя.-не корректно. Время выполнения ваших свистоплясок будет запредельным.

Все таки непонятно почему так медленней.. в чем отличие в выполнении, на низовом уровне, запроса и конфигурирования свойства "отбор"?  гугл не дает ответа..

vitasw

Отладчик и замер производительности вам в руки.
Ваш метод=
-неоднократное брожение клиент-сервер (не стоит забывать про неявную передачу контекста)
-необходимость перерисовывать форму и ее элементов
-выполнение запроса.
Традиционный метод=
-в одной серверной процедуре установить отбор.


Максипес

Цитата: vitasw от 25 июн 2015, 14:42Отладчик и замер производительности вам в руки.

к сожалению у меня тут не работает отладчик и 1с не запускается по f5 .. ошибку выдает - тонкий клиент не установлен.. как его установить хз. пока ковыряюсь так.

ЦитироватьТрадиционный метод=
-в одной серверной процедуре установить отбор.

а разве тут не будет выполняться запрос? как он может выбрать данные без запроса?
и разве тут не перерисовывается форма? то было 10 столбцов, то стало 3.



vitasw

Цитата: Максипес от 25 июн 2015, 14:48разве тут не будет выполняться запрос? как он может выбрать данные без запроса?

Запрос будет выполняться 1 раз при открытии формы. Все. При наложении отбора запрос выполняться не будет.
Цитата: Максипес от 25 июн 2015, 14:48и разве тут не перерисовывается форма? то было 10 столбцов, то стало 3.
Управление видимостью<>прорисовке элементов.
Я устал с вами спорить. Делайте как занете.


Максипес

Цитата: vitasw от 25 июн 2015, 14:55Я устал с вами спорить. Делайте как занете.

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

Теги:

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

Рейтинг@Mail.ru

Поиск