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

Публикация № 1587487 19.01.22

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

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

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

Внешняя обработка была разработана на платформе 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с 8.3 (управляемые формы)

.epf 10,96Kb
40
.epf 10,96Kb 40 Скачать бесплатно

Специальные предложения

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

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

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

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

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

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

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


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

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

См. также

Акт сверки: выделение красным неподписанных реализаций

Взаиморасчеты v8 v8::БУ БП3.0 БУ Абонемент ($m)

Расширение для БП 3.0 - теперь в акте сверки можно задать начальное сальдо и выделить красным цветом неподписанные реализации (то есть по которым нет подписанных оригиналов).

1 стартмани

27.04.2022    584    0    Rustig    4    

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

Склад и ТМЦ v8 v8::УФ 1cv8.cf Абонемент ($m)

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

2 стартмани

17.11.2021    6798    18    Rustig    59    

Что такое форматированный документ

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

Использование форматированного документа демонстрируется на примере преобразования текста в форматированную строку.

17.05.2021    4207    3    Rustig    9    

Вызов демонов в 1С

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

Вызываем демонов прямо из 1С!

28.01.2021    12119    247    the1    40    

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

Зарплата Поиск данных v8 v8::СПР ЗУП3.x БУ Абонемент ($m)

Внешняя обработка для быстрого поиска сотрудника или физлица по всем документам ЗУП 3.1.

1 стартмани

23.10.2020    5725    4    Rustig    12    

Ввод по строке для управляемых форм

Механизмы платформы 1С v8::УФ 1cv8.cf Россия Бесплатно (free)

Ввод по строке с поиском по номеру телефона и наименованию контрагента с помощью обработчика "АвтоПодбор".

08.10.2020    5164    39    anrahell    2    

Этикетки складских ячеек со стрелками

Склад и ТМЦ Печатные формы v8 ERP2 УТ11 КА2 Абонемент ($m)

Расширение для КА 2.4 - набор шаблонов для этикеток ячеек со стрелками вверх, вниз, вправо, влево

3 стартмани

14.09.2020    7562    6    Rustig    12    

v77. Тип данных "Месяц"

Механизмы платформы 1С v8 1cv8.cf Россия Бесплатно (free)

Нет такого в 1С типа данных. Но если очень хочется...

12.03.2012    11876    8    item    2    

Исполнение кода в модуле формы при разработке в 1С 8.2

Механизмы платформы 1С v8 1cv8.cf Россия Бесплатно (free)

Немного теории о новом подходе к программированию форм в 1С 8.2 Рассматриваются директивы компиляции процедур и функций, которые определяются в модуле формы.

15.01.2011    30705    168    1cNike    19    

Строка - "заголовок" в табличном поле

Механизмы платформы 1С v8 1cv8.cf Россия Бесплатно (free)

Несложный приём позволит вводить в табличное поле строки вида "заголовок".

09.11.2009    16977    193    Ish_2    8    

Регистры и регистраторы

Механизмы типовых конфигураций Механизмы платформы 1С v8 1cv8.cf Россия Бесплатно (free)

Отчет показывает связи между регистрами и регистраторами в конфигурации. Поможет при изучении и анализе типовых решений и самописных конфигураций.

04.11.2009    20969    564    YVolohov    29