Изменить движения регистра накопления. |
Я |
09.09.10 — 15:41
Как быстро и правильно изменить 1 реквизит регистра накопления?
Например мне нужно проставить значение измерения у всех движений 1 регистратора
1 — 09.09.10 — 15:42
Для каждого Движение из Движения Цикл и Записать
2 — 09.09.10 — 15:43
быстрее всего было бы прямо в базе данных, и потом пересчитать итоги.
3 — 09.09.10 — 15:45
а, всего лишь у одного регистратора? тогда (1)
4 — 09.09.10 — 15:46
(1) главное чтобы потом регистратор не перепровели
5 — 09.09.10 — 15:46
(1) Ок действительно.
6 — 09.09.10 — 15:46
(4) Ну, уж пр это автор не спрашивал.
7 — 09.09.10 — 15:53
Ещё один связанный вопрос: как установить отбор на набор записей регистра НачДата < Дата < КонДата?
8 — 09.09.10 — 15:55
(7) читай СП по Отбору у НабораЗаписей, последнее предложение
9 — 09.09.10 — 15:55
(7) Для РН никак. Отбор только по регистратору. Выбери запросом регистраторы из периода и (1)
10 — 09.09.10 — 15:57
(9) а для каких регистров это возможно?
11 — 09.09.10 — 16:09
(0)
Набор = РегистрыНакопления.<ИмяРегиста>.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(<Документ>);
Набор.Прочитать();
Для Каждого Запись Из Набор Цикл
Если Запись.Период<Дата Тогда
…
КонецЦикла;
12 — 09.09.10 — 16:10
(11) Ну и в конце конечно
Набор.Записать();
13 — 09.09.10 — 16:16
(11)спасибо.
14 — 09.09.10 — 16:21
(0) Мне кажется, было бы правильнее корректно заполнить и перепровести документ, который создал это движение…
15 — 09.09.10 — 16:24
Следующий вопрос А как изменить реквизит без отбора по регистратору? Тоесть для всех записей НачДата < Дата < КонДата
(14) правильно, но не то что нужно.
16 — 09.09.10 — 16:28
2(15) нет.
и в (9) и (8) написано почему
17 — 09.09.10 — 16:31
(16) Нет не ответ на как
В любом случае спасибо! Придется видимо писать запрос- выбирать список регистраторов и по ним формировать наборы записей.
18 — 09.09.10 — 16:33
(14) нет, не подходит. Допустим, добавил я измерение в регистр, а у меня документы в базе накопились за 2 года. Нереально их все перепроводить.
19 — 09.09.10 — 16:36
(18) Вести учет по новым реквизитам с начала года или месяца. В общем, выбрать период с которого будет вестись учет по этим реквизитам и перепровести только нужные документы.
20 — 09.09.10 — 16:44
(18) скажите пожалуйста, существует ли более правильный способ для изменения реквизита с отбором по дате, кроме описанного мной в (17)?
21 — 09.09.10 — 16:47
(20) ну ведь сказали, и во всех книгах и документации написано: отбор только по РЕГИСТРАТОРУ. Чего ты тупишь?
22 — 09.09.10 — 16:49
(21) + и только по равенству
23 — 09.09.10 — 16:49
2(20) только если принесешь гекатомбу всем богам…
24 — 09.09.10 — 16:53
(23) а если в скульных таблицах напрямую?
25 — 09.09.10 — 16:54
(21) а что ты такой злой, я же тебя между прочим вежливо спросил и то только потому, что ты вклинился в беседу и сказал, что иногда тебе тоже приходиться корректировать напрямую
26 — 09.09.10 — 16:56
2(24) я написал в (1).
27 — 09.09.10 — 16:56
вернее в (2)
28 — 09.09.10 — 16:59
(26) блин, это ты оказывается писал
29 — 09.09.10 — 17:02
(25) а я разве вклинивался? Ну, извини, что-то отвлекли меня, подумал это уже другая тема.
magosh
30 — 09.09.10 — 17:19
(15) делай как в (17): запросом выбери все записи периода сгруппированные по регистратору и делай (11). Только в цикле проверку на период не убирай, на случай если у тебя один регистратор делает записи в разных периодах
sashuly |
|
||
---|---|---|---|
|
В регистре накопления есть запись, в которой не заполнено одно Измерение. Подскажите как программно заполнить с помощью внешней обработки. |
Yandex |
|
||
---|---|---|---|
|
E_Migachev |
|
||
---|---|---|---|
|
Примерно так, основа: Код 1C v 8.х
реальный пример Код 1C v 8.х
еще пример Код 1C v 8.х
|
E_Migachev |
|
||
---|---|---|---|
|
+ нашел на компе обработку по редактированию регистров Pravka registrov (korrektirovka registrov).rar |
sashuly |
|
||
---|---|---|---|
|
Спасибо, то что надо. |
Blagvest |
|
||
---|---|---|---|
|
спасибо!!!! |
Подсказка: Для редактирования своего ответа щелкните по значку |
Изменение записей регистра накопления
Автор Инокентий, 27 окт 2022, 17:46
0 Пользователей и 1 гость просматривают эту тему.
Здравствуйте, подскажите пожалуйста, как можно изменять записи в регистре накопления. Я искал в интернете инструкцию но ничего подробно понятного не нашел. Заранее спасибо
Инокентий, https://helpf.pro/faq/view/1581.html
Как изменять записи регистра накопления?
+5
Основной шаблон такой:
Код 1C v 8.х
Набор = РегистрыНакопления.ВашРегистр.СоздатьНаборЗаписей();
Набор.Отбор.<НазваниеОтбора>.Установить(<ЗначениеОтбора>);
Набор.Прочитать();
Для Каждого ТекДвижение Из Набор Цикл
//Делаете с записями регистра то - что вам хочется
КонецЦикла;
Набор.Записать();
Реальный пример:
Код 1C v 8.х
Процедура МодификацияЗаписейРегистраНакопления()
ВыбДок = Документы.ПоступлениеТоваровУслуг.Выбрать();
Если ВыбДок.Следующий() Тогда
Набор = РегистрыНакопления.НДСПредъявленный.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(ВыбДок.Ссылка);
Набор.Прочитать();
// Изменение существующих записей
Для Каждого Движение Из Набор Цикл
Движение.НДС = 0;
КонецЦикла;
// Добавление новых записей, если вдруг необходимо
Движение = Набор.ДобавитьРасход();
Движение.Сумма = 100;
Движение.Период = ТекущаяДата();
Движение = Набор.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Сумма = 300;
Движение.Период = ТекущаяДата();
// удаление существующих записей если надо
Набор.Удалить(0);
Набор.Записать(Истина);
КонецЕсли;
КонецПроцедуры
Инокентий, Ну вы же не все записи регистра хотите изменить, а только по отбору. Например, по одному регистратору, Одному или нескольким измерениям. То есть может быть и массив и ссылка.
Цитата: alexandr_ll от 28 окт 2022, 10:35Инокентий, Ну вы же не все записи регистра хотите изменить, а только по отбору. Например, по одному регистратору, Одному или нескольким измерениям. То есть может быть и массив и ссылка.
тоесть если я передам в условие массив строк из этого регистр, то получится эти строки изменить?
Теги:
- Форум 1С
-
►
Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4 -
►
Конфигурирование, программирование в 1С Предприятие 8 -
►
Изменение записей регистра накопления
Похожие темы (5)
Поиск
Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
/// Как прочитать записи регистра накопления в 1с 8.3, 8.2 &НаСервере Процедура КакПрочитатьЗаписиРегистраНакопленияНаСервере() // Получим все записи регистра накопления ЗаказыКлиентов // по организации ООО "Ромашка" за 1 квартал 2014 года, // упорядочив их по возрастанию даты. Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказыКлиентов.Период, | ЗаказыКлиентов.Регистратор, | ЗаказыКлиентов.НомерСтроки, | ЗаказыКлиентов.Активность, | ЗаказыКлиентов.Контрагент, | ЗаказыКлиентов.Номенклатура, | ЗаказыКлиентов.Количество |ИЗ | РегистрНакопления.ЗаказыКлиентов КАК ЗаказыКлиентов |ГДЕ | ЗаказыКлиентов.Активность = Истина И | ЗаказыКлиентов.Организация = &ВыбОрганизация И | ЗаказыКлиентов.Период МЕЖДУ &НачДата И &КонДата |УПОРЯДОЧИТЬ ПО | ЗаказыКлиентов.Период"; Запрос.УстановитьПараметр("ВыбОрганизация", Справочники.Организации.НайтиПоНаименованию("ООО ""Ромашка""") ); // начальная дата - 1 января 2014 года Запрос.УстановитьПараметр("НачДата", '20140101000000'); // конечная дата - 31 марта 2014 года 23 часа 59 минут 59 секунд Запрос.УстановитьПараметр("КонДата", '20140331235959'); РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать(); Пока Записи.Следующий() Цикл Сообщить( "[" + Записи.Период + "] " + Записи.Номенклатура + " " + Записи.Количество + " шт." + " (" + Записи.Регистратор + ")" ); КонецЦикла; КонецПроцедуры /// Как получить обороты по регистру накопления в 1с 8.3, 8.2 &НаСервере Процедура КакПолучитьОборотыПоРегиструНапопленияНаСервере() // За получение оборотов по регистру накопления за произвольный период // с заданной периодичностью в различных разрезах аналитики отвечает // виртуальная таблица Обороты, // у неё есть следующие параметры: // 1. Начало периода (включая) // 2. Конец периода (включая) // 3. Периодичность (например, Период, Запись, Год, Месяц...) // 4. Условие (например, Организация = &ВыбОрганизация) // Пример №1 Сообщить("Пример №1"); // Посчитаем сколько и каких продуктов было заказано за 1 квартал // 2014 года в организации ООО "Ромашка". Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказыКлиентовОбороты.Номенклатура, | ЗаказыКлиентовОбороты.Организация, | ЗаказыКлиентовОбороты.КоличествоОборот |ИЗ | РегистрНакопления.ЗаказыКлиентов.Обороты( | ДАТАВРЕМЯ(2014, 01, 01, 00, 00, 00), | ДАТАВРЕМЯ(2014, 03, 31, 23, 59, 59), | Период, | Организация = &ВыбОрганизация | ) КАК ЗаказыКлиентовОбороты |УПОРЯДОЧИТЬ ПО | ЗаказыКлиентовОбороты.Номенклатура"; Запрос.УстановитьПараметр("ВыбОрганизация", Справочники.Организации.НайтиПоНаименованию("ООО ""Ромашка""") ); РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать(); Пока Записи.Следующий() Цикл Сообщить( "За 1 кв. 2014 года заказали " + Записи.КоличествоОборот + " шт. " + Записи.Номенклатура ); КонецЦикла; // Пример №2 Сообщить("Пример №2"); // Посчитаем сколько бананов было заказано за каждый месяц // в 1 квартале 2014 года в организации "Ромашка". Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказыКлиентовОбороты.Период, | ЗаказыКлиентовОбороты.Номенклатура, | ЗаказыКлиентовОбороты.Организация, | ЗаказыКлиентовОбороты.КоличествоОборот |ИЗ | РегистрНакопления.ЗаказыКлиентов.Обороты( | &НачПериод, | &КонПериод, | Месяц, | Организация = &ВыбОрганизация И | Номенклатура = &ВыбНоменклатура | ) КАК ЗаказыКлиентовОбороты |УПОРЯДОЧИТЬ ПО | ЗаказыКлиентовОбороты.Период"; Запрос.УстановитьПараметр("НачПериод", '20140101000000'); Запрос.УстановитьПараметр("КонПериод", '20140331235959'); Запрос.УстановитьПараметр("ВыбОрганизация", Справочники.Организации.НайтиПоНаименованию("ООО ""Ромашка""") ); Запрос.УстановитьПараметр("ВыбНоменклатура", Справочники.Номенклатура.НайтиПоНаименованию("Банан") ); РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать(); Пока Записи.Следующий() Цикл Сообщить( "За " + Формат(Записи.Период, "ДФ=ММММ") + " заказали " + Записи.КоличествоОборот + " шт. " + Записи.Номенклатура ); КонецЦикла; КонецПроцедуры /// Как получить остатки по регистру накопления в 1с 8.3, 8.2 &НаСервере Процедура КакПолучитьОстаткиПоРегиструНакопленияНаСервере() // За получение остатков по регистру накопления в разрезе // аналитики отвечает виртуальная таблица Остатки, // у неё есть следующие параметры: // 1. Период, на который считаем остатки, исключая саму дату. // Если нужны остатки на дату включительно - используем // тип Граница (см. пример ниже). // 2. Условие (например, Организация = &ВыбОрганизация) // Получим остатки бананов на основном складе в организации // ООО "Ромашка" на 31 марта 2014 года (включительно) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗапасыЕдыОстатки.Склад, | ЗапасыЕдыОстатки.Номенклатура, | ЗапасыЕдыОстатки.Организация, | ЗапасыЕдыОстатки.КоличествоОстаток |ИЗ | РегистрНакопления.ЗапасыЕды.Остатки( | &ВыбДата, | Склад = &ВыбСклад И | Номенклатура = &ВыбНоменклатура | ) КАК ЗапасыЕдыОстатки"; Запрос.УстановитьПараметр("ВыбДата", Новый Граница('20140331235959', ВидГраницы.Включая) ); Запрос.УстановитьПараметр("ВыбСклад", Справочники.Склады.НайтиПоНаименованию("Основной") ); Запрос.УстановитьПараметр("ВыбНоменклатура", Справочники.Номенклатура.НайтиПоНаименованию("Банан") ); РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать(); Пока Записи.Следующий() Цикл Сообщить( "Остатки " + " " + Записи.Номенклатура + " на складе " + Записи.Склад + " на дату " + "31.03.2014 (включительно) " + " составляют " + Записи.КоличествоОстаток + " шт."); КонецЦикла; КонецПроцедуры /// Как получить сразу остатки и обороты по регистру /// накопления в 1с 8.3, 8.2 &НаСервере Процедура КакПолучитьСразуОстаткиИОборотыПоРегиструНакопленияНаСервере() // За получение остатков и оборотов за произвольный период // с заданной периодичностью в разрезе аналитики отвечает // виртуальная таблица ОстаткиИОбороты, у неё есть параметры: // 1. Начало периода (включая) // 2. Конец периода (включая) // 3. Периодичность (например, Период, Год, Месяц...) // 4. Метод дополнения периодов (Движение или ДвиженияИГраницыПериода) // 5. Условие (например, Организация = &ВыбОрганизация) // Для примера получим начальный остаток, приход, расход и конечный остаток // банана на всех складах за каждый месяц 2014 года для // организация ООО "Ромашка". Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗапасыЕдыОстаткиИОбороты.Период, | ЗапасыЕдыОстаткиИОбороты.Номенклатура, | ЗапасыЕдыОстаткиИОбороты.Организация, | ЗапасыЕдыОстаткиИОбороты.КоличествоНачальныйОстаток, | ЗапасыЕдыОстаткиИОбороты.КоличествоОборот, | ЗапасыЕдыОстаткиИОбороты.КоличествоПриход, | ЗапасыЕдыОстаткиИОбороты.КоличествоРасход, | ЗапасыЕдыОстаткиИОбороты.КоличествоКонечныйОстаток |ИЗ | РегистрНакопления.ЗапасыЕды.ОстаткиИОбороты( | ДАТАВРЕМЯ(2014, 01, 01, 00, 00, 00), | ДАТАВРЕМЯ(2014, 12, 31, 23, 59, 59), | Месяц, ДвиженияИГраницыПериода, | Организация = &ВыбОрганизация И | Номенклатура = &ВыбНоменклатура | ) КАК ЗапасыЕдыОстаткиИОбороты |УПОРЯДОЧИТЬ ПО | ЗапасыЕдыОстаткиИОбороты.Период"; Запрос.УстановитьПараметр("ВыбОрганизация", Справочники.Организации.НайтиПоНаименованию("ООО ""Ромашка""") ); Запрос.УстановитьПараметр("ВыбНоменклатура", Справочники.Номенклатура.НайтиПоНаименованию("Банан") ); РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать(); Пока Записи.Следующий() Цикл Сообщить( Формат(Записи.Период, "ДФ=ММММ") + " [" + Записи.Номенклатура + "] " + "нач. остаток " + Записи.КоличествоНачальныйОстаток + " приход " + Записи.КоличествоПриход + ", расход " + Записи.КоличествоРасход + " кон. остаток " + Записи.КоличествоКонечныйОстаток ); КонецЦикла; КонецПроцедуры /// Как найти и изменить программно записи в регистр накопления /// документа (регистратора) в 1с 8.3, 8.2 &НаСервере Процедура КакНайтиИИзменитьЗаписиДокументаНаСервере() // Предположим у нас есть ссылка на проведенный документ // поступления еды № ВМБП-000002 ПоступлениеСсылка = Документы.ПоступлениеЕды.НайтиПоНомеру( "ВМБП-000002", '20141231' ); // Мы значем, что этот документ делает следующие записи // в регистр накопления "ЗапасыЕды": // Приход [Организация, Склад, Номенклатура] [Количество] // Наша задача: найти эти записи и изменить // их (например, удвоим количество поступившего товара) // и записать вместо старых. // Используем объектную технику получения записей, // ведь мы будем их изменять. Поступление = ПоступлениеСсылка.ПолучитьОбъект(); // Получим набор записей этого документа в регистр "ЗапасыЕды". НаборЗаписей = Поступление.Движения.ЗапасыЕды; // Прочитаем записи из базы данных. НаборЗаписей.Прочитать(); Для Каждого Запись Из НаборЗаписей Цикл // Выведем старые значения. Сообщить( "[" + Запись.Организация + ", " + Запись.Склад + ", " + Запись.Номенклатура + "] " + "[" + Запись.Количество + "]" ); // Удвоим количество. Запись.Количество = 2 * Запись.Количество; КонецЦикла; // Добавим новую запись в регистр накопления. НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Организация = Справочники.Организации.НайтиПоНаименованию("ООО ""Ромашка"""); НоваяЗапись.Склад = Справочники.Склады.НайтиПоНаименованию("Основной"); НоваяЗапись.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Банан"); НоваяЗапись.Период = ТекущаяДата(); НоваяЗапись.Количество = 1000; // Разом запишем набор записей. НаборЗаписей.Записать( Истина // удалим старые записи и запишем вместо них новые ); // Теперь записи регистра ЗапасыЕды по документу № ВМБП-000002, // отличаются от тех, что были записаны документом при проведении. // Чтобы вернуть их к начальному виду - нужно // перепровести документ. КонецПроцедуры /// Как прочитать записи документа в регистр накопления /// запросом в 1с 8.3, 8.2 &НаСервере Процедура КакПрочитатьЗаписиДокументаЗапросомНаСервере() // Этот приём используется, если не требуется изменять // найденные записи. // Предположим у нас есть ссылка на проведенный документ // поступления еды № ВМБП-000002 ПоступлениеСсылка = Документы.ПоступлениеЕды.НайтиПоНомеру( "ВМБП-000002", '20141231' ); // Мы значем, что этот документ делает записи // в регистр накопления "ЗапасыЕды". // Прочитаем эти записи запросом. Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗапасыЕды.Период, | ЗапасыЕды.Регистратор, | ЗапасыЕды.НомерСтроки, | ЗапасыЕды.Активность, | ЗапасыЕды.ВидДвижения, | ЗапасыЕды.Склад, | ЗапасыЕды.Номенклатура, | ЗапасыЕды.Организация, | ЗапасыЕды.Количество |ИЗ | РегистрНакопления.ЗапасыЕды КАК ЗапасыЕды |ГДЕ | ЗапасыЕды.Регистратор = &ВыбРегистратор |УПОРЯДОЧИТЬ ПО | ЗапасыЕды.НомерСтроки"; Запрос.УстановитьПараметр( "ВыбРегистратор", ПоступлениеСсылка ); РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать(); Пока Записи.Следующий() Цикл Сообщить( "[" + Записи.Организация + ", " + Записи.Склад + ", " + Записи.Номенклатура + "] " + "[" + Записи.Количество + "]" ); КонецЦикла; КонецПроцедуры /// Как создать записи регистра накопления без привязки /// к документу в 1с 8.3, 8.2 &НаСервере Процедура КакСоздатьЗаписиБезДокументаНаСервере() // В нашей тестовой конфигурации нет документа // "ОперацияБух", который присутствует в бухгалтерской базе. Сообщить("Этот пример нельзя выполнить в этой базе."); Возврат; // Записи регистра накопления обязательно // должны быть привязаны к документу, в данном случае // этим документом будет документ "ОперацияБух", // задуманный как раз для ручных операций. Операция = Документы.ОперацияБух.СоздатьДокумент(); Операция.Дата = ТекущаяДата(); Операция.Организация = Справочники.Организации.НайтиПоНаименованию("Милькин В. В. ИП"); Операция.СуммаОперации = 1000; Операция.Содержание = "Ручная операция по регистру накопления ИПДоходы"; Операция.Записать(РежимЗаписиДокумента.Запись); // Затем получаем его набор записей для регистра ИПДоходы НаборЗаписей = Операция.Движения.ИПДоходы; Запись = НаборЗаписей.Добавить(); Запись.Период = Операция.Дата; Запись.Организация = Операция.Организация; // и т.д. заполняем все нужные поля регистра Запись.Сумма = 1000; НаборЗаписей.Записать(Истина); КонецПроцедуры /// Скачать и выполнить эти примеры на компьютере
Для удобства хранения и обработки информации в программе 1С используются различные Регистры накопления. Все данные вносятся в программу с помощью документов, на основании которых и происходит запись в регистр. Использование данного механизма позволяет накапливать данные, обрабатывать их, рассчитывать итоги, выводя остатки и обороты по этим данным пользователю.
Если мы откроем любую конфигурацию 1С Предприятие, в дереве метаданных увидим раздел «Регистры накопления».
Если в пользовательском режиме мы зайдем в раздел «Все функции», то там тоже можем увидеть ветку «Регистры накопления».
Регистр накопления – это таблица, накапливающая информацию из движения документов (приход/расход, обороты). Откроем для примера регистр накопления «Зарплата к выплате». Мы видим, что строки «Начисление зарплаты» и «Отпуск» отмечены знаком «+», т.е. увеличивают данные регистра, а «Ведомость в банк» (документ, которым произведена выплата) отмечен знаком «-», т.е. уменьшает данные регистра по каждой записи, в данном случае – по физическому лицу (сотруднику).
Если мы откроем документ, например, «Ведомость в банк», и посмотрим его движения по регистрам (кнопка «Показать проводки и другие движения документа»), то увидим записи производимые документом в связанные с ним регистры.
Аналогично происходят записи в регистры накопления по приходу и расходу товара, материалов, по учету НДС и другие примеры. Используя данные таких таблиц, программе гораздо проще составить отчет по запросу пользователя.
Рассмотрим, как устроены регистры накопления изнутри, на примере программы «1С:Бухгалтерия 3.0».
Настройки регистра накопления
Мы можем разрабатывать свои регистры накопления при необходимости. Но для этого сначала разберемся в его настройках. Рассмотрим настройки регистра накопления на том же примере с зарплатой к выплате. Откроем регистр «ЗарплатаКВыплате». На закладке «Основные» мы видим имя регистра и его вид.
Регистры бывают двух видов – «Остатки» и «Обороты». Когда планируется получать только сведения об оборотах, то выбираем этот вид регистра (например, обороты реализации). Если необходимо получать данные и об оборотах, и об остатках (как например, остатки товаров на складах, остаток задолженности по заработной плате), то выбираем вид регистра «Остатки».
На закладке «Подсистема» отмечается подсистема, где задействован регистр.
На закладке «Данные» описывается структура регистра. Измерения – записи, по которым в дальнейшем мы можем получить остатки или посмотреть обороты. Ресурсы – реквизит для определения числовых данных по регистру. Это может быть сумма, количество (например, количество проданных товаров, сумма проданных товаров, сумма выплаченной или начисленной зарплаты).
Раздел «Реквизиты» предназначен для хранения сопутствующей информации и используется на усмотрение пользователя. Существует еще один набор стандартных реквизитов, список которых не изменяется. Кнопка «Агрегаты» активна только для регистров с видом «Обороты».
И самый интересный раздел – это «Регистраторы». Здесь определяются документы, которые будут производить записи в регистр, формируя движения по регистрам.
Имея представление о настройках регистров накопления, попробуем создать свой регистр и посмотрим, как отразятся в нем записи в режиме пользователя.
Как сделать регистр накопления в 1С
Продолжим рассматривать пример с регистрами по зарплате. Создадим новый регистр накопления (кнопка «Добавить») и назовем его «ДолгСотруднику».
На закладке «Основные» укажем название и вид регистра – «Остатки».
На закладке «Подсистемы» указываем подсистему «ВзаиморасчетыССотрудниками».
На «Функциональные опции», в которых участвует наш регистр, устанавливаем галочку «ИспользоватьНачислениеЗарплаты» (блок учета заработной платы в конфигурации «Бухгалтерия»).
На закладке «Данные» добавим для примера несколько измерений – «Сотрудник» и «Основание» (отражающий документ основание записи).
Для измерения «Сотрудник» указываем тип – СправочникСсылкаСотрудники, а для «Основания» – ОпределяемыйТипДокументОснованияЗарплатыКВыплате.
На закладке «Регистраторы» перечислим документы, которые будут производить запись в наш регистр. В нашем примере сделаем акцент на документе «Ведомость на выплату зарплаты в банк» и далее будем следить за движениями регистра, сделанными этим документом.
Регистр готов.
Для того чтобы наш регистр работал, необходимо выполнить некоторые настройки в самом документе движения. Откроем в дереве метаданных документ «ВедомостьНаВыплатуЗарплатыВБАнк». На закладке «Движения» мы видим наш новый регистр «ДолгСотруднику». Далее с помощью кнопки «Конструктор движений» нам нужно сопоставить, в какие поля, какие данные из документа должны фиксироваться.
Открываем наш регистр.
Тип движения в нашем примере «Расход» (т.к. выплачивая зарплату, мы уменьшаем задолженность сотруднику). И в таблицу с реквизитами надо прописать (сопоставив) реквизиты документа. Выбрать их можно двойным щелчком на соответствующей строке. Заполнив, нажимаем «Ок».
Программа автоматически конструктором создаст модуль обработки.
Обновим данные конфигурации и запустим программу в пользовательском режиме.
Запись в регистр накопления 1С 8.3
Проведем документ «Ведомость в банк» и посмотрим, какие движения по регистрам он сформировал (кнопка Кнопка – «Показать проводки и другие движения документа»). Мы видим, что у нас появилась закладка с движениями по нашему регистру «Долг сотруднику» — строка «Расход».
Наш регистр заработал. Аналогично можно выполнить настройку регистра для отражения записей других документов, в том числе, формирующих вид движения «Приход».
Как изменить регистр накопления в 1С 8.3? Корректировка регистров накопления 1С
Иногда возникает необходимость обнулить или подкорректировать записи регистров накопления. Для этого в «1С:Бухгалтерия» можно воспользоваться документом «Операция введенная вручную» (в разделе меню «Операции»). Создав новую операции, перейдем по кнопке «Еще» к пункту «Выбор регистров».
Выбираем регистр, по которому хотим сделать корректировочную запись, и нажимаем «Ок».
В документе появляется закладка с выбранным регистром, где мы можем ввести корректировочную запись в разрезе необходимых данных.
Сформировать отчет по регистрам накопления, мы можем, воспользовавшись «Универсальным отчетом» (раздел «Отчеты»), выбрать вариант отчета – по регистрам накопления, и указать нужный для анализа регистр. В отчете мы видим, что в нем отразилась наша корректировочная запись по регистру «Учет доходов для исчисления НДФЛ».
Еще один способ очистки регистров и их корректировки – это выполнение свертки информационной базы. Подробно мы на этом останавливаться не будем, т.к. это отдельная тема. Отмечу лишь, что в результате этой процедуры все остатки по счетам и регистрам переносятся в операции, записанные концом года, удаляя при этом все документы. Записи формируются отдельно по каждому регистру и при необходимости их можно откорректировать или удалить.
Понимание методов и принципов работы регистров накопления позволит избежать ошибок в работе с программой и при их возникновении быстро с ними справится.
Чтобы изменить запись регистра накопления нужно использовать функцию СоздатьНаборЗаписей();
Пример:
Листинг:
НаборЗаписей = РегистрыНакопления.РасчетыНалоговыхАгентовСБюджетомПоНДФЛ.СоздатьНаборЗаписей(); //Выбираем нужный регистр
НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
НаборЗаписей.Прочитать();
Для Каждого СтрокаТаблицы Из НаборЗаписей Цикл
СтрокаТаблицы.РеквизитыПлатежногоПоручения = «Новое значение»; //устанавливаем нужное значение реквизита
КонецЦикла;
НаборЗаписей.Записать();