РегистрНакопленияЗапись.<Имя регистра накопления>.ВидДвижения

Свойства · RecordType

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

Полное описание, параметры и ограничения

РегистрНакопленияЗапись.<Имя регистра накопления>.ВидДвижения (AccumulationRegisterRecord.<Accumulation register name>.RecordType)

РегистрНакопленияЗапись.<Имя регистра накопления> (AccumulationRegisterRecord.<Accumulation register name>)

ВидДвижения (RecordType)

Доступен, начиная с версии 8.1.

Использование:
Чтение и запись.
Описание:
Тип: ВидДвиженияНакопления.
Содержит вид записи, обозначающий, что запись отражает увеличение или уменьшение ресурсов регистра.
Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

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

Доступен, начиная с версии 8.1.

Методическая информация

Практические примеры

Отключить активность своих движений и не спутать Записывать с защитой от записи

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

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Создайте НОВУЮ пустую файловую базу, имя корневой конфигурации УчебныеОстатки85. Не добавляйте эти объекты в УТ/КА2/УНФ/БП. Режим управления блокировкой данных конфигурации — Управляемый.

  2. Документы → Добавить: УчебноеДвижение85. Номер: Строка длиной 40, автонумерация выключена. Модули объекта и менеджера оставьте пустыми; не добавляйте обработчики, подписки и обязательные пользовательские реквизиты.

  3. Регистры накопления → Добавить: УчебныеОстатки85. Вид регистра Остатки. Единственное измерение КодТовара: Строка 50, индексировать, проверка заполнения Показывать ошибку. Единственный ресурс Количество: Число 12,3, неотрицательное. Дополнительных реквизитов нет.

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

  5. Обновите конфигурацию базы данных. Создайте серверный общий модуль УчебныеЗадачи и команду собственной обработки. Фрагмент вставьте внутрь ВыполнитьПример() Экспорт; запускайте задачи по отдельности.

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

Если Метаданные.Документы.Количество() <> 1
    Или Метаданные.РегистрыНакопления.Количество() <> 1
    Или Метаданные.Документы.Найти("УчебноеДвижение85") = Неопределено Тогда
    ВызватьИсключение "Разрешены только собственный учебный документ и регистр";
КонецЕсли;
Описание = Метаданные.РегистрыНакопления.Найти("УчебныеОстатки85");
Если Описание = Неопределено Тогда
    ВызватьИсключение "Сначала создайте собственный учебный регистр";
КонецЕсли;
Если Описание.ВидРегистра <> Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Остатки
    Или Описание.Измерения.Количество() <> 1
    Или Описание.Ресурсы.Количество() <> 1
    Или Описание.Реквизиты.Количество() <> 0
    Или Описание.Измерения.Найти("КодТовара") = Неопределено
    Или Описание.Ресурсы.Найти("Количество") = Неопределено Тогда
    ВызватьИсключение "Нужен регистр остатков с КодТовара и Количество";
КонецЕсли;
Менеджер = РегистрыНакопления.УчебныеОстатки85;
Код = "TRAIN-" + Строка(Новый УникальныйИдентификатор);
СсылкаНаНесохраненный = Документы.УчебноеДвижение85.ПолучитьСсылку(Новый УникальныйИдентификатор);
Набор = Менеджер.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(СсылкаНаНесохраненный);
Приход = Набор.ДобавитьПриход();
Приход.Период = Дата(2026, 9, 15, 10, 0, 0);
Приход.Регистратор = СсылкаНаНесохраненный;
Приход.Активность = Истина;
Приход.КодТовара = Код;
Приход.Количество = 3;
Расход = Набор.ДобавитьРасход();
Расход.Период = Дата(2026, 9, 15, 11, 0, 0);
Расход.Регистратор = СсылкаНаНесохраненный;
Расход.Активность = Истина;
Расход.КодТовара = Код;
Расход.Количество = 1;
Набор.ДополнительныеСвойства.Вставить("ИсточникУрока", "Собственный незаписанный набор");
Сообщить(Набор.ДополнительныеСвойства.ИсточникУрока = "Собственный незаписанный набор");
Сообщить(Не Набор.ОбменДанными.Загрузка);
Сообщить(Не Набор.БлокироватьДляИзменения);
Сообщить(Не Набор.РасширенныеРежимыЗамещения);
Набор.Записывать = Ложь;
Сообщить(Не Набор.Записывать);
Набор.УстановитьАктивность(Ложь);
Сообщить(Набор.Количество() = 2);
Сообщить(Не Приход.Активность И Не Расход.Активность);
Сообщить(Набор.Итог("Количество") = 4);
ОстатокВПамяти = 0;
Для Каждого Движение Из Набор Цикл
    Если Не Движение.Активность Тогда
        Продолжить;
    КонецЕсли;
    Если Движение.ВидДвижения = ВидДвиженияНакопления.Приход Тогда
        ОстатокВПамяти = ОстатокВПамяти + Движение.Количество;
    Иначе
        ОстатокВПамяти = ОстатокВПамяти - Движение.Количество;
    КонецЕсли;
КонецЦикла;
Сообщить(ОстатокВПамяти = 0);

Разбор по шагам

  1. ДополнительныеСвойства содержит пояснение собственного объекта в памяти. Это не дополнительное измерение регистра.

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

  3. Записывать=Ложь не используем как защитный барьер: прямой Набор.Записать всё равно является отдельным действием. Его здесь нет.

  4. УстановитьАктивность(Ложь) меняет все строки. Количество строк и простая сумма ресурса остаются 2 и 4.

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

Как проверить результат

  1. Девять сообщений Истина для нового набора с указанной подготовкой.

  2. После отключения активности обе строки присутствуют, однако учебный остаток равен 0.

Ожидаемый результат

Четыре независимых понятия — наличие строки, активность, запись движений документа и режим замещения — не смешаны.

На что обратить внимание

  1. Не включайте ОбменДанными.Загрузка для обхода ошибок: она ослабляет проверки при реальной записи.

  2. Записывать=Ложь не запрещает прямую запись набора и не заменяет права доступа.

  3. БлокироватьДляИзменения применим в управляемом режиме при записи; чтение текущего Ложь не проверяет конкурентную безопасность.

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

Вставить корректировку между движениями и вернуть исходный порядок

Индекс коллекции начинается с нуля. Он не является постоянным НомерСтроки записи регистра в базе.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Создайте НОВУЮ пустую файловую базу, имя корневой конфигурации УчебныеОстатки85. Не добавляйте эти объекты в УТ/КА2/УНФ/БП. Режим управления блокировкой данных конфигурации — Управляемый.

  2. Документы → Добавить: УчебноеДвижение85. Номер: Строка длиной 40, автонумерация выключена. Модули объекта и менеджера оставьте пустыми; не добавляйте обработчики, подписки и обязательные пользовательские реквизиты.

  3. Регистры накопления → Добавить: УчебныеОстатки85. Вид регистра Остатки. Единственное измерение КодТовара: Строка 50, индексировать, проверка заполнения Показывать ошибку. Единственный ресурс Количество: Число 12,3, неотрицательное. Дополнительных реквизитов нет.

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

  5. Обновите конфигурацию базы данных. Создайте серверный общий модуль УчебныеЗадачи и команду собственной обработки. Фрагмент вставьте внутрь ВыполнитьПример() Экспорт; запускайте задачи по отдельности.

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

Если Метаданные.Документы.Количество() <> 1
    Или Метаданные.РегистрыНакопления.Количество() <> 1
    Или Метаданные.Документы.Найти("УчебноеДвижение85") = Неопределено Тогда
    ВызватьИсключение "Разрешены только собственный учебный документ и регистр";
КонецЕсли;
Описание = Метаданные.РегистрыНакопления.Найти("УчебныеОстатки85");
Если Описание = Неопределено Тогда
    ВызватьИсключение "Сначала создайте собственный учебный регистр";
КонецЕсли;
Если Описание.ВидРегистра <> Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Остатки
    Или Описание.Измерения.Количество() <> 1
    Или Описание.Ресурсы.Количество() <> 1
    Или Описание.Реквизиты.Количество() <> 0
    Или Описание.Измерения.Найти("КодТовара") = Неопределено
    Или Описание.Ресурсы.Найти("Количество") = Неопределено Тогда
    ВызватьИсключение "Нужен регистр остатков с КодТовара и Количество";
КонецЕсли;
Менеджер = РегистрыНакопления.УчебныеОстатки85;
Код = "TRAIN-" + Строка(Новый УникальныйИдентификатор);
СсылкаНаНесохраненный = Документы.УчебноеДвижение85.ПолучитьСсылку(Новый УникальныйИдентификатор);
Набор = Менеджер.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(СсылкаНаНесохраненный);
Приход = Набор.ДобавитьПриход();
Приход.Период = Дата(2026, 9, 15, 10, 0, 0);
Приход.Регистратор = СсылкаНаНесохраненный;
Приход.Активность = Истина;
Приход.КодТовара = Код;
Приход.Количество = 3;
Расход = Набор.ДобавитьРасход();
Расход.Период = Дата(2026, 9, 15, 11, 0, 0);
Расход.Регистратор = СсылкаНаНесохраненный;
Расход.Активность = Истина;
Расход.КодТовара = Код;
Расход.Количество = 1;
Корректировка = Набор.Вставить(1);
Корректировка.Период = Дата(2026, 9, 15, 10, 30, 0);
Корректировка.Регистратор = СсылкаНаНесохраненный;
Корректировка.Активность = Истина;
Корректировка.ВидДвижения = ВидДвиженияНакопления.Приход;
Корректировка.КодТовара = Код;
Корректировка.Количество = 2;
Сообщить(Набор.Количество() = 3);
Сообщить(Набор.Индекс(Корректировка) = 1);
Набор.Сдвинуть(Корректировка, 1);
Сообщить(Набор.Индекс(Корректировка) = 2);
Сообщить(Набор.Получить(2).Количество = 2);
Набор.Удалить(Корректировка);
Сообщить(Набор.Итог("Количество") = 4);
Набор.Очистить();
Сообщить(Набор.Количество() = 0);

Разбор по шагам

  1. Вставить(1) добавляет собственную строку между приходом и расходом. Заполняем и направление, и все учебные поля.

  2. Сдвинуть принимает объект строки и смещение, не новый абсолютный индекс. Смещение 1 переносит корректировку в конец.

  3. Получить(2) возвращает третью строку набора в памяти. Это не поиск записи базы с НомерСтроки=2.

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

Как проверить результат

  1. Шесть сравнений Истина; после удаления корректировки сумма колонки опять 4.

  2. После Очистить количество строк ноль; сохранённых движений эта задача не затрагивает.

Ожидаемый результат

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

На что обратить внимание

  1. Цепочка Очистить → Записать(Истина) уже может удалить движения регистратора в базе. Здесь её нет.

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

  3. После удаления строки не продолжайте использовать её как действующую запись набора.

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

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.