d9e5a92d

Глава 9. Регистры накопления

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

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

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



Этот регистр будет хранить остатки товаров на каждом складе. При проведении документов ПриходнаяНакладная и Расходная

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

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

Под итогами понимается сводная информация, выдаваемая регистром накопления. Это могут быть ответы на следующие вопросы:

• остаток конкретного товара на конкретном складе,

• остаток конкретного товара на всех складах,

• стоимость всех товаров на конкретном складе.

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

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

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

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

Выборка = РегистрыНакопления.Остатки.ВыбратьО;

Пока Выборка.Следующий() Цикл

Если СокрЛЩВыборка.Комментарий) = ЗаданнаяСтрока Тогда

КонецЕсли;

КонецЦикла;

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

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

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

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

Рассмотрим в качестве примера отслеживание взаиморасчетов предприятия с покупателями ее продукции.

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

тов. Таким образом, регистр Взаиморасчеты — это регистр остатков.

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

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

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

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

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

Активность записей

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

Взаимосвязь объектов

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

РегистрыНакопленияМенеджер

Предоставляет доступ к объектам РегистрНакопления-Менеджер через свои свойства. Свойство глобального контекста РегистрыНакопления является объектом именно этого типа.

РегистрНакопленияМенеджер

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

РегистрНакопленияНаборЗаписей

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

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

Обеспечивает доступ к одной записи набора регистра накопления. Этот объект возвращается методами других объектов, например, методом Добавить у объекта РегистрНакопленияНаборЗаписей.

РегистрНакопленияВыборка

С помощью этого объекта можно организовать обход записей регистра накопления (перебор).

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

Обеспечивает управление списком записей регистра накопления в форме в элементе управления ТабличноеПоле.

РегистрНакопленияКлючЗаписи

Этот объект нужен для идентификации записи в списке. Он используется для позиционирования в списке на конкретной записи регистра.

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

Ре ги с г ры Н ак оп ле нияМ ен еджер Л Регистры а ко п л ени яКлвд чЗ а пис и

Г
4 РегистрыНакопления Остатки СосдатьКлючЗаписиО

г ''
Реги сгрН а ко п л ени яМ е не джер -> РегистрНакопл енияНаборЗаписей
1 Выбрать()

Выбрать ПоРегисгратеруО > .
Создать НзборЗагіисейО

1
Добавить ()

' .
Ре гист pH акопленияВыборка Регистры аятолл ени яЗзп ись
Далее более подробно описаны типичные действия над регистром накопления с помощью этих объектов.

Менеджер регистров накопления

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

РегОстатки = РегистрыНакопления.ОстаткиТоваров;

РегПродажи = РегистрыНакопления.Продажи;

Менеджер регистра накопления

Объект РегистрНакопленияМенеджер предоставляет доступ к действиям с конкретным регистром. Этот объект позволяет открыть нужную выборку с помощью методов Выбрать и Выбрать-ПоРегистратору, создать новый набор записей, получить форму и макет регистра накопления.

Примеры:

РегОстатки = РегистрыНакопления.Остатки;

Выборка = РегОстатки.Выбрать();

МенеджерЗаписи = РегОстатки.СоздатьМенеджерЗаписи{);

Набор = РегОстатки.СоздатьНаборЗаписей();

ФормаСписка = РегОстатки.ПолучитьФормуСписка();

ОсновнойМакет = РегОстатки.ПолучитьМакет("Основной");

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

Метод Остатки применим только для регистра остатков и не применим для регистра оборотов. Метод Обороты применим как для регистра оборотов, так и для регистра остатков.

Метод Остатки имеет следующий синтаксис:

Остатки(<Момент времени>, <Отбор>, <Измеренмя>, <Ресурсы>)

Ниже описаны параметры метода Остатки:

Момент времени

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

Отбор

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

Измерения

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

Ресурсы

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

Метод Остатки возвращает таблицу значений, содержащую колонки с измерениями, указанными в параметре Измерения, и колонки с ресурсами, указанными в параметре Ресурсы.

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

РегМенеджер = РегистрыНакопления.СтоимостнойУчетНоменклатуры;

Отбор = Новый Структура(”Номенклатура”/ВыбТовар); тзОстатки = РегМенеджер.Остатки(,Отбор);

Если тзОстатки.Количество() > 0 Тогда

КоличествоТовара = тзОстатки[0].Количество;

СтоимостьТовара = тзОстатки[0].Сумма;

КонецЕсли;

Метод Обороты имеет следующий синтаксис:

Обороты(<Начало периода>, <Конец периода>,

<0тбор>, <Измерения>, <Ресурсы>)

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

Метод Обороты также возвращает таблицу значений, содержащую колонки с измерениями, указанными в параметре Измерения. Если производится обращение к регистру остатков, то названия колонок для ресурсов формируются следующим образом «<Имя ресурса>Приход» и «<Имя ресурса>Расход». При обращении к регистру оборотов названия колонок совпадают с именами ресурсов, как показано в следующем примере:

//обращение к регистру остатков

Отбор = Новый Структура(”Номенклатура”/ВыбТовар);

тзОбороты = РегистрыНакопления.УчетНоменклатуры.Обороты(,/Отбор);

Если тзОбороты.Количество() > 0 Тогда

ПриходТовара = тзОбороты[ОJ .КоличествоПриход;

РасходТовара = тзОбороты[0].КоличествоРасход;

КонецЕсли;

//обращение к регистру оборотов

Отбор = Новый Структура("Номенклатура"/ВыбТовар); тзОбороты = РегистрыНакопления.Продажи.Обороты(,,Отбор);

Если тзОбороты.Количество() > 0 Тогда ОборотТовара = тзОбороты[0].Сумма;

КонецЕсли;

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

ПересчитатьИтоги

Позволяет осуществить полный пересчет итогов регистра накопления.

ПолучтъПериодРассчитанныхИтогов

Возвращает дату, по которую рассчитаны итоги регистра накопления.

УстановитьПериодРассчитанныхИтогов

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

Актуальность итогов регистров можно также установить интерактивно, используя пункт меню «Операции -> Управление итогами»:



Набор записей регистра накопления

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

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

Можно создать новый набор записей из объекта РегистрНакопле-нияМенеджер, если вызвать его метод СоздатьНаборЗаписей, например:

Набор = РегистрыНакопления.Продажи.СоздатьНаборЗаписей(); Набор.Отбор.Регистратор.Значение = ВыбДок;

Движ = Набор.Добавить() ;

Движ.Регистратор = ВыбЦок;

Движ.Номенклатура = ВыбТовар;

Движ.Контрагент = ВыбКонтрагент;

Движ.Период = РабочаяДата;

Движ.Количество = Количество;

Движ.Сумма = Сумма;

Набор.Записать(Ложь); //добавить к набору записей по документу

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

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

Например:

Набор = РегистрыНакопления. Продажи. СоздатьНаборЗаписей () ; Набор.Отбор.Регистратор.Значение = ВыбДок;

Набор.Прочитать();

Для Каждого движ Из Набор Цикл Сообщить(движ.Сумма);

КонецЦикла;

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

Набор.Прочитать();

тзЗаписи = Набор.Выгрузить{);

Набор.Загрузить(тзЗаписи); Набор.Записать ();

Разработка в системе 1С:Предприятие 8.0

Можно выгружать в массив и загружать из массива только одну колонку набора записей, для чего предназначены методы Выгру-зитьКолонку и ЗагрузитьКолонку:

МассивОстатков = Набор.ВыгрузитьКолонку("Количество"); Набор.ЗагрузитьКолонку(МассивОстатков/"Количество");

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

Для удаления записей из набора существует два метода Удалить и Очистить. Первый метод удаляет запись с заданным индексом, но в качестве параметра можно передавать и саму запись (объект типа РегистрНакопленияЗапись). Второй метод полностью очищает набор, удаляя все записи. Обратите внимание, что записи удаляются из набора, а не из регистра накопления.

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

Модуль набора записей

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

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

Выборка из регистра накопления

Объект РегистрНакопленияВыборка предназначен для динамического обхода записей регистра. При этом записи считываются из базы данных порциями по мере выборки. Такая схема рацио-

нально использует память и позволяет перебрать множество записей регистра, например:

Выборка = РегистрыНакопления.Остатки.Выбрать();

Пока Выборка.Следующий() Цикл

Сообщить(СокрЛП(Выборка.Товар) + ” ” +

СокрЛП(Выборка.Склад) + ” ” +

СокрЛП(Выборка.Количество));

КонецЦикла;

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

Синтаксис метода Выбрать следующий:

Вьйэрать (<Начало интервала:», <"Конец интервала>, <Отбор>, <Порядок>) ,

Назначение параметров метода Выбрать таково:

Начало интервала, Конец интервала

Позволяют задать границы интервала и могут иметь тип «дата», МоментВремени или Граница.

Отбор

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

Приведем пример выборки записей регистра накопления за определенный период по заданному товару:

Нач = Новый МоментВремени(ВыбДатаВремяНачала);

Кон = Новый Граница(ЗыбДатаВремяОкончания,ВидГрачицы.Включая);

Отбор = Новый Структура(”Товар”,ВыбТовар);

Выборка - РегистрыНакопления.ОстаткиТоваров.Выбрать(Нач,Кон,Отбор); Пока Выборка.Следующий() Цикл

Сообщить(СокрЛП(Выборка.Товар) + ” ” +

СокрЛП(Выборка.Склад) + ” ” +

СокрЛП(Выборка.Количество));

КонецЦикла;

Разработка в системе 1 С: Предприятие 8 О

Запросы к регистрам накопления

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

Сведения о применимости таблиц-источников для каждого типа регистра приведены в следующей таблице («+» обозначает применимость, «-» обозначает неприменимость)

Таблица-источник Регистр остатков Регистр оборотов
Основная + +
Остатки + -
Обороты + +
Остатки ИО бороты + -

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

Основная таблица регистра накопления существует для обоих типов регистров (остатков и оборотов) и предоставляет следующие ПОЛЯ'

<Имя измерения>

Набор полей содержит значения измерений регистра. Имена полей соответствуют именам измерений.

<Имя реквизита>

Набор полей содержит значения реквизитов регистра

<Имя ресурса>

Набор полей содержит значения ресурсов регистра

Активность

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

ВидДвижения

Значение системного перечисления ВидДвиженияНакопле-ния, которое определяет вид движения записи — приход или расход

Регистратор

Содержит ссылку на документ-регистратор движения. Период

Содержит период (дату) записи регистра.

МоментВремени

Содержит момент времени записи регистра НомерСтроки

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

Следующий простой запрос выбирает несколько столбцов из оборотного регистра накопления Продажи:

Результат запроса показан ниже:

ВЫБРАТЬ Период, Регистратор, Номенклатура, Количество, Сумма ИЗ РегистрНакопления.Продажи
Я«р«« истрггтор

сходная нзкгшмя CO
.Номежлагдеа пСБіцгаяіерня 77ьаао Кончаете»

2 DO
140 00
100120 исходная накладная 00 11C Б'раалгерия 7 7 Ст» 200 23000
110120 сходная накладная QQ |Moh*frop15 LG Skidowr 1 00 150 00
Гі101 20 сходная накладная 00 ТМыиь 2 кноо А4Т a eh PS /2 10C0 16 oc
|іт 01 201 сходная накладная 00 1 Клавиатура Keyboard PS /2 500 iM
11 01 200 аСКООНМ накладная 00 Мь«іь OK 720 М wse А4Т 2Qj 250
11 01 2002 Расходная накладная 00 ІМьаіъ LOGITECH MS 48 1000 1001
11 Ш 20&t Расходная нак ладная 00 :1САсгясг77 1 00 9000
,1601 2Wk Расходная накладная 00 jWirtdowsXP Hgme Edition 1 CO 17000

Таблица получения остатков

Таблица получения остатков существует только у регистра остатков и предоставляет в распоряжение разработчику следующие поля-

<Имя измерения>

Набор полей содержит значения измерений регистра. Имена полей соответствуют именам измерений.

<Имя ресурса>Остаток

Набор полей содержит остатки ресурсов регистра. Имена

полей соответствуют именам ресурсов с добавлением слова Остаток.

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

"ШВРАТЬ * ИЗ РегистрНакопяения.УчетНоменклатуры.Остатки

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

Для этого у таблицы получения остатков имеются следующие параметры:

Период

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

Условие

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

Например, следующий запрос получает остатки конкретного товара на заданную дату на каждом складе:

ВЫБРАТЬ *

ИЗ РегистрНакопления.УчетНоменклатуры.Остатки(&ВыбДата,

Номенклатура=&ВыбТовар)

Результат запроса показан ниже:

[Кллем этур^ Lippis fJi э h еуЬсчягс!

• ^Rav^n-jp* Appte fV< Ке?/Г>пйсйг

D ил К ? ччест^оОстагак

Iп^нг^нон гм лаа 7Щ

Ск пчй отдала г*іщ.а.*: Щ

Таблица получения оборотов

Таблица получения оборотов существует у регистра остатков и регистра оборотов. Эта таблица включает следующие поля:

<Имя измерения>

Набор полей содержит значения измерений регистра. Имена полей соответствуют именам измерений.

<Имя ресурса>Оборот

Набор полей содержит обороты по ресурсам регистра. Имена полей соответствуют именам ресурсов с добавлением слова Оборот. Для оборотных регистров оборот подсчитывается как сумма всех движений. Для регистров остатков оборот подсчитывается как сумма всех движений Приход со знаком + (плюс) и Расход со знаком - (минус).

<Имя ресурса>Приход

Набор полей содержит суммы всех движений типа «приход» по ресурсам регистра. Имена полей соответствуют именам ресурсов с добавлением слова Приход. Это поле существует только для регистров остатков.

<Имя ресурса>Расход

Набор полей содержит суммы всех движений типа «расход» по ресурсам регистра. Имена полей соответствуют именам ресурсов с добавлением слова Расход. Это поле существует только для регистров остатков.

Период

Содержит начальную дату и время периода, к которому относится оборот регистра. Существует в случае, если только используется разворот по периодам, т.е. параметр Периодичность имеет какое-либо значение, например, Год, Квартал, Запись и т.д.

Регистратор

Содержит ссылку на документ-регистратор движения. Су-

Разработка в системе 1C Предприятие 8 О

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

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

Форма списка записей регистра в режиме «Предприятие» может выглядеть следующим образом (на примере регистра оборотов Продажи)

Продажи {сітисвк движений 1 _ п X
1 Действия *¦ И t tj
Аіа Период , Реостретер Номер ранней Контрагент Количество л
............. НОМв«.ЛвГ!?4 Г у има
1 V lij ОП ^0^12 00 Расходная міклі 1 льбруе
I С Бухгалтерия 7 7 Ба НО ос
4 V . іаоі 20021200 |Раскадная накпа с JnbtfpyC 2 01
і 1C Бухгалтерия 7 7 Ста 28001"
4 V 1lOl2GO2lZ0C j Рае йодная накла 1 Эльбрус 5 ОС
\ Клавиатура K^boa<d Р 22 4
4 1Ш 2002 1 2.00 j Расходная иакла “ ~г Эльбрус ” 1 ос
Motwrop 15 LG Shadow 150 00
4 * ' 1101 20021200 ІРаскщнея накпа Эльбрус 10 ПС
Нышь 2 кмоп А4Т ech Р 1C СИ
4'"” •s 1T 01 20021200 ] Расходная накла 4 Эльбрус IQfC
\ Мышь LOGITECH М $4 10 ОС
4 * 1101 2002 1200 :!Рэс*шн9янзкла "5 Эльбрус 20Г
..... і - Мі^шь ПК 72А.Млияі=А4 .. ?*
Для вывода записей регистра в форме необходимо разместить табличное поле и задать ему свойство ТипЗначения

В 1С Предприятии 8 0 есть возможность редактировать вручную движения документа, для чего обычно создается еще одна закладка «Движения» в форме документа

ШШОІ

Документ Движений

К N Вид движения Актн Номенклатура
я 1 Расход ? Клавиатура LK. 6Г ад отдела 4 0
Расход * Монитор 1? Р? to /ид отпела ІОО
Расхвд * Мь шь- Ice Mouse 4пс дела 20и
1 Расход "HbuesytHlUb E ад отдела 21>
- с Расам Лазериьи npwre Г и мд отдела 1 00
- і Р«ЭДД V Лазерном псажтт'1' Г лад отдела 100
;н: Расход Ноі|гбук Rover Cc l лед отдела 100
Расам ' * Смел блох. BMW лед отдела 200


¦а
Расход У Сист йлокіВМ N лад отдела 2QC
f ьсход V MwHTQpIS H ас п лад отдела •L
0?ч*гь

Провести а дьг
Чтобы добиться этого эффекта, нужно для табличного поля задать свойство ТипЗначения в значение «РегистрНакопления-НаборЗаписеи УчетНоменклатуры» Это происходит, когда вы устанавливаете свойство Данные в значение «Движения Учет-Номенклатуры»

Разработка в системе 1 С:Предприятие 8.0

ществует только в случае, если параметр Периодичность имеет значение Регистратор или Запись.

НомерСтроки

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

Следующий простой запрос показывает все поля из таблицы Обороты регистра Продажи:

Результат запроса следующий:

ВЫБРАТЬ * ИЗ РегистрНакопления.Продажи.Обороты
Шшш HobWwrtenpe ......

Клавиатура Kei^oad PS/2
Кдочвствойбосют С^маОСоиот ^

2,00 6 00
Максммус

Ммхмус

Маюыуе
Клжягдо Li^wvU LK 601 PS/2 2 Щ 6 0U
Клавиатура U 601 KB 2000 PS/2 Mcwrop 1У LQ StudtoMoiksS75N 2JXf 70U

Ш 26ЭuQ
Максиаус Монгар 17 FMoHOTSH 2ЛО. 360 00
Мдесимус

Млкомус
Motwrop 15 Н*асЫ CM 71 SET ___

Мышь 2-кисл A4T«ch PS/2
2ДО 6D0DO

' " " ш'"" 4 ao
Максимус Иш Ic* Mouse MUS-2 200 230
................ і".**. и.ил.ь.Вш&шли^шУлл, [----- ----------min*....... i»»nnv
Для регистра остатков УчетНоменклатуры картина будет немного другая:

ЙвВРАТЬ * ИЗ РегистрНакопления.УчетНоменклатуры.Обороты

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

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

Начало периода

Указывается начало периода расчета итогов.

Конец периода

Указывается конец периода расчета итогов.

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

Указывается дополнительный разворот итогов по периодичности. Задается один из следующих вариантов: Период (не разворачивать), Регистратор, День, Неделя, Декада, Месяц, Квартал, Полугодие, Год.

Условие

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

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

ВЫБРАТЬ * ИЗ РегистрНакопления.УчетНоменклатуры.Обороты(

&НачДата,

ЬКонДата,

Месяц,

Номенклатура=&ВыбТовар)

Таблица получения остатков и оборотов

В языке запросов системы 1С:Предприятие 8.0 существует возможность получения комбинированной информации по остаткам и оборотам. Для этого предназначена таблица-источник ОстаткиИОбороты, которая существует у регистра остатков и регистра оборотов.

Таблица ОстаткиИОбороты предоставляет следующие поля:

• <Имя измерения>,

• <Имя ресурса>НачальныйОстаток,

• <Имя ресурса>КонечныйОстаток,

• <Имя ресурса>Оборот,

• <Имя ресурса>Приход,

• <Имя ресурса>Расход,

Разработка в системе 1С:Предприятие 8.0

• Период (поле существует только, если в параметрах указана периодичность, не равная Период),

• Регистратор (если периодичность Регистратор или Запись),

• НомерСтроки (если периодичность Запись)

При вызове данной таблицы есть возможность указать следующие параметры:

• Начало периода,

• Конец периода,

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

• Метод дополнения,

• Условие.

Нуждается в пояснении параметр «Метод дополнения». Он задает один из следующих вариантов:

Движения

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

ДвиженияИГраницыПериода (по умолчанию)

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

Пример обращения к этой таблице приведен ниже.

ВЫБРАТЬ

Номенклатура, Склад, Период,

ВЫРАЗИТЬ(КоличествоНачальныйОстаток КАК ЧИСЛО(15,3)) НачОстаток, ВЫРАЗИТЬ(КоличествоПриход КАК ЧИСЛО(15,3)) Приход, ВЫРАЗИТЬ(КоличествоРасход КАК ЧИСЛО{15,3)) Расход, ВЫРАЗИТЬ(КоличествоКонечныйОстаток КАК ЧИСЛО(15,3)) КонОстаток

ИЗ РегистрНакопления УчетНоменклатуры.ОстаткиИОбороты(

ШачДата, &КонДата, Месяц, , Номенклатура=&ВыбТовар)

ИТОГИ

Сумма(НачОстаток),

Сумма(Приход),

Сумма(Расход),

Сумма(КонОстаток) ПО ОБЩИЕ

Этот запрос показывает остатки и обороты для конкретной номенклатуры по всем складам с разворотом по месяцам. Дополни-

тельно подсчитываются общие итоги, что потребовало приведения данных к числовому типу с помощью конструкции ВЫРАЗИТЬ.

Результат запроса показан ниже:

Номенклатура Склад Период
Клавиатура Apple Pro Основной склад 01 012002000-СО
Клавиатура Apple Ріо Основной склад СП 02 2002 000 ПО
Клавиатуре Apple Pro Основной склеп 0103 2002 0 00 ОС
Клавиатура Apple Ріа Неровной склад 01 04 2002 000 ОС
Клавиатура Apple Pro Основной склад 010S2002000M
Клавиатура Apple Pro J'-hobhch склад 01 06 2002 0 00 0]
КлаеиагфаАо&Ріо

<
Основной склад

.......
0107200200000


365

Разработка в системе 1 С:Предприятие 8.0

Важные отличия от версии 7.7

• Объект «Регистр накопления» по назначению аналогичен объекту «Регистр» из версии 7.7, но имеет некоторые отличия.

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

• Для документа можно указать, по каким именно регистрам он может делать движения.

• Дата движений документа может не совпадать с датой документа.

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

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

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



Содержание раздела