Как связать регистр сведений с документами 1с

Обновлено: 24.06.2024

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

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

Задача такая. Едет проверяющий на объект, составляет акт, в акте отражаются - подрядная организация, объект, выявленные нарушения и соответствующее НТД. Существует необходимость просмотреть информацию об организации и ее объектах, о нарушении и в каких НТД они прописываются и наоборот. У одной организации может быть несколько объектов, у одного объекта несколько организаций. Одно нарушение может быть прописано в разных документах, в одном НТД - разные нарушения. База должна пополняться с каждым новым выездом на объект. В идеале, это все делаться с мобильного приложения и последующей синхронизацией с компьютером.

Перенос значения из справочника в форму регистра сведений
Здравствуйте. Возникла такая проблема. Имеется справочник Номенклатура, в котором находится.

Связать форму справочника и регистра сведений по физлицу
начинающий программист 1с, стала задача связать форму справочника и регистра сведений по физлицу.

Вывод в табличную часть справочника данных из регистра сведений
Здравствуйте! Есть справочник и РС. Надо в табличную часть справочника вывести данные из РС.


Заполнить табличную часть справочника данными из регистра сведений
Здравствуйте! Есть регистр сведений, в который имеет 5 записей: а, б, в, г, д. В табличной части.

то есть, полка нет ни справочников, ни регистров? Вам нужна постановка задачи в виде тех. задания?
Вам хватит пока одного регистра сведений и Общей формы со списком этого регистра. Документ - это акцепт какого-либо события, имеющий юридическое значение. Сначала пишите в регистр прямо.
Справочники Нарушения, Объекты, Организации. Всё это пихаете в регистр в качестве измерений + Период. Либо заказываете системный опцией Периодический, либо своё измерение типа Дата.
Связь нарушений и НТД неясна, - по Вашей ситуации.

Лень – двигатель прогресса. Эту фразу любила повторять моя школьная преподаватель математики, и по совместительству директор школы, когда приводила примеры решения одной и той же задачи разными путями, один из которых выглядел много проще и короче остальных. Работа программиста в этот принцип вписывается как нельзя лучше. По большому счету, мы стремимся, чтобы система учета работала как часы, потому что лень заниматься поддержкой пользователей. Ведь гораздо удобнее, когда пользователь в поддержке не нуждается и не отвлекает лишний раз от более серьезных занятий, чем разбирательства с ошибкой в данных. Мы стремимся делать наш код удобочитаемым, потому что лень в него вчитываться, пытаясь понять, что же все-таки там происходит. В конечном итоге от лени мы стараемся дробить свой код на процедуры и функции так, чтобы его можно было использовать в последующих разработках уже не заморачиваясь отладкой куска, который всегда отлично работал и продолжает работать. И именно от лени многие из нас создают разного рода универсализмы.

Эту статью меня сподвиг написать один из посетителей Инфостарта, когда в комментариях темы о полезных функциях и процедурах я забросил текст небольшого модуля для подключения к управляемым формам объектов данных, связанных с этими объектами и хранимых в регистрах сведений. Почти сразу нашелся желающий прочесть подробнее и в отдельной статье, поэтому решил немножко потрудиться на благо публики и расписать подробнее. Актуально это решение в первую очередь для нетиповых конфигураций или подсистем, имеющихся в нашем распоряжении.

Без регистров сведений сегодня сложно представить какую-либо конфигурацию. Эта довольно несложная для понимания группа метаданных одновременно представляет собой мощное средство для решения возникающих у 1С-ника задач. Реквизиты компаний имеют свойство иногда меняться? – смотрим в сторону Регистров сведений. Хотим учитывать подходящую к оборудованию номенклатуру запчастей? Снова к регистрам сведений. И не предлагайте табличные части, ведь менеджер, который закупает запчасти, тоже захочет оценить куда они подходят, когда сообразит, что ему это весьма полезно. Вот тогда с табличной частью-то и намучаемся.

Скрывать нечего, в моем случае наиболее богатым на всяческие дополняющие таблички оказался справочник номенклатуры. Помимо уже имеющихся из коробки УПП, касающихся его регистров сведений, добавлены еще несколько своих. Информация, хранимая в них, поделена на логически законченные блоки: один регистр хранит параметры, которые имеют значение при планировании закупок запчастей и материалов для ремонта оборудования, другой – сведения о размерах упаковок продукции предприятия, третий – необходимые для интеграции с головными предприятием параметры ну и т.д. У каждой подобной таблицы свой круг пользователей, которых интересует их участок, но соседний для них что-то слишком заумное и «лишнее». Естественно, что «лишнее» нужно прятать, а еще лучше вообще ограничить к нему доступ. Группировка данных в регистры сведений «по тематике» тут оказывается очень кстати. Возьмем, к примеру, такие:



Положим, со структурой данных определились, насоздавали регистров в конфигурации, но что делать с интерфейсом? Ведь пользователя, который в восторге от того, что для занесения данных нужно пробежаться по нескольким таблицам найти очень сложно. Пользователю удобно, когда все в одном окне – открыл, скажем, все ту же номенклатуру и увидел все, что о ней интересно знать, а что и как там хранится в недрах базы ну совершенно не интересно. Решение есть, и оно весьма простое. В зависимости от того имитируем для пользователя набор реквизитов объекта или его табличную часть, на форму объекта добавляем реквизиты типа «РегистрСведенийМенеджерЗаписей» или «РегистрСведенийНаборЗаписей» размещаем на форме Элементы как захочется, в событии формы «ПриСозданииНаСервере» обеспечиваем их прочтение, в событии «ПослеЗаписиНаСервере» - запись.


В общем-то, для тех, кто успешно преодолел уровень новичка, тут все просто, понятно и даже рутинно. Какое-то время я так и делал. Но довольно быстро понял – подобная рутина отнимает не то, чтобы сильно много времени, но происходит это обязательно в те моменты, когда хоть какой-то результат нужно выдать вчера. Ну и банально – лень это каждый раз писать или копипастить/ поправлять, тем более после недолгой обкатки приема с регистрами сведений, их количество и области применения в конфигурации стали разрастаться, как грибы после летнего дождя. Тогда, выкроив несколько свободных часов, и взялся за очередной универсализм. Так родился небольшой модуль, позволяющий минимизировать трудозатраты на описание чтения / записи присоединенных к формам объектов регистров. Принцип потратить пару часов сейчас, но выиграть десятки потом, сработал на ура. Так родился небольшой модуль следующего содержания:

Вызывается это так:


Основных процедур получилось четыре: ПрочитатьНаборЗаписейРС, ЗаписатьНаборЗаписейРС, ПрочитатьМенеджерЗаписиРС, ЗаписатьМенеджерЗаписейРС с почти идентичными параметрами:

  • УпрФорма – форма, к которой выполняем подключение, обязательный параметр
  • ИмяРегистра – Имя регистра сведений в дереве метаданных, обязательный параметр
  • СтруктураОтбора – ключ структуры аналогичен имени измерения регистра, по которому требуется отфильтровать записи, значение – собственно значение, по которому фильтруем, обязательный параметр
  • ИмяРеквизитаУФ – Имя реквизита на переданной в первом параметре форме, в который / из которого нужно выполнить чтение / запись, необязательный параметр, если не задан, имя реквизита будет считаться идентичным имени регистра (второй параметр)
  • ЗначенияЗаполнения – есть только в процедурах записи, позволяет автоматически проставить значения ресурсов и реквизитов регистра, которыми пользователь не управляет, но они требуются нам для корректной работы системы.

Теперь получается много удобнее и быстрее. Больше не нужно расписывать очередной регистр, интегрируя его на форму, пару строк и все, что нужно прочитано и в нужный момент записано. Справедливости ради, должен заметить, что покрывая 99% подобных задач, всеобщей панацеей это решение все-таки не является. Исключением будут те редкие случаи, когда в редактировании одного и того же объекта одновременно участвуют несколько пользователей. В таком режиме остается место для ситуации, когда один из пользователей открывает объект и долго-нудно его поправляет. В это время второй открывает, быстро вносит свою лепту и сохраняет. Когда же первый заканчивает, он записывает свою версию, в том числе затерев то, что сделал его коллега. Вероятность такой ситуации всегда нужно учитывать. Если в нашей номенклатуре она нулевая, то в гипотетической системе управления задачами она вполне реальна. На те случаи выход тоже есть и заключается в использовании динамических списков с отборами, но это уже отдельная история со своей спецификой и своими подводными камнями.

У меня есть 3 регистра сведений, которые содержат сведения о стоимости тарифных планов за местную связь, интернет и телевидение и документ "Оплата услуг", в котором есть реквизиты: наименование ТП за местную связь, инернет и телевидение и абонентская плата по ним. Нужно при нажатии кнопки выводить абонентскую плату в ячейки формы.

У меня получился вот такой текст:

Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| АбонентскаяПлатаЗаМестнуюСвязь.АбонентскаяПлата,
| АбонентскаяПлатаЗаТелевидение.Стоимость,
| АбонентскаяПлатаИнтернет.Стоимость КАК Стоимость1
|ИЗ
| РегистрСведений.АбонентскаяПлатаЗаМестнуюСвязь КАК АбонентскаяПлатаЗаМестнуюСвязь,
| РегистрСведений.АбонентскаяПлатаИнтернет КАК АбонентскаяПлатаИнтернет,
| РегистрСведений.АбонентскаяПлатаЗаТелевидение КАК АбонентскаяПлатаЗаТелевидение
|ГДЕ
| АбонентскаяПлатаЗаМестнуюСвязь.ТарифныйПлан = &ТарифныйПлан
| И АбонентскаяПлатаЗаТелевидение.ТПТелевидение = &ТПТелевидение
| И АбонентскаяПлатаИнтернет.ТарифныйПланИнтернет = &ТарифныйПланИнтернет";

Запрос.УстановитьПараметр("ТарифныйПлан", Объект.ТПТелефон);
Запрос.УстановитьПараметр("ТарифныйПланИнтернет", Объект.ТПИтернет);
Запрос.УстановитьПараметр("ТПТелевидение", Объект.ТПТелевидение);

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

Объект.АбонентскаяПлата = Выборка.АбонентскаяПлата;
Объект.АбПлата = Выборка.Стоимость1;
Объект.АбонПлата = Выборка.Стоимость;

При нажатии кнопки никаких изменений не происходит(( Помогите пожалуйста!!

"Нужно при нажатии кнопки выводить абонентскую плату в ячейки формы" - глупость. Для этого есть отчеты.

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

Регистры сведений, которые подчинены какому-то документу называют «Подчиненные регистры сведений».

Подчиненные регистры сведений

В статье Регистры сведений 1С мы создали регистр сведений «Цены на топливо», а в статье Периодические регистры сведений 1С мы сделали его периодическим. Теперь сделаем его подчиненным. Для этого создадим в конфигураторе 1С документ «Установка цен топлива поставщика», у которого будет один реквизит «Поставщик» с типом СправочникСсылка.ПоставщикТоплива, а так же табличная часть «Список цен» с реквизитами: «Вид топлива» с типом СправочникСсылка.ВидыТоплива и цена с типом Число (10,2), как у ресурса регистра сведений.

Реквизиты документа Установка цен топлива поставщика

На закладке «Движения» конструктора документов свойство Проведение установим разрешить, а Оперативное проведение – запретить (цены можно устанавливать и задним числом).

Закладка Движение документа Установка цен топлива поставщика

У регистра сведений режим записи установим «Подчинение регистратору», а периодичность оставим «В пределах дня».

Режим записи регистра сведений

На закладке «Регистраторы» регистра сведений установим документ «Установка цен топлива поставщика»

Закладка регистраторы регистра сведений

Осталось «прописать» движения этого документа по регистру сведений. Мы это сделаем при помощи конструктора. Для этого перейдем в редактор документа на закладку «Движения», в котором нажмем на кнопку «Конструктор движения».

Кнопка конструктор движений

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

Конструктор движения регистров

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

Код в модуле документа Установка цен топлива поставщика

Запустим управляемое приложение 1С: Предприятия, и, если мы создадим документ и запишем в него какие-то данные.

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

Записи подчиненного регистра сведений

Поскольку у нас периодичность регистра сведений День, то при проведении нового документа с точно таким же набором данных и за тот же период, возникнет ошибка «Запись с такими ключевыми полями существует!».

Запись с такими ключевыми полями существует

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

Периодичность по позиции регистратор

После такой установки свойств регистра сведений можно создавать и проводить несколько документов с одинаковыми периодами и одинаковыми наборами данных.

Движения документов с одинаковой периодичностью

Изучайте основы конфигурирования в 1С и учитесь программировать в «1С: Предприятии» с помощью моих книг: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;


Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu


Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

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

Регистры сведений, информация которых изменяется во времени, называются Периодическими, а иначе эти регистры называют Непериодическими. Периодичность может быть разной, может быть периодичность в секунду, минуту, час и т.д. максимум — год.

Непериодический регистр сведений 1С

Основное предназначение регистров сведений в том, что в них должны храниться показатели аналитики. Например, у нас есть задача хранить виды топлива (АИ-92, АИ-95 и т.д.), но также и цену на этот вид топлива. Как это удобное всего организовать. Однозначно сами виды топлива необходимо хранить в каком-то справочнике. Так его и назовем – вид топлива. Но где же хранить цену на этот вид топлива? Самое первое решение в реквизите справочника.

Реквизит справочника

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

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

Сейчас мы и решим эту маленькую прикладную задачу: в нашей конфигурации есть два справочника «Виды топлива» и «Поставщики топлива»

Справочники конфигурации

Необходимо организовать возможность хранения цены для каждого вида топлива с учетом поставщиков. Для этого в конфигураторе 1С создадим новый регистр сведений ЦеныНаТопливо.

Создание нового регистра сведений в конфигураторе 1С

На закладке Основные установим имя и синоним. Все остальное оставим как есть.

Регистр сведений 1С цены на топливо

Теперь на закладке данные создадим два измерения – ВидТоплива и ПоставщикТоплива, типы которых ссылки на соответствующие справочники.

Измерение регистра сведений 1С ВидТоплива

Измерение регистра сведений 1С ПоставщикТоплива

У обоих измерений поставим флаг – Ведущее. Это значит, что если мы удалим элемент справочника, который указан в какой-то записи регистра сведений, то эта запись удалиться автоматически. Так же есть одно интерфейсное следствие этого флага: если флаг установлен, то в форме элемента справочника мы сможем посмотреть на записи этого регистра для этого элемента.

Установим для каждого измерения этот флаг.

Флаг ведущее для измерения регистра сведений ВидТоплива

Флаг ведущее для измерения регистра сведений ПоставщикТоплива

У нас непериодический регистр, и в нем два измерения ВидТоплива и ПоставщикТоплива это значит, что мы не сможем создать две записи с одинаковыми значениями полей ВидТоплива и ПоставщикТоплива. Программа выдаст ошибку. Что и разумно – не может быть две разных цены на один и тот же вид топлива у одного и того же поставщика. А если может, то это значит, что необходимо добавить еще один разрез (например, база поставщика).

Кроме измерений у регистра сведений существуют Ресурсы и Реквизиты. Ресурс должен хранить основную информацию регистра сведений, т.е. те данные, ради которых он создан, а Реквизит содержит дополнительную второстепенную информацию о записи.

Мы создадим ресурс – Цена (тип число 10,2).

Ресурс Цена регистра сведений

И всё. Сохраним конфигурацию и откроем этот регистр сведений и заведем какую-нибудь запись.

Записи регистра сведений

Если мы сейчас попробуем создать запись с точно таким же набором измерений, то возникнет ошибка: «Запись с такими ключевыми полями существует».

Создание дублирующей записи регистра сведений

Ошибка при создании дублирующей записи регистра сведений

И последний момент: поскольку мы у измерения ВидТоплива установили флаг «Ведущее», то у элемента справочника ВидыТоплива появилась команда на открытие регистра сведений «Цена на топливо»

Команда на открытие регистра сведений

Если мы в управляемом приложении 1С перейдем по этой команде, то увидим все цены для нашего вида топлива.

Регистр сведений с отбором

Продолжение темы регистров сведений читайте в следующих статьях:

Периодический регистр сведений 1С

Подчиненный регистр сведений 1С

Изучайте основы конфигурирования в 1С и учитесь программировать в «1С: Предприятии» с помощью моих книг: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;


Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu


Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

Читайте также: