Гарантированное проведение документов (подключаемое расширение)

29.01.24

База данных - Инструменты администратора БД

Гарантированное проведение указанного в регистре сведений списка документов. Регистрируем документы к проведению с помощью произвольных отборов СКД в регистре сведений, далее запускаем фоновое проведение в нескольких потоках. Проведенные документы удаляются из регистра, по непроведенным регистрируются ошибки.

Скачать исходный код

Наименование Файл Версия Размер
(Устарело) Расширение: Гарантированное проведение документов (версия 11.08.2022):
.cfe 26,96Kb
7
.cfe 26,96Kb 7 Скачать
Расширение: Гарантированное проведение документов (версия 16.08.2022):
.cfe 28,53Kb
23
.cfe 28,53Kb 23 Скачать

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

Контролировать в такой ситуации, какие документы уже проведены, а какие ещё нет - практически невозможно.

Приходится как-то вручную дробить на части или запускать процесс повторно.

А хотелось бы иметь возможность:

  • остановиться на каком-то документе, а потом продолжить далее с этого места. 
  • влиять на скорость проведения, например, распределяя выборку документов на проведение в нескольких потоках
  • не ограничиваться тем, что твой сеанс 1С должен быть открыт и будет заблокирован проведением

Например, возникает практическая задача:

Программист изменил логику формирования движений у документов, и теперь требуется перепровести примерно 300 000 документов. Проведение длится примерно 5 суток,  базу ежедневно обновляют, прерывая сеансы. Нужно обеспечить, чтобы все документы гарантированно перепровелись.

Решение:

Для решения данной задачи сделал небольшое расширение:

1) содержащее независимый регистр сведений для хранения документов, которые требуется провести

2) в регистр документы можно добавить с помощью задания произвольных отборов СКД 

3) далее можно запустить их проведение в нужном количество фоновых заданий

4) дополнительно можно:

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

- в ходе проведения проверить сколько документов ещё осталось (не провелось)

 

Само решение проверялось на 1С: Управление холдингом, редакция 3.1 (3.1.15.4). Будет работать на всех конфигурациях на базе Библиотеки стандартных подсистем: УТ, БП, УНФ, ERP, КА, УХ, ЗУП и т.д.

 

Подробнее в картинках:

Подсистема доступна в разделе Проведение.

Также либо по навигационной ссылке можно открывать регистр либо добавить в избранное 

Навигационная ссылка: e1cib/list/РегистрСведений.прдок_ЗарегистрированныеДокументы

 

 

Форма регистра, в которой сосредоточены все доработки, достаточно проста, но функциональна.

Состоит из двух закладок: 

  • Регистрация документов - где определяем список документов для регистрации задавая произвольные отборы СКД
  • Документы для проведения - тут указываем количество потоков и запускаем проведение.

Регистрация документов (Закладка)

  • Период - указываем отрезок для отбора по дате документа;
  • Тип документа - выбираем тип документа из справочников: Идентификаторы объектов метаданных, Идентификаторы объектов метаданных расширений;
  • [Предварительный просмотр] - посмотреть в таблице "Предварительный просмотр" (она снизу), что будет выбрано по указанным отборам, не добавляя документы в регистр
  • [Зарегистрировать документы] - добавление документов в регистр по указанным отборам
  • Панель отборов - организована на базе компоновки данных и позволяет задавать произвольные отборы на реквизиты документов
  • Таблица предварительного просмотра - имеет только информативную функцию - проверить правильность заданных отборов 

 

 

Документы для проведения (Закладка)

  • Количество потоков - число фоновых заданий, которое будет запущено
  • [Запустить фоновое проведение] - создает фоновые задания проведения. Количество документов на каждый поток = Количество документов / Количество потоков)
  • [Сколько осталось документов] - при нажатии в окне сообщений отобразиться число документов оставшихся в регистре (в ходе проведения можно проверять сколько ещё не проведенных остается)
  • Список документов - динамический список регистра сведений Зарегистрированные документы (РегистрСведений.прдок_ЗарегистрированныеДокументы), содержит информацию о дате регистрации документа к проведению, дате документа, типу документа, попыток проведения, информацию об ошибке возникшей в ходе проведения.

 

 

Примеры сообщений

 

 

  • Сообщения появляются после нажатия кнопок на форме и информируют сколько документов обработано.

Фоновые задания в консоли

 

  • Проведение реализовано фоновыми заданиями, что позволяет свободно закрывать текущий сеанс 1С и также не блокировать его.
  • Проведение документов выполняется согласно порядку полей регистра: Дата регистрации ВОЗРАСТАНИЕ, Дата документа ВОЗРАСТАНИЕ.
  • Если фоновые задания были завершены Администратором, то их следует повторно запустить из формы регистра кнопкой [Запустить фоновое проведение]
 
 Как подключить расширение к базе 1С
 
 Другие публикации автора

 

Версии:

Расширение: Гарантированное проведение документов (версия 16.08.2022): Исправлена ошибка натягивания типа документа на СКД

Проверено на следующих конфигурациях и релизах:

  • 1С:ERP Управление предприятием 2, релизы 2.5.15.103
  • Управление торговлей, редакция 11, релизы 11.5.15.103
  • Бухгалтерия предприятия, редакция 3.0, релизы 3.0.147.25
  • 1С:Комплексная автоматизация 2, релизы 2.5.15.103
  • Управление нашей фирмой, редакция 3.0, релизы 3.0.6.160
  • Розница, редакция 2.3, релизы 2.3.17.19

проведение документов отложенное групповое

См. также

Автоподбор ролей для профилей и групп доступа в любых типовых базах 1С УТ 11, КА 2, ERP2, Розница 2/3, УНФ 16/3, БП 3, ЗУП 3 и подобных (УФ, Платформа 8.3.14+)

Инструменты администратора БД Роли и права 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

14400 руб.

06.12.2023    3593    18    1    

39

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 руб.

10.11.2023    4284    12    2    

36

SALE! %

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2280 руб.

14.01.2013    178646    1084    0    

862

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    27929    82    146    

61

Система хранения присоединенных файлов в томах на диске

Инструменты администратора БД Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием Платные (руб)

Конфигурация Комплексная автоматизация 1.1 (и УПП 1.3 тоже) хранит файлы и изображения в справочнике Хранилище дополнительной информации в реквизите Хранилище типа ХранилищеЗначений. Та же история с ВложениямиЭлектроннойПочты. Но при этом присоединенные файлы в Электронном документообороте хранит в томах на диске. Эта доработка позволяет использовать стандартный механизм хранения файлов, изображений и вложений электронных писем в томах на диске. При этом можно разделить тома хранения по объектам конфигурации.

4200 руб.

10.11.2015    61533    90    59    

74

"Менеджер потоков 2.1": УПП: "Восстановление партий"

Инструменты администратора БД Платформа 1С v8.3 1С:Управление производственным предприятием Россия Бухгалтерский учет Управленческий учет Платные (руб)

Как оптимизировать то, что, считалось, не поддается оптимизации? Как повысить доступность базы данных? Как проводить самую «времяемкую» операцию не по паре раз в неделю, а по несколько раз в день*? Ответ есть!

20000 руб.

12.09.2019    11856    5    9    

7

Конфигурация Session Monitor

Мониторинг Инструменты администратора БД Платформа 1С v8.3 Россия Платные (руб)

Конфигурация Session Monitor предназначена для мониторинга сервера 1С с целью отслеживания чрезмерной нагрузки от конкретных сеансов и скорости реакции рабочих процессов.

1500 руб.

01.12.2020    14400    34    0    

49

Хранилище файлов на SQL

Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Управленческий учет Платные (руб)

Привязка файлов / сканов к объектам 1С с сохранением их на SQL-сервере

12000 руб.

09.10.2019    11171    5    8    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. PerlAmutor 129 11.08.22 18:22 Сейчас в теме
Таблицу "Изменения" документа нельзя использовать для такой задачи как это делает современное ERP при выполнении обработчиков обновления?
+
2. sapervodichka 6799 11.08.22 18:25 Сейчас в теме
(1) Влад, здаров, давно не виделись. Поясни мне дурню пжл как, может так и можно, мне главное чтобы было наглядно и удобно
+
3. PerlAmutor 129 11.08.22 18:59 Сейчас в теме
(2) Привет. Сделать то наверное можно, только это будет тогда не универсальным решением. Сильно завязано на версию БСП. Есть План Обмена в (ERP например) - ОбновлениеИнформационнойБазы. У него есть реквизит "Очередь". Соответственно, если у тебя есть свой обработчик или 100 обработчиков, то БСП создает на каждый такой обработчик - новый узел плана обмена и четко разделяет какие документы к какому обработчику относятся. Можно подсмотреть в документах как сделана процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию() и ОбработатьДанныеДляПереходаНаНовуюВерсию(). Особенно версии с выполнением отложенных обработчиков. Ну и в каждой таблице "Изменения" документов/объектов нужному узлу из соответствующей очереди прописывается ссылка на документ. Ну а дальше вроде понятно, если документ Провелся то с регистрации на узле он удаляется.
fatman78; JohnyDeath; +2
4. sapervodichka 6799 11.08.22 19:27 Сейчас в теме
(3) ага, обработчики эти знаю, часто склеиваю их в одну внешнюю обработку (зарегистрировать + обработать) когда ошибки в обработчиках обновления надо отладить. Там один выдает таблицу, а у второго она на входе.
План обмена для обновления не хочется трогать, вдруг пересечется с обновлением.
ixijixi; +1
6. sapervodichka 6799 11.08.22 20:59 Сейчас в теме
(3) Вот сейчас ей провожу за первое полугодие 2022. Ты то как с этим делом разбираешься, приходится перепроводить? И ещё помню ты там кешировал разузлование спецификаций, довёл до ума, если да то покажешь?
Прикрепленные файлы:
+
8. PerlAmutor 129 11.08.22 21:18 Сейчас в теме
(6) Пока таких задач, чтобы перепроводить за несколько месяцев - не было. Закрытые периоды не дают трогать. А в текущем или не закрытом прошлом месяце пока хватало ИР.
Кэширование разузлования? Я ресурсные спецификации готовлю через хранимую процедуру, сначала раскручиваю через CTE деревья изделий, затем помещаю результаты в виде Nested Sets (по статье Joe Celko). Когда требуется создать РС просто выдергиваю готовое дерево в линейном формате и уже обработиной восстанавливаю в ДеревоЗначений, которое потом обхожу и формирую РС. Но эти телодвижения исключительно из-за специфики хранения во внешней базе данных. Там ацикличный граф, который требует полный проход, а средствами 1С это займет вечность. Поэтому делаю все это на все существующие изделия по ночам регламентным заданием дергающее ХП. Чтобы утром пользователю оставалось выбрать изделие и сформировать РС так быстро как это возможно.
Решение так себе, из-за того, что на одно изделие создается множество дублей спецификаций. Т.к. без сравнения деревьев не узнать что в них изменилось. А если уже был частичный выпуск то непонятно что делать с цепочкой этапов. Т.к. маршруты, количество, состав материалов и т.д. могло поменяться в любую сторону.
sapervodichka; +1
10. sapervodichka 6799 11.08.22 21:25 Сейчас в теме
(8) ты стабильно молодцом, держись там ! (мне такую схему не собрать я чисто 1С тык тык)
+
5. insurgut 207 11.08.22 20:26 Сейчас в теме
В старой доброй Управление торговлей, ред. 10.3 была прекрасная в своей простоте и понимании последовательность Партионный учет, и такая же простая как автомат Калашникова обработка Проведения по партиям, которая всегда продолжала с того момента, где её оборвали (при соответствующей настройке), и сразу же понимала, когда залезали в прошлый период. Как же её не хватает, даже с глюками в виде "Объект не найден" в этой самой последовательности :(
fatman78; sapervodichka; evn-zorin; +3
21. sapervodichka 6799 12.08.22 11:30 Сейчас в теме
(5) тут другое, хронологию связанных документов как делает "последовательность документов" эта обработка не восстанавливает, она для частных проведений в некоторых ситуациях
+
7. quazare 3602 11.08.22 21:15 Сейчас в теме
давай, Дима, пиши еще статейки - посмотрим, что у тебя интересненького имеется.
sapervodichka; +1
9. sapervodichka 6799 11.08.22 21:21 Сейчас в теме
(7) теперь твоя очередь догонять, а я в отпуск ухожу со следующей недели )))
quazare; fatman78; +2
11. fatman78 17 11.08.22 21:53 Сейчас в теме
12. pyrkin_vanya 488 11.08.22 22:52 Сейчас в теме
А тип документа обязательно указывать?
Мне нужно сейчас просто за период сначала снять проведение у документов, а затем провести. Всех документов. Не хочу писать свою обработку))
+
13. sapervodichka 6799 11.08.22 23:12 Сейчас в теме
(12) да, тип обязателен (Можно последовательно добавить выборки по разным типам в регистр и затем запустить общее проведение. Но все типы документов сразу зарегистрировать не получится)
+
14. muskul 12.08.22 07:57 Сейчас в теме
А она правильно перепроводит? а то сейчас перепровести групповым и перепровести из формы уже два разных перепроведения.
+
15. insurgut 207 12.08.22 08:06 Сейчас в теме
(14) а ещё хуже - это Перепровести <> Отменить проведение + Провести. В угоду мнимой оптимизации разработчики 1С тут сильно постарались испортить жизнь. :(
SanchoD; +1
16. sapervodichka 6799 12.08.22 08:31 Сейчас в теме
(14)
Процедура ВыполнитьПроведениеДокумента(ДокументСсылка,	ДополнительныеСвойстваОбъекта = Неопределено) Экспорт
	
	ОписаниеОшибки          = "";
	ДокументПроведенУспешно = Ложь;
	
	НачатьТранзакцию();
	
	Попытка
		
		Блокировка = Новый БлокировкаДанных;
	    ЭлементБлокировки = Блокировка.Добавить(ОбщегоНазначения.ИмяТаблицыПоСсылке(ДокументСсылка));
	    ЭлементБлокировки.УстановитьЗначение("Ссылка", ДокументСсылка);
	    Блокировка.Заблокировать();
		
		Объект = ДокументСсылка.ПолучитьОбъект();
		
		Если ДополнительныеСвойстваОбъекта <> Неопределено Тогда
			Для Каждого Свойство Из ДополнительныеСвойстваОбъекта Цикл
				Объект.ДополнительныеСвойства.Вставить(Свойство.Ключ, Свойство.Значение);
			КонецЦикла;
		КонецЕсли;
		
		//Объект.ДополнительныеСвойства.Вставить("ОтложенноеПроведение");
		
		Если Объект.ПроверитьЗаполнение() Тогда
			
			// Выполняем попытку проведения документа.
			Объект.Записать(РежимЗаписиДокумента.Проведение);
			
			ДокументПроведенУспешно = Объект.Проведен;
			
		КонецЕсли;
		
		ЗафиксироватьТранзакцию();    
		
	Исключение            
		
		ОтменитьТранзакцию();
		
		ОписаниеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
		ДокументПроведенУспешно = Ложь;
		
	КонецПопытки;
	
	Если ДокументПроведенУспешно Тогда
		
		УдалитьДокументИзРегистраПроведения(ДокументСсылка);
		
	Иначе	
		
		ЗарегистрироватьОшибкуПроведенияДокумента(ДокументСсылка, ОписаниеОшибки); 
		
	КонецЕсли;
	
КонецПроцедуры
Показать
+
28. Дмитрий74Чел 234 20.10.23 17:48 Сейчас в теме
(14) Если проведение из формы дает не тот же результат, что и проведение из списка - это в 99% случаев косяк разработчиков типовой конфигурации, и в 1% - "не баг но фича".
Обработка конечно проводит методом ДокументОбъект.Записать(), т.е. "из списка", а не "из формы" - иначе пришлось бы открывать каждый документ - а это гораздо медленнее чем провести из списка.
sapervodichka; +1
29. sapervodichka 6799 21.10.23 01:10 Сейчас в теме
(28) ой и не говори ))) ругаемся сейчас с разработчиками 1С:Управление холдингом.... в системе одни фичи, например, документы закупочных процедур перепроводить нельзя, даже если документ не менял.. вообщем тебе спасибо за комментарий
+
17. Serg O. 225 12.08.22 09:51 Сейчас в теме
про какие документы идёт речь? Есть же связанные документы. Например, сначала должно пройти Поступление товаров и услуг, а только потом Реализация... если будет наоборот - реализация никогда не проведётся
и проведение всегда будет падать в ошибку! Опять же как насчет Партий товаров на складах?
отложенное проведение... хорошо, но кто ж за ним следить то будет? как бухгалтер узнает о своей ошибке?

Другой пример: Первый клиент зарезервировал для себя товар, а товар другому отдали (реализация провелась, например раньше), а первому - не хватило?! как такие ситуации разруливать?

при Оперативном проведении - это видит человек и реагирует сразу, а тут "автоматически" - никто не контролирует!
и виновата будет 1С-ка (то есть отдел ИТ) !

я бы такое не стал внедрять
+
18. masterkio 336 12.08.22 10:12 Сейчас в теме
(17) Согласен. Без гарантии правильной последовательности проведения документов, проведение кусками в фоновых заданиях не имеет никакой ценности.
В свое время реализовывал подобную задачу, как раз с целью ускорения регламентного перепроведения большого количества документов. Так основная часть задачи была именно в автоматическом формировании независимых "кластеров" (массивов) документов, которые можно перепроводить независимо друг от друга. И вот уже эти независимые кластеры запускались для перепроведения в отдельных фоновых заданиях.
+
20. sapervodichka 6799 12.08.22 11:08 Сейчас в теме
(18) При ВСЕХ обменах данными между базами проведение документов идет без правильной последовательности - из твоей логики обмен данными как инструмент тоже не имеет никакой ценности.

По-моему мнению ценности не имеет решение неумного специалиста непонимающего контекст задачи применять первый попавшийся под руку инструмент не прочитав описание для чего он.
UPKA; mrsmrv; +2 1
19. sapervodichka 6799 12.08.22 11:05 Сейчас в теме
(17) Партии товаров на складах есть отнюдь не везде (в 1С:УХ например их нет, я в текущем случае в ней и делаю проведение, а не в 1C:ERP, где кстати такого регистра тоже уже нет, на всякий случай).
К каждой задаче надо правильно подбирать инструмент решения.
Не всё можно этой отверткой починить (я про текущую публикацию).
Правильную последовательность документов этой отверткой не починить - если прочитать описание, то там и не написано, что она последовательности чинит, где попало.

я бы такое не стал внедрять - ты бы такое не смог написать.

Полегче там с комментариями, я ведь на грубость также могу ответить.
nirbolz; +1 1
22. kembrik 10 12.08.22 18:03 Сейчас в теме
Сама методика понятна, и может быть даже вполне успешно применяется на неглубоком срезе, но как раз практическую задачу "Программист изменил логику формирования движений у документов" на высоконагруженной системе с небольшим технологическим окном обычно решают по-другому

Если "программист изменил логику формирования движений" у одного -трех регистров или просто их добавил, не проще ли сразу оперировать с ТаблицаДвиженийРегистра сформировав ее типовым запросом?

Если перепроведение то получаем документ объект по ссылке, начинаем транзакцию, проводим, читаем движения по этому регистру, выгружаем отменяем транзакцию (ибо нефиг трокать остальные регистры) и данные движения сразу записываем в набор записей нужного регистра. Все, профит. Нам все равно насколько старые данные и достаточно ли там данных для новой процедуры проведения, не попадаем на всякие Перед записью и При записи. Но как говорится если работает то работает
Дмитрий74Чел; Drivingblind; sapervodichka; +3
23. sapervodichka 6799 12.08.22 22:35 Сейчас в теме
(22) да, для высоконагруженных систем, там другие инструменты и методы, там степень ответственности за ошибку или лишнюю нагрузку скажем так зашкаливает. В таких ситуациях часто провожу мероприятия по групповым обработкам на копии базы затем перетаскиваю только нужные данные в продуктив, или как ты пишешь минимизировать операции записи, чтобы лишний раз не нагружать. Но 90% баз 1С они не высоконагруженные и это расширение имеет право в них работать вполне себе хорошо.
mrsmrv; +1
24. xten 47 11.11.22 16:27 Сейчас в теме
Добрый день, Уважаемый Автор!!
Огромное спасибо за Расширение!! Есть вопрос, ситуация такая, что при выборе нового вида документов или добавлении документов (любых) регистр хранит историю предыдущих документов и начинает проведение уже огромного накопленного количества. Есть ли возможность удалять записи регистра, чтобы каждый раз проводить только актуальные (выбранные в текущий момент) документы?
Спасибо!!
+
25. sapervodichka 6799 11.11.22 16:44 Сейчас в теме
(24) Попробуйте, на закладке Документы для проведения выделить все Ctrl+A и нажать Del
+
26. xten 47 11.11.22 17:14 Сейчас в теме
Добрый день. Спасибо! Там их много 147 000 )
+
27. xten 47 11.11.22 17:15 Сейчас в теме
Добавил кнопку очистка регистра ))
sapervodichka; +1
Оставьте свое сообщение