0

Измерения и ресурсы регистра сведений 1с

Регистр сведений 1С 8 — объект метаданных, предназначенный для хранения справочной информации в разрезе определенных разработчиком измерений.

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

Рассмотрим подробнее свойства и настройки регистра сведений.

Настройка и свойства регистра сведений 1С 8

Два главных свойства регистра сведения — Периодичность и Режим записи.

Это уникальные свойства регистра сведений, которых больше нет ни у одного объекта метаданных. Рассмотрим их подробнее.

Периодичность регистра сведений 1C

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

Периодичность может принимать следующие значения:

  • Непериодический
  • В пределах секунды
  • В пределах дня
  • В пределах месяца
  • В пределах квартала
  • В пределах года

Получите 267 видеоуроков по 1С бесплатно:

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

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

Режим записи регистра сведений

В 1С 8.2 и 8.3 это свойство может быть либо в значении «Независимый», либо — «Подчинение регистратору». В первом случае записи можно будет произвести как программно, так и из формы списка регистра сведений. Во втором случае обязательно указание документа-регистратора записи. Это накладывает определенные ограничения, но в то же время открывает новые возможности.

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

Также следует обратить внимание на палитру свойств измерений регистра сведений 1С 8.3. Особенно на флаги Ведущее и Основной отбор:

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

О других объектах системы 1С можно прочитать в разделе конфигурирование 1С.

Программная запись в регистр сведений 1С

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

Использование менеджера записи:

НоваяЗапись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();
НоваяЗапись.Валюта = Справочники.Валюты.НайтиПоНаименованию(«USD»);
НоваяЗапись.Период = Дата(31,12,2016);
НоваяЗапись.Курс = 100;
НоваяЗапись.Кратность = 1;
НоваяЗапись.Записать();

Использование набора записей регистра сведений 1С:

НовыйНаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
//если вы не установите отбор — удалятся все записи регистра сведений
НовыйНаборЗаписей.Отбор.Валюта.Установить(Доллар, Истина);
НовыйНаборЗаписей.Отбор.Период.Установить(Дата(31,12,2016), Истина);
//формируем непосредственно запись набора
НоваяЗаписьНабора = НовыйНаборЗаписей.Добавить();
НоваяЗаписьНабора.Валюта = Справочники.Валюты.НайтиПоНаименованию(«USD»);
НоваяЗаписьНабора.Период = Дата(31,12,2016);
НоваяЗаписьНабора.Курс = 100;
НоваяЗаписьНабора.Кратность = 1;
НовыйНаборЗаписей.Записать();

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

Видеолекция по регистрам сведений в 1С для начинающих:

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

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

Зачем нужны регистры?

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

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

Документы => Регистры => Отчеты

Измерения и ресурсы

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

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

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

Регистр: Остатки товаров
Измерения: Товар, Склад
Ресурсы: Кол-во, Стоимость

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

Движения в регистрах

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

Читайте также:  В какой программе создают сайты

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

Виды регистров

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

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

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

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

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

Оборотные регистры

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

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

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

Оборотный регистр Доходы
Измерения: Клиент, Товар
Ресурсы: Доход
Реквизиты: нет
Периодичность: День Регистр остатков Товары
Измерения: Товар, Склад
Ресурсы: Количество, Стоимость
Реквизиты: нет Хранит доходы от продаж за день в разрезе клиентов и товаров. Хранит остатки товаров на каждом складе в количественном и суммовом выражении.

Запись движений в регистр остатков
(только при проведении документа)

1. Метод ДвижениеПриход
Синтаксис: ДвижениеПриход( , . , . )
Пример: Регистр.Доходы.ДвижениеПриход(Покупатель,КупленныйТовар,СуммаПокупки)

2. Метод ДвижениеПриходВыполнить
Пример:

Регистр.Доходы.Клиент = Покупатель;
Регистр.Доходы.Товар = КупленныйТовар;
Регистр.Доходы.Доход = СуммаПокупки;
Регистр.Доходы.ДвижениеПриходВыполнить();

Запись движений в оборотный регистр
(только при проведении документа)

1. Метод Движение
Синтаксис: Движение( , . , . )
Пример: Регистр.Товары.Движение (ПоступившийТовар, ТекСклад, КолвоПоНакладной, СуммаПоНакладной)

2. Метод ДвижениеВыполнить
Пример:
Регистр.Товары.Товар = ПоступившийТовар;
Регистр.Товары.Склад = ТекСклад;
Регистр.Товары.Количество = КолвоПоНакладной;
Регистр.Товары.Стоимость = СуммаПоНакладной;
Регистр.Товары.ДвижениеВыполнить();

Примечание: Если сумма или количество в движении будет отрицательным, то это движение будет расходом, иначе приходом.

Обращение к итогам регистра

1-й способ.
РегТовары = СоздатьОбъект("Регистр.Товары");
РегТовары. ВыбратьИтоги();
Пока РегТовары.ПолучитьИтог()=1 Цикл
. Сообщить("Товар " + Строка(РегТовары.Товар) +
. " на складе " + Строка(РегТовары.Склад) +
. " кол-во: " + Строка(РегТовары.Количество) +
. " стоимость: " + Строка(РегТовары.Стоимость) +
КонецЦикла;

2-й способ. Выгрузка итогов в таблицу значений

РегДоходы = СоздатьОбъект("Регистр.Доходы");
ТабЗнач = СоздатьОбъект("ТаблицаЗначений");

РегДоходы.ВыгрузитьИтоги(ТабЗнач);

ТабЗнач.ВыбратьСтроки();
Пока ТабЗнач.ПолучитьСтроку()=1 Цикл
. Сообщить("Товар " + Строка(ТабЗнач.Товар) +
. " на складе " + Строка(ТабЗнач.Склад) +
. " кол-во: " + Строка(ТабЗнач.Количество) +
. " стоимость: " + Строка(ТабЗнач.Стоимость) +
КонецЦикла;

Обращение к итогам оборотного регистра

РегДоходы = СоздатьОбъект("Регистр.Доходы");
//установить период выборки "30 ноября 2001 года"
РегДоходы.ИспользоватьПериод(2001,11,30);

1. Метод Итог
Синтаксис : Итог( , . )
Пример:
//получить доход за день по данному клиенту и данному товару
Доход = РегДоходы.Итог(ТекКлиент, ТекТовар, "Доход");

2. Метод Итоги
Пример:
//получить доход за день по данному клиенту и данному товару
РегДоходы.Итоги(ТекКлиент, ТекТовар);
Доход = РегДоходы.Доход;

3. Метод СводныйИтог
Синтаксис: СводныйИтог( , . )
Могут быть указаны не все измерения. Фиксируются только указанные измерения.

Пример:
//получить сводные итоги за день
ДоходПоКлиенту = РегДоходы.СводныйИтог(ТекКлиент,,"Доход");
ДоходПоТовару = РегДоходы.СводныйИтог(,ТекТовар,"Доход");

4. Метод СводныеИтоги
Синтаксис: СводныеИтоги( , . )
Могут быть указаны не все измерения. Фиксируются только указанные измерения.

Пример:
//получить сводные итоги за день по клиенту
РегДоходы.СводныеИтоги(ТекКлиент,); //указано только одно измерение
ДоходПоКлиенту = РегДоходы.Доход;

//получить сводные итоги за день по товару
РегДоходы.СводныеИтоги(,ТекТовар); //указано только одно измерение
ДоходПоТовару = РегДоходы.Доход;

Обращение к итогам регистра остатков

1. Метод Остаток
Синтаксис: Остаток( , .

Пример:
//получить остаток данного товара на данном складе
Колво = РегТовары.Остаток (ТекТовар, ТекСклад, "Количество");

//получить стоимость данного товара на данном складе
Стоимость = РегТовары.Остаток (ТекТовар, ТекСклад, "Стоимость");

2. Метод Остатки
Синтаксис: Остатки( , . )

Пример:
//получить остаток данного товара на данном складе по кол-ву и по сумме
РегТовары.Остатки (ТекТовар, ТекСклад);
Колво = РегТовары.Количество;
Стоимость = РегТовары.Стоимость;

3. Метод СводныйОстаток
Синтаксис: СводныйОстаток( , . )
Могут быть указаны не все измерения. Фиксируются только указанные измерения.

Пример:
//получить остаток данного товара на всех складах
КолвоТовара = РегТовары.СводныйОстаток (ТекТовар,,"Количество");
СтоимостьТовара = РегТовары.СводныйОстаток (ТекТовар,,"Стоимость");

//получить стоимость всех товаров на данном складе
СтоимостьПоСкладу = РегТовары.СводныйОстаток (,ТекСклад,"Стоимость");

4. Метод СводныеОстатки
Пример:
//получить сводные остатки по товару
РегТовары.СводныеОстатки(ТекТовар,); //указано только одно измерение
КолвоТовара = РегТовары.Количество;
СтоимостьТовара = РегТовары.Стоимость;

//получить стоимость всех товаров на данном складе
РегТовары.СводныеИтоги(,ТекСклад); //указано только одно измерение
СтоимостьПоСкладу = РегТовары.Стоимость;

Обращение к движениям регистра

РегТовары.ВыбратьДвижения(ДатаНач, ДатаКон);
Пока РегТовары.ПолучитьДвижение()=1 Цикл
. Сообщить("Дата движения " + Строка(РегТовары.ТекущийДокумент.ДатаДок));
. Сообщить("Клиент: " + РегТовары.Клиент);
. Сообщить("Товар: " + РегТовары.Товар);
. Сообщить("Сумма: " + РегТовары.Доход);
КонецЦикла;

Читайте также:  Как вести профиль в одном стиле

Фильтрация движений и итогов

1. Метод УстановитьФильтр
Синтаксис: УстановитьФильтр( , . , )
Пример:
//выбрать все движения по данному складу за период
РегТовары.УстановитьФильтр(,ТекСклад);
РегТовары.ВыбратьДвижения(ДатаНач, ДатаКон);
Пока РегТовары.ПолучитьДвижение()=1 Цикл
.
КонецЦикла;

//выбрать все товары на данном складе
РегТовары.УстановитьФильтр(,ТекСклад);
РегТовары.ВыбратьИтоги();
Пока РегТовары.ПолучитьИтог()=1 Цикл
.
КонецЦикла;

2. Метод УстановитьЗначениеФильтра
Синтаксис: УстановитьЗначениеФильтра( , , )
Пример:
//выбрать все движения по данному складу за период
РегТовары.УстановитьЗначениеФильтра("Склад", ТекСклад);

//далее идет выборка движений или итогов

3. Метод ВыбратьДвиженияДокумента ( )

4. Метод ВыбратьДвиженияСОстатками ( , )
Применяется только для регистра остатков.

Временный расчет регистров

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

РегТовары = СоздатьОбъект("Регистр.Товары");
РегДоходы = СоздатьОбъект("Регистр.Доходы");

//установка флага временного расчета для регистров
РегТовары.ВременныйРасчет(1);
РегДоходы.ВременныйРасчет(1);

1. Метод РассчитатьРегистрыНа( , )
Рассчитать все регистры с установленным флагом временного расчета на начало события.
(на начало даты или на момент до проведения документа)

2. Метод РассчитатьРегистрыПо ( , )
Рассчитать все регистры с установленным флагом временного расчета на конец события.
(на конец даты или на момент после проведения документа)

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

ТекстЗапроса = "
|Период С ДатаНач По ДатаКон;
|Товар = Регистр.Доходы.Товар;
|Клиент = Регистр.Доходы.Клиент;
|Доход = Регистр.Доходы.Доход;
|Условие (Товар = ТекТовар);
|Группировка Клиент;
|Функция ПриходПоКлиенту = Приход(Доход);
|";

НОВОСТИ ФОРУМА
Рыцари теории эфира
01.10.2019 – 05:20: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ – Upbringing, Inlightening, Education ->
[center][Youtube]69vJGqDENq4[/Youtube][/center]
[center]14:36[/center]
Osievskii Global News
29 сент. Отправлено 05:20, 01.10.2019 г.’ target=_top>Просвещение от Вячеслава Осиевского – Карим_Хайдаров.
30.09.2019 – 12:51: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ – Upbringing, Inlightening, Education ->
[center][Ok]376309070[/Ok][/center]
[center]11:03[/center] Отправлено 12:51, 30.09.2019 г.’ target=_top>Просвещение от Дэйвида Дюка – Карим_Хайдаров.
30.09.2019 – 11:53: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ – Upbringing, Inlightening, Education ->
[center][Youtube]VVQv1EzDTtY[/Youtube][/center]
[center]10:43[/center]

интервью Раввина Борода https://cursorinfo.co.il/all-news/rav.
мой телеграмм https://t.me/peshekhonovandrei
мой твиттер https://twitter.com/Andrey54708595
мой инстаграм https://www.instagram.com/andreipeshekhonow/

[b]Мой комментарий:
Андрей спрашивает: Краснодарская синагога – это что, военный объект?
– Да, военный, потому что имеет разрешение от Росатома на манипуляции с радиоактивными веществами, а также иными веществами, опасными в отношении массового поражения. Именно это было выявлено группой краснодарцев во главе с Мариной Мелиховой.

[center][Youtube]CLegyQkMkyw[/Youtube][/center]
[center]10:22 [/center]

Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html

Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
http://av-inf.blogspot.com/2013/12/dalles.html

[center][b]Сон разума народа России [/center]

[center][Youtube]CLegyQkMkyw[/Youtube][/center]
[center]10:22 [/center]

Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html

Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
http://av-inf.blogspot.com/2013/12/dalles.html

[center][b]Сон разума народа России [/center]

Рассылка
Курс лекций
Статьи
Программы
Ссылки

Форум

mista.ru / 1С:Предприятие / Учебник / Регистры
Назначение регистров
Запись движений
Обращение к итогам
Обращение к движениям
Фильтрация движений
Временный расчет
Запрос к регистру
Народная примета: если программист в девять утра уже на работе, значит, он еще на работе.

Назначение регистров

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

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

Документы => Регистры => Отчеты


Измерения и ресурсы

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

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

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

Регистр: Остатки товаров
Измерения: Товар, Склад
Ресурсы: Кол-во, Стоимость

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

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

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

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

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

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

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

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

Читайте также:  Брянск супер мтс масс scp

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

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

Основы программирования

Оборотный регистр Доходы
Измерения: Клиент, Товар
Ресурсы: Доход
Реквизиты: нет
Периодичность: День Регистр остатков Товары
Измерения: Товар, Склад
Ресурсы: Количество, Стоимость
Реквизиты: нет Хранит доходы от продаж за день в разрезе клиентов и товаров. Хранит остатки товаров на каждом складе в количественном и суммовом выражении.

Запись движений в регистр остатков
(только при проведении документа)
р.Доходы.ДвижениеПриход(Покупатель,КупленныйТовар,СуммаПокупки)

Методы ДвижениеПриходВыполнить и ДвижениеРасходВыполнить
Пример:

Регистр.Доходы.Клиент = Покупатель;
Регистр.Доходы.Товар = КупленныйТовар;
Регистр.Доходы.Доход = СуммаПокупки;
Регистр.Доходы.ДвижениеПриходВыполнить();

Запись движений в оборотный регистр
(только при проведении документа)

1. Метод Движение

Пример: Регистр.Товары.Движение (ПоступившийТовар, ТекСклад, КолвоПоНакладной, СуммаПоНакладной)

2. Метод ДвижениеВыполнить
Пример:
Регистр.Товары.Товар = ПоступившийТовар;
Регистр.Товары.Склад = ТекСклад;
Регистр.Товары.Количество = КолвоПоНакладной;
Регистр.Товары.Стоимость = СуммаПоНакладной;
Регистр.Товары.ДвижениеВыполнить();

Примечание: Если сумма или количество в движении будет отрицательным, то это движение будет расходом, иначе приходом.

Обращение к итогам регистра

1-й способ.
РегТовары = СоздатьОбъект("Регистр.Товары");
РегТовары. ВыбратьИтоги();
Пока РегТовары.ПолучитьИтог()=1 Цикл
. Сообщить("Товар " + Строка(РегТовары.Товар) +
. " на складе " + Строка(РегТовары.Склад) +
. " кол-во: " + Строка(РегТовары.Количество) +
. " стоимость: " + Строка(РегТовары.Стоимость) +
КонецЦикла;

2-й способ. Выгрузка итогов в таблицу значений

РегДоходы = СоздатьОбъект("Регистр.Доходы");
ТабЗнач = СоздатьОбъект("ТаблицаЗначений");

РегДоходы.ВыгрузитьИтоги(ТабЗнач);

ТабЗнач.ВыбратьСтроки();
Пока ТабЗнач.ПолучитьСтроку()=1 Цикл
. Сообщить("Товар " + Строка(ТабЗнач.Товар) +
. " на складе " + Строка(ТабЗнач.Склад) +
. " кол-во: " + Строка(ТабЗнач.Количество) +
. " стоимость: " + Строка(ТабЗнач.Стоимость) +
КонецЦикла;

Обращение к итогам оборотного регистра

РегДоходы = СоздатьОбъект("Регистр.Доходы");
//установить период выборки "30 ноября 2001 года"
РегДоходы.ИспользоватьПериод(2001,11,30);

1. Метод Итог

Пример:
//получить доход за день по данному клиенту и данному товару
Доход = РегДоходы.Итог(ТекКлиент, ТекТовар, "Доход");

2. Метод Итоги
Пример:
//получить доход за день по данному клиенту и данному товару
РегДоходы.Итоги(ТекКлиент, ТекТовар);
Доход = РегДоходы.Доход;

3. Метод СводныйИтог

Могут быть указаны не все измерения. Фиксируются только указанные измерения.

Пример:
//получить сводные итоги за день
ДоходПоКлиенту = РегДоходы.СводныйИтог(ТекКлиент,,"Доход");
ДоходПоТовару = РегДоходы.СводныйИтог(,ТекТовар,"Доход");

4. Метод СводныеИтоги

Могут быть указаны не все измерения. Фиксируются только указанные измерения.

Пример:
//получить сводные итоги за день по клиенту
РегДоходы.СводныеИтоги(ТекКлиент,); //указано только одно измерение
ДоходПоКлиенту = РегДоходы.Доход;

//получить сводные итоги за день по товару
РегДоходы.СводныеИтоги(,ТекТовар); //указано только одно измерение
ДоходПоТовару = РегДоходы.Доход;

Обращение к итогам регистра остатков

Пример:
//получить остаток данного товара на данном складе
Колво = РегТовары.Остаток (ТекТовар, ТекСклад, "Количество");

//получить стоимость данного товара на данном складе
Стоимость = РегТовары.Остаток (ТекТовар, ТекСклад, "Стоимость");

2. Метод Остатки

Пример:
//получить остаток данного товара на данном складе по кол-ву и по сумме
РегТовары.Остатки (ТекТовар, ТекСклад);
Колво = РегТовары.Количество;
Стоимость = РегТовары.Стоимость;

3. Метод СводныйОстаток

Могут быть указаны не все измерения. Фиксируются только указанные измерения.

Пример:
//получить остаток данного товара на всех складах
КолвоТовара = РегТовары.СводныйОстаток (ТекТовар,,"Количество");
СтоимостьТовара = РегТовары.СводныйОстаток (ТекТовар,,"Стоимость");

//получить стоимость всех товаров на данном складе
СтоимостьПоСкладу = РегТовары.СводныйОстаток (,ТекСклад,"Стоимость");

4. Метод СводныеОстатки
Пример:
//получить сводные остатки по товару
РегТовары.СводныеОстатки(ТекТовар,); //указано только одно измерение
КолвоТовара = РегТовары.Количество;
СтоимостьТовара = РегТовары.Стоимость;

//получить стоимость всех товаров на данном складе
РегТовары.СводныеИтоги(,ТекСклад); //указано только одно измерение
СтоимостьПоСкладу = РегТовары.Стоимость;

Обращение к движениям регистра

РегТовары.ВыбратьДвижения(ДатаНач, ДатаКон);
Пока РегТовары.ПолучитьДвижение()=1 Цикл
. Сообщить("Дата движения " + Строка(РегТовары.ТекущийДокумент.ДатаДок));
. Сообщить("Клиент: " + РегТовары.Клиент);
. Сообщить("Товар: " + РегТовары.Товар);
. Сообщить("Сумма: " + РегТовары.Доход);
КонецЦикла;

Фильтрация движений и итогов

1. Метод УстановитьФильтр

Пример:
//выбрать все движения по данному складу за период
РегТовары.УстановитьФильтр(,ТекСклад);
РегТовары.ВыбратьДвижения(ДатаНач, ДатаКон);
Пока РегТовары.ПолучитьДвижение()=1 Цикл
.
КонецЦикла;

//выбрать все товары на данном складе
РегТовары.УстановитьФильтр(,ТекСклад);
РегТовары.ВыбратьИтоги();
Пока РегТовары.ПолучитьИтог()=1 Цикл
.
КонецЦикла;

2. Метод УстановитьЗначениеФильтра

Пример:
//выбрать все движения по данному складу за период
РегТовары.УстановитьЗначениеФильтра("Склад", ТекСклад);

//далее идет выборка движений или итогов

3. Метод ВыбратьДвиженияДокумента

4. Метод ВыбратьДвиженияСОстатками
Применяется только для регистра остатков.

Временный расчет регистров

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

РегТовары = СоздатьОбъект("Регистр.Товары");
РегДоходы = СоздатьОбъект("Регистр.Доходы");

//установка флага временного расчета для регистров
РегТовары.ВременныйРасчет(1);
РегДоходы.ВременныйРасчет(1);

1. Метод РассчитатьРегистрыНа
Рассчитать все регистры с установленным флагом временного расчета на начало события.
(на начало даты или на момент до проведения документа)

2. Метод РассчитатьРегистрыПо
Рассчитать все регистры с установленным флагом временного расчета на конец события.
(на конец даты или на момент после проведения документа)

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

ТекстЗапроса = "
|Период С ДатаНач По ДатаКон;
|Товар = Регистр.Доходы.Товар;
|Клиент = Регистр.Доходы.Клиент;
|Доход = Регистр.Доходы.Доход;
|Условие (Товар = ТекТовар);
|Группировка Клиент;
|Функция ПриходПоКлиенту = Приход(Доход);
|";

admin

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

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