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

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

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

Структура

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

Измерения регистра описывают разрезы, в которых хранится информация, а в ресурсах регистра накапливаются нужные числовые данные. Например, для регистра ТоварныеЗапасы, который имеет следующую структуру:

записи, производящие изменение ресурсов регистра в базе данных, будут выглядеть следующим образом:

Поскольку регистр накопления служит для накопления числовых значений, каждая запись выполняет изменение хранимых ресурсов — движение. Движения, в общем случае, могут либо добавлять некоторые приращения к хранимым ресурсам, либо отнимать их. Если должно выполняться увеличение хранимых ресурсов, — такое движение называется движением прихода («+»), если уменьшение хранимых ресурсов — движением расхода («-«).

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

Связь с регистратором

Изменение состояния регистра накопления происходит, как правило, при проведении документа. Поэтому каждая запись регистра связана с определенным документом — регистратором, номером строки этого документа, и датой — периодом:

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

Состав документов, которые могут создавать записи в регистре накопления, задается разработчиком в процессе создания прикладного решения:

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

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

Уникальность записей

Система обеспечивает контроль уникальности записей, хранящихся в регистре накопления. Благодаря этому в регистре накоплений не может находиться двух записей, относящихся к одной и той же строке одного и того же документа.

Регистры остатков и регистры оборотов

Существует два вида регистров накопления: регистры накопления остатков и регистры накопления оборотов. Регистр накопления остатков позволяет хранить как итоговые значения ресурсов — остатки, так и изменения этих ресурсов — обороты. Регистр накопления оборотов является более «специализированным» видом регистра накопления и позволяет хранить только изменения ресурсов — обороты.

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

Поскольку регистр накопления оборотов не накапливает остатки ресурсов, для него не имеет смысла «направление» движения ресурсов (приход или расход); накапливается только величина изменения ресурсов. Поэтому все записи регистра накопления оборотов отмечены одинаковыми пиктограммами.

Агрегаты

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

Форма списка и форма набора записей

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

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

Функциональные возможности регистра накопления

Основными функциональными возможностями, которые предоставляет регистр накопления разработчику, являются:

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

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

Причина:
В новой версии конфы удаляется справочник ЕдиницыИзмерения и соответственно удаляются все обращения к нему в коде.
Но т.к. модуль БУС (модуль для обмена с сайтом Битрикс) не находится на поддержке, он обращается к справочнику, которого уже нет.

Решение:
1) Удалить в новой версии модуль БУС (отметить галочки)
2) Обновить модуль БУС после обновления

Обновление УТ 11.2.2.119 => 11.2.3.84
При внесении изменений в конфигурацию ошибка:

Записи регистра сведений стали неуникальными: ВерсииОбъектов.

Решение:
Зайти в Предприятие, ВсеФункции -> РегистрыСведений -> ВерсииОбъектов и удалить косячный объект.


В данном случае был объект с незаполненным реквизитом Объект.

«Виснет” обновление базы в режиме предприятия – запускается, но постоянно 0%.

Решение:
Отредактировать регламентное задание «Отложенное обновление ИБ”: устанавливал чтобы запускалось каждые 60 сек.

Ошибка после обновления платформы и запуске синхронизации:
«Не удалось подключиться к другой программе: Метод объекта не обнаружен (Connect)»

Решение:
Выполнить регистрацию COM-соединения:
Regsvr32 «C:\Program Files (x86)\1cv8\НОМЕР_ПЛАТФОРМЫ\bin\comcntr.dll”

Причина: В клиент-серверном варианте инфорационной базы с использованием PostgreSQL при выполнении запроса, содержащего ПОЛНОЕ СОЕДИНЕНИЕ может происходить ошибка вида. Код ошибки: 10193154.
Решение:
Обновить платформу на 8.3.12.1529.

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

Решение:
Откатился назад и обновился еще раз без объединения с имеющимся кодом. Уже после обновления исправил код вручную.

Обновление УТ 1.3.4.228 => 11.4.6.174
Ошибка на этапе объединения конфигураций:
На удаляемый объект ОбщийМодуль.УчетНДСУТ есть ссылки в объектах основной конфигурации:
Подсистема.РегламентированныйУчет.Подсистема.УчетНДС.Состав
На удаляемый объект РегламентноеЗадание.ФормированиеДвиженийПоПартиямЗатратамНДС есть ссылки в объектах основной конфигурации:
Подсистема.РегламентированныйУчет.Подсистема.УчетНДС.Состав
На удаляемый объект ЖурналДокументов.ПередачиВозвратыТоваровМеждуОрганизациями есть ссылки в объектах основной конфигурации:
Подсистема.РегламентированныйУчет.Подсистема.ПродажиМеждуОрганизациями.Состав
На удаляемый объект Обработка.НастройкаПередачиТоваровМеждуОрганизациями есть ссылки в объектах основной конфигурации:
Подсистема.РегламентированныйУчет.Подсистема.ПродажиМеждуОрганизациями.Состав
На удаляемый объект Обработка.ПомощникИсправленияОстатковТоваровОрганизаций есть ссылки в объектах основной конфигурации:
Подсистема.РегламентированныйУчет.Состав
На удаляемый объект Обработка.ТекущиеДелаПоЭДО есть ссылки в объектах основной конфигурации:
Подсистема.Органайзер.Состав
На удаляемый объект РегистрСведений.УдалитьАдресныйКлассификатор есть ссылки в объектах основной конфигурации:
Подсистема.НормативноСправочнаяИнформация.Подсистема.БазовыеКлассификаторы.Состав

ПричинЫ:
Почему остались ссылки на удаляемые объекты в конфе?
1) Возможно, объекты со ссылками тоже должны были быть удалены, но по какой-то причине этого не произошло.
2) Просто тупняк обработки обновления, которая не «зачистила” места использования удаляемых объектов.

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

Обновление УТ
Ошибка:
Ошибка инициализации модуля: Документ.УдалитьАктОРасхожденияхПриПоступленииТоваров.МодульМенеджера
по причине:
{Документ.УдалитьАктОРасхожденияхПриПоступленииТоваров.МодульМенеджера(13,2)}: Переменная не определена (ВводНаОснованииПереопределяемый)
<<?>>ВводНаОснованииПереопределяемый.ДобавитьКомандуСоздатьНаОснованииБизнесПроцессЗадание(КомандыСоздатьНаОсновании);
{Документ.УдалитьАктОРасхожденияхПриПоступленииТоваров.МодульМенеджера(14,2)}: Переменная не определена (ВводНаОснованииПереопределяемый)
<<?>>ВводНаОснованииПереопределяемый.ДобавитьКомандыСоздатьНаОснованииПисмаПоШаблону(КомандыСоздатьНаОсновании);
{Документ.УдалитьАктОРасхожденияхПриПоступленииТоваров.МодульМенеджера(23,45)}: Переменная не определена (ВводНаОсновании)
КомандаСоздатьНаОсновании.Представление = <<?>>ВводНаОсновании.ПредставлениеОбъекта(Метаданные.Документы.УдалитьАктОРасхожденияхПриПоступленииТоваров);

Причина:
Комбинация двух предыдущих ошибок. В предыдущем релизе конфигурации объект УдалитьАктОРасхожденияхПриПоступленииТоваров был «помечен на удаление” (т.к. в имени написано «Удалить”), значит в этом новом релизе он должен был быть удален. Но на него остались ссылки в других объектах, поэтому автоматически он не удалился. Соответственно, проблемный объект УдалитьАктОРасхожденияхПриПоступленииТоваров содержит неактуальные обращения к уже несуществующим реквизитам других объектов (ВводНаОснованииПереопределяемый и др.).

Решение:
Удалить объект УдалитьАктОРасхожденияхПриПоступленииТоваров из конфы:
1) найти места использования: ПКМ на объекте => Найти места использования. Как оказалось, ссылались некоторые команды в других объектах
2) убрать места использования: поснимать галочки на удаляемый объект в этих командах (в реквизите «Тип параметра команды”, кажется)
3) запустить выполнение обновления повторно, и этот объект должен спокойно выпилиться из конфы

Обновление УТ
Ошибка:
Роль.ДобавлениеИзменениеФизическихЛиц: Дублирование имени объекта метаданных:
Обработка.ПомощникИсправленияОстатковТоваровОрганизаций: Дублирование имени объекта метаданных:
При проверке метаданных обнаружены ошибки!
Операция не может быть выполнена.

Причина:
Тупняк обработки обновления: дубликат не должен быть создаваться.

Решение:
(точно не помню) По логике – удалил дубликаты из конфы.

Причина:
В последних версиях УТ осуществляется переход от документов ПоступленияТоваровУслуг к ПриобретениямТоваровУслуг. Виновником была самописная роль ДобавлениеИзменениеПоступленийТоваровУслугБезРаспроведения, созданная копированием стандартной ДобавлениеИзменениеПоступленийТоваровУслуг. Но если стандартная была автоматически как нужно подпилена обработкой обновления (или же вообще удалена), то самописная осталась с неверными ссылками на старые документы.

Решение:
Убрал в самописной роли галки на документ ПоступлениеТоваровУслуг, оставил только на Приобретения.

0 Просмотров: 1 046

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

Информация в регистре сведений хранится в виде записей, каждая из которых содержит значения измерений и соответствующие им значения ресурсов.

Измерения регистра описывают разрезы, в которых хранится информация, а ресурсы регистра непосредственно содержат хранимую информацию. Например, для регистра сведений Цены товаров, который имеет следующую структуру:

записи, хранимые в базе данных, будут выглядеть следующим образом:

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

Периодичность

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

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

Например, периодический регистр сведений Цены товаров может не только хранить информацию о том, какова цена на определенную номенклатуру сейчас, но и о том, как она изменялась в прошлом (или будет изменяться в будущем):

Подчинение регистратору

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

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

Например, изменение цен компании может производиться только определенным кругом лиц, и каждое такое изменение должно сопровождаться «бумажным» документом. В этом случае можно использовать режим подчинения регистратору, при котором изменение цен может быть выполнено только специальным документом — Изменение цен товаров.

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

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

Формы

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

Форма списка

Для просмотра данных, содержащихся в регистре сведений, используется форма списка. Она позволяет выполнять навигацию по регистру, добавлять, помечать на удаление и удалять записи регистра. Форма списка позволяет выполнять сортировку и отбор отображаемой информации по нескольким критериям:

Форма записи

Для просмотра и изменения отдельных записей регистра сведений используется форма записи. Как правило, она представляет данные в удобном для восприятия и редактирования виде:

Функциональные возможности регистра сведений

Основными функциональными возможностями, которые предоставляет регистр сведений разработчику, являются:

  • создание, изменение и удаление записей;
  • выбор записей в заданном интервале по заданным критериям;
  • выбор записей по регистратору;
  • получение значений ресурсов записей, соответствующих указанному периоду и значениям измерений;
  • получение значений ресурсов наиболее ранних и наиболее поздних записей регистра, соответствующих указанному периоду и значениям измерений.

Добрый день, Дмитрий, Вячеслав, Коллеги!
Сдаём с коллегами 1С Эксперта (я ещё не ездил, коллеги ездили).
Часто заваливаются коллеги в последние 2-3 месяца на доп.задаче:
Текст задачи:
«В базе работают 1000 пользователей. Есть регистр сведений в нем 100 млн записей. запрос select count выполняется t= 60 сек. Необходимо сделать так, чтобы данные были получены за t = 1c.»
Можете ли Вы подсказать, пожалуйста, в каком направлении мыслить/искать?
/////////////////////////
Коллеги отвечала преподавателю (Александру Морозову) по-разному, мы заранее придумали что можно отетить и отвечали
1) требуется выполнение всех регламентных операций, дефрагментация, реиндексация
2) требуется создание некластерного индекса или сделать регистр таким, чтобы был хотя бы один некластерный индекс, т.к. scan по нему быстрее скана по кластерному индексу
Первые два совета недостаточны.
3) Пробовали ответить, что нужно хранить заведомо где-то количество в этом регистре, типо константы и при записи наборов записей или удалении — следить за тем, сколько у нас записей (жертвуем записью ради запроса по выбору количества записей) — тоже не подходит
4) Коллеги предлагали из DMV представлений или статистики получать значение — тоже преподаватель говорит нарушение лиц.соглашения, нельзя в обход rphost подключаться к SQL базе напрямую
5) может быть нужно секционирование предложить было? Но Вы писали где-то, что его оч.сложно настроить и нужны знания сертифицированного специалиста MS SQL
Преподаватель говорит, есть порядка 12 способов решить задачу. Я глядел англоязычные форумы, там как то не нашёл пока что ещё подходящего.
6) Может быть надо MDOP = 1 выставить? Т.к. если 60 секунд выполняется сканирование — может быть происходит блокировка параллельных сканов или что-то такое.
7) Мы предлагали преподавателю перестроить бизнес-логику решения. Тоже не «прокатило».
Если подскажете, что можно было бы сделать, или где почитать (направление), очень многие люди будут благодарны!
Сейчас это задание как триггер, отсеиватель, добрая часть людей отсеивается просто в самом конце экзамена:)
Спасибо!!!
PS> У меня ещё идея есть, что может быть, сжатие на данной таблице (регистре сведений) нужно включить,
и(или) индекс некластерный сделать по полю с простым типом, чтобы память выделяемая под него, была минимальна.
PPS> Может быть, нужно добавить реквизит и в него некоторую значение некоторой «хеш-функции», результатом которой будет значение от 1 до 12 или от 1 до 200 (не более, по максимальному количеству шагов гистограммы статистики) записывать. Добавить индекс по этому реквизиту и статистика по нему будет «хорошей», в ней будут репрезентативные данные, можно в этом случае, MDOP оставить в нуле, вдруг запрос распараллелится на 200, например Index Seekов.
———
С Уважением,
Александр Беленко