Флажок в динамическом списке в 1С 8.3 (управляемые формы)

21.11.22

Разработка - Механизмы платформы 1С

Продемонстрирована реализация флажков в динамическом списке на управляемых формах - еще один способ.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование SM По подписке [?] Купить один файл
Флажок в динамическом списке в 1с 8.3 (управляемые формы)
.epf 10,96Kb
68
68
1 SM
Скачать Купить за 1 850 руб.

Внешняя обработка была разработана на платформе 1С:Предприятие 8.3 (8.3.18.1741), на конфигурации Управление нашей фирмой, редакция 1.6 (1.6.13.54).

Конфигурация остается неизменной и на поддержке - используем только типовые механизмы и имеющиеся таблицы и поля конфигурации. Для тестирования был использован динамический список документов Заказы покупателей.

Смотрите видео, ниже после видео будут разъяснения.

 

Пример полностью тестовый, разрабатывался не на реальной задаче, а по следам публикации Использование флажков в динамических списках 2.0

Когда мы устанавливаем флажок на строке, нам надо где-то хранить эту информацию. Вариантов два - или в алгоритме создать переменную (ВыбранныеДокументы), или воспользоваться хранением в базе данных (мой случай, используя таблицы и поля БД).

Первый вариант через хранение информации об установленных флажках в переменной ВыбранныеДокументы - хорошо продемонстрирован в вышеописанной публикации - передача переменной ВыбранныеДокументы от клиента на сервер происходит через временное хранилище. Как раз временное хранилище для этого и предназначено. И именно для реализации флажка в динамическом списке его придется использовать, поскольку для динамического списка процедура ПриПолученииДанныхНаСервере срабатывает на сервере без контекста формы - и любая переменная для хранения списка выбранных документов на форме (на клиенте) - не будет видна на сервере напрямую без контекста формы.

Второй вариант - хранение информации о выбранных документах в БД - использую я в предложенной обработке.

Если бы я воспользовался расширением, то сама реализация "флажка в динамическом списке" прошла бы более простым способом - я добавил бы в расширение в документ ЗаказПокупателя реквизит "Флажок" (тип Булево) для хранения информации об установленном флаге. Но если реализовывать через внешнюю обработку, то добавить дополнительные реквизиты в таблицу ЗаказПокупателя нельзя.

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

 

рис.1

 

Для дальнейшего понимания:

1) динамический список реализован через произвольный запрос (рис.1, 2 выше) - поскольку через запрос можно задать дополнительное свое поле (одинаково для вышеописанной публикации и данной публикации), вокруг которого в дальнейшем будет строиться алгоритм и механизм "флажка в динамическом списке" - рис.3.

 

рис.3

2) добавил реквизит "Флажок" (тип Булево) для документов "ЗаказПокупателя" через механизм Дополнительных реквизитов и сведений, его вытаскиваю в запрос динамического списка по полю "Флажок", в него сохраняю информацию об установленном флаге через двойной клик по полю "Флажок".

3) двойной клик по колонке "Флажок" не так ужасен и не является помехой, чтобы помечать документ. Если вы щелкните два раза по другому полю, то сработает стандартный вызов открытия документа (смотрите видео выше).

Код механизма задействует всего 3 процедуры и 45 строк кода - см. обработку.

Для чего можно использовать хранение флажков в документах БД? Возможно для задач визирования документов - когда например некоторое должностное лицо визирует документы, например проставляет статусы "Проверен", "Оригинал получен", "Акт сверки согласован" и т.д.

 

Всем добра!

С пользой для клиентов, RustIG

 
 Стек технологий, упомянутых в публикации

1) Работа с временным хранилищем

2) Механизм дополнительных реквизитов и сведений

 

 

 
 См. также другие разработки

1) Подбор товаров по характеристикам (свойствам и значениям)

2) Как свернуть базу УТ 10.3

3) Сравнение запросов

4) Ввод показателей план-факта через табличный документ

5) Доработка конфигурации Конвертация Данных (вер. 2.1.8.2)

6) Поиск ссылок на любой справочник в документах на УФ

7) Поиск сотрудника и поиск физлица в документах ЗУП

8) Поиск контрагента в документах для управляемых форм

9) Поиск номенклатуры в документах

10) Параллельные вычисления

11) УТ 11.4. Счет на оплату с факсимиле

12) УНФ. Список заказов + Структура подчиненности

13) Удаление справочников для любых баз на управляемых и обычных формах

14) Неиндексированные измерения регистров сведений. В помощь 1С:Эксперту

15) Удаление документов для любых баз на управляемых формах

16) Удаление чеков ККМ в Рознице 2.2

17) Договоры для 1с-ника

Из последнего опубликованного:

18) JSON -> Дерево значений

19) Анализ прав и ролей: поиск подходящего профиля

20) Оцифровка и визуализация склада

 

флажок динамический список

См. также

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает.

23.06.2024    4117    bayselonarrend    18    

144

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    4108    dsdred    16    

77

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Бесплатно (free)

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

24.01.2024    9730    YA_418728146    25    

70

Перенос данных 1C Механизмы платформы 1С Системный администратор Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    8921    dsdred    44    

124

Механизмы платформы 1С Программист Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    21136    SeiOkami    46    

129

Механизмы платформы 1С Системный администратор Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    15304    human_new    27    

79

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.08.2023    11629    YA_418728146    7    

156
Отзывы
11. RustIG 1720 27.01.22 21:45 Сейчас в теме
(9) моя история про веб-клиент и мобильный клиент... плюс про
Для чего можно использовать хранение флажков в документах БД? Возможно для задач визирования документов - когда например некоторое должностное лицо визирует документы, например проставляет статусы "Проверен", "Оригинал получен", "Акт сверки согласован" и т.д.

я лично веду такой учет по счетам на оплату - "акт подписан", "счет оплачен"...
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. tgr123 32 19.01.22 11:05 Сейчас в теме
Часто использую такую доработку именно в расширении.
При этом - только программная доработка запроса динамического списка и программный вывод колонки и обработчиков/команд.
Вместо доп.реквизита использую либо свой добавленный регистр сведений, либо регистр ДополнительныеСведения. Считаю использовать реквизит объекта не нужно - лишняя запись объекта.
В итоге слетает расширение очень редко, только если глобально изменен запрос динамического списка.
Например в УТ 11.5 было изменено много запросов в дин.списках относительно 11.4, что добавило работы при обновлении :)
sm.artem; porese; RustIG; +3 Ответить
2. porese 20.01.22 11:01 Сейчас в теме
Простое решение, спасибо.
3. Yashazz 4762 20.01.22 18:37 Сейчас в теме
Ну не очень хорошее решение, мягко говоря. Потому что обращение идёт к ещё одной таблице, доп.свойств. А на неё и РЛС могут быть навешены, и объёмчики могут быть неслабые... И документ записывать надо, а очень запросто может оказаться, что он при записи искажает некие данные или находится в закрытом периоде, или заблокирован кем-то... Словом, ваще не айс подход.

А способ передачи данных в ПриПолученииДанныхНаСервере я уже описывал в своей публикации.
DrAku1a; dhurricane; _LkMaksimka_; RustIG; +4 Ответить
5. DrAku1a 1733 21.01.22 13:39 Сейчас в теме
(3) Наверное, лучше делать через дополнительные сведения (регистр сведений общий на все объекты).
Запрос будет чуть сложнее, но записывать будет легче.
IgorS; Yashazz; +2 Ответить
12. RustIG 1720 27.01.22 22:13 Сейчас в теме
(3)
А способ передачи данных в ПриПолученииДанныхНаСервере я уже описывал в своей публикации.

ознакомился - задача из твоей публикации отличается от представленной мною и поднятой Антоном... я исхожу всегда из того, что "каждой задаче - свое решение"... при этом, по итогу оказалось мы с Антоном решали две разные задачи - но про одно и тоже "флажок в динамическом списке" - как следствие решение и механизмы получились разные...
:)
4. Yashazz 4762 21.01.22 08:46 Сейчас в теме
Собственно, начинать вообще надо с методического анализа задачи.

Если речь о временных пометках, смысл имеющих и нужных только в рамках одного сеанса работы с ДС, или одного сеанса 1С, то однозначно выбирать следует некие временные коллекции, хранимые в ОЗУ, сеансовых данных, кэши и выборки, не относящиеся к БД. Можно использовать контекст формы и передавать выборку через хранилище либо настройку, можно (если расширение) сделать параметр сеанса либо общую функцию; можно применить даже кэширование во временный файл. Главное, что по истечении потребности эта выборка исчезнет, и затем более не будет востребована.
Если речь о постоянных пометках, либо о нужных в рамках нескольких сеансов (в т.ч. нескольких пользователей одновременно), то конечно следует применять средства БД. Также важно проанализировать имеющийся инструмент (его "тяжесть" и навороченность, если мы о контурах БСП), вероятность блокировок, конкурентного доступа и всех "прелестей" параллельной работы. В этом случае носителем может стать некий типовой механизм (показанные в публикации доп.реквизиты, механика прикреплённых файлов, хранилища значений, хранилища настроек итд), либо собственный, если расширение, и тут выигрышнее будет свой независимый непериодический регистр сведений, которому можно делать свои права доступа, блокировки, индексацию.

Если смотреть глубже, можно оценить объёмы этих пометок. Если помечается 5-10% от общего количества, и оно мало, то применимо быстрое сохранение в хранилища общих настроек, или вообще использование условного оформления ДС, а не выборка пометки запросом ДС. Если объёмы велики и прокрутка списка активно делается, тогда надо думать, куда и как такой объём адекватно "пролезет", будут ли повторы обращений, автообновляется ли ДС и как часто, итд.

Поэтому разговоры, чья публикация на эту тему "лучше", разумно вести, исходя из конкретных решаемых задач.
IgorS; JohnyDeath; ixijixi; DrAku1a; swadim-is; +5 Ответить
6. kasper076 109 21.01.22 14:19 Сейчас в теме
Пример получения признака без соединения с таблицей:
ВЫБРАТЬ
    Р.Ссылка,
    Р.Контрагент,
    Р.Склад,
    ВЫБОР
        КОГДА 1 В
                (ВЫБРАТЬ ПЕРВЫЕ 1
                    1
                ИЗ
                    Документ.СчетФактураВыданный КАК Х
                ГДЕ
                    Р.Ссылка = Х.ДокументОснование)
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК ЕстьСФ
ИЗ
    Документ.РеализацияТоваровУслуг КАК Р
Показать

Сложные запросы в динамическом списке или как не надо писать запросы для них
7. RustIG 1720 21.01.22 15:17 Сейчас в теме
(6)
ВЫБРАТЬ
Р.Ссылка,
Р.Контрагент,
Р.Склад,
ВЫБОР
КОГДА 1 В
(ВЫБРАТЬ ПЕРВЫЕ 1
1
ИЗ
Документ.СчетФактураВыданный КАК Х
ГДЕ
Р.Ссылка = Х.ДокументОснование)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ЕстьСФ
ИЗ
Документ.РеализацияТоваровУслуг КАК Р
Показать


я бы запрос реализовал вот так :
1ый вариант - через левое соединение таблиц реализаций и СФ
или 2ой вариант - через временную таблицу документов-оснований СФ, далее в основной таблице Если Ссылка В (СписокДокОснований) то Истиина
ваш вариант мне совершенно не нравится (интуитивно)
8. kasper076 109 21.01.22 15:26 Сейчас в теме
(7) эт не совсем мой вариант. Я привел ссылку на статью автора. Он приводит планы запросов. А какие ваши доказательства? ;)
9. JohnyDeath 301 22.01.22 18:52 Сейчас в теме
Т.е. если один пользователь выбирает для себя галками документы, то и у всех остальных оно будет в галках?
По-моему флажки нужны конкретно для выбора и конкретно для ТЕКУЩЕГО пользователя.
А запись всего объекта документа ради этого мне кажется слишком затратной.
10. Yashazz 4762 23.01.22 12:48 Сейчас в теме
(9) Вот я об этом и написал выше.
11. RustIG 1720 27.01.22 21:45 Сейчас в теме
(9) моя история про веб-клиент и мобильный клиент... плюс про
Для чего можно использовать хранение флажков в документах БД? Возможно для задач визирования документов - когда например некоторое должностное лицо визирует документы, например проставляет статусы "Проверен", "Оригинал получен", "Акт сверки согласован" и т.д.

я лично веду такой учет по счетам на оплату - "акт подписан", "счет оплачен"...
13. vld1973 88 29.04.22 13:42 Сейчас в теме
Оставьте свое сообщение