Регистр сведений 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С