"Мягкое" перепроведение документов

Публикация № 1183180

Администрирование - Администрирование данных 1С - Обработка документов

Обработка проведение перепроведение документ один регистр

Бывало ли у вас так, что нужно поправить проведение документа всего по одному регистру? Да еще и без записи самого документа, потому что он не пройдет контроль остатков и не проведется? В статье о том, как это можно сделать в типовых конфигурациях.

В каких случаях это пригодится:

  • Массовое исправление существующих движений после обнаружения ошибки.
  • Исправление движений в закрытом периоде.
  • Заполнение движениями нового пустого регистра.
  • Проведение документа, проведение которого из интерфейса невозможно.
  • Перепроведение документов после изменения одного из параметров учета.

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

  1. Начинаем транзакцию
  2. Проводим документ
  3. Сохраняем нужные движения во временную таблицу
  4. Отменяем транзакцию
  5. Помещаем движения из временной таблицы в регистр.

Однако, у этого метода есть недостатки.

Во-первых, поскольку требуется проведение документа, срабатывают все процедуры с этим связанные. Проверка заполнения, подписки на события и т.п. Следовательно, это очень замедляет проведение. Особенно если это старая база и документов несколько сотен тысяч.

Во-вторых, если при проведении документ не прошел какую-либо проверку - проведения не будет. Причем движения то нам может быть нужно обновить по совсем незначительному регистру, но при этом их мы не получим вообще.

Способ, который я предлагаю, основан на типовом алгоритме проведения, принятом в большинстве "больших" документов типовых конфигураций. По крайней мере документов УТ и ERP, почти наверняка КА и УХ и, вероятно, БП. Если вы внимательно изучите их модули объектов и обратите внимание на проведение, то заметите сходство. Это сходство я и предлагаю использовать. В общем виде алгоритм выглядит так:

  1. Инициализация таблиц для движений
  2. Заполнение их с использованием менеджера документа
  3. Помещение движений в регистры

И его реализация в виде кода:

ТипДокумента = "ЗаказКлиента";
Документ = Документы[ТипДокумента].НайтиПоНомеру("0000-000001", ТекущаяДатаСеанса());

МенеджерРегистров = РегистрыНакопления;
ИмяРегистра = "РасчетыСКлиентами";

ОбменДаннымиЗагрузка = Истина;

ДокОбъект = Документ.ПолучитьОбъект();

//	Инициализация дополнительных свойств
ПроведениеСерверУТ.ИнициализироватьДополнительныеСвойстваДляПроведения(Документ, ДокОбъект.ДополнительныеСвойства, РежимПроведенияДокумента.Неоперативный);

//	Выполнение запросов и получение данных о движениях
Документы[ТипДокумента].ИнициализироватьДанныеДокумента(Документ, ДокОбъект.ДополнительныеСвойства);

Если Не ДокОбъект.ДополнительныеСвойства.ТаблицыДляДвижений.Свойство("Таблица" + ИмяРегистра) Тогда
	Сообщить("Регистр " + ИмяРегистра + " пропущен. Движения по нему не формируются при проведении документа.");
	Возврат;
КонецЕсли;

Таблица = ДокОбъект.ДополнительныеСвойства.ТаблицыДляДвижений["Таблица" + ИмяРегистра];

НаборЗаписей = МенеджерРегистров[ИмяРегистра].СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ДокОбъект.Ссылка);
НаборЗаписей.Загрузить(Таблица);

НаборЗаписей.ОбменДанными.Загрузка = ОбменДаннымиЗагрузка;

НаборЗаписей.Записать();

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

Тестировалось на платформе 8.3.15.1565 и конфигурации 1С:ERP 2.4.10.89.

Скачать файлы

Наименование Файл Версия Размер
Мягкое перепроведение документов:

.epf 9,57Kb
12
.epf 1.0.0 9,57Kb 12 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. mm_84 24.01.20 12:54 Сейчас в теме
В типовых конфигурациях это делается через подсистему "обновление версий ИБ". И не факт что вышеописанный метод не споткнется на проверке даты запрета редактирования.
2. DrAku1a 1416 06.02.20 18:03 Сейчас в теме
(1) Если ОбменДаннымиЗагрузка будет Истина, то не споткнется.

В старых конфигурациях делал такой "финт ушами" (метод подойдёт везде, но нужно сразу что-то решать с датой запрета):
1.Начать транзакцию
2.Записать документ в режиме проведения
3.Выгрузить нужный регистр в таблицу значений
4.Отменить транзакцию
5.Зарисать нужный регистр из таблицы значений
3. nekit_rdx 129 07.02.20 12:07 Сейчас в теме
(2) Это, кстати, крутой универсальный способ. Причем даже в типовых конфигурациях для некоторых документов только он и пройдет. Но работает медленно
Оставьте свое сообщение

См. также

daСклонение: склонение ФИО, должностей, чисел, прилагательных, существительных на языке 1С + ТестЦентр Промо

Универсальные функции v8 1cv8.cf Абонемент ($m)

Функция предназначена для склонения выражений, которые часто требуется при формировании печатных форм договоров и прочих печатных форм. Функция склоняет по падежам ФИО, должности, числительные, валюты, единицы измерения, предметы. Также функция склоняет глаголы и прилагательные по числам и родам и существительные по числам. Имеется режим определения рода переданного выражения. Поддержка форматной строки для вывода результата. Функция не использует внешние библиотеки и веб-сервисы, написана на чистом языке 1С, и поэтому легко встраивается в любую конфигурацию или внешнюю обработку. Правила склонения оформлены в виде таблицы и могут быть легко изменены при необходимости.

1 стартмани

14.02.2015    107321    108    daMaster    90    

Сравнение реального дохода со средним доходом из API.HH.RU

Зарплата Управленческие v8 v8::СПР ЗУП3.x УУ Абонемент ($m)

Внешняя обработка на управляемой форме для 1С:Предприятие 8.3 по интеграции с HH.RU используя HH REST API. Ключевые функции: получение списка вакансий по должностям (Ключ для работы не нужен); расчет среднего дохода; Тестирование проводилось на платформе 1С:Предприятие 8.3 (8.3.13.1513) Зарплата и управление персоналом, редакция 3.1 (3.1.11.68) совместно с API.HH.RU.

1 стартмани

11.11.2019    4703    7    solaru    2    

Конфигурация для рекламного агентства

Управление услугами и сервисом Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) v8 Реклама, PR и маркетинг УУ Абонемент ($m)

Данная конфигурация выполнена для решения тестового задания: Цель задания: 1) Понять, на каком из клиентов сколько мы заработали;  2) Понять, по какому виду СМИ сколько мы заработали;  3) Проследить по каждой услуге: у кого за сколько купили и кому за сколько продали, с возможностью перейти в соответствующий документ. Реализовано с помощью: 1. Справочники - контрагенты, номенклатура 2. Документы - Поступление услуг, реализация услуг 3. Отчеты - отчет по контрагентам, номенклатуре и движений.

1 стартмани

21.05.2019    5977    0    solaru    0    

Загрузка номенклатуры в УТ 10.3 из Excel файла с генерацией штрихкодов

Загрузка и выгрузка в Excel Обработка справочников Оптовая торговля Розничная торговля Учет ТМЦ Оптовая торговля Розничная торговля Учет ТМЦ v8 УТ10 Россия Абонемент ($m)

Обработка позволяет генерировать новые номенклатурные позиции на основе данных из файла Excel с последующей генерацией штрихкодов (ШК). Может быть полезна при больших поступлениях товаров на склад, где ручное создание и присваивание штрихкода  (ШК) может занимать много времени.

1 стартмани

24.03.2017    8457    7    solaru    0    

Под капотом управляемых форм

Практика программирования v8 1cv8.cf Бесплатно (free)

Управляемые формы уже давно и плотно вошли в жизнь 1С-разработчика. Однако, судя по недавним публикациям на Инфостарте, многие до сих пор мало знакомы с ними. Предлагаю разобраться с тем, что же это такое.

26.08.2013    274821    Evil Beaver    274    

[NotaBene] Универсальный отчет по таблице значений

Практика программирования v7.7 1cv7.md Россия Абонемент ($m)

1C v.7.7 Готовое решение. Не требует настройки. Не требует допрограммирования. Данная обработка решает часто встречающуюся задачу вывода в "красивом" виде таблицы значений (полученной, например, из запроса). Поддерживается произвольное группирование данных, отключение/включение группировок, в т.ч и создание "шахматок" (типа "продажи понедельно"). Обработка может использоваться как и в отладочных целях (для нормального просмотра ТЗ), так и в составе вполне рабочих отчетов. По крайней мере, я неоднократно клиентам данную обработку ставил вместо того, чтобы каждый раз писать замороченные выводы данных. И клиенты довольны, и мне - проще...

2 стартмани

07.05.2007    30107    2900    CheBurator    64