Псевдозакладки в управляемой форме

Псевдостраницы (закладки) в управляемой форме, или Разгоняем форму до третьей космической скорости.

Здравствуйте, уважаемые мученики 1С. Предлагаю Вашему вниманию интерфейсное решение, навеянное обсуждением Есть ли возможность интерактивного добавления табличных частей в документ?.

То, что можно добавлять страницы (закладки), это все знают. Но тут нужно элементы формы размещать на каждую страницу. Как это избежать? Очень просто. Вид поля формы может быть  не только поле ввода, но и Поле переключателя, мало того, ему можно назначить вид Тумблер

Управляется элемент вида Тумблер Списком Выбора. Можно задать жестко или программно. Например:

СписокВыбора = Элементы.Организация.СписокВыбора;
Запрос = Новый Запрос("ВЫБРАТЬ
| Организации.Ссылка КАК Ссылка
|ИЗ
| Справочник.Организации КАК Организации");
СписокВыбора.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку(0));

Управлять этим элементом тоже не составляет труда. Добавляем или удаляем из Списка выбора нужное / ненужное значение. И в событии элемента формы ПриИзменении прописываем нужные действия.

И все. Никаких лишних элементов формы

Пример обработки написан и тестировался на платформе 8.3.13.1513. на конфигурациях БСП 2.4, УНФ 1.6, БП 3.0.

31 Comments

  1. tusv

    Глагол Мучать он двусмысленен. Толи я мучаю 1С, толи он меня. Добро пожаловать на обсуждение

    Reply
  2. acanta

    В 8 ке есть возможность в реквизитах указывать индексировать и индексировать с доп.упорядочиванием.

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

    Имеет ли смысл использовать родной индекс 1с в справочнике (владелец+родитель+реквизит) и организовать справочник или регистр сведений тоже будет хорошо работать (быстро переключать данные в таблице)?

    Reply
  3. tusv

    (2)

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

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

    Reply
  4. AlX0id

    (1)

    Совсем замучал по ходу.. В тэгах публикации зачем-то стоит excel..

    Reply
  5. noprogrammer
    То, что можно добавлять страницы (закладки), это все знают. Но тут нужно элементы формы размещать на каждую страницу. Как это избежать?

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

    Reply
  6. noprogrammer

    Во вложении пример работы с закладками (без рисования элементов на каждой закладке)

    Reply
  7. Yashazz

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

    Что касается публикации — мне одному кажется, что это на уровне «как отсортировать список значений», по степени очевидности и примитивности?

    Reply
  8. tusv

    (7)Сколько элементов формы у Вас будет? Сколько надо прописать по управлению видимостью?

    Здесь только два элемента. Строчек кода 100 и в большей части по управлению Табличной частью. Ни каких видимостей прописывать не надо. Оно само прорисовывается. Мечта программиста:)

    Reply
  9. tusv

    (6)Код конечно красивый. Но у меня два элемента Вы создаете программно больше. Какая форма отработает быстрее?

    Reply
  10. tusv

    (5)Ну есть метод переместить, все равно это лишнее действие

    Reply
  11. noprogrammer

    (9) Что-то мне подсказывает, что разницы в скорости (по крайней мере на глаз) никто не заметит (даже если она и будет, эта самая разница)

    Reply
  12. noprogrammer

    (9) Программно создаю закладки, но никто не мешает создать их интерактивно (это просто пример). Если из примера выкинуть создание закладок и псевдофильтрацию то останется всего 2 строчки кода

    Reply
  13. Sashares

    (8)Вырожденный пример.

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

    Никакой заменой закладкам не является.

    В большинстве случаев на разных закладках отображаются разные данные/требуется разное оформление и тд.

    Reply
  14. tusv

    (7)

    по степени очевидности и примитивности?

    Мы анархисты максималисты, только для получения зряплаты, а так исповедуем принцип минимализма, особливо когда речь идет о терабайтных базах.:)

    А кто сказал, что 1С это сложно?

    Reply
  15. tusv

    (11)Что то мне подсказывает, что Вы не работали на 3-х терабайтной базе. Да и у меня в основном коде строчек меньше, чем у Вас. Уже сэкономил для себя 30 минут, как кодер

    Reply
  16. tusv

    (13)

    Вырожденный пример

    Все приёмы хороши, когда вовремя и к месту. Сейчас не нужно, потом вспомните

    Reply
  17. tusv

    (13)И да я этот прием использую и в других случаях

    Reply
  18. tusv

    (11)Про знаменитую апорию Зенона знаете? Ахиллес ни когда не догонит черепаху. Переделаем её на &НаСервере и &НаСервереБезКонтекста. Будет похоже? А нафига эти директивы компиляции придумали? Значит есть разница в скорости

    Reply
  19. Sashares

    (17)По сути вы «изобрели» отбор для таблицы.

    Поэтому не совсем понятно, зачем так громко об этом заявлять.

    О каком разгоне формы в принципе идет речь?

    При наличии большого количества значений отборов или при длинном их наименовании — размещать их на форме в переключателях — выглядеть будет стремно. Да и смысла нет это делать.

    Стандартный подход для этого — 2 таблицы, в первой таблице — значение ключ, во второй — записи по отбору текущей строки первой таблицы.

    Reply
  20. Sashares

    (18)

    А нафига эти директивы компиляции придумали?

    Чтобы не тащить на сервер весь контекст формы, на которой может быть 100500 записей в таблицах, если на сервере нужно сделать что-то не зависимое от формы. Например, выполнить какой нибудь запрос и вернуть результат.

    Reply
  21. tusv

    (19)По сути я ответил на вопрос обсуждения, указанный в статье.Судя по всему, Вы ссылку не открывали. На изобретение велосипеда я не претендую. Это всего лишь интерфейсное решение того вопроса. Уверен, что оно самое быстрое. Можете пройтись с секундомером и сравнить решение в (6) и моё Благо замер производительности есть..

    Reply
  22. tusv

    (4)А если я перемещю группу ГруппаУправление вниз формы и добавлю добавление колонки, на ёксель будет похоже ?

    Ссылку откройте, что вверху:)

    Reply
  23. Sashares

    (21)

    Вы ссылку не открывали

    Ссылку открывал.

    (21)

    Можете пройтись с секундомером и сравнить решение в (6) и моё

    Оба варианта будут интерфейсно не читаемы при хотя бы количестве элементов более 10,

    если конечно наименования элементов будут не «1», «2» и тд.

    Скорость это еще не все =)

    Reply
  24. tusv

    (20)О том и речь Я тащу на сервер и обратно всего 2 элемента формы. в (6) в разы больше и метод переместить , то есть дополнительная прорисовка формы при возвращении на клиент. А оно это надо?

    Reply
  25. noprogrammer
    То, что можно добавлять страницы (закладки), это все знают. Но тут нужно элементы формы размещать на каждую страницу. Как это избежать?

    В (6) приведен пример того как этого избежать… Либо надо ставить вопрос по другому, либо….

    По поводу скорости — в данном конкретном случае скорость вообще не важно ибо на глаз никто ее не заметит (0.005сек и 0,0005сек — никакой разницы визуально не будет)

    Reply
  26. tusv

    (23)

    Скорость это еще не все =)

    Дьявол в мелочах, Выигрываю на прорисовке формы, больше времени на завершении транзакции в проведении документа. А нафига лишняя миллисекунда на 3х терабайтной базе. Совсем не нужно. Лишнее наверное совсем:)

    Давайте вернем коаксиал и все будет харашо:)

    Кто не застал сего чуда это 10 мегабит на передачу инфы в очереди. 3G на тупом смартфоне быстрее

    Reply
  27. CyberCerber

    (23) Сори за оффтоп, сначала подумал, что человек сам с собой спорит 🙂

    Reply
  28. tusv

    (27)

    Сори за оффтоп, сначала подумал, что человек сам с собой спорит 🙂

    Нормальное явление. Это называется посоветоваться с умным человеком:)

    В данной теме я отвечаю на все вопросы

    Reply
  29. Wern03

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

    Reply
  30. gubanoff

    (0) мы решили эту же задачу путем генерирования кнопок. Получилось универсально и функционально, но уже не две строчки кода 🙂

    Reply
  31. WrongLane

    Интересная идея.

    P.S. Не могу в личку написать, обсудить )

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *