1с 8 периодический регистр сведений изменение документом.
Примеры, с объяснением, как можно сделать запись в регистр сведений 1С
Создание одной записи в регистр сведений 1С.
Чтобы сделать запись в регистр сведений 1С необходимо воспользоваться менеджером записи.
Пример:
// Создаем менеджер записи
СоздатьКурсыВалют = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();
// Устанавливаем измерения, ресурсы и устанавливаем период записи
СоздатьКурсыВалют.Валюта = СсылкаВалюта;
СоздатьКурсыВалют.Курс = Курс;
СоздатьКурсыВалют.Кратность = 1;
СоздатьКурсыВалют.Период = ТекущаяДата();
//Записываем получившуюся запись с замещением (если уже есть такая запись с такими измерениями и периодом)
СоздатьКурсыВалют.Записать(Истина);
В процессе выполнения программного кода, в регистре сведений «Курсы валют», будет сделана одна новая запись или замещена старая с такими же ключевыми полями.
Создание нескольких записей в регистр сведений 1С.
Если требуется добавить сразу несколько записей, нужно воспользоваться набором записей.
Пример:
//Создаем набор записей
НаборКурсыВалют = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
//Устанавливаем отбор по измерению
//Делаем цикл по таблице с курсами и добавляем записи
Для Каждого Строка Из ТаблицаКурсов Цикл
НоваяЗаписьКурс = НаборКурсыВалют.Добавить();
НоваяЗаписьКурс.Валюта = Строка.Валюта;
НоваяЗаписьКурс.Курс = Строка.Курс;
НоваяЗаписьКурс.Кратность = 1;
КонецЦикла;
НаборКурсыВалют.Записать();
В процессе выполнения программного кода, в регистре сведений «Курсы валют», будут сделаны записи по таблице «Таблица Курсов» с замещением.
Изменение записей регистра сведений с отбором
Если требуется изменить уже существующие записи, тогда Вам подойдет следующий код
Пример:
НаборКурсыВалют = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
НаборКурсыВалют.Отбор.Валюта.Установить(СсылкаВалюта);
//Прочитаем записи по отбору
НаборКурсыВалют.Прочитать();
Для Каждого ЗаписьНабора из НаборКурсыВалют Цикл
ЗаписьНабора.Курс = НовыйКурс;
КонецЦикла;
НаборКурсыВалют.Записать();
В результате выполнения вы установите новый курс у валюты, которая установлена в отборе.
Регистры сведений 1С это структурированный набор данных с измерениями и ресурсами. Предназначен для хранения периодической информации.
Периодичность
Информация хранится в разрезе измерений и периода. Регистру сведений, можно задать периодичность:
- Непериодический
- по регистратору
- секунда
- неделя
- месяц
- квартал
Периодичность нужна для выбора информации из регистра на определенный период времени. Если указать периодичность, записи в регистр будут производиться с периодом, когда была сделана запись. Допустим если посмотреть регистр «Цены номенклатуры», можно увидеть историю изменения цен, с какими измерениями и в какой период времени была сделана запись.
Периодичность в регистрах сведений нужны для информации которая изменяется в течении времени, например: курсы валют, цены номенклатуры, скидки и наценки номенклатуры и т.д.
Регистраторы
Если делать запись в регистр сведений с помощью документа, нужно установить режим записи: «Подчинение регистратору» и выбрать документ, которым будет делаться запись в регистр. Тогда в регистре появится поле «Регистратор», где будет храниться информация, каким документом была сделана запись. Так же регистратор можно использовать как период, для этого укажите в поле "Периодичность" - "По регистратору". Подчинение регистратору делают, когда требуется жестко привязать регистр к документу и изменение записей в регистре в ручном режиме становится не доступным.
Документы, которые будут в роли регистраторов, может быть несколько. Для того чтобы добавить регистратор, нужно зайти в свойства нужного регистра сведений, перейти на вкладку «Регистраторы» и установить галочки напротив документов, которые будут выполнять роль регистратора.
Посмотреть движения, которые делает регистратор можно из документа. Для этого нужно зайти в интересующий Вас документ, нажать: Перейти – Движения документа по регистратору.
В свойствах регистра не забудьте добавить права, их можно назначить на вкладке «Права». Затем в списке ролей нужно выбрать роль, которой требуется добавить права на регистр и в списке прав установить права на для выбранной роли.
Уникальность записей
Уникальность записи зависит от периода и измерений. Например, если вы хотите записать в регистр «Цены номенклатуры» запись с одинаковыми измерениями, в один и тот же день, то у вас это не получится и программа вызовет ошибку, так как периодичность регистра в пределах дня.
Если периодичность задана регистратором, он так же участвует в уникальности записи.
Для не периодических и не зависимых регистров уникальность зависит от комбинации измерений.
Формы
Для просмотра записей используйте форму списка, в ней можно установить отбор, по интересующим Вас полям, посмотреть историю записей и изменить их через форму записи. Посмотреть записи регистра можно следующим образом: в верхнем меню нажать кнопку «Операции» - «Регистры сведений». В открывшемся окне выберете нужный Вам регистр. После этого откроется форма списка в виде таблицы, где каждая стока является уникальной записью.
Для редактирования / создания, используйте форму записи, если запись подчинена регистратору, тогда поле будет не доступно и форму создать не получится.
Добавлять формы нужно в конфигураторе, зайдя в регистр сведений, во вкладке «Формы» и нажать на «лупу» у нужного вида формы. Далее откроется окно, где можно настроить поля будущей формы (расположение, названия и прописать функционал).
Измерения, ресурсы и реквизиты
Измерения предназначены для формирования уникальности записи, по ним в дальнейшем можно осуществлять отбор и делать срез по конкретному измерению. Сочетание измерений и формирует ключ записи. Лучше не создавать большое количество измерений, чтобы таблица не разрасталась и в процессе работы с ней, не тормозила.
У измерений есть галочка «Ведущее», если она установлена то запись будет храниться в базе данных, пока существует данное измерение. Ведущих измерений можно сделать несколько. Например, в регистре сведений «Цены номенклатуры», ведущим измерением является номенклатура, если удалить номенклатуру, которая участвует в записи, тогда автоматически удалится запись в регистре сведений по этой номенклатуре.
Ресурсы предназначены для хранения суммовую информацию: количество, цена и т.д. Ресурсы в дальнейшем будем получать на определенный период времени (если регистр периодический), по измерениям.
Реквизиты, в большинстве случаев, предназначены для хранения дополнительной информации, они не принимают участие в уникальности записи. Например, в реквизиты можно заносить информацию такую как автор, комментарий и т.д.
С регистром сведений можно производить следующие действия:
- Удаление записи в регистре сведений 1С
Особенности
Уникальность записей по набору измерений: каждая запись в регистре сведений - это новое значение ресурса.
Записи регистра сведений могут быть как периодические, так и нет.
Регистр сведений может быть зависимым и независимым от регистратора.
Есть возможность сделать срез первых и последних записей на нужную дату. Это реализовано виртуальными таблицами: «СрезПервых» и «СрезПоследних». Для использования этих таблиц можно воспользоваться как отбором, так и запросом (в конструкторе запросов вы уведите эти виртуальные таблицы и сможете сделать по ним запрос). Эти таблицы будут доступны, если регистр сведений периодический.
Регистр «Цены номенклатуры» - периодический регистр сведений, записи производиться по регистратору.
На изображении видно, что периодичность установлена в пределах дня. Значит, цену можно изменить один раз в день по уникальным в течении дня измерениям.
Регистр подчинен документу «Установка цен номенклатуры». Значит, запись в регистр происходит из этого документа. Движения по конкретному документу можно посмотреть из формы документа «Установка цен номенклатуры».
Регистр предназначен для хранения информации по цена номенклатуры, с измерениями "Тип цен", "Номенклатура" и "Характеристика номенклатуры". Ведущим измерениями являются все три поля измерения, по нем можно будет делать отбор при выборке.
Заключение: после прочтения статьи Вы сможете создать регистр сведений 1С, добавить измерения и ресурсы, настроить формы редактирования и списка. Создать запись и сделать выборку существующих записей. Если остались вопросы, воспользуйтесь комментариями в статье, постараюсь оперативно дать ответ на интересующий Вас вопрос.
Автоматическая подстановка цены в документ при выборе номенклатуры
Для этого нужно сделать две вещи:
- Написать некую функцию, которая будет возвращать актуальную цену номенклатуры.
- Вызвать эту функцию в тот момент, когда в документ добавляется номенклатура, и подставить в документ цену номенклатуры, которую вернет функция.
Необходимо данную функцию разместить в общедоступном, для других документов, месте.
- В режиме Конфигуратор
Создадим функцию
РозничнаяЦена(),
которая будет возвращать нам актуальную розничную цену номенклатуры, и поместим ее в общий модуль конфигурации:
Откроем конфигуратор, в ветке Общие > Общие
модули
добавим новый объект конфигурации Модуль
и назовем его РаботаСоСправочниками
.
Установим флажок Вызов сервера для того, чтобы экспортные процедуры и функции этого модуля можно было вызывать с клиента:
Рис. 9.3. Свойства РаботаСоСправочниками
Затем поместим в модуль следующий текст (см. Листинг 1):
Листинг 9.1. Редактируем Общий Модуль РаботаСоСправочниками
Для получения розничной цены мы будем передавать в функцию два параметра:
- АктуальнаяДата - параметр типа Дата, определяет точку на оси времени, в которой нас интересует значение розничной цены.
- ЭлементНоменклатуры - ссылка на элемент справочника Номенклатура, для которого мы хотим получить розничную цену.
Теперь эту функцию нужно вызвать в некоторый момент работы документа.
Вызов функции при выборе номенклатуры и заполнение цены в документе
1 - Найдем в конфигураторе документ ОказаниеУслуги
и откроем его форму ФормаДокумента
.
2 - Дважды щелкнем на элементе формы ПереченьНоменклатурыНоменклатура
. Прокрутим список до конца, найдем событие ПриИзменении
, которое возникает после изменения значения поля.
3 - Нажмем кнопку открытия со значком лупы в поле ввода. Система создаст шаблон процедуры обработчика этого события в модуле нашей формы и откроет закладку Модуль редактора формы. Внесем в него следующий текст (см. Листинг 2):
Листинг 9.2. Модуль редактора формы
- В режиме 1С: Предприятие
Запустим 1С:Предприятие в режиме отладки и откроем регистр сведений Цены
. Для элемента таблицы добавим другим числом новую цену.
Теперь откроем документ Оказание услуги № 1
. Оставим дату документа без изменения и повторим выбор тран-зистора в колонке Номенклатура
табличной части документа. Автоматически установится последнее значение цены товара.