Измерения ресурсы реквизиты в чем разница

Измерения ресурсы реквизиты в чем разница

Измерения ресурсы реквизиты в чем разница. Смотреть фото Измерения ресурсы реквизиты в чем разница. Смотреть картинку Измерения ресурсы реквизиты в чем разница. Картинка про Измерения ресурсы реквизиты в чем разница. Фото Измерения ресурсы реквизиты в чем разница

2. Виды регистров сведений

3. Измерения, ресурсы, реквизиты регистра сведений

4. Периодический регистр сведений

5. Свойства регистра и измерений

6. Добавление записи в регистр сведений

7. Изменение значения ресурса записи регистра сведений

8. Удаление выбранных записей в регистре сведений

9. Очистка регистра сведений от записей

10. Получить значение ресурса регистра сведений на дату

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

2. Виды регистров сведений

Измерения – описывают разрезы, в которых хранится информация.
Ресурсы – содержат хранимую информацию в разрезе измерения.
Тип ресурса сведений может быть как примитивный (число, строка, дата, булево), так и ссылочный (СправочникСсылка, ПеречислениеСсылка и т.д.). В ресурсе можно хранить даже картинки и другие неструктурированные сведения, поскольку можно создать ресурс типа «ХранилищеЗначения». Ресурс может быть составным типом.

Измерения ресурсы реквизиты в чем разница. Смотреть фото Измерения ресурсы реквизиты в чем разница. Смотреть картинку Измерения ресурсы реквизиты в чем разница. Картинка про Измерения ресурсы реквизиты в чем разница. Фото Измерения ресурсы реквизиты в чем разница

Измерения ресурсы реквизиты в чем разница. Смотреть фото Измерения ресурсы реквизиты в чем разница. Смотреть картинку Измерения ресурсы реквизиты в чем разница. Картинка про Измерения ресурсы реквизиты в чем разница. Фото Измерения ресурсы реквизиты в чем разница

4. Периодический регистр сведений

Измерения ресурсы реквизиты в чем разница. Смотреть фото Измерения ресурсы реквизиты в чем разница. Смотреть картинку Измерения ресурсы реквизиты в чем разница. Картинка про Измерения ресурсы реквизиты в чем разница. Фото Измерения ресурсы реквизиты в чем разница

Измерения ресурсы реквизиты в чем разница. Смотреть фото Измерения ресурсы реквизиты в чем разница. Смотреть картинку Измерения ресурсы реквизиты в чем разница. Картинка про Измерения ресурсы реквизиты в чем разница. Фото Измерения ресурсы реквизиты в чем разница

5. Свойства регистра и измерений

6. Добавление записи в регистр сведений

Добавление через МенеджерЗаписи, подойдет для добавления одной записи.

Добавление через НаборЗаписей, подойдет для добавления одной или нескольких записей.

7. Изменение значения ресурса записи регистра сведений

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

8. Удаление выбранных записей в регистре сведений

Удаление записей через НаборЗаписей, подойдет для удаления одной или нескольких записей.

9. Очистка регистра сведений от записей

Очистка регистра от записей через НаборЗаписей.

Источник

Измерения ресурсы реквизиты в чем разница

Регистр сведений – это вырожденный случай регистров. Поэтому у него «не все так», как у «настоящих» регистров (накопления, бухгалтерии, расчета). И чтобы не путаться дальше будем рассматривать все в несколько в упрощенном виде.

Сначала посмотрим, как работает «настоящий» регистр, регистр накопления.
Регистр простой, два измерения, один ресурс и один реквизит (рис. 1).

Измерения ресурсы реквизиты в чем разница. Смотреть фото Измерения ресурсы реквизиты в чем разница. Смотреть картинку Измерения ресурсы реквизиты в чем разница. Картинка про Измерения ресурсы реквизиты в чем разница. Фото Измерения ресурсы реквизиты в чем разница

Допустим, в регистре есть четыре записи (рис. 2).

Измерения ресурсы реквизиты в чем разница. Смотреть фото Измерения ресурсы реквизиты в чем разница. Смотреть картинку Измерения ресурсы реквизиты в чем разница. Картинка про Измерения ресурсы реквизиты в чем разница. Фото Измерения ресурсы реквизиты в чем разница

Это – основная таблица регистра, т.е. таблица, содержащая записи, которые были добавлены в регистр.
Вы можете получить записи этой таблицы и, естественно, отобрать их по любому из существующих полей (рис. 3).

Измерения ресурсы реквизиты в чем разница. Смотреть фото Измерения ресурсы реквизиты в чем разница. Смотреть картинку Измерения ресурсы реквизиты в чем разница. Картинка про Измерения ресурсы реквизиты в чем разница. Фото Измерения ресурсы реквизиты в чем разница

«Функция» регистра накопления, грубо говоря, заключается в том, чтобы суммировать значения ресурсов. Причем это суммирование выполняется для всех различных значений измерений. То есть, если вы попросите «функцию» этого регистра, то получите следующий результат (рис. 4).

Измерения ресурсы реквизиты в чем разница. Смотреть фото Измерения ресурсы реквизиты в чем разница. Смотреть картинку Измерения ресурсы реквизиты в чем разница. Картинка про Измерения ресурсы реквизиты в чем разница. Фото Измерения ресурсы реквизиты в чем разница

То есть значения ресурсов для записей, содержащих одинаковые значения измерений (в данном случае Значение1 и Значение2) будут просуммированы (9 + 1 = 10).
Понятно, что когда вы получаете функцию, невозможно получить какие-либо реквизиты, потому что, например, непонятно, как можно «сложить» Заметка99 и Заметка1?. Можно только «развернуть функцию», и посмотреть, из каких записей она сложилась, какие у этих записей реквизиты. Но сам результат «функции» не содержит информации о каждой из записей (рис. 5).

Измерения ресурсы реквизиты в чем разница. Смотреть фото Измерения ресурсы реквизиты в чем разница. Смотреть картинку Измерения ресурсы реквизиты в чем разница. Картинка про Измерения ресурсы реквизиты в чем разница. Фото Измерения ресурсы реквизиты в чем разница

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

Теперь посмотрим на регистр сведений. Возьмем периодический регистр сведений с такой же структурой и такими же записями. Его основная таблица будет выглядеть следующим образом (рис. 6).

Измерения ресурсы реквизиты в чем разница. Смотреть фото Измерения ресурсы реквизиты в чем разница. Смотреть картинку Измерения ресурсы реквизиты в чем разница. Картинка про Измерения ресурсы реквизиты в чем разница. Фото Измерения ресурсы реквизиты в чем разница

«Функцией» периодического регистра сведений является получение наиболее ранних или наиболее поздних записей, на некоторую дату по различным сочетаниям значений измерений. Например «функция» этого регистра на 29 число будет выглядеть следующим образом (рис. 7).

Измерения ресурсы реквизиты в чем разница. Смотреть фото Измерения ресурсы реквизиты в чем разница. Смотреть картинку Измерения ресурсы реквизиты в чем разница. Картинка про Измерения ресурсы реквизиты в чем разница. Фото Измерения ресурсы реквизиты в чем разница

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

Измерения ресурсы реквизиты в чем разница. Смотреть фото Измерения ресурсы реквизиты в чем разница. Смотреть картинку Измерения ресурсы реквизиты в чем разница. Картинка про Измерения ресурсы реквизиты в чем разница. Фото Измерения ресурсы реквизиты в чем разница

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

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

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

Измерения регистра описывают параметры этой функции.

Возвращаемое значение (значения) функции описываются ресурсами регистра.

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

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

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

Для «настоящих регистров» (накопления, бухгалтерии, расчета) получать значения ресурсов, указывая реквизиты, нельзя. И получив значения ресурсов (то есть «вычислив функцию регистра»), вы не сможете увидеть реквизиты.

Источник

Регистр сведений и регистр расчета. Просто о сложном

В система 1С существует 4 вида регистров:

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

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

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

По своей структуре этот регистр напоминает регистр накопления и состоит из измерений, в разрезе которых хранятся произвольные данные ‒ ресурсы и реквизиты для хранения дополнительной информации.

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

Есть два подвида регистра сведений:

подчинен регистратору: документ делает записи при проведении;

не подчинен регистратору: запись осуществляется не при проведении документа.

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

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

Измерения ресурсы реквизиты в чем разница. Смотреть фото Измерения ресурсы реквизиты в чем разница. Смотреть картинку Измерения ресурсы реквизиты в чем разница. Картинка про Измерения ресурсы реквизиты в чем разница. Фото Измерения ресурсы реквизиты в чем разница

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

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

При этом мы понимаем, что наличие столбцов «Период» и «Регистратор» зависит от типа регистра.

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

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

Измерения ресурсы реквизиты в чем разница. Смотреть фото Измерения ресурсы реквизиты в чем разница. Смотреть картинку Измерения ресурсы реквизиты в чем разница. Картинка про Измерения ресурсы реквизиты в чем разница. Фото Измерения ресурсы реквизиты в чем разница

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

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

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

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

Один план видов расчета может использоваться в нескольких регистрах расчета, но один регистр расчета не может использовать несколько планов видов расчета одновременно.

Регистр расчета является таблицей, в которой хранятся рассчитанные данные. А в плане видов расчета хранятся алгоритмы расчета этих данных.

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

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

Как уже говорилось, большая часть алгоритма расчета указывается в плане видов расчета. Рассмотрим, на что мы с вами можем повлиять на примере самого распространенного вида начисления «Оплата по окладу».

Сам план видов расчета чем-то напоминает справочник и выглядит следующим образом:

Открываем «Оплата по окладу» и на первой вкладке видим следующее:

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

Так как регистр расчета является периодическим, прослеживается зависимость не только от времени, но и от его вида. Что это значит? Это значит, что мы можем настроить разные виды времени, которые будут влиять на сам расчет показателей. Например работа в выходные оплачивается в двойном размере.

Также, мы можем указать некоторые зависимости, например, от территориального расположения: районный коэффициент влияет на конечный результат.

Мы с вами понимаем, что помимо оплаты по окладу, мы начисляем сотруднику командировочные, отпускные, больничные и т.д. И чтобы не произошло наложения одного вида расчета на другой, указывается их приоритет. Например, сотрудник с 1 по 10 число был в отпуске, мы ему начислили и выплатили отпускные, зарплату должны ему начислить теперь за период с 11 по 31 число, так как у отпуска приоритет выше и он «вытесняет» нашу оплату по окладу.

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

Стоит понимать, что для создания своего плана видов расчетов вам необязательно делать его именно таким же. Все эти вкладки, поля и логика работы были созданы программистами компании 1С. Вы можете создать нечто свое.

Итак, как же выглядит наша таблица регистра расчета

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

Измерения ресурсы реквизиты в чем разница. Смотреть фото Измерения ресурсы реквизиты в чем разница. Смотреть картинку Измерения ресурсы реквизиты в чем разница. Картинка про Измерения ресурсы реквизиты в чем разница. Фото Измерения ресурсы реквизиты в чем разница

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

Хотите узнавать о новых публикациях и быть в курсе наших новостей?Подпишитесь

Источник

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

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

Структура

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

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

Измерения ресурсы реквизиты в чем разница. Смотреть фото Измерения ресурсы реквизиты в чем разница. Смотреть картинку Измерения ресурсы реквизиты в чем разница. Картинка про Измерения ресурсы реквизиты в чем разница. Фото Измерения ресурсы реквизиты в чем разница

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

Измерения ресурсы реквизиты в чем разница. Смотреть фото Измерения ресурсы реквизиты в чем разница. Смотреть картинку Измерения ресурсы реквизиты в чем разница. Картинка про Измерения ресурсы реквизиты в чем разница. Фото Измерения ресурсы реквизиты в чем разница

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

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

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

Измерения ресурсы реквизиты в чем разница. Смотреть фото Измерения ресурсы реквизиты в чем разница. Смотреть картинку Измерения ресурсы реквизиты в чем разница. Картинка про Измерения ресурсы реквизиты в чем разница. Фото Измерения ресурсы реквизиты в чем разница

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

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

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

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

Измерения ресурсы реквизиты в чем разница. Смотреть фото Измерения ресурсы реквизиты в чем разница. Смотреть картинку Измерения ресурсы реквизиты в чем разница. Картинка про Измерения ресурсы реквизиты в чем разница. Фото Измерения ресурсы реквизиты в чем разница

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

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

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

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

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

Формы

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

Форма списка

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

Измерения ресурсы реквизиты в чем разница. Смотреть фото Измерения ресурсы реквизиты в чем разница. Смотреть картинку Измерения ресурсы реквизиты в чем разница. Картинка про Измерения ресурсы реквизиты в чем разница. Фото Измерения ресурсы реквизиты в чем разница

Форма записи

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

Источник

Регистры сведений. История одного «велосипеда»

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

Один из вопросов звучал безобидно и просто: «Что такое регистр сведений?» Тем удивительнее было наблюдать, как многие буквально спотыкались об него. Впечатление было такое, как будто человек шел, шел и не заметил стеклянную дверь. Тогда-то я впервые задумался о том, что не так с этим изобретением.

На момент разработки принципиальной схемы будущей платформы 1С:Предприятие 8, уже существовала хорошо проработанная и стройная теория реляционных баз данных. Ее основные понятия: записи (кортежи), таблицы (отношения), индексы, ключи были прекрасно «подогнаны» друг к другу. Все логично и ничего лишнего. Одна лишь проблема. Все это было несколько «абстрактно» для простого человека. Поэтому идея «обернуть» понятия таблиц и связей типа один-ко-многим во что-нибудь более близкое простому человеку сработала на «ура». Назвав таблицы с реквизитом типа «Дата» документами, а таблицы без такового справочниками, создатели получили эффект, наверное, больший, чем сами ожидали. В самом деле, каждый легко мог представить себе что такое справочник и что такое документ. Потому что раньше так или иначе имел с ними дело. В одночасье базы данных стали близкими для широкого круга.

В реальном мире есть как отношения подчинения, так и отношения равноправия. Поэтому в одной записи могут оказаться несколько сущностей с равными правами. Например, если мы хотим отражать в базе данных информацию о том, какие товары по каким ценам мы берем у тех или иных поставщиков (контрагентов), тогда у нас появляются записи вида: «товар», «контрагент», «цена». Здесь «цена» несомненно подчиненная сущность. Но подчинена она уже не какой-то одной а сразу двум другим сущностям.

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

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

01.01.2019, ООО Ромашка, Ложка, 150 р.

01.02.2019, ООО Ромашка, Вилка, 120 р.

01.03.2019, ООО Ромашка, Вилка, 125 р.

01.02.2020, ООО Незабудка, Ложка, 165 р.

01.03.2020, ООО Незабудка, Ложка, 167 р.

01.08.2021, ООО Василек, Ложка, 190 р.

01.08.2021, ООО Василек, Вилка, 155 р.

01.08.2021, ООО Одуванчик, Ложка, 191 р.

Тогда последние цены конкретных товаров у конкретных поставщиков будут следующие:

01.01.2019, ООО Ромашка, Ложка, 150 р.

01.03.2019, ООО Ромашка, Вилка, 125 р.

01.03.2020, ООО Незабудка, Ложка, 167 р.

01.08.2021, ООО Василек, Ложка, 190 р.

01.08.2021, ООО Василек, Вилка, 155 р.

01.08.2021, ООО Одуванчик, Ложка, 191 р.

А последние цены просто товаров, без учета поставщиков:

01.08.2021, Ложка, 190 р.

01.08.2021, Вилка, 155 р.

01.08.2021, Ложка, 191 р.

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

Разработчики восьмерки почему-то решили, что единственным местом, откуда эта операция может вызываться должен быть как раз регистр сведений. Только не обычный в их понимании, а особенный, который они выделили в отдельный подкласс и назвали «периодическим». Кавычки здесь более чем уместны, потому что никаких периодов там нет. Разработчики воспользовались словом, не вполне отдавая себе отчет в том, что оно означает. Но, по сравнению с остальным, это, в сущности, мелочь. «Периодический» регистр сведений отличается от обычного тем, что в состав первичного ключа помимо измерений входит т.н. «период» (который, конечно не период, а просто поле типа «Дата»).

Идея разработчиков заключалась в том, что последние записи должны быть уникальными. И надо сказать, что они верно поняли задачу. Но лучше бы они ее не решали. Если верить Эйнштейну (а у нас нет оснований ему не верить, раз мы пользуемся его формулами практически каждый день), то в реальном мире никакие два события не происходят в точности одновременно. Поэтому, имея поле типа «Дата», которое отмечает точку на временной оси, мы уже имеем уникальность. Достаточно позаботиться о том, чтобы ваша учетная система соответствовала реальному миру в фундаментальных аспектах (а время это именно такой аспект) и создать механизм обеспечивающий уникальность значения типа «Дата» как минимум в рамках информационной базы. Тогда наш результат из вышеприведенного примера естественным образом избавился бы от дублирующих значений:

01.08.2021 00:00:00 78364732678365738465734, Вилка, 155 р.

01.08.2021,00:00:00 78364732678365753438478, Ложка, 191 р.

Но разработчики посчитали, что достаточно будет хранить даты с точностью до секунды. И перед ними встала другая задача. Какой результат выдавать, в случае если запрос к их регистру сведений строится по неполному набору ключевых полей, как это было показано выше. Можно было бы выдавать результат:

01.08.2021, Ложка, 190 р.

01.08.2021, Вилка, 155 р.

01.08.2021, Ложка, 191 р.

Но это внезапно ломало концепцию уникальности последних записей. Можно было бы вызывать исключительную ситуацию при попытке построить запрос к регистру сведений. И, повторюсь, все-таки лучшим решением было обеспечение уникальности значений типа «Дата». Что же сделали разработчики, столкнувшись с очередной трудностью? А ничего! Вот просто ничего. В текущей реализации запрос к регистру сведений по неполному набору «измерений» вернет:

01.01.2019, Ложка, 150 р.

01.03.2019, Вилка, 125 р.

01.03.2020, Ложка, 167 р.

01.08.2021, Ложка, 190 р.

01.08.2021, Вилка, 155 р.

01.08.2021, Ложка, 191 р.

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

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

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

Делаете вывод, что ваш запрос вернет вам последние записи, а в результате получаете бессмыслицу. Проблема здесь не только в том, что вы теряете время. Хотя и это тоже важно, если учесть, что разработчиков в 1С десятки тысяч. Гораздо серьезнее следующее. Если вы полностью доверяете разработчикам платформы, то вы не станете дотошно проверять результат и можете элементарно пропустить эту ошибку. А если вы уже обожглись на чем-то другом и теперь проверяете все досконально, то и тут нет ничего хорошего. Потому что невозможно нормально работать, если знаешь, что от разработчиков платформы можно в любой момент ожидать чего угодно.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *