gifts2017

Фоновое проведение документов без изменения конфигурации

Опубликовал segen segen (1segen1) в раздел Обработки - Обработка документов

Реализация фонового многопоточного проведения документов без изменения конфигурации.

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

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

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

В публикуемой обработке фоновые задания создаются без изменения конфигурации, с помощью штатного функционала. На форму обработки добавлена закладка, на которой нужно указать количество партий для проведения. Проведение каждой партии осуществляется в отдельном фоновом задании, за счет чего значительно сокращается общее время проведения документов. Например, для последовательного проведения 4000 документов требуется около 4 часов. При использовании предлагаемой обработки время проведения сократилось до 1 часа.

Обработка предназначена для работы в клиент-серверном варианте. Функционирование обработки проверялось на конфигурации "Бухгалтерия предприятия КОРП", редакции 2.0.65.33, платформа 8.3.8.1652.

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

Наименование Файл Версия Размер
Многопоточное проведение документов 16
.epf 55,58Kb
28.11.16
16
.epf 1.0 55,58Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Sergey Andreev (starik-2005) 28.11.16 11:13
Я в свое время делал хак для обмена с помощью функции "ПровестиДокументы" модуля "ОбщегоНазначения" (запускал фоновое задание для проведения документа "ПослеЗаписиОбъекта"), чтобы обмен не останавливался на контроле ДЗ. В принципе, эту функцию можно использовать и для такого распараллеливания. Можно даже использовать "ДлительныеОперации", чтобы совсем "кошерно" было )))

Вообще за очередное поднятие темы многопоточности однозначно плюс. Главное - чтобы документы проводились последовательно в рамках своей роли. Т.е. и чтобы бабочки на 60-62-76 не возникали (разделение по договорам контрагентов на разные потоки), и номенклатура корректно отрабатывала (разделение по номенклатуре, поступление товара должно произойти раньше, чем продажа - чтобы они не попали в разный поток).

ЗЫ: Кстати, тут теперь плюсик самому себе можно поставить - пользуйтесь! ))
white_sochi; +1 Ответить
2. Vladimir Kuzmenko (t278) 29.11.16 02:36
осталось дождаться для БП 3.0
Не удивлюсь если будет штатно реализовано
3. pallid *** (white_sochi) 29.11.16 13:08
(2) не будет, делали http://infostart.ru/public/401469/ только без многопоточности
DreamcastMD; +1 Ответить
4. Александр (МимохожийОднако) 30.11.16 08:04
(2) Заметил, что при использовании помощника закрытия месяца или учета НДС, после запуска перепроведения документов можно переключиться на другие окна и продолжать работать. И никто пока не отменял запуск второго сеанса пользователя. Этим и пользуюсь. Это в БП3.0
5. Иван Иваныч (dima_home) 30.11.16 08:53
Распараллеливание восстановления последовательности... вы серьезно?
Автор явно не знаком с "цепным распадом" по восстановлению партий товаров и последовательности взаиморасчетов.
По-этому только полное перепроведение документов по порядку.

Цепной распад - это когда измененный одной цепочки приводит к изменению других цепочек последовательностех (казалось бы независимых).
Например: изменение прихода/расхода одного товара может повлечь изменения себестоимости других товаров (через пересортицы/комплектации),
по контрагентам тоже самое (через тройственные взаимные зачеты и уступки долгов).
Простая прямолинейная последовательность это единственная гарантированная процедура. Можно еще как РАУЗ- в конце месяца считать все разом, однако там часто возникают коллизии, так как механизм, прямо скажем, содержит кучу условностей.

Так что, эти обработки- от лукавого, до первого случая ветвления последовательности... хотя иногда счастье в неведении. ))

Что реально можно... это запускать последовательность автоматически по ночам условно в монопольном режиме, с автоостановом утром перед началом работы. У нас последовательность за месяц восстанавливается по ночам за неделю.
Anchoret; shard; Alex_E; dj_serega; корум; Yashazz; kibibyte; AnotherSide; Vovan58; tormozit; primat; ph33l; EliasShy; kuzev; CSiER; Dem1urg; Восьмой; gats007; Trancer64; Dmitryiv; saleksv; FAMыч; artfa; SGordon1; DreamcastMD; +25 Ответить 3
6. saleksv (saleksv) 30.11.16 10:10
Реализовали у себя последовательный и непрерывный механизм перепроведения. База (клиент-сервер) проводится непрерывно фоновым заданием с отслеживанием границы перепроведения. Задается размер пачки документов для перепроведения.
7. Stas Agapov (Agapov_Stas) 30.11.16 17:14
Мне интересно как при ФИФО будут списываться партии в многопоточном перепроведении ?
По-этому только полное перепроведение документов по порядку.

С этим утверждением полностью согласен
как по мне так автор вообще не понимает что такое последовательности, зачем они нужны и зачем их восстанавливают... подозреваю что в его базах о таком не слышали
8. Дмитрий Жиляков (Zhilyakovdr) 30.11.16 17:30
У себя сделал регламентное задание закрывающее месяца до текущего -1 запускающееся каждую ночь.
Непрерывное проведение в фоне.... если вы это делаете при работе пользователей то это не хорошо....
9. Сергей (Sybr) 01.12.16 11:41
Я так и не понял, эта обработка просто берет указанное количество документов и проводит в фоновом задании? Без всяких разделителей и поисков зависимостей в документах? Проще тогда сразу выводить сообщение "Все документы перепроведены!" эффект будет такой же, а времени займет сотую долю секунды.
hashpnd; Vovan58; +2 Ответить
10. Sergey Andreev (starik-2005) 01.12.16 12:48
(5) в свое время реализовывал как раз с учетом этого "цепного распада". Весьма нетривиальная задача, но в 6 потоков удавалось достигать увеличения скорости проведения в 4-6 раз.
11. Айрат Саттаров (kwazi) 01.12.16 15:26
если нет товаров, а только услуги или отключен партионный учет, то нормально должно пойти
12. Яков Коган (Yashazz) 02.12.16 12:32
(10) И то героизм. Мне вот жуткими извратами и логическими гримасами удавалось добиться 4 потоков, чтобы не уродовать последовательности, но не более. А автор и правда, походу, о таких вещах не задумывается. Ну, до первых граблей)))
13. Яков Коган (Yashazz) 02.12.16 12:35
Вот если б автор написал, например, произвольный универсальный менеджер фоновых заданий, когда можно выбрать любое ресурсоёмкое действие системы, пригодное к вызову фоновым заданием, и этот менеджер умел бы собирать последовательности таких задач, запускал бы их, логировал итд, было б круто. А так - опасная и неоднозначная игрушка, с неочевидной полезностью. Где тут можно минуснуть, кстати?
14. Sergey Andreev (starik-2005) 02.12.16 15:04
(13) зачем минусить? Надо дисклеймер прописать (по-сути, в комментариях он уже есть) об опасности. Те, кто на грабли наступит - заработают нехилую экспу и получат очередной левелап. А левелап чем плох? ИМХО, крайне хорош для развития экономики. Ведь пока на грабли не наступишь - не научишься.
15. Яков Коган (Yashazz) 02.12.16 17:47
(14) Плохо то, что на грабли как раз наступит не автор, а те невезучие, которые, доверяя авторитету ресурса ИС, эту фигню скачают и применят. Или репутация ИС никому не интересна?)) Это ведь посмотри кому предназначено - не программисту, а бухгалтеру. По-твоему, бухгалтер должен эту экспу получать?)

Ну и знаешь, рейтинг на то и сделан, чтоб реальность отражать, а не по комментариям судить о публикации.
16. Дмитрий Жичкин (zhichkin) 03.12.16 17:09
Большое количество знатоков многопоточности и восстановления последовательности собралось. Это хорошо. Прокомментируйте, пожалуйста, это: Параллельное восстановление партий ? Всегда было интересно насколько это реально ...
17. Алексей Ермилов (Alex_E) 03.12.16 17:39
(11) Окромя партий много чего есть, если влёт - да хоть зачет авансов... Смотрите (5) - там суровая правда жизни описана)))))
18. Vladimir Glumov (Vovan58) 04.12.16 02:13
Всколыхнули слова : перепроведение удобно выполнять встроенной обработкой "Групповая обработка справочников и документов" - и в душу закралось нехорошее предчувствие. Разве там всегда документы в хронологии проводятся? Это кому удобно и в чем сие удобство?
Хотя бы применимость обработки автор описал и в каких случаях ее применять нельзя. Жуткая жуть заключается в том, что работа сделана с любовью и времени потрачено...
19. Sergey Andreev (starik-2005) 04.12.16 21:55
(17) это в принципе разные счета/регистры (партии/остатки/взаиморасчеты/...) - все это можно распараллелить отдельно. Те, кто говорят, что нельзя параллельно что-то провести, просто не знают, как это сделать. Да, нетривиальная задача, но вполне решаемая. При том если кешировать данные партий/взаиморасчетов/прочего - можно добиться очень высокой производительности, другое дело, что 1С в принципе не умеет организовывать доступ быстрый к общим данным - для этого их нужно записать в СУБД и заблокировать - это весьма снижает возможности 1С в плане оптимизации. Но если вынести логику проведения во внешний по отношению к 1С контур, то скорость проведения может достигать десятков тысяч документов в секунду. Но это не для 1С-ников задача, конечно.
20. Алексей Ермилов (Alex_E) 05.12.16 05:43
(19)
- все это можно распараллелить отдельно. Те, кто говорят, что нельзя параллельно что-то провести, просто не знают, как это сделать.
- снимаю шляпу, если Вы сумеете это сделать не внешним контуром, а средствами 1с, особливо в той же бухгалтерии на базе обработки группового перепроведения документов. Или хотя бы расскажете, как Вы это видите...
21. Evgeniy T. (hashpnd) 05.12.16 11:34
Мы разрабатывали механизм многопоточного перепроведения для нашей компании, нюансов в таком механизме очень много. Автор похоже решал только проблему взаиморасчетов (закрытия авансов), а себестоимость товара и партионный учет (при использовании раздельного учета НДС) прошли мимо. У нас реализована многопоточность в бухгалтерии КОРП по подразделениям, при этом оставалась проблема взаиморасчетов, которую удалось решить только разнеся документы по типам на разное время.
22. Sergey Andreev (starik-2005) 05.12.16 11:40
(20) не поверите, но я распараллеливал проведение. При том основная проблема была в агентских документах, в которых контрагент был указан в табличной части. Алгоритм сначала разбирал непересекающиеся по договорам с покупателями документы, потом среди них выделял документы с отдельными принципалами, после чего уже скармливал потоку проведения. Механизм действительно сложный. После проведения никаких "бабочек" на 60/62/76 не наблюдалось в разрезе документов расчета.
23. Алексей Ермилов (Alex_E) 05.12.16 12:25
(22) Круто, но как это реализовано не расскажете? Реально интересно, каким образом средствами 1с решить задачу параллельного проведения документов, чтобы взаиморасчеты, партии НДС (или КУДиР для УСН 15%) и пр. пр. пр. при параллельном проведении документов вставали куда надо, ежели при проведении каждого документа решаются разные задачи, и если не проведён (не перепроведён) один документ, результаты проведения другого могут быть различны? Поделитесь алгоритмами, я то же так хочу)))))
24. uri1978 uri1978 (uri1978) 05.12.16 12:44
Например, для последовательного проведения 4000 документов требуется около 4 часов. При использовании предлагаемой обработки время проведения сократилось до 1 часа.

Одна женщина рожает ребенка за 9 месяцев. За сколько месяцев родят ребёнка 9 женщин?
25. Sergey Andreev (starik-2005) 05.12.16 13:09
(23) то есть Вы хотите, чтобы Вам за бесплатно кто-то дал обработку, которая так делает? А рассказать - я уже рассказал в общих чертах.
26. Sergey Andreev (starik-2005) 05.12.16 13:10
(24) ну про уровень интеллекта 1С-негов ходят легенды, конечно )))

Типа 1 экскаватор копает котлован 100 часов, за сколько часов выкопают котлован 10 экскаваторов. Действительно не видите разницы?
27. Алексей Ермилов (Alex_E) 05.12.16 14:07
(25) Да нет, не хочу, и даже не сумлеваюсь, что она у Вас есть...наверное - людям надо верить))))))
28. shard (shard) 05.12.16 21:37
(5) аналогично, по ночам последовательность гоняем. Добавил только вывод сообщений при проведении в текстовый файл, сохраняемый в специальную папку на сервере.
29. Vladimir Glumov (Vovan58) 05.12.16 23:30
(22) А при раздельном учете НДС с экспортом? Все прокатывало?
30. Sergey Andreev (starik-2005) 06.12.16 10:57
(29) а в чем, собственно, разница? Нужно организовать потоки так, чтобы документы проводились по-возможности параллельно. Вариантов организации - великое множество, но проблема 1С - это невозможность обращения потоков к быстрым общим данным, поэтому "кеширование", как метод оптимизации, можно реализовать лишь через запись в СУБД. Но и без кеширования вполне возможно обойтись. Но подчеркиваю - это весьма не простая задача, недостаточно просто тупо разбить документы на Х потоков по У штук.
31. Алексей Ермилов (Alex_E) 06.12.16 12:14
32. Sergey Andreev (starik-2005) 06.12.16 12:47
(31) у Вас, как я понял, решения действительно нету. У меня, как Вы бы уже могли догадаться, дело обстоит иначе.
33. Алексей Ермилов (Alex_E) 07.12.16 21:48
(32) всё, что я понял,это решение есть, но никому не скажу какое, потому как намекнул, что типа есть, но токо за бабки))))))... В обчем - я Вам верю, потому как людям в принципе надо верить))))))))))))))))))))))))
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа