Как открыть форму списка регистра сведений на подбор?

Когда в базе скапливается много информации – проще все данные хранить в регистрах – место существенно экономится и файловые вариант 1Ски не так сильно распухает. Встает вопрос – как работать с регистром сведений в 1С, если записей порядка нескольких миллионов. Запросы ко всем записям подвисают. Поэтому эффективней подбирать нужное количество записей и обрабатывать. Как осуществить подбор записей регистра сведений в табличное поле на форме обработки. Привожу довольно топорный код – желающие могут его доработать.

Кнопка Подбор на форме обработки:

Процедура КоманднаяПанель2Подбор(Кнопка) ФормаВыбора = РегистрыСведений.Курсы.ПолучитьФорму(«ФормаСписка»); ФормаВыбора.ВладелецФормы = ЭтаФорма; //ФормаВыбора.Открыть(); ФормаВыбора.РежимВыбора = Истина; ФормаВыбора.ЗакрыватьПриЗакрытииВладельца = Истина; ФормаВыбора.ЗакрыватьПриВыборе = Истина; ВыбранныйЭлемент = ФормаВыбора.ОткрытьМодально(); Для Каждого Эл Из ВыбранныйЭлемент.Домен Цикл Стр = Домены.Добавить(); Стр.Домен = Эл.АдресСайта; КонецЦикла; КонецПроцедуры

Далее в самой форме списка регистра сведений добавляем следующую процедуру выбора:

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

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

В типовых конфах можно смотреть как сделана КонтактаяИнформация – там по цивильней все выглядит.

Добавить комментарий