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

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

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

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

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

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

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

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

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

Вот простейший пример из книги Габеца:

НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
	
НаборЗаписей.Отбор.Валюта.Установить(ТекущаяВалюта);
НаборЗаписей.Отбор.Период.Установить(ТекущаяДата);
	
НовЗапись = НаборЗаписей.Добавить();

НовЗапись.Валюта 	= ТекущаяВалюта;
НовЗапись.Период 	= ТекущаяДата;
НовЗапись.Курс 		= ТекущийКурс;
НовЗапись.Кратность = ТекущаяКратность;

НаборЗаписей.Записать(Истина);
 

Просто добавляем отбор по периоду и смело записываем текущей датой, если к примеру регистр с дневной периодичностью.

Как проверить наличие записей в непериодическом независимом регистре сведений?

Код под 8.х:

НаборЗаписей =

РегистрыСведений.ОбъектыСтроительстваОрганизаций.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Организация.Установить(УдаляемаяОрганизация); НаборЗаписей.Прочитать(); Если НаборЗаписей.Количество() > 0 Тогда Возврат; КонецЕсли; //если хотим удалить, то после отбора записываем НаборЗаписей.Записать();