Простой способ обнуления Регистров накопления в типовых конфигурациях УНФ, УТ 11, УТ 10.3
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
1) Т.к. конфигурация у нас уже была снята с замка. Было принято решение доработать типовой документ КорректировкаРегистров, добавить в него команду заполнения табличной части остатками по регистру. Опытным путем было получено, что документ с количествов строк более 6000 длительно зависал при проведении. Поэтому большие регистры лучше разбивать на несколько документов, по 6000 строк,.ограничение в запросе.
Нужно в форму документа добавить команду, разместить кнопку (см. скрин шот №1) на форме и добавить в модуль эти две процедуры:
&НаСервере
Процедура Команда1НаСервере()
Для каждого ЭлементСписка Из Объект.ТаблицаРегистров Цикл
ИмяРегистра = ЭлементСписка.Имя;
// Списываем все имеющиеся остатки регистра
Запрос = Новый Запрос;
Для Каждого Ресурс из Метаданные.РегистрыНакопления[ИмяРегистра].Ресурсы Цикл
Запрос.Текст = Запрос.Текст + "," + Ресурс.Имя + "Остаток как " + Ресурс.Имя;
КонецЦикла;
Запрос.Текст = "ВЫБРАТЬ Первые 6000 * " + Запрос.Текст + " ИЗ РегистрНакопления."+ИмяРегистра+".Остатки(&ДатаДок, )";
Запрос.УстановитьПараметр("ДатаДок", КонецДня(Объект.Дата)+1);
Результат = Запрос.Выполнить().Выгрузить();
Результат.Колонки.Добавить("ВидДвижения");
Результат.ЗаполнитьЗначения(ВидДвиженияНакопления.Расход, "ВидДвижения");
Результат.Колонки.Добавить("Период");
Результат.ЗаполнитьЗначения(КонецДня(Объект.Дата), "Период");
Результат.Колонки.Добавить("Активность");
Результат.ЗаполнитьЗначения(Истина, "Активность");
Объект.Движения[ИмяРегистра].Загрузить(Результат);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура Команда1(Команда)
Команда1НаСервере();
КонецПроцедуры
2) Если конфигурация типовая, специально сделал, внешнюю обработку. См скрин-шот №2.
Предварительно нужно создать документ КорректировкаРегистров, указать в нем какой регистр требуется обнулить. Затем открыть обработку через главное меню/файл открыть, указать ранее записанный документ, и нажать кнопку "Заполнить документ".
16.12.2025
Добавил новую версию обработки для обычных форм, проверено на УТ 10.3.88.3
Клиент попросил обнулить три регистра, Взаиморасчеты, Взаиморасчеты по документам расчетов и Расчеты с контрагентами.
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 11, релизы 11.3.4.228
- Управление торговлей, редакция 10.3, релизы 10.3.88.3
Вступайте в нашу телеграмм-группу Инфостарт