Для чего нужен регистр накопления в 1с
Перейти к содержимому

Для чего нужен регистр накопления в 1с

  • автор:

Регистр накопления

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

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

Структура

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

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

Регистр накопления

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

Регистр накопления

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

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

Регистр накопления

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

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

Регистр накопления

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

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

Регистр накопления

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

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

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

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

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

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

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

Регистр накопления

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

Агрегаты

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

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

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

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

Для чего нужен регистр накопления в 1с

Описание:

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

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

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

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

В программных модулях для общих действий над регистром накопления (получение остатков и оборотов по данным регистра накопления, поиска нужных записей, формирования выборок, создания форм и макетов) служит объект РегистрНакопленияМенеджер.<Имя регистра накопления>. Для считывания и занесения набора записей в базу данных по определенному условию отбора служит объект РегистрНакопленияНаборЗаписей.<Имя регистра накопления> Для динамического обхода записей регистра служит объект РегистрНакопленияВыборка.<Имя регистра накопления>.

Для чего нужен регистр накопления в 1с

Регистр накопления

Зачем нужен регистр накопления?

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

Казалось бы, все необходимое мы с вами уже создали: у нас есть что расходовать и приходовать (справочники), и у нас есть чем расходовать и приходовать (документы). Осталось только построить несколько отчетов, и автоматизация ООО «На все руки мастер» будет закончена.

Однако это не так.

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

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

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

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

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

Рис. 4.1. Алгоритм работы конфигурации

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

Объект конфигурации Регистр накопления

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

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

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

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

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

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

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

Создание регистра накопления «ОстаткиМатериалов»

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

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

Откроем в конфигураторе нашу учебную конфигурацию и создадим новый объект конфигурации Регистр накопления . Зададим имя регистра – ОстаткиМатериалов . Нажмем Далее и перейдем к созданию структуры регистра.

Создадим измерения регистра:

§ Материал , с типом СправочникСсылка.Номенклатура ,

§ Склад , с типом СправочникСсылка.Склады .

Затем создадим ресурс Количество с длиной 15 и точностью 3 .

В результате этих действий регистр ОстаткиМатериалов должен иметь следующий вид (рис. 4.2):

Рис. 4.2. Регистр «ОстаткиМатериалов»

Если вы сейчас попытаетесь запустить 1С:Предприятие в режиме отладки, то система выдаст сообщение об ошибке: РегистрНакопления.ОстаткиМатериалов: Ни один из документов не является регистратором для регистра . Это сообщение еще раз подтверждает тот факт, что назначение регистра накопления в том, чтобы аккумулировать данные, поставляемые различными документами.

Создание движений документа «ПриходнаяНакладная»

Движения документа – это записи в регистрах, которые создаются в процессе проведения документа и отражают изменения, производимые документом. Откроем окно редактирования объекта конфигурации Документ ПриходнаяНакладная .

Перейдем на закладку Движения и в списке регистров конфигурации отметим регистр накопления ОстаткиМатериалов (рис. 4.3):

Рис. 4.3. Отметим регистр накопления и воспользуемся конструктором движений…

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

Конструктор устроен просто (рис. 4.4). В списке Регистры перечислены регистры, в которых документ может создавать движения. В нашем случае там пока один регистр ОстаткиМатериалов .

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

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

Обратите внимание, что по умолчанию конструктор предлагает нам создавать движения прихода ( Тип движения регистра – Приход , символ + рядом с названием регистра) по регистру ОстаткиМатериалов . Это нас вполне устраивает, ведь документ ПриходнаяНакладная и должен приходовать материалы.

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

В нижнем окне сформируется соответствие полей и выражений (рис. 4.5).

Рис. 4.5. Выберем табличную часть и нажмем «Заполнить выражения»…

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

Нажмем кнопку OK и посмотрим, какой текст сформировал конструктор в модуле объекта (листинг 4.1):

Листинг 4.1. Процедура ОбработкаПроведения()

Процедура ОбработкаПроведения(Отказ, Режим)

// Данный фрагмент построен конструктором.

// При повторном использовании конструктора,

// внесенные вручную изменения будут утеряны.

Для Каждого ТекСтрокаМатериалы Из Материалы Цикл

// Регистр ОстаткиМатериалов Приход

Конструктор создал обработчик события ОбработкаПроведения объекта конфигурации Документ и поместил его в модуль объекта.

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

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

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

Затем мы присваиваем нужные значения всем полям этой записи и после перебора всех строк документа (после завершения цикла) «одним махом» записываем в регистр ОстаткиМатериалов весь набор записей движений документа.

Посмотрим, как это работает. Запустим 1С:Предприятие в режиме отладки и откроем одновременно два окна: список документов ПриходнаяНакладная и список регистра накопления ОстаткиМатериалов .

Откроем документ Приходная накладная №1 и нажмем OK . Обратите внимание, что при проведении приходной накладной появляются соответствующие записи в регистрах накопления (рис. 4.6):

Рис. 4.6. Взаимодействие документа и регистра

Аналогичные действия проделаем и с документом Приходная накладная №2 .

Создание движений документа «ОказаниеУслуги»

Теперь мы аналогичным образом создадим движения документа ОказаниеУслуги .

При использовании конструктора будем внимательны и обратим внимание на то, что документ Оказание услуги должен расходовать материалы. Поэтому перед тем, как нажать кнопку OK, убедимся, что выбран правильный тип движения регистров (нам нужен Расход ). Кроме того, при автоматическом заполнении поле Материал не заполнится автоматически. Если мы оставим это так, как есть, то в регистре накопления в строках с типом Движение регистра – расход имя номенклатуры фиксироваться не будет. Чтобы избежать этого, надо выбрать поле Материал и в поле Реквизиты документа дважды щелкнуть по строке ТекСтрокаПереченьНомеклатуры.Номенклатура . Таким образом, имя номенклатуры для строк регистра накопления будет выбираться из табличной части документа.

Запустим отладку и создадим документ оказания услуги, который будет расходовать один транзистор Philips за 3 рубля.

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

Сформированные таким образом движения этого документа будут не совсем правильны. Дело в том, что в документе ОказаниеУуслуги , в отличие от документа ПриходнаяНакладная , могут содержаться не только расходуемые материалы, но и услуги. Поэтому в регистр ОстаткиМатериалов будут попадать записи и о расходуемых услугах, что неправильно.

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

Отчет

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

Создание отчета «Материалы»

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

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

Рис. 5.1. Окно редактирования объекта конфигурации Отчет

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

Рис. 5.2. Конструктор макета

Платформа создаст новый макет, содержащий схему компоновки данных, и сразу же откроет конструктор схемы компоновки данных.

Конструктор обладает большим количеством возможностей для визуального проектирования отчетов, но мы сейчас воспользуемся только самыми простыми его возможностями и определим те данные, которые хотим видеть в результате работы нашего отчета. Добавим новый набор данных — запрос (рис. 5.3):

Рис 5.3. Добавление набора данных в конструкторе схемы компоновки

Для того чтобы создать текст запроса, запустим конструктор запроса – кнопка Конструктор запроса (рис. 5.4):

Рис. 5.4. Вызов конструктора запроса из конструктора схемы компоновки данных

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

Рис. 5.5. Кроме таблицы регистра «ОстаткиМатериалов» присутствуют еще несколько виртуальных таблиц…

Поскольку мы хотим видеть как остатки материалов, так и информацию об их поступлении и расходовании, нас будет интересовать виртуальная таблица ОстаткиМатериалов.ОстаткиИОбороты . Раскроем ее (рис. 5.6).

Рис. 5.6. Таблица «ОстаткиМатериалов.ОстаткиИОбороты»

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

Начнем выбирать поля таблицы в нужном нам порядке двойным щелчком мыши. Сначала выберем Склад и Материал . Затем выберем КоличествоНачальныйОстаток , КоличествоПриход , КоличествоРасход и в заключение КоличествоКонечныйОстаток .

В результате окно Поля должно быть заполнено следующим образом (рис. 5.7):

Рис. 5.7. Выбранные поля

После этого на закладке Группировка укажем групповое поле Склад :

Рис. 5.8. Групповое поле «Склад»

Нажмем OK и вернемся в конструктор схемы компоновки данных (рис 5.9).

Рис. 5.9. Конструктор схемы компоновки данных

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

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

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

Рис. 5.10. Добавим новую группировку

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

Для этого перейдем на закладку Выбранные поля и перенесем мышью из списка доступных полей :

Рис. 5.11. Настройки отчета

Запустим 1С:Предприятие в режиме отладки и посмотрим, как работает отчет. Выполним команду Операции  Отчет…  Материалы.

Система автоматически сформирует форму отчета и форму настроек для него. Нажмем Сформировать .

Как видите, наш отчет вполне презентабелен и полностью отражает движение материалов, произошедшее в нашей организации (рис. 5.12):

Рис. 5.12. Отчет «Материалы»

Макет

Объект конфигурации Макет предназначен для хранения различных форм представления данных, которые могут потребоваться каким-либо объектам конфигурации или всему прикладному решению в целом. Макет может содержать табличный или текстовый документ, двоичные данные, HTML-документ или Active Document, графическую или географическую схему, схему компоновки данных или макет оформления схемы компоновки данных. Макеты могут существовать как сами по себе (общие макеты), так и быть подчинены какому-либо объекту конфигурации.

Одно из предназначений макета, подчиненного объекту конфигурации и содержащего табличный документ, – создание печатной формы этого объекта.

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

Печатная форма может включать в себя различные графические объекты: картинки, OLE-объекты, диаграммы и т. д.

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

Создание макета документа «Оказание услуги»

Откроем в конфигураторе окно редактирования объекта конфигурации Документ ОказаниеУслуги . Перейдем на закладку Макеты и запустим конструктор печати (рис. 6.1):

Рис. 6.1. Запустим конструктор печати…

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

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

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

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

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

В конфигураторе откроется форма документа и его макет (рис. 6.2):

Рис. 6.2. Макет документа ОказаниеУслуги

Проверим макет в работе. Запустим 1С:Предприятие в режиме отладки и откроем документ Оказание услуги №1 . Обратите внимание, что в правом нижнем углу документа появилась новая кнопка Печать (рис. 6.3).

Рис. 6.3. Появилась новая кнопка Печать

Эту кнопку добавил конструктор. Нажмем на нее и увидим печатную форму нашего документа (рис. 6.4).

Рис. 6.4. Печатная форма документа

Как видите, конструктор сформировал вполне подходящую печатную форму для нашего документа. Единственное, чего не хватает в данной форме, – это итоговой суммы документа.

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

Редактирование макета документа «Оказание услуги»

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

Добавим новую область для вывода итоговой суммы документа (рис. 7.1). Выделим мышью две пустые строки и выполним команду Таблица  Имена  Назначить имя…

Рис. 7.1. Выделим мышью две строки и зададим имя области

Назовем область Всего . В созданной области, в колонке Цена , напишем Всего , а в колонке Сумма напишем ВсегоПоДокументу .

Вызвав палитру свойств для последней заполненной нами ячейки, укажем, что в этой ячейке будет находиться не текст, а параметр (рис. 7.2):

Рис. 7.2. Укажем, что в ячейке должен находиться не текст, а параметр…

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

Текст , содержащийся в ячейке, будет показан на экране.

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

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

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

Теперь откроем модуль формы документа ОказаниеУслуги — ФормаДокумента . Найдем в нем процедуру Печать и после цикла Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл . КонецЦикла; добавим в нее следующие строки (листинг 7.1):

Листинг 7.1. Печать формы документа

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

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

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

Для обладателей версии 1С 8.2, 8.3 и выше. Ваша процедура печать находится в модуле менеджера (окно документа — закладка «Прочее» — кнопка «Модуль менеджера»). В тексте процедуры 7.1.2 строки выделенные синим — это строки которые уже должны быть в процедуре. Строки выделенные красным — это строки, которые вам следует добавить в процедуру.

Листинг 7.1.1. Печать формы документа для версии 1С 8.2, 8.3 и выше.

Регистры накопления в 1С 8.3, с чем их едят?

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

То есть данные необходимо накапливать и обрабатывать. Собственно, для этих целей и служат регистры накопления в 1С 8.3.

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

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

2. Как устроены регистры накопления остатков и оборотный?

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

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

Таблицы регистра накопления остатков.

Таблица движений.


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

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

Период – дата. Определяет, с какого момента данное движение влияет на формирование итогов и виртуальных таблиц 1С.

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

Номер строки – порядковый номер строки начинается с 1. Уникальный в пределах регистратора. Совместно с регистратором образует ключ уникальности.

Активность – Булево, в случае значения «Истина» запись повлияет на формирование итогов и виртуальных таблиц 1С.

Вид движения – Системное перечисление ВидДвиженияНакопления, может принимать два значения «Приход» или «Расход». В случае прихода остаток увеличивается, расхода – уменьшается.

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

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

Таблица итогов.

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

2. Измерения

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

Для таблицы движений (Рис.1) период рассчитанных итогов равен 30.06.2019, а самое раннее движение было сделано 02.04.2019. Итоги будут храниться за следующие периоды: 01.05.2019, 01.06.2019, 01.07.2019 и актуальные итоги (рассчитываются на дату 30.11.3999).

Виртуальная таблица остатков.

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

Алгоритм расчета остатков на заданный момент времени:

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

Виртуальная таблица оборотов.

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

Виртуальная таблица 1С остатков и оборотов

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

Таблицы регистра накопления оборотов.

Таблица движений.

Таблица движений записана в БД, и формируется таким же образом, как и движения в регистре остатков. Отличается отсутствием поля ВидДвижения: в нем нет надобности, так как регистр предназначен для накапливания оборотов (например, количество продаж).

Таблица итогов.

Таблица итогов хранится в базе данных и содержит те же поля, что и в остаточном регистре:

2. Измерения

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

Виртуальная таблица оборотов.

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

Для наглядности рассмотрим, как рассчитываются обороты, если бы использовался регистр остатков.

Сравнивая Рис.10-11 можно еще раз убедиться в том, что использовать регистр накопления остатков для получения оборотов нерационально. Система затратит гораздо больше ресурсов, если для расчета будет использована только таблица движений без использования итоговых данных.

3. Как рационально использовать таблицы «регистры накопления»?

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

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

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

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

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