profile="http://gmpg.org/xfn/11"> Регистр сведений 1С | Разработчику о работе с 1С:Предприятие, Pascal, Паскаль

Регистр сведений 1С

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

Пусть требуется создать некую привязку документов Поступление товаров и услуг,  Платежное поручение исходящее и Регистрация входящего налогового документа между собой. То есть задача состоит в том, что бы можно было найти однозначную связь между этими документами.  Мы не рассматриваем как это реализовано в типовых конфигураций. Наша задача изучение возможностей 1С:Предприятие 8.2. В первую очередь следует описать  структуру регистра сведений ПривязкаДокументов. Откроем 1С:Предприятие в режиме работы Конфигуратор.  Собственно для хранения информации в регистре сведений применяются измерения, ресурсы, реквизиты. Важно отметить, что регистр сведений не может содержать две одинаковые записи по измерениям.
Добавим новый регистр сведений ПривязкаДокументов, в нем создадим измерения:
с типом соответствующих документов.
1. ПоступлениеТоваровИУслуг

2. ПлатежноеПоручениеИсходящее

3. РегистрацияВходящегоНалоговогоДокумента

В нашем регистре сведений, к примеру, первая запись будет такой:

Поступление товаров и услуг № 1 от 01.09.2012 | Платежное поручение исходящее №1 от 02.09.2012 | Регистрация входящего налогового документа № 4 от 05.09.2012

Указанная запись будет единственной в этом регистре сведений: ПривязкаДокументов, с такими значениями.
Привязку будем осуществлять в документе Поступление товаров и услуг. Создадим кнопку Платежи, при нажатии которой, будет вызываться процедура:

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

Краткие комментарии к программному коду.

Обр=Обработки.ОтборДляПоступленияТоваровИУслуг; — строка, в которой обращаемся к обработке ОтборДляПоступленияТоваровИУслуг

ОснФрм=Обр.ПолучитьФорму(«Форма»,ЭтаФорма); — строка, в которой обращаемся к форме данной обработки. Аргумент ЭтаФорма — показывает, что форма документа Поступление товаров и услуг является владельцем открываемой формы обработки.

ОснФрм.ТабличноеПоле1.Отбор.Контрагент.Использование=Истина; — включаем возможность отбора по Контрагенту.

ОснФрм.ТабличноеПоле1.Отбор.Контрагент.Значение=ЭтотОбъект.Контрагент; — в этом месте вводится значение Контрагента, по которому производим отбор.

Благодаря отбору, в открываемой форме отображается информация по одному контрагенту.
Данная обработка должна быть включена в состав конфигурации 1С:Предприятие 8.2. Собственно в обработке ОтборДляПоступленияТоваровИУслуг происходит сохранение информации в регистр сведений ПривязкаДокументов. За сохранение отвечает процедура:

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

Возможно будет интересно:
Как правильно выбрать документы в запросе за один определенный день? 1С:Предприятие 8.2.
Как вывести в запросе данные по определенному виду (типу) документа. 1С:Предприятие 8.2?
Как прочитать текстовой файл в 1С:Предприятие 8.2?
Как выбрать движения определенного проведенного документа? 1С
Как сравнить тип текущего документа с определенным типом? 1С

Комментарии запрещены.