Использование флажков в динамических списках 2.0

Публикация № 1584125 13.01.22

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

Флажки флажок пометка пометки динамический список подбор выбор заполнение выделение

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

На момент решения опубликовать данный материал на инфостарте была найдена уже существующая подобная тема, а точнее некий "Зародыш". Посему, решил назвать публикацию аналогично, как бы продолжением этой эпопеи связанной с прикручиванием флажкового функционала к ДС. И вот теперь здесь и сейчас, вашему чуткому вниманию, представлена реализация уже более полноценного и наглядного примера работы динамического списка с пометками в режиме множественного и единичного выбора. Изменение значения пометки строки происходит по двойному клику мышки (событие "Выбор"). Также, можно помечать только выделенные строки (кнопками: [v] "Установить пометки" или [ ] "Снять пометки"). Событие ДС ПриПолученииДанныхНаСервере реализовано в версии платформы 8.3.10.2168, а потому начиная именно с этой версии можно пользоваться данным приёмчиком. Больше пояснять думаю ничего и необязательно, остальное немного пройдясь по коду думаю и так всё понятно станет, но если что, спрашивайте в комментах.

Внесённые в код изменения:

  • 18.01.2022 - Пофиксил существенный недочёт: когда при выборе (Процедура СписокВыбор) отключалась &ОбщаяПометка и попадался большой и не до конца пролистанный список, то в ВыбранныеДокументы соответственно не могли попадать непрочитанные порции строк ДС (Процедура СписокПриПолученииДанныхНаСервере). Благодарю dhurricane за наводку на ошибку. Выход нашел такой: добавил в пару мест список значений НевыбранныеДокументы, теперь всё отлично! Очень извиняюсь, если кто-то и куда-то уже применил код данной публикации без этой доработки, обязательно доделайте как теперь.

Запрос динамического списка с пометками и реквизиты формы подбора:

Код формы подбора:

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("АвтоТест") Тогда
		Возврат;
	КонецЕсли;
	
	Если Параметры.Свойство("РежимЕдиничногоВыбора") Тогда
		РежимЕдиничногоВыбора = Параметры.РежимЕдиничногоВыбора;
	КонецЕсли;
		
	Если Параметры.Свойство("ИсключаемыеДокументы") Тогда
		ИсключаемыеДокументы.ЗагрузитьЗначения(Параметры.ИсключаемыеДокументы);
	КонецЕсли;
	Список.Параметры.УстановитьЗначениеПараметра("ИсключаемыеДокументы", ИсключаемыеДокументы);
	
	Список.Параметры.УстановитьЗначениеПараметра("ОбщаяПометка", Истина);
	Список.Параметры.УстановитьЗначениеПараметра("ВыбранныеДокументы", Новый СписокЗначений);
	Список.Параметры.УстановитьЗначениеПараметра("НевыбранныеДокументы", Новый СписокЗначений);
	АдресХранилищаВыбранныхДокументов = ПоместитьВоВременноеХранилище(Новый СписокЗначений, УникальныйИдентификатор);
	Список.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("АдресХранилищаВыбранныхДокументов", АдресХранилищаВыбранныхДокументов);
	Список.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("РежимЕдиничногоВыбора", РежимЕдиничногоВыбора);
		
	Если Параметры.Свойство("ТекущийДокумент") Тогда
		Элементы.Список.ТекущаяСтрока = Параметры.ТекущийДокумент;
	КонецЕсли;
	
	Если РежимЕдиничногоВыбора Тогда
		Элементы.Список.МножественныйВыбор = Ложь;
		Элементы.ГруппаПометки.Видимость = Ложь;
		Элементы.СписокПометка.Видимость = Ложь;
	КонецЕсли;
	
КонецПроцедуры
	
#КонецОбласти

#Область ОбработчикиСобытийЭлементовФормы

&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
	
	Если Настройки.ДополнительныеСвойства.РежимЕдиничногоВыбора Тогда
		Возврат;
	КонецЕсли;
	
	ВыбранныеДокументы = ПолучитьИзВременногоХранилища(Настройки.ДополнительныеСвойства.АдресХранилищаВыбранныхДокументов);
		
	Для Каждого СтрокаСписка Из Строки Цикл
		Если СтрокаСписка.Значение.Данные.Пометка И ВыбранныеДокументы.НайтиПоЗначению(СтрокаСписка.Ключ) = Неопределено Тогда
			ВыбранныеДокументы.Добавить(СтрокаСписка.Ключ);
		КонецЕсли;
	КонецЦикла;

	ПоместитьВоВременноеХранилище(ВыбранныеДокументы, Настройки.ДополнительныеСвойства.АдресХранилищаВыбранныхДокументов);
	
КонецПроцедуры

&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	Если РежимЕдиничногоВыбора Тогда
		Выбрать(Неопределено);
		Возврат;
	КонецЕсли;
	
	ТекущиеДанные = Элементы.Список.ТекущиеДанные;
	ВыбранныеДокументы = ПолучитьИзВременногоХранилища(АдресХранилищаВыбранныхДокументов);
	Если ТекущиеДанные.Пометка Тогда
		СтрокаСписка = ВыбранныеДокументы.НайтиПоЗначению(Элементы.Список.ТекущаяСтрока);
		Если СтрокаСписка <> Неопределено Тогда
			ВыбранныеДокументы.Удалить(СтрокаСписка);
		КонецЕсли;
		НевыбранныеДокументы.Добавить(Элементы.Список.ТекущаяСтрока);
	Иначе
		СтрокаСписка = НевыбранныеДокументы.НайтиПоЗначению(Элементы.Список.ТекущаяСтрока);
		Если СтрокаСписка <> Неопределено Тогда
			НевыбранныеДокументы.Удалить(СтрокаСписка);
		КонецЕсли;
		ВыбранныеДокументы.Добавить(Элементы.Список.ТекущаяСтрока);
	КонецЕсли;	
	
	ПоместитьВоВременноеХранилище(ВыбранныеДокументы, АдресХранилищаВыбранныхДокументов);
	
	Список.Параметры.УстановитьЗначениеПараметра("ВыбранныеДокументы", ВыбранныеДокументы);
	Список.Параметры.УстановитьЗначениеПараметра("НевыбранныеДокументы", НевыбранныеДокументы);
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура УстановитьПометки(Команда)
	
	ИзменитьПометки(Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура СнятьПометки(Команда)
	
	ИзменитьПометки(Ложь);
	
КонецПроцедуры

&НаКлиенте
Процедура ИзменитьПометки(Значение)
	
	Если Элементы.Список.ВыделенныеСтроки.Количество() > 1 Тогда
		
		ВыбранныеДокументы = ПолучитьИзВременногоХранилища(АдресХранилищаВыбранныхДокументов);
		
		Для Каждого СтрокаСписка Из Элементы.Список.ВыделенныеСтроки Цикл
			
			СтрокаВыбранных = ВыбранныеДокументы.НайтиПоЗначению(СтрокаСписка);
			Если Значение Тогда
				Если СтрокаВыбранных = Неопределено Тогда
					ВыбранныеДокументы.Добавить(СтрокаСписка);
				КонецЕсли;
			Иначе
				Если СтрокаВыбранных <> Неопределено Тогда
					ВыбранныеДокументы.Удалить(СтрокаВыбранных);
				КонецЕсли;
			КонецЕсли;
			
		КонецЦикла;
		
		ПоместитьВоВременноеХранилище(ВыбранныеДокументы, АдресХранилищаВыбранныхДокументов);
		
		Список.Параметры.УстановитьЗначениеПараметра("ОбщаяПометка", Ложь);
		Список.Параметры.УстановитьЗначениеПараметра("ВыбранныеДокументы", ВыбранныеДокументы);
		
	Иначе
		
		ПоместитьВоВременноеХранилище(Новый СписокЗначений, АдресХранилищаВыбранныхДокументов);
		
		Список.Параметры.УстановитьЗначениеПараметра("ОбщаяПометка", Значение);
		Список.Параметры.УстановитьЗначениеПараметра("ВыбранныеДокументы", Новый СписокЗначений);
		
	КонецЕсли;	
	
КонецПроцедуры

&НаКлиенте
Процедура Выбрать(Команда)
	
	Если РежимЕдиничногоВыбора Тогда
		ВыбранныйДокумент = Элементы.Список.ТекущаяСтрока;
		Если ВыбранныйДокумент = Неопределено Тогда
			Возврат;
		КонецЕсли;
		ВыбранныеДокументы = Новый СписокЗначений;
		ВыбранныеДокументы.Добавить(ВыбранныйДокумент);
		Список.Параметры.УстановитьЗначениеПараметра("ОбщаяПометка", Ложь);
		Список.Параметры.УстановитьЗначениеПараметра("ВыбранныеДокументы", ВыбранныеДокументы);
	КонецЕсли;
	
	ПараметрыВыбора = Новый Структура;
	ПолучитьДанныеИЗаполнитьПараметры(ПараметрыВыбора);
	
	ОповеститьОВыборе(ПараметрыВыбора);
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

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

	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД, Настройки , , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
	
	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
	
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
	Возврат ПроцессорВывода.Вывести(ПроцессорКомпоновки);
	
КонецФункции

&НаСервере
Процедура ПолучитьДанныеИЗаполнитьПараметры(СтруктураПараметров)
	
	Результат = ПолучитьСписокТаблицойЗначений();
	
	СтруктураПараметров.Вставить("ВыбранныеДокументы", ОбщегоНазначения.ТаблицаЗначенийВМассив(Результат));
		
КонецПроцедуры

#КонецОбласти

 

 

События интеграции для открытия формы подбора:

Код интеграции для работы с формой подбора:

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура Подобрать(Команда)
	
	Если Объект.ДокументыЗаказов.Количество() Тогда
		КнопкиДиалога = Новый СписокЗначений;
		КнопкиДиалога.Добавить(КодВозвратаДиалога.Да, "Очистить и Заполнить");
		КнопкиДиалога.Добавить(КодВозвратаДиалога.Нет, "Добавить");
		КнопкиДиалога.Добавить(КодВозвратаДиалога.Отмена, "Отмена");
		ОписаниеОповещения = Новый ОписаниеОповещения("ПодобратьПослеВопроса", ЭтотОбъект);
		ПоказатьВопрос(ОписаниеОповещения, "В таблице имеются строки, как поступить?", КнопкиДиалога,,, "Заполнение по заказам");
	Иначе
		ПодобратьПослеВопроса(КодВозвратаДиалога.Нет, Неопределено);
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовФормы

&НаКлиенте
Процедура ПодобратьПослеВопроса(Результат, ДополнительныеПараметеры) Экспорт
	
	Если Результат = КодВозвратаДиалога.Да Тогда
		Объект.ДокументыЗаказов.Очистить();
	КонецЕсли;
	
	Если Результат <> КодВозвратаДиалога.Отмена Тогда
		ОткрытьФормуПодбора();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
	
	Если ВыбранноеЗначение = Неопределено Тогда
		Возврат;
	КонецЕсли;
		
	Если ИсточникВыбора.ИмяФормы = "ВнешняяОбработка.ДинамическийСписокСПометками.Форма.ФормаПодбора" Тогда
		
		Для Каждого ВыбранныйДокумент Из ВыбранноеЗначение.ВыбранныеДокументы Цикл
			НоваяСтрока = Объект.ДокументыЗаказов.Добавить();
			НоваяСтрока.Документ = ВыбранныйДокумент.Документ;
		КонецЦикла;
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ДокументНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ТекущаяСтрока = Элементы.ДокументыЗаказов.ТекущиеДанные;
		
	ПараметрыОткрытия = Новый Структура;
	ПараметрыОткрытия.Вставить("РежимЕдиничногоВыбора", Истина);
	ПараметрыОткрытия.Вставить("ТекущийДокумент", ТекущаяСтрока.Документ);
	ОткрытьФормуПодбора(ПараметрыОткрытия);
		
КонецПроцедуры

&НаКлиенте
Процедура ДокументОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	Если ВыбранноеЗначение = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ТекущаяСтрока = Элементы.ДокументыЗаказов.ТекущиеДанные;
	ТекущаяСтрока.Документ = ВыбранноеЗначение.ВыбранныеДокументы[0].Документ;
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаКлиенте
Процедура ОткрытьФормуПодбора(ПараметрыОткрытия = Неопределено)
	
	Если ПараметрыОткрытия = Неопределено Тогда
		ПараметрыОткрытия = Новый Структура;
	КонецЕсли;
	
	//++ Необязательное: для случаев когда нужно исключить уже подобранные
	ИсключаемыеДокументы = Новый Массив;
	Для Каждого СтрокаТаблицы Из Объект.ДокументыЗаказов Цикл
		Если ЗначениеЗаполнено(СтрокаТаблицы.Документ) Тогда
			ИсключаемыеДокументы.Добавить(СтрокаТаблицы.Документ);
		КонецЕсли;
	КонецЦикла;
	ПараметрыОткрытия.Вставить("ИсключаемыеДокументы", ИсключаемыеДокументы);
	//--
	
	ОткрытьФорму("ВнешняяОбработка.ДинамическийСписокСПометками.Форма.ФормаПодбора", 
		ПараметрыОткрытия, ЭтаФорма, УникальныйИдентификатор,,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
	
КонецПроцедуры

#КонецОбласти

З.Ы.: Ну а если вдруг, у кого-то возникнет непреодолимое желание очень поблагодарить автора, то он может скачать обработку с примером, лично я не против :). Там задействованы ссылки на типовой документ ЗаказКлиента. По идее, подойдет для любой конфигурации, где есть такой документ, и даже если его не окажется, всегда можно на любой другой переназначить.

Пользуйтесь на благо! Всем Радости и Добра!

Скачать файлы

Наименование Файл Версия Размер
Динамический список с пометками

.epf 18,16Kb
12
.epf 1.1 18,16Kb 12 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. o.nikolaev 207 16.01.22 01:18 Сейчас в теме
Если 1 млн. записей пометить, то что произойдет?
kser87; maksa2005; +2 Ответить
3. ActionBlog 17.01.22 09:19 Сейчас в теме
(1) Палец устанет галочки нажимать 100% :)
rovenko.n; +1 Ответить
6. VKislitsin 727 17.01.22 10:35 Сейчас в теме
(3) Так там ведь для выделенных строк ставятся. Один раз ctrl-a, второй раз согласиться с выделением больше тыщи. Дождаться когда "отлипнет" и тынц в кнопку :)
А если серьезно, у нас такой подход реализован в продуктиве. Записей не миллион, а несколько тысяч всего лишь. Но бизнес-процесс не предусматривает большого количества галочек - ставятся только поштучно. Работает.
8. o.nikolaev 207 17.01.22 12:34 Сейчас в теме
(6) :) Ну если с таким предусловием-то, то конечно. Нет, я понимаю что у примера сценарий использования "с ограничениями". Только это как-то не указано. И на больших базах, если кто-то хлопнет выделение очень большого количества записей можно столкнуться с проблемами я так понимаю.
9. VKislitsin 727 17.01.22 12:54 Сейчас в теме
(8) Олег, ладно тебе придираться :)
Не у всех есть большие базы. А у кого есть, тот сам подумает об ограничениях.

если кто-то хлопнет выделение очень большого количества записей

Да просто не дождется окончания выделения - будет писать в техподдержку "база висит" :)
rovenko.n; o.nikolaev; mr_sav; +3 Ответить
5. SnubbyAston 49 17.01.22 09:38 Сейчас в теме
(1) Главное в статье необычный подход =) А минусы можно найти почти всегда. Для определенных задач точно можно использовать. Для справочника в тысячу значений максимум, например.
А можно еще и таблицу подобранного снизу прикрутить аналогично.
2. user1067792 17.01.22 08:46 Сейчас в теме
У вас опечатка в наименовании второго параметра в процедуре ПодобратьПослеВопроса(): ДополнительныеПарамтеры -> ДополнительныеПараметры.
11. mr_sav 72 17.01.22 18:07 Сейчас в теме
(2) Благодарю, поправлю, но особо это ничего не улучшит, кроме навыков правописания русского языка.
4. the1 1101 17.01.22 09:20 Сейчас в теме
Зачем флажки в ДС? Зачем вообще эта публикация, если в исходной и так всё описано, причем даже лучше.
Прикрепленные файлы:
nekit_rdx; kuzyara; 7OH; Revachol; Yashazz; ixijixi; +6 1 Ответить
12. mr_sav 72 17.01.22 18:21 Сейчас в теме
(4) Ну если там для тебя лучше - так лучше, я и не соревнуюсь за крутое описание, странный ты). И мне, например, в некоторых случаях быстрее и удобнее работать с ДС (и с его КомпоновщикомНастроек) чем с ТЗ. По-моему тебе просто внимания не хватает и видимо по большей части хотелось просто картинку котика поюзать)).
Obertone; starik-2005; +2 2 Ответить
15. the1 1101 18.01.22 10:07 Сейчас в теме
(12) Ну то есть ты фактически скопировал отлично оформленную исходную публикацию, ухудшив качество подаваемого материала, а странный я. Окей. Про ТЗ я вообще ни слова не сказал, откуда претензия? Котик да, давно просился погулять.
nekit_rdx; starik-2005; ixijixi; +3 Ответить
20. mr_sav 72 18.01.22 16:25 Сейчас в теме
(15) Взял тот же принцип работы с ДС, на его основе захотелось сделать пофункциональнее форму выбора. Сделал для задачи заказчика. Потом решил в качестве примера опубликовать, может кому пригодится, поискал и нашел уже подобную тему, но как по мне, пример из той публикации менее функционален, там нет множественного выбора. Присмотрись внимательнее и уверен ты обязательно найдешь отличия, иначе зачем бы я тратил своё драгоценное время и тоже самое публиковал, тем более в свободный доступ. Добра тебе, внимательности и радостного котика)
Obertone; +1 Ответить
7. dhurricane 17.01.22 11:51 Сейчас в теме
Тоже есть пара вопросов:
1. Зачем в обработчике "ПриПолученииДанныхНаСервере" обновляется список выбранных документов по данными пометки, если сама пометка зависит от этого списка?
2. Зачем для возврата списка ссылок используется СКД, если уже есть коллекция ВыбранныеДокументы?
3. Немного непредсказуемо на мой взгляд работает установка всех флажков. При нажатии на кнопку помечаются все документы, а уже при завершении выбора возвращаются ссылки с учетом пользовательских отборов.
the1; mr_sav; RustIG; +3 Ответить
13. mr_sav 72 17.01.22 18:48 Сейчас в теме
(7)
1. Для того, что, если ты не все строки будешь выбирать, то тебе надо их куда-то собирать. ДС построчно ты просто так не обойдешь, а в ПриПолученииДанныхНаСервере всё для этого имеется.
2. Затем, чтобы получить все выбранные строки со всеми колонками выведенными на форму, а не только "ключ строки". Если для твоих задач это не надо, то и используй только список значений ВыбранныеДокументы, никто не запрещает.
3. Не понял тебя, попонятнее поясни?

А вообще, я тебе советую, прежде чем подобные вопросы задавать, взять самому да попробовать набросать обработку на основе предоставленного кода, и там уже что-нибудь убрать тебе непонятное и посмотреть результат, сразу наглядно поймешь что лишнего здесь ничего нет. Код и скрины в свободном доступе, не поленись.
16. dhurricane 18.01.22 10:53 Сейчас в теме
(13) 1. Я как раз и спросил, зачем их "собирать"? Они же собираются в обработчике события "СписокВыбор". Зачем дополнительная работа? Это нужно для обновления списка выбранных после нажатия на кнопку "Выбрать все"? Если так, то такой финт не сработает, ведь в обработчике данные появляются порциями. И если какие-то порции не прогрузились (пользователь не пролистал список), то и в список выбранных они не попадут.
2. Точно, не обратил внимание.
3. У пользователя настроен свой собственный отбор в списке. Он жмет "Выбрать все". Если он снимет свой отбор, то увидит помеченными и те документы, что ранее были невидимы из-за отбора. Но если отбор не снимать, а завершить выбор в форме, то будут возвращены лишь данные по видимым документам. Эта разница между выбранными и возвращаемыми и кажется не очевидной.

В дополнение желаю Вам спокойнее принимать критику в адрес своей работы. Я вполне неплохо умею читать код, и здесь мне не зачем что-то смотреть в отладчике. То, что Вы в своих тестах своими глазами не видите ошибок, не значит, что их нет. Также, как и не значит, что другие не могут их увидеть глядя на код, без просмотра результата воочию.
nekit_rdx; mr_sav; +2 Ответить
24. mr_sav 72 18.01.22 17:37 Сейчас в теме
(16)
1. Точно, не обратил внимание, что, если список не малый и без ОбщаяПометка и не пролистано, то в СписокВыбора попадут только из прочитанной порции в ПриПолученииДанныхНаСервере. Буду щас думать как пофиксить это упущение. Благодарю за полезную критику, такое в наше время редко бывает).
3. Ну не знаю насколько эти моменты значимы для кого-то, что:
1) Если будет сделан пользовательский отбор (в том числе и через Найти) и он не будет снят, то, то что видишь, то и попадет
2) Если будет сделан пользовательский отбор (в том числе и через Найти) и нажать кнопку "Пометить всё" без выделенных строк, то такой отбор не учитывается. Здесь как аналоги использую: Отбор + Ctrl+A + "Пометить всё" + "Снятие отбора"
Если честно, на счет этого пока не думал, но если кто-то раньше возьмется это проработать и поделится, буду рад информации о результатах.
25. dhurricane 18.01.22 17:44 Сейчас в теме
(24) Предполагаю, что неоднозначность из пункта 3 уйдет сама собой вместе с решением проблемы из пункта 1. Видится, что корень у этих проблем один и тот же.
26. mr_sav 72 19.01.22 00:30 Сейчас в теме
(25)
1. Доработал. Ещё раз благодарю, что обратил на это внимание.
3. Пока решил не заморачиваться, как по мне, так пока вполне хватает и удобно работать с отобранными строками через выделение строк: Отбор (в том числе через Найти) -> (Ctrl+A либо выделение нужных строк с зажатым Shift) -> Кнопка "Установить пометки" или "Снять пометки" -> Снятие отбора
10. coollerinc 159 17.01.22 17:09 Сейчас в теме
Делал нечто подобное. Но двойной клик для установки флажка это непривычно и пользователи всегда непонимали, почему флажок не ставится. Привычно флажки ставить одним кликом. И обычно когда нужно где то ставить флажки, обычно строк не так много, максимум пару тысяч. Делал с помощью обычной таблицы значений.
18. RustIG 18.01.22 16:13 Сейчас в теме
(10) у меня получилось через динамический список
https://youtu.be/8P9iH4AddfQ
19. coollerinc 159 18.01.22 16:19 Сейчас в теме
(18) На видео у вас же двойным кликом ставится флажок? Я просто не понял ваше сообщение, что у вас получилось? Или это не мне
21. RustIG 18.01.22 16:40 Сейчас в теме
(19) сообщение для вас и других - мне казалось, что флажок реально сделать только через таблицу значений, как вы и сказали, и что двойной клик будет помехой. Но я попробовал реализовать на динамическом списке и мне показалось, что двойной клик не так ужасен. просто поделился с вами.
22. mr_sav 72 18.01.22 16:58 Сейчас в теме
(21) И я про тоже... например, чтобы просто сфокусироваться на поле, для того чтобы отбор поставить, либо скопировать данные из поля, параллельно будет срабатывать событие пометки. Мне такое не удобно, поэтому тут вот так, но это дело вкуса, не думаю что есть смысл спорить на этот счет, как говорится "на вкус и цвет..."
23. RustIG 18.01.22 16:59 Сейчас в теме
(22) я проникся вашим решением, плюс поставил
27. mr_sav 72 19.01.22 00:33 Сейчас в теме
28. RustIG 19.01.22 07:50 Сейчас в теме
(27) я тестировал и пробовал реализовать флажки в дин. списке - в итоге пришел к тому, как у вас, и к еще одному способу - написал тут https://infostart.ru/public/1587487/
пусть будет для истории - программистам, думаю, пригодится
14. avd74 3 18.01.22 07:58 Сейчас в теме
Насколько я понял, процедура ДокументОбработкаВыбора основной формы остаётся за бортом. Процедура ДокументНачалоВыбора открывает форму подбора, а из неё данные получаются через ОповеститьОВыборе / ОбработкаВыбора. Или я не прав?
17. qwinter 645 18.01.22 11:09 Сейчас в теме
(14) Угу, при том, что сделать отметку по одному клику плевое дело.
29. kirill_sh 19.01.22 23:14 Сейчас в теме
Интересное решение можно брать на вооружение
Оставьте свое сообщение

См. также

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар") Промо

Механизмы платформы 1С v8 v8::Запросы 1cv8.cf Абонемент ($m)

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

1 стартмани

01.06.2018    40371    101    m-rv    58    

Быстрое обновление базы 1С из XML-файлов конфигурации (EDT-GIT)

DevOps и автоматизация разработки EDT Обновление 1С Механизмы платформы 1С v8 1cv8.cf Россия Абонемент ($m)

Быстрое обновление конфигурации и базы данных 1С, вместо долгого обновления из EDT (1C:Enterprise Development Tools) при использовании хранилища GIT. Непосредственное обновлении базы на сервере баз данных (минуя сервер 1С) из XML-файлов конфигурации при помощи утилиты автономного сервера 1С - ibcmd.

1 стартмани

13.07.2022    2635    1    Bitnikov    16    

Автоподстановка, автоподбор города из адресного классификатора

Универсальные обработки Механизмы платформы 1С v8 БП3.0 УТ11 Абонемент ($m)

Обработка показывает как работает событие автоподбор у элемента формы Поле Ввода. Когда начинаем вводить первые буквы города. выпадает подсказка с городами из Кладр, загруженного в регистр сведений АдресныеОбъекты.

1 стартмани

20.06.2022    561    0    aleksandrstep    0    

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

Механизмы платформы 1С v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

19.01.2022    5082    50    RustIG    13    

Расширения конфигураций 1С: учимся перехватывать методы Промо

Механизмы платформы 1С v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

30.05.2017    188010    13    signum2009    51    

Скорость сложения строк большой длины в 1С разными методами (конкатенация строк)

Механизмы платформы 1С v8 1cv8.cf Абонемент ($m)

Как известно, в 1С со строковыми переменными часто приходится работать в режиме добавления строк в одну переменную. Когда строка небольшой длины, все происходит достаточно быстро и можно работать вот так: Строка1 = "Привет"; Строка2 = "мир!"; Результат = Строка1 + Строка2; И все замечательно ровно до того момента, когда эти строки не становятся большими... Тогда скорость работы значительно падает. Я провел небольшие замеры производительности и выношу их на суд общественности.

1 стартмани

02.01.2022    5198    1    Diversus    73    

Динамическая модификация форм в расширении

Механизмы платформы 1С v8 ERP2 Абонемент ($m)

Пример динамического изменения форм расширением конфигурации без заимствования формы.

1 стартмани

05.04.2021    4867    1    a.zernin    1    

Режим агента конфигуратора на практике

Инструментарий разработчика Групповая разработка (Git, хранилище) Механизмы платформы 1С v8 1cv8.cf Абонемент ($m)

Полезные практические заметки о работе с конфигуратором с режиме агента.

1 стартмани

03.03.2021    3371    1    redtram    2    

Асинхронные вызовы Промо

Механизмы платформы 1С v8 1cv8.cf Абонемент ($m)

В этой статье я покажу свою реализацию асинхронных вызовов серверных функций и процедур

1 стартмани

02.02.2015    54287    180    rtnm    33    

Навигационная ссылка в платформе 8.2

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

Получение ссылки на объект / Переход по ссылке в платформе 8.2 (обычное приложение).

1 стартмани

27.10.2020    4390    5    PerlAmutor    4    

Заполнение выделенных строк таблицы

Механизмы платформы 1С v8 1cv8.cf Абонемент ($m)

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

1 стартмани

28.01.2020    10469    7    sulfur17    15    

Вывод характеристик и их значений в динамический список

Механизмы платформы 1С v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Если в запросе динамического списка используется конструкция {ХАРАКТЕРИСТИКИ ...}, то как вывести на форму колонки с характеристиками?

1 стартмани

22.02.2019    10845    3    kasper076    4    

Три урока 1С81 для переходящих с 1с77 Промо

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

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

1 стартмани

09.02.2012    21333    44    fixin    12    

Работа с деревом значений для новичков (Управляемые формы 8.3)

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

Пример работы с деревом значений (для новичков) на управляемых формах (8.3)

1 стартмани

29.01.2019    80322    97    gubar    0    

Связанные табличные части (управляемые формы)

Механизмы платформы 1С v8 v8::УФ Абонемент ($m)

У нас есть 2 связанные табличные части, и нам надо, чтобы по текущей строке в одной из них мы видели только определенные строки во второй. Были бы у нас динамические списки, мы бы взяли событие "При активизации строки" и стандартный механизм отборов СКД, которая лежит в основе списка. Но вот с табличными частями так не получится. Тут нам надо будет написать несколько строк кода и использовать "ОтборСтрок", доступный для таблицы формы. Тестировалось на платформе 8.3.13.1644, будет работать и на более ранних версиях платформы.

1 стартмани

25.01.2019    24331    23    Kim1C    11    

Пример работы с Планировщиком 1С (УФ)

Механизмы платформы 1С v8 v8::УФ 1cv8.cf Абонемент ($m)

В 1С 8.3.х появился такой объект, как "Планировщик". О нем и пойдет речь.

1 стартмани

26.06.2018    24178    115    MKFreeUser    27    

История хранения данных. Теперь в составе платформы

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

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

2 стартмани

14.11.2017    41598    68    vasilev2015    76    

Выбор файла и загрузка его на сервер в асинхронном режиме по фен-шую

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

Жизнь без модальности и велосипедов.

1 стартмани

14.11.2017    7671    4    huxuxuya    3    

Асинхронное воспроизведение звука в 1С

Механизмы платформы 1С v8 1cv8.cf Абонемент ($m)

Достаточно простой пример как в 1С:Предприятие запустить воспроизведение звука и не ждать его окончания

2 стартмани

28.07.2017    14775    3    SITR-utyos    7    

Изучение событий 1С для программирования

Механизмы платформы 1С v8 Россия Абонемент ($m)

Какие события и в какой последовательности вызываются платформой 1С? Куда лучше поместить свой программный код, чтобы добиться нужного поведения программы? Предлагаю разработку «Изучение событий» которая облегчит поиск ответов на такие вопросы.

2 стартмани

12.03.2017    30263    46    rusmil    21    

Поиск по наименованию в динамическом списке

Оптовая торговля Механизмы платформы 1С v8::ОУ v8::УФ УТ11 Абонемент ($m)

Пример позиционирования в динамическом списке по набранной строке

1 стартмани

08.02.2017    18131    6    waol    0    

Как построить цепочку асинхронных вызовов

Механизмы платформы 1С v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

11.01.2017    27319    6    json    70    

Работа с двоичными данными на примере чтения файлов изображений. Новые возможности 8.3.9

Универсальные функции Механизмы платформы 1С v8 1cv8.cf Россия Абонемент ($m)

В статье приводятся новые функции по работе с двоичными данными, появившимися в версии платформы 8.3.9 , на примере анализа формата и размера изображений. А также пример отправки изображения через API ВКонтакте с помощью новых объектов (без использования ОбъединитьФайлы())

1 стартмани

14.11.2016    41676    19    Anton64    25    

ComSafeArray Hexadecimal. О преобразовании массива байт в строку шестнадцатеричных чисел

Механизмы платформы 1С v8 1cv8.cf Абонемент ($m)

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

1 стартмани

16.09.2016    10864    2    igel9780    1    

Объектные блокировки

Механизмы платформы 1С v8 Россия Абонемент ($m)

При работе с объектными данными (справочники, документы, планы счетов и т.д.) система «1С:Предприятие» обеспечивает два вида объектных блокировок: пессимистическую и оптимистическую. Они позволяют выполнять целостные изменения объектов при одновременной работе нескольких пользователей.

1 стартмани

17.08.2016    43234    12    Ranis1286    7    

[Расширения] Отборы в динамических списках

Механизмы платформы 1С v8 1cv8.cf Абонемент ($m)

Часто на практике возникают ситуации, когда в 1С 8.3 нужно настроить доступ к колонкам динамического списка по определенным критериям (нужно так настроить доступ, чтобы пользователь видел только то, что ему разрешено и не имел возможности изменить эти настройки). Но конфигурация стоит на поддержке и менять ничего нельзя. Предлагаемый пример показывает, как можно с помощью механизма расширений управлять отборами в динамических списках*. * В дополнение к механизму http://infostart.ru/public/437760/ "Динамическое управление видимостью и доступностью элементов форм"

1 стартмани

21.05.2016    12246    12    OlegK    6    

Когда контекстный вызов быстрее неконтекстного?*

Механизмы платформы 1С v8 1cv8.cf Абонемент ($m)

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

1 стартмани

22.03.2016    13866    6    Fragster    6    

Программное создание колонок в табличном поле с полем ввода Флажок (чекбокс) (1С 8.2)

Механизмы платформы 1С v8 Абонемент ($m)

С возможностью быстрого выбора всех значений по строкам и столбцам. Где важно слово «все», галки проставляются по горизонтали или по вертикали соответственно.

1 стартмани

13.01.2016    23295    2    Wilka    1    

Расширения конфигурации и Контроль несогласованных изменений

Механизмы платформы 1С v8 УТ10 УПП1 Абонемент ($m)

Как обойти "контроль несогласованных изменений" при добавлении своих обработчиков в "расширения конфигурации".

1 стартмани

21.12.2015    29386    16    a_v_u    10    

Возможности перетаскивания, примеры использования, помощь в понимании и отладке механизма работы (8.3, управляемые формы)

Работа с интерфейсом Механизмы платформы 1С v8 1cv8.cf Абонемент ($m)

Механизм перетаскивания используется редко, а ведь его использование может помочь в реализации интуитивно понятных функций, которые могут весьма ускорить работу пользователя, и получить в итоге более дружественный интерфейс. Данная обработка не содержит копированного из Синтакс-Помощника текста (его вы сможете прочитать и сами). Она показывает примеры использования перетаскивания; позволяет прямо в режиме Предприятия протестировать, проверить и отладить основные приёмы работы; понять принцип вызова событий и увидеть состав их параметров.

1 стартмани

17.11.2015    48847    120    Alias    17    

Механизм контроля заполнения реквизитов

Механизмы платформы 1С v8 1cv8.cf Абонемент ($m)

Механизм позволяет в пользовательском режиме настраивать контролируемые реквизиты, тем самым помогает справиться с невнимательностью пользователей. Не требует снятия с поддержки типовых объектов, внося минимум изменений в конфигурацию. Не привязан ни к конкретным конфигурациям, ни к БСП.

1 стартмани

25.10.2015    18144    33    yur4ik9408    10    

Восстановление развернутых строк ДереваЗначений после его обновления (управляемая форма)

Механизмы платформы 1С v8 1cv8.cf Абонемент ($m)

ДеревоЗначений - достаточно простой для работы объект в 1С:Предприятии. И проблем при работе с ним обычно не возникает. Но те приемы, которые используются в обычном приложении, часто перестают работать после перехода на управляемое. В частности, возникла проблема восстановления состояния развернутых ветвей после обновления дерева. Оно целиком сворачивалось, и пользователь терялся. Эта статья будет посвящена вопросу восстановления состояния строк дерева. В качестве "подопытного" использую справочник Номенклатура лишь потому, что он присутствует почти во всех конфигурациях, и почти всегда имеет иерархический вид. Добро пожаловать под кат.

1 стартмани

16.10.2015    18168    10    azhilichev    6    

Доработка регистра сведений «Сохраненные настройки».

Механизмы платформы 1С v8 КА1 УТ10 УПП1 Абонемент ($m)

Сортировка и отбор настроек пользователей в отчете.

1 стартмани

09.09.2015    12324    2    Re:аниматор    2    

Быстрое редактирование строк динамического списка

Механизмы платформы 1С v8 1cv8.cf Абонемент ($m)

Быстрая интерактивная работа с данными справочников.

1 стартмани

04.09.2015    18956    24    hobi    1    

Управляемая форма 1С 8.2(8.3) – работа с деревом значений и таблицей значений. Часть III (Реализация трехпозиционного флажка)

Механизмы платформы 1С v8 1cv8.cf Абонемент ($m)

Продолжаем работать с деревом значений в управляемом приложении 1С 8.2. Данная статья будет посвящена реализации трехпозиционного флажка для ДереваЗначений на управляемой форме 1С предприятия 8.2

2 стартмани

15.05.2015    59437    27    ll13    10    

Управляемая форма 1С 8.2(8.3) – работа с деревом значений и таблицей значений. Часть II (Реализация DRAG and DROP)

Работа с интерфейсом Механизмы платформы 1С v8 1cv8.cf Абонемент ($m)

Реализация механизма Drag and Drop (или, проще говоря, “Перетаскивания”) для ДереваЗначений, расположенного на управляемой форме управляемого приложения 1С 8.2

2 стартмани

15.05.2015    34071    20    ll13    2    

Управляемая форма 1С 8.2 (8.3) – работа с деревом значений и таблицей значений. Часть I (Основы)

Работа с интерфейсом Механизмы платформы 1С v8 1cv8.cf Абонемент ($m)

Как известно, в платформе 1С 8.1 не составляло никакого труда связать дерево значений с табличным полем на форме, единственное, что при этом нужно было не забыть, так это СоздатьКолонки(). В управляемом приложении 1С 8.2 (8.3) сделать это не так просто, как кажется на первый взгляд. В данной статье речь пойдет о программном создании дерева значений (таблицы значений) на управляемой форме в управляемом приложении 1С

2 стартмани

14.05.2015    97148    28    ll13    13    

Особенность использования метода ИзменитьРеквизиты()

Механизмы платформы 1С v8 1cv8.cf Абонемент ($m)

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

1 стартмани

23.04.2015    9824    2    veretennikoff    2    

Расчет контрольной суммы строки по алгоритму CRC32 методами встроенного языка платформы "1С:Предприятие" (версии ранее 8.3)

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

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

1 стартмани

03.04.2015    19823    21    premierex    20    

Разработка конфигурации на основе учебника М.Г.Радченко "1C: Предприятие 8.2. Практическое пособие разработчика"

Механизмы платформы 1С v8 Россия Абонемент ($m)

Все студенты сталкиваются с подобными заданиями по 1С: "сделать всю книгу!", просиживание за механическими повторениями действий автора, вместо плодотворного самообучения с использованием передовых статей и видеоуроков. В моем случае пришлось выполнять 19 глав учебника М.Г.Радченко "1C Предприятие 8.2. Практическое пособие разработчика", а это - 591 страница мутного текста.

1 стартмани

22.12.2014    13272    15    fisa2693    9    

Свои предопределенные элементы (новый подход)

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

Предопределенные элементы своими руками =)

1 стартмани

01.11.2014    14610    4    igo1    11