1С 8.x : Как получить последнее значение регистра сведений?
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 34
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Cообщение: «Не удалось удалить чеки ККМ!» 2
Пользователь с правами Администратор ККМ проводит Закрытие кассовой смены (Z). Выходит сообщение: » Не удалось удалить чеки ККМ!» ФР печатает Z -отчет, но Отчет о рознчничных продажах не формируется. Необходимо дать роли Администратор ККМ прав Блокировка записей, невозможно изменить или удалить из регистра. Конфликт блокировок MS SQL + 1C 3
При попытке удалить запись из регистра сведений — получаю ошибку: она заблокирована, ошибка блокировок и т.д. Отключил всех пользователей, перезапустил сервер, пробую удалить — опять ошибка блокировки 🙁 Путем тестов было вяснено, что проблема В учетной политике не указан вид тарифа страховых взносов. Как указать? 0
Создайте новую запись учетной политики с начала года — Например 01.01.2013 В учетной смотрите дату начала учетной политики. Поставьте дату начала года (например 01.01.13) закладка появиться должна. Проверьте Тариф страховых взносов: Меню Зарпла Ввод данных по командировкам в программе ЗУП 0
Ввод сведений о командировках в программе 1С: Зарплата и управление персоналом 8 (ред.30) осуществляется в Разделе Кадры — Все кадровые документы — Создать — Командировка Откроется документ: Ввод сведений о командировках в программ Посмотреть все результаты поиска похожих
1с запись в регистр сведений программно
Для добавления отдельной записи в регистр сведений, не подчиненный регистратору, можно использовать объект РегистрСведенийМенеджерЗаписи.<имя>.
Например, для того, чтобы в независимый регистр сведений «ИсторияОбменаДанными» с измерением «УзелИнформационнойБазы» и ресурсами «ДатаПоследнейЗагрузки», «ДатаПоследнейВыгрузки» и др. добавить одну запись, содержащую значение некоторого свойства выбранной номенклатуры, можно использовать следующий код:
1С (Код)
В результате выполнения этого кода новая запись будет добавлена в регистр, или, если регистр уже содержит запись с выбранными значениям измерения «УзелИнформационнойБазы», — существующая запись будет заменена новой.
Если требуется добавить несколько записей в регистр сведений, можно использовать объект РегистрСведенийНаборЗаписей.<имя>.
Например, для того, чтобы в тот же самый регистр сведений «ИсторияОбменаДанными» добавить несколько записей о значениях различных свойств выбранной номенклатуры, можно использовать следующий код (предполагается, что свойства и соответствующие им значения находятся в таблице значений «ТаблицаРезультаты», сформированной заранее):
1С (Код)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | НаборЗаписей = РегистрыСведений.ИсторияОбменаДанными.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.УзелИнформационнойБазы.Установить(прУзелИнформационнойБазы); Для Каждого СтрокаТаблицы Из ТаблицаРезультаты Цикл НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.УзелИнформационнойБазы = прУзелИнформационнойБазы; НоваяЗапись.ДатаПоследнейЗагрузки= СтрокаТаблицы.ДатаПоследнейЗагрузки; НоваяЗапись.ДатаПоследнейВыгрузки= СтрокаТаблицы.ДатаПоследнейВыгрузки; … КонецЦикла; НаборЗаписей.Записать(); |
В результате выполнения этого кода новые записи будут добавлены в регистр, или, если регистр уже содержит записи с указанным значением измерения «УзелИнформационнойБазы» (по которому установлен отбор в наборе записей), — существующие записи будут заменены новыми.
Если нужно изменить данные в регистре сведений также используем объект РегистрСведенийНаборЗаписей.<имя>. Только после установки отбора читаем данные и изменяем их.
1С (Код)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | НаборЗаписей = РегистрыСведений.ИсторияОбменаДанными.СоздатьНаборЗаписей(); // устанавливаем отборы НаборЗаписей.Отбор.УзелИнформационнойБазы.Установить(прУзелИнформационнойБазы); НаборЗаписей.Отбор.Период.Установить(ДатаПоследнегоОбмена); // читаем данные НаборЗаписей.Прочитать(); Если НаборЗаписей.Количество() = 0 Тогда СтрокаИстории = НаборЗаписей.Добавить(); // данных нет, добавляем движение Иначе СтрокаИстории = НаборЗаписей; // данные есть, будем изменять КонецЕсли; СтрокаИстории.УзелИнформационнойБазы = прУзелИнформационнойБазы; СтрокаИстории.ДатаПоследнейЗагрузки = СтрокаТаблицы.ДатаПоследнейЗагрузки; СтрокаИстории.ДатаПоследнейВыгрузки = СтрокаТаблицы.ДатаПоследнейВыгрузки; … НаборЗаписей.Записать(); // записываем изменения |
Программная работа с регистрами сведений
Категория: 1С:Предприятие
Регистры сведений в 1С — это прикладные объекты конфигурации для хранения данных в структурированном виде (в разрезе измерений). Например, в регистре сведений можно хранить курсы валют в разрезе валют, цены номенклатуры в разрезе номенклатур, ФИО физических лиц в разрезе физических лиц и т.д.
При проектировании разработчик указывает необходимость хранения данных в разрезе времени и минимальную периодичность, с которой записи будут храниться в регистре:
Регистры сведений, для которых указана периодичность, называются периодическими.
Изменение данных в регистре может осуществляться как вручную, так и при помощи документов. Режим записи в регистр определяет разработчик на этапе проектирования:
Физически регистр сведений представляет собой таблицу, в которой хранятся следующие данные:
- измерения — описывают разрезы, в которых хранится информация;
- период — поле, используемое для разворота данных по времени. Поле добавляется автоматически при указании свойства «Периодичность», отличного от «Непериодический»;
- регистратор — поле, используемое для хранения документа, с которым связана запись. Поле добавляется автоматически при указании свойства «Режим записи» в значение «Подчинение регистратору»;
- ресурсы — непосредственно хранят информацию для комбинации измерений;
- реквизиты — дополнительная произвольная информация, относящаяся к конкретной записи регистра.
Для всех регистров сведений обеспечивается контроль уникальности записей, т.е. в регистре не может быть двух одинаковых записей. Одинаковыми считаются записи, у которых совпадают значения измерений, период (если регистр периодический) и регистратор (если регистр подчинен регистратору).
Добавление записей
Программно добавить записи в регистр сведений можно при помощи:
- объекта НаборЗаписей;
- объекта МенеджерЗаписи.
Объект МенеджерЗаписи можно использовать только для работы с независимыми регистрами. Причем можно обрабатывать только одну запись. Объект предназначен в основном для интерактивной работы, но программно с ним также можно работать. На системном уровне МенеджерЗаписи использует объект НаборЗаписей.
Общая схема добавления записей в регистр сведений при помощи объекта НаборЗаписей выглядит так:
- создание объекта НаборЗаписей;
- наложение отборов на измерения, период (если регистр периодический) и регистратора (если регистр подчинен регистратору);
- добавление и заполнение значений полей записей;
- запись набора записей.
// Добавление записи в независимый непериодический регистр сведений НаборЗаписей = РегистрыСведений.ВерсииПодсистем.СоздатьНаборЗаписей(); // Этап 1 НаборЗаписей.Отбор.ИмяПодсистемы.Установить(ИмяПодсистемы); // Этап 2 // Этап 3 НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.ИмяПодсистемы = ИмяПодсистемы; НоваяЗапись.Версия = НомерВерсии; НаборЗаписей.Записать(); // Этап 4 // Добавление записи в независимый периодический регистр сведений НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей(); // Этап 1 // Этап 2 НаборЗаписей.Отбор.Валюта.Установить(Доллар); НаборЗаписей.Отбор.Период.Установить(НачалоДня(ТекущаяДата())); // Этап3 НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Период = ТекущаяДата(); НоваяЗапись.Валюта = Доллар; НоваяЗапись.Курс = 57.92; НоваяЗапись.Кратность = 1; НаборЗаписей.Записать(); // Этап 4
Общая схема добавления записей в регистр сведений при помощи объекта МенеджерЗаписи выглядит так:
- создание объекта МенеджерЗаписи;
- заполнение значений полей записи;
- запись записи.
// Добавление записи в независимый непериодический регистр сведений Запись = РегистрыСведений.ВерсииПодсистем.СоздатьМенеджерЗаписи(); // Этап 1 // Этап 2 Запись.ИмяПодсистемы = ИмяПодсистемы; Запись.Версия = НомерВерсии; Запись.Записать(); // Этап 3 // Добавление записи в независимый периодический регистр сведений Запись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи(); // Этап 1 // Этап 2 Запись.Период = ТекущаяДата(); Запись.Валюта = Доллар; Запись.Курс = 57.92; Запись.Кратность = 1; Запись.Записать(); // Этап 3
Изменение записей
Изменять существующие записи регистров сведений возможно при помощи объектов НаборЗаписей и МенеджерЗаписи. Ограничения объекта МенеджерЗаписи были описаны выше.
Общая схема редактирования записей регистров сведений:
- создание объекта НаборЗаписей или МенеджерЗаписи;
- наложение отборов;
- чтение записей базы данных, соответствующих наложенным отборам;
- редактирование прочитанных записей;
- запись отредактированных записей.
// Редактирование записей с использованием объекта НаборЗаписей НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей(); // Этап 1 // Этап 2 НаборЗаписей.Отбор.Период.Установить(ДатаКурса); НаборЗаписей.Отбор.Валюта.Установить(Доллар); НаборЗаписей.Прочитать(); // Этап 3 Для Каждого Запись Из НаборЗаписей Цикл Запись.Курс = 57.84; // Этап 4 КонецЦикла; НаборЗаписей.Записать(); // Этап 5 // Редактирование записей с использованием объекта МенеджерЗаписи Запись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи(); // Этап 1 // Этап 2 Запись.Период = ДатаКурса; Запись.Валюта = Доллар; Запись.Прочитать(); // Этап 3 Если Запись.Выбран() Тогда // Проверка, что запись существует Запись.Курс = 57.92; // Этап 4 Запись.Записать(); // Этап 5 КонецЕсли;
Чтение записей
Чтение информации из базы данных рекомендуется выполнять при помощи запросов. Данный способ обеспечивает гибкое применение отборов и группировок, а также возможность выбора записей из нескольких таблиц.
Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ | КурсыВалют.Период, | КурсыВалют.Валюта, | КурсыВалют.Курс |ИЗ | РегистрСведений.КурсыВалют КАК КурсыВалют»; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл // обход результата выполнения запроса КонецЦикла;
Для периодических регистров сведений есть возможность получить наиболее поздние записи, период которых меньше указанной даты — срез последних, и наиболее ранние записи, период которых больше указанной даты — срез первых. Для получения среза первых и среза последних запросом необходимо использовать одноименные виртуальные таблицы, в параметрах которых сразу можно задать дату среза и отборы. Отборы, если они необходимы, рекомендуется накладывать именно в параметрах виртуальных таблиц, т.к. это позволяет ускорить выполнение запроса.
// Получение записи, у которой валюта равна значению из переменной «ВыбраннаяВалюта» // и период МЕНЬШЕ или равен значению из переменной «ВыбраннаяДата» Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ | КурсыВалютСрезПоследних.Период, | КурсыВалютСрезПоследних.Валюта, | КурсыВалютСрезПоследних.Курс |ИЗ | РегистрСведений.КурсыВалют.СрезПоследних(&Период, Валюта = &Валюта) КАК КурсыВалютСрезПоследних»; Запрос.УстановитьПараметр(«Валюта», ВыбраннаяВалюта); Запрос.УстановитьПараметр(«Период», ВыбраннаяДата); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл // обход результата выполнения запроса КонецЦикла; // Получение записи, у которой валюта равна значению из переменной «ВыбраннаяВалюта» // и период БОЛЬШЕ или равен значению из переменной «ВыбраннаяДата» Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ | КурсыВалютСрезПервых.Период, | КурсыВалютСрезПервых.Валюта, | КурсыВалютСрезПервых.Курс |ИЗ | РегистрСведений.КурсыВалют.СрезПервых(&Период, Валюта = &Валюта) КАК КурсыВалютСрезПервых»; Запрос.УстановитьПараметр(«Валюта», ВыбраннаяВалюта); Запрос.УстановитьПараметр(«Период», ВыбраннаяДата); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл // обход результата выполнения запроса КонецЦикла;
Кроме чтения запросом возможно использование методов объектной модели.
Для непериодических регистров сведений:
- Выбрать(Отбор, Порядок) — выбирает записи с указанным отбором;
- ВыбратьПоРегистратору(Регистратор) — выбирает все записи указанного регистратора;
- Получить(Отбор) — получает ресурсы записи с отбором по всем измерениям.
Для периодических регистров сведений:
- Выбрать(НачалоИнтервала, КонецИнтервала, Отбор, Порядок) — выбирает записи с указанным отбором, у которых период находится между НачалоИнтервала и КонецИнтервала;
- ВыбратьПоРегистратору(Регистратор) — выбирает все записи указанного регистратора;
- Получить(Период, Отбор) — получает ресурсы записи с отбором по всем измерениям и периоду;
- ПолучитьПервое(НачалоПериода, Отбор) — получает ресурсы наиболее ранней записи, соответствующей указанным периоду и отбору;
- ПолучитьПоследнее(КонецПериода, Отбор) — получает ресурсы наиболее поздней записи, соответствующей указанным периоду и отбору;
- СрезПервых(НачалоПериода, Отбор) — получает таблицу наиболее ранних записей, соответствующую указанным периоду и отбору;
- СрезПоследних(КонецПериода, Отбор) — получает таблицу наиболее поздних записей, соответствующую указанным периоду и отбору.
Удаление записей
Для удаления записи (записей) в независимом регистре сведений необходимо:
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Валюта.Установить(Доллар); НаборЗаписей.Отбор.Период.Установить(НачалоДня(ТекущаяДата())); НаборЗаписей.Записать();
Для удаления записей в подчиненном регистре сведений необходимо:
- создать набор записей;
- наложить отбор на регистратора;
- записать набор записей без предварительного чтения.
НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(СсылкаНаДокументРегистратор); НаборЗаписей.Записать();
Очистка регистра сведений
Для удаления всех записей в независимом регистре сведений достаточно записать набор записей этого регистра без установки отборов:
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей(); НаборЗаписей.Записать();
Запись в регистр сведений, подчиненный регистратору, возможна только при установке отбора по регистратору, поэтому для очистки таких регистров необходимо:
- получить перечень ссылок всех регистраторов регистра сведений;
- последовательно записать пустой набор записей с отбором по регистраторам из первого пункта.
Запрос = Новый Запрос( «ВЫБРАТЬ | ЦеныНоменклатуры.Регистратор |ИЗ | РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры» ); Выборка = Запрос.Выполнить().Выбрать(); НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей(); Пока Выборка.Следующий() Цикл НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор); НаборЗаписей.Записать(); КонецЦикла;
Регистры сведений в 1С предназначены для хранения произвольных данных в разрезе нескольких измерений и, при необходимости, в разрезе времени. Рассмотрим подробнее работу с этим прикладным объектом.
Предназначение регистра сведений
Добавление записей
Изменение записей
Чтение записей
Удаление записей
Очистка регистра сведений
Изменять существующие записи регистров сведений возможно при помощи объектов НаборЗаписей и МенеджерЗаписи. Ограничения объекта МенеджерЗаписи были описаны в разделе Добавление записей.
Общая схема редактирования записей регистров сведений:
- создание объекта НаборЗаписей или МенеджерЗаписи;
- наложение отборов;
- чтение записей базы данных, соответствующих наложенным отборам;
- редактирование прочитанных записей;
- запись отредактированных записей.
Хранение данных 1С Предприятие 8.3. Регистры 1С. Описание и виды
В этой статье будет описано: Хранение данных 1С Предприятие 8.3. Регистры 1С. Описание и виды
В оперативном учете первичные данные, внесенные в систему посредством документов, хранятся в регистрах. Регистр представляет собой многомерную таблицу, в которой хранятся данные и откуда их можно извлечь в удобном для пользователя виде посредством отчетов. Конечно, информацию в отчетах можно получить и путем обработки документов. Но очень часто, особенно при большом документообороте, такой метод чересчур громоздок, занимает слишком много времени и машинных ресурсов.
Регистр по своей структуре не должен быть чересчур сложен. Проектировать его следует так, чтобы получить информацию из него было несложно.
Измерения и ресурсы. Описание
С регистром непосредственно связаны такие понятия, как измерения и ресурсы.
- Измерения определяют то, в каких разрезах мы храним информацию. Например, мы можем хранить ее в разрезе складов (сколько товара находится на том или ином складе) или фирм (сколько каждая из наших фирм должна поставщикам), или товаров. Измерение — это «что учитываем».
- Ресурсы определяют то, что хранится в регистре, конкретные количественные или суммовые данные, — например, количество товаров или денежные суммы. Ресурс — это «сколько того, что мы учитываем».
Можно сказать так, что к каждому измерению регистра относится некоторое количество ресурсов.
Например, к каждому складу (склад — это измерение) относится некоторое количество (количество — это ресурс) товара (товар — это тоже измерение).
Виды регистров 1С. Регистры: сведений, накопления, бухгалтерии, расчетов
Регистры бывают разных видов.
- Регистры сведений 1С — таблицы для хранения различной информации, наподобие таблиц MS Excel. В регистрах сведений можно, например, хранить информацию о ценах и скидках номенклатуры по разным прайс-листам или информацию о курсах валют.
- Регистры накопления 1С — таблицы, в которых хранятся остатки, обороты и накапливаемые итоги. Например, если у нас было некоторого товара 20 штук и 3 штуки были проданы, то итоговый остаток, 17 штук, будет храниться в регистре накопления.
- Регистры бухгалтерии 1С — таблицы, основанные на бухгалтерских планах счетов. Такие таблицы используются для ведения бухгалтерского учета, именно в регистры бухгалтерии записываются бухгалтерские проводки.
- Регистры расчетов 1С — таблицы, основанные на планах видов расчетов. Такие таблицы служат для ведения учета по начислению заработной платы.
В системе «1С:Предприятие 7.7» регистры и проводки являли собой различные объекты дерева метаданных.
В системе «1С:Предприятие 8.3» бухгалтерские проводки записываются в один из видов регистров: регистры бухгалтерии.
Принципы построения бухгалтерского учета и структура бухгалтерских проводок
Упомянем вкратце о принципах построения бухгалтерского учета и структуре бухгалтерских проводок.
Бухгалтерский учет — это упорядоченная система сбора, регистрации и обобщения информации в денежном выражении о состоянии имущества, обязательств организации и их изменениях (движении денежных средств) путем сплошного, непрерывного и документального учета всех хозяйственных операций.
Объектами бухгалтерского учета являются: имущество организаций, их обязательства и хозяйственные операции, осуществляемые организациями в процессе их деятельности.
Основные задачи бухгалтерского учета
Основными задачами бухгалтерского учета являются:
- формирование полной и достоверной информации о деятельности организации и ее имущественном положении;
- обеспечение информацией, необходимой внутренним и внешним пользователям бухгалтерской отчетности для контроля над соблюдением законодательства при осуществлении организацией хозяйственных операций и их целесообразностью, наличием и движением имущества и обязательств, использованием материальных, трудовых и финансовых ресурсов в соответствии с утвержденными нормами, нормативами и сметами;
- предотвращение отрицательных результатов хозяйственной деятельности организации и выявление внутрихозяйственных резервов обеспечения ее финансовой устойчивости.
Бухгалтерский учет ведется в соответствии с утвержденным законодательством планом счетов на основе принципа двойной записи.
Бухгалтерский счет
Бухгалтерский счет — это способ группировки и отражения в учете отдельных видов средств, их источников и хозяйственных процессов. То есть, объект бухгалтерской аналитики. Совокупность таких объектов, охватывающая все сферы деятельности предприятия и установленная законодательно, представляет собой план счетов.
Разумеется, в деятельности отдельно взятого предприятия весь план счетов никогда не используется. Кто-то занимается производством и торговлей, кто-то — оказанием услуг, а кто-то — выращиванием нутрий. В каждом отдельно взятом случае будет задействован не весь план счетов, а лишь часть его.
Каждому бухгалтерскому счету присвоен свой номер и название, установленные законодательством.
В плане счетов выделяются и группируются экономически однородные счета — например, счета учета основных средств (10), подразделяющиеся на 10.1 (земельные участки), 10.2 (капитальные затраты по улучшению земель), 10.3 (дома и сооружения), 10.4 (машины и оборудование) и т. д., или, например, 36 (расчеты с покупателями и заказчиками), подразделяющиеся на 36.1 (расчеты с отечественными покупателями), 36.2 (расчеты с иностранными покупателями) и т.д.
В конфигурациях, использующих планы счетов, они доступны в меню Операции | Планы счетов. В конфигурации «Управление торговлей», которую я взял в качестве примера, планы счетов не используются, поэтому в списке планов счетов пусто.
Движение денежных средств между бухгалтерскими счетами называется проводкой и может быть записано, например, следующим образом: Д31.1/К36.1. Эта проводка представляет собой поступление в банк оплаты от покупателя.
- Д31.1 означает «дебет 31.1» — деньги пришли на счет 31.1 (текущие счета в национальной валюте), т. е. дебет проводки — это счет, на который приходят деньги.
- К36.1 означает «кредит 36.1» — деньги пришли со счета 36.1 (расчеты с отечественными покупателями), т. е. кредит проводки — это счет, с которого приходят деньги.
Сальдо — это остаток денег на счете, он может быть как положительным, так и отрицательным. Остаток получается сложением всех сумм, которые приходили на счет и которые уходили с него.
Некоторые счета всегда имеют положительный остаток (например, деньги на расчетном счете или в кассе, товары на складе). Такие счета являются активными, и сальдо у них дебетовое.
Некоторые счета всегда имеют отрицательный остаток (например, реализация товаров, на склад товар пришел по одной цене, продался уже с другой, более высокой, т. е. со счета «Реализация товаров» уйдет больше денег, чем придет на него). Такие счета являются пассивными, и сальдо у них кредитовое.
Наконец, часть счетов может иметь положительное сальдо, а может и отрицательное (например, какой-либо контрагент может задолжать нам, а можем и мы ему). Такие счета называются активно-пассивными.
Если сложить сальдо по всем счетам, сумма обязательно должна быть равна нулю. Если это так, то бухгалтерский баланс сходится.
Остаток по счетам позволяет нам видеть итоговую картину: сумму товаров на складах, сумму денег на расчетных счетах и в кассе, задолженность перед поставщиками и т. д. Однако этого недостаточно. Нам также важно видеть сумму не в общем, а по конкретному складу или даже товару, задолженность не перед всеми поставщиками, а перед конкретными. Для этого используются единицы аналитического учета, которые называются субконто. Например, для счета 28.1 (товары на складе) может иметься два субконто: «Номенклатура» (т. е. товары) и «Склады».
Итак, самая различная информация, как для оперативного учета, так и для бухгалтерского, внесенная документами, может храниться в регистрах.
Объект 1С «Регистры сведений» — это прикладные объекты конфигурации, которые позволяют хранить в прикладном решении произвольные данные в разрезе нескольких измерений.
Например, в регистре сведений можно хранить курсы валют в разрезе валют, или цены предприятия в разрезе номенклатуры и типа цен.
Функциональные возможности регистра сведений
Основными функциональными возможностями, которые предоставляет регистр сведений разработчику, являются:
- создание, изменение и удаление записей;
- выбор записей в заданном интервале по заданным критериям;
- выбор записей по регистратору;
- получение значений ресурсов записей, соответствующих указанному периоду и значениям измерений;
- получение значений ресурсов наиболее ранних и наиболее поздних записей регистра, соответствующих указанному периоду и значениям измерений.
Структура объекта 1С «Регистры сведений»
Информация в регистре сведений хранится в виде записей, каждая из которых содержит:
- значения измерений регистра (описывают разрезы, в которых хранится информация);
- соответствующие им значения ресурсов (непосредственно содержат хранимую информацию).
Рисунок «Измерения и ресурсы»
Рисунок «1С Регистры сведений»
Например, регистр сведений цены товаров может иметь следующую структуру:
где «Вид цен» может иметь значения «Оптовая», «Розничная», и т.д.
Вместе с каждой записью, находящейся в регистре сведений, в его реквизитах можно хранить дополнительную произвольную информацию.
Периодичность регистра сведений 1С
Одной из возможностей регистра сведений является хранение данных не только в разрезе указанных измерений, но и в разрезе времени.
Данное свойство позволяет добавить к списку измерений регистра дополнительное измерение — «Период».
Использование периодичности регистра сведений позволяет не просто хранить статические данные, но и отслеживать их актуальность на определенную дату или изменение во времени.
Разработчик может указать минимальную периодичность, с которой записи будут заноситься в регистр:
Периодичность может принимать следующие значения:
- Непериодический;
- В пределах секунды;
- В пределах дня;
- В пределах месяца;
- В пределах квартала;
- В пределах года.
В этом случае к каждой записи регистра будет добавляться поле «Период», хранящее дату, которой были внесены записи в регистр.
При выборе периодичности, отличной от варианта «Непериодический», система будет контролировать уникальность записей в пределах заданного промежутка времени. Если запись не уникальна, система 1C выдаст сообщение «Запись с такими ключевыми полями существует!» и не даст произвести запись в базу данных.
Например, периодический регистр сведений «Цены товаров» может не только хранить информацию о том, какова цена на определенную номенклатуру сейчас, но и о том, как она изменялась в прошлом (или будет изменяться в будущем).
Особенность периодического регистра сведений:
- Возможность получать готовые значения «Срез первых» и «Срез последних». Эта информация позволяет очень быстро получить из базы данных информацию о последнем (первом) установленном значении на определенную дату.
Рисунок
Подчинение регистратору
Внесение изменений в регистр сведений может выполняться:
- вручную;
- при помощи документов.
В случае, когда изменения в регистр сведений вносятся с помощью документов, к каждой записи регистра добавляется специальное поле, в котором хранится информация о регистраторе — документе, с которым связана эта запись.
Какой именно режим записи будет использоваться данным регистром сведений указывается разработчиком в процессе создания прикладного решения:
Свойство «Режим записи»может быть в значении:
- «Независимый» — записи можно произвести как программно, так и из формы списка регистра сведений;
- «Подчинение регистратору» — обязательно указание документа-регистратора записи.
Использование режима записи «Подчинение регистратору» необходимо в случае, когда логика работы прикладного решения требует того, чтобы изменения, выполняемые в регистре сведений, были жестко связаны с документами, фиксирующими факты хозяйственной деятельности.
Например, изменение цен компании может производиться только определенным кругом лиц, и каждое такое изменение должно сопровождаться «бумажным» документом. В этом случае можно использовать режим подчинения регистратору, при котором изменение цен может быть выполнено только специальным документом — «Изменение цен товаров».
Уникальность записей регистра сведений
Система обеспечивает контроль уникальности записей, хранящихся в регистре сведений. Таким образом, в регистре сведений не может находиться двух одинаковых записей (с одинаковым ключом записи). Ключ записи формируется системой автоматически, на основании значений, содержащихся в полях записи, и зависит от вида регистра сведений.
В общем случае в формировании ключа записи будут участвовать значения регистратора, периода и значения измерений.
Таким образом, например, в непериодическом регистре сведений «Цены товаров» с независимым режимом записи не может существовать двух записей о розничной цене конфет ассорти. Точно так же, как в периодическом регистре сведений «Цены товаров», подчиненном регистратору, не может существовать двух записей о розничной цене конфет ассорти, внесенных одной и той же датой, одним и тем же документом «Изменение цен товаров».
Свойства измерения регистра сведений
Особое внимание следует обратить на флаги «Ведущее» и «Основной отбор» палитры свойств измерений регистра сведений.
Рисунок
- Ведущее — свойство измерения, указывающее на то, что без значения этого измерения запись регистра не имеет смысл. Установка флага означает что система при удалении значения из измерения удаляет еще и запись регистра с «Ведущим» измерением. Может быть установлено только одно измерение.
- Основной отбор — если регистр независимый, то по этим измерениям будет устанавливаться регистрация изменений для плана обмена. Аналогично использование «Основной отбор» по периоду включает основной отбор для периода периодических регистров.
Программная запись в регистр сведений 1С
Добавить новые записи в регистр сведений можно двумя способами:
- с помощью менеджера записи (для одиночной записи);
- с помощью набора записей (для двух и и более записей).
Примеры :
Использование менеджера записи: 1С (Код)
Использование набора записей регистра сведений 1С: 1С (Код)
для полной программной очистки всех записей регистра сведений.
Формы объекта 1С «Регистры сведений»
Для того чтобы пользователь мог просматривать и изменять данные, содержащиеся в регистре сведений, система поддерживает несколько форм представления регистра. Система может автоматически генерировать все нужные формы регистра. Наряду с этим разработчик имеет возможность создать собственные формы, которые система будет использовать вместо форм по умолчанию.
Форма записи регистра сведений 1С
Для просмотра и изменения отдельных записей регистра сведений используется форма записи. Как правило, она представляет данные в удобном для восприятия и редактирования виде.
Форма списка регистра сведений 1С
Для просмотра данных, содержащихся в регистре сведений, используется форма списка. Она позволяет:
- выполнять навигацию по регистру;
- добавлять, помечать на удаление и удалять записи регистра;
- выполнять сортировку и отбор отображаемой информации по нескольким критериям.