Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
05 дек 2023, 19:26

Внешняя обработка на обнуление остатков по Регистру накопления

Автор TaninkaPro1C, 11 мая 2022, 21:19

0 Пользователей и 1 гость просматривают эту тему.

TaninkaPro1C

Помогите новичку, пожалуйста.
Необходимо при помощи внешней обработки через запрос обнулить остатки по регистру накопления "ТоварыОрганизаций" на определенную дату и по определенному складу (в 1С ERP). Склада как измерителя нет. Он находится в измерителе "Аналитический ключ номенклатуры" далее МестоХранения и только там уже Склад.
Как правильно написать запрос?

DmitriyF

Цитата: TaninkaPro1C от 11 мая 2022, 21:19Помогите новичку, пожалуйста.
Необходимо при помощи внешней обработки через запрос обнулить остатки по регистру накопления "ТоварыОрганизаций" на определенную дату и по определенному складу (в 1С ERP). Склада как измерителя нет. Он находится в измерителе "Аналитический ключ номенклатуры" далее МестоХранения и только там уже Склад.
Как правильно написать запрос?
Уууу так там не один регистр надо вам обнулить. Если это реальная база то вы ерунду пытаетесь сделать

alexandr_ll

TaninkaPro1C, https://infostart.ru/public/653846/

Простой способ обнуления Регистров накопления в типовых конфигурациях на управляемых формах. УНФ, УТ 11

Простой способ обнуления Регистров накопления в типовых конфигурациях на управляемых формах. УНФ, УТ 11 и в других. Обратился заказчик с проблемой, много ошибок в учете, некоторые отчеты врут, разбираться не кому и некогда, просит начать учет по некоторым регистрам с нуля, с документа ввода остатков. Создавать чистую пустую базу, значит потерять историю работы. Делать свертку базы долго и муторно. Исправлять ошибки задним числом, за уволившимися сотрудниками занятие не благодарное. Было принято решение провести анализ регистров, и те по которым данные сильно не сходятся обнулить, и заново начать учет через ввод остатков.

1) Т.к. конфигурация у нас уже была снята с замка. Было принято решение доработать типовой документ КорректировкаРегистров, добавить в него команду заполнения табличной части остатками по регистру. Опытным путем было получено, что документ с количествов строк более 6000 длительно зависал при проведении. Поэтому большие регистры лучше разбивать на несколько документов, по 6000 строк,.ограничение в запросе.

Нужно в форму документа добавить команду, разместить кнопку (см. скрин шот №1) на форме и добавить в модуль эти две процедуры:


&НаСервере
Процедура Команда1НаСервере()
Для каждого ЭлементСписка Из Объект.ТаблицаРегистров Цикл
ИмяРегистра = ЭлементСписка.Имя;

// Списываем все имеющиеся остатки регистра
Запрос = Новый Запрос;
Для Каждого Ресурс из Метаданные.РегистрыНакопления[ИмяРегистра].Ресурсы Цикл
Запрос.Текст = Запрос.Текст + "," + Ресурс.Имя + "Остаток как " + Ресурс.Имя;
КонецЦикла;
Запрос.Текст = "ВЫБРАТЬ Первые 6000 * " + Запрос.Текст + " ИЗ РегистрНакопления."+ИмяРегистра+".Остатки(&ДатаДок, )";
Запрос.УстановитьПараметр("ДатаДок", КонецДня(Объект.Дата)+1);
Результат = Запрос.Выполнить().Выгрузить();
Результат.Колонки.Добавить("ВидДвижения");
Результат.ЗаполнитьЗначения(ВидДвиженияНакопления.Расход, "ВидДвижения");
Результат.Колонки.Добавить("Период");
Результат.ЗаполнитьЗначения(КонецДня(Объект.Дата), "Период");
Результат.Колонки.Добавить("Активность");
Результат.ЗаполнитьЗначения(Истина, "Активность");
Объект.Движения[ИмяРегистра].Загрузить(Результат);
КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
Команда1НаСервере();
КонецПроцедуры

2) Если конфигурация типовая, специально сделал, внешнюю обработку. См скрин-шот №2.

Предварительно нужно создать документ КорректировкаРегистров, указать в нем какой регистр требуется обнулить. Затем открыть обработку через главное меню/файл открыть, указать ранее записанный документ, и нажать кнопку "Заполнить документ".

P.S. Если обработка вам помогла, поблагодарите автора, поставив звездочку!


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск