[Расширение] Контроль отрицательных остатков по регистру бухгалтерии при проведении

Опубликовал Евгения Карук (ekaruk) в раздел Программирование - Инструментарий

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

Не требует изменения либо снятия с поддержки конфигурации.

Порядок использования:

1. В режиме предприятия подключаем расширение через меню "Все функции" - "Стандартные" - "Управление расширениями конфигурации"

2. Выбираем появившийся пункт меню "Администрирование" - "Сервис" - "Контроль отрицательных остатков" (либо "Все функции" - "Обработки" - "Контроль отрицательных остатков")

3. Выбираем перечень счетов, для которых контролировать остатки, документы, при проведении которых контролировать остатки, и пользователей, для которых выполняется контроль.

4. Настройки работают сразу после сохранения. Никаких больше действий выполнять не нужно.

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

Что в файлах:

КонтрольОтрицательныхОстатков_УниверсальныйШаблон.cfe - универсальный шаблон. Подключен только документ "Авансовый отчет", соответственно проверку остатков по счетам можно включить только для него. Подойдет для любой конфигурации, в которой есть документ "Авансовый отчет" и регистр бухгалтерии "Хозрасчетный". Любые другие документы можно подключить в конфигураторе самостоятельно аналогично авансовому отчету.

КонтрольОтрицательныхОстатков_БП3.0.41.cfe - готовый файл для БП 3.0. Никаких донастроек в конфигураторе не требуется. Сразу после подключения из режима Предприятия расширение работает со всеми документами, для которых разрешено проведение по регистру бухгалтерии. Проверялось на версии БП 3.0.41. Теоретически должно работать и для последующих версий, а также на базовой и ПРОФ.

Также рекоммендую из других моих универсальных разработок: 

  1. [Расширение] Проверка ввода данных и события форм без изменения конфигурации (для БП, УТ, ЗУП, Розницы, ERP)
  2. Универсальная выгрузка/загрузка данных для отличающихся конфигураций (JSON)
  3. Комплексная проверка ведения учета в УТ10, УТ11, КА, УПП, ERP - простой отчет для проверки корректности ведения учета по всем разделам учета.

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

Наименование Файл Версия Размер
КонтрольОтрицательныхОстатков_УниверсальныйШаблон.cfe
.cfe 22,62Kb
29.04.16
56
.cfe 22,62Kb 56 Скачать
КонтрольОтрицательныхОстатков_БП3.0.41.cfe
.cfe 270,30Kb
29.04.16
57
.cfe 270,30Kb 57 Скачать

См. также

Добавить вознаграждение
Комментарии
1. Andrei Shibanov (shibanovan) 53 17.08.15 13:15 Сейчас в теме
Тестировали кейс при работе обработки перепроведения документов, нормально перепроводятся ? А что будет в таком случае:
1.) Вашего расширения нет, бух провел докумен, который сделал минуса
2.) Потом поступлениями этот минус выправили
3.) Установли ваше расширение, теперь бух в минус не проводит
4.) Гл.бух закрывает месяц и перепроводит все документы, включая док из 1. Что будет ?
2. Andrei Shibanov (shibanovan) 53 17.08.15 13:17 Сейчас в теме
Блин, что-то на автора не посмотрел. Сообщение удалить не могу, но вообщем, вопрос снимаю, у автора пися подлиннее будет )
корум; +1 Ответить
3. Евгения Карук (ekaruk) 2534 17.08.15 13:33 Сейчас в теме
(1) shibanovan, Вопросы вполне корректные.
Да, при попытке повторного проведения документ не проведется. Тут вообще-то правильнее все-таки поменять порядок документов. В БП желательно все-таки соблюдать порядок ввода. Если есть необходимость все-таки провести такой документ в виде исключения, то его может провести ключевой пользователь, для которого проверка отключена.
Еще стоит учесть, что контроль выполняется только при проведении из формы документа. Т.е. при массовом перепроведении бухгалтером групповой обработкой контроль выполняться не будет.
Наиболее логичное использование расширения это дополнительный контроль при вводе документов рядовыми пользователями. Главному бухгалтеру правильнее разрешить все и выполнять контроль данных вцелом отчетами.
4. Andrei Shibanov (shibanovan) 53 17.08.15 13:41 Сейчас в теме
(3) ekaruk, а...вот это хорошо, что только при интерактивном проведении контролируется ! )
5. KSy (KSy) 17.08.15 19:22 Сейчас в теме
Во встроенном механизме конфигурации БП 3.0 есть опциональный контроль по счетам 10 и 41. В вашей обработке контроль происходит по всем количественным счетам?
6. Евгения Карук (ekaruk) 2534 17.08.15 19:25 Сейчас в теме
(5) KSy, Контроль возможен по всем активным и пассивным счетам плана счетов по количественному и суммовому остатку.
Перечень контролируемых счетов настраивается пользователем.
7. FireAlex (FireAlex) 83 21.08.15 08:40 Сейчас в теме
(6) ekaruk, а на какую дату происходит контроль остатков? на дату документа?
8. Евгения Карук (ekaruk) 2534 21.08.15 09:01 Сейчас в теме
(7) FireAlex, На момент времени после проведения документа.
9. Сергей (Che) Коцюра (CheBurator) 3366 17.09.15 23:03 Сейчас в теме
Нужен пналогичный контроль и на событие отмены проведения
Причем контролироваться должно не на момент помле отмены проведения а как минимум на сейчас, как макимум - на всем промежутке от события до сейчас
10. Евгения Карук (ekaruk) 2534 18.09.15 11:50 Сейчас в теме
(9) CheBurator, На отмену проведения, думаю, лишний.
Если документ некорректен, то его в любом случае нужно отменить. Независимо от того, появляются ли при этом отрицательные остатки.

По периоду контроля.
В принципе возможно даже логичнее использовать контроль на текущий момент, а не на момент документа. Т.е. пренебрегаем промежуточными остатками, но контролируем итоговые. Или на конец месяца.
По контролю на весь период от текущего документа. Теоретически возможно, но запрос достаточно тяжелый получается, если все промежуточные остатки проверять.
Т.е. тут 4 возможных варианта:
1. На момент документа;
2. Итоговые остатки на текущий момент;
3. На конец месяца;
4. Контролировать весь период от момента документа до текущего времени.
Не факт, какой кому более подходящий.
ИМХО, контроль на момент документа наиболее понятный пользователю.
11. Сергей (Che) Коцюра (CheBurator) 3366 18.09.15 22:22 Сейчас в теме
(10) контроль на весь период получается просто и совсем ненапряжно, результат практически мгновенно. Но это требует доработки типовой конфы и в большинстве случаев невостребовано. Решается путем разложения осциллирующей функции остатков на сумму монотоно убывающих функций
12. Евгения Карук (ekaruk) 2534 18.09.15 22:40 Сейчас в теме
(11) CheBurator, конфигурацию менять необязательно. Тут достаточно експоненциального расчета производной логарифма по основанию ~ё.

Ну или тупой простейший медленный запрос с детализацией по регистратору и отрицательными остатками :)
13. isn Игнатьев (isn) 11 10.02.16 15:58 Сейчас в теме
Плюс. Хорошо настраиваемое решение. Тестировал на Бухгалтерии.
Планирую по такой же системе добавить свои проверки.
14. Сергей (Che) Коцюра (CheBurator) 3366 30.03.16 00:04 Сейчас в теме
(12) "Тут достаточно експоненциального расчета производной логарифма по основанию ~ё. "
- поясните, плиз, подробнее, если это возможно
15. Евгения Карук (ekaruk) 2534 30.03.16 00:37 Сейчас в теме
(14) CheBurator, Честно говоря, я не поняла, что имелось в виду под фразой "Решается путем разложения осциллирующей функции остатков на сумму монотоно убывающих функций" и написала в ответ какой-то бред.
А что все-таки имелось в виду в (11) ?
16. Евгений Сосна (pumbaE) 509 30.03.16 01:06 Сейчас в теме
(15) возрат не делает сторно(приход с минусом) а именно приход с плюсом, а дальше уже решается простым запросом. Но нужно менять конфигурацию.
(14) о как тебя... :)
17. Евгения Карук (ekaruk) 2534 30.03.16 01:11 Сейчас в теме
(16) pumbaE, Смысл в том, что отрицательные остатки могут быть по самым разным причинам.
Мы не можем менять все операции.
Теоретически достаточно делать запрос к таблице ОстаткиИОбороты с детализацией по регистратору и проверять промежуточные минуса.
Но это достаточно тяжелый запрос, чтобы делать его ради этой проверки.

И я так и не поняла, что такое "разложения осциллирующей функции остатков на сумму монотоно убывающих функций"
Можно эту фразу расписать попроще?
18. Евгений Сосна (pumbaE) 509 30.03.16 01:19 Сейчас в теме
(17) ekaruk, принцип в том, что партиобразующие движение всегда убывали. Т.е. самый простой пример, возврат не делает по партии движения приход * -1, а образует уже новую партию и она потом опять таки продолжает списываться. Временной ряд с остатками по партии 10 ...7 ... 3 ... 0, но ни как не 10 ...7...8...4...0. Тогда можем проверять остаток на дату документа по партиям дата которых меньше чем дата документа.
19. Евгения Карук (ekaruk) 2534 30.03.16 01:35 Сейчас в теме
(18) pumbaE, Да, кажется, общую идею я поняла.
К сожалению, в данном случае мы не можем контролировать, из каких движению сформируются минуса.
Остаток может прыгать произвольно как в плюс, так и в минус.
20. Сергей (Che) Коцюра (CheBurator) 3366 30.03.16 02:00 Сейчас в теме
(15) если взять функцию остатков и развернуть ее по времени - получится хаотичная пила где остатки по "измерение" скачут вверх-вниз. никакого другого варианта для такого представления функции остатков кроме как прогнать тяжелый запрос на точку каждого регистратора изменения остатков ведущих остаток в минус - нет. мы вынуждены проверять каждый регистратор, который проводит изменение остатков вниз потому что мы не знаем прыжков вверх. если мы добавим !Дополнительное! измерение в функцию остатков (назовем это "партия" - и пусть пока это будет СЛУЖЕБНОЕ ИЗМЕРЕНИЕЯ, которое схлопывается везде в отчетах и не видно пользователю) - то осциллирующую пилу остатков мы можем представить как сумму остатков монотонно убывающих партий (ясен пень партия в точке своего возникновения сингулярна - из ниоткуда внезапно стало N). Теперь, чтобы проконтролировать а не ушли ли остатки в "минус" от любой точки заднего числа до сейчас - достаточно получить остатки по нашим служебным "партиям" на сейчас - это делается практически мгновенно. И если среди этих партий есть пратии с остатками < 0 - можно СРАЗУ СКАЗАТЬ что изменение остатков задним числом ОДНОЗНАЧНО приводит к нарушению НОРМАЛЬНОГО УЧЕТА - остатки ушли в минус, на складе было -3шт. (или в кассе -100 рублей). Этот вариант неоднократно обсуждался на мисте и здесь на Исе я также его упоминал в обсуждениях. такая концепция работает у меня на количественном учете ГТД и практически мгновенно, без всякой нагрузки на систему "блокирует" k.s,st халявные телодвижения, приводящие к траблам
21. Роман С (Dach) 88 12.04.16 12:17 Сейчас в теме
(20) CheBurator, делал такое несколько раз. Очень удобно, если есть возможность изменять конфу - хранить остатки по "партиям" (где "партия" - это совокупность всех измерений контролируемого регистра-источника, однозначно идентифицирующая конкретную сущность - строку, то есть по сути - укникальный ключ) в отдельно регистре накопления (остатков), писать туда приходы и расходы подпиской на событие, в конце транзакции контролировать возникновение отрицательного остатка на текущий момент, а точнее на "конец времен". Единственное, я всегда предусматриваю в процедуре контроля возможность НЕ контролировать остатки по "партиям", передав туда нужный флаг, для возможного перепроведения задним числом в регламентных целях.
22. Вася Сидоров (kepka) 31.05.16 18:44 Сейчас в теме
Купил сегодня обработку, хотел обрадоваться но не вышло.
БП Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.43.223)
Не хочет контролировать остатки. Никаких ошибок не выдает.
Выбрал в настройках только контроль по 41 счету, по всем пользователям, документ реализация товаров и услуг.
Специально задал такие условия: Товар1 продал под 0 сегодняшним числом. Создал копию документа с тем же товаром и количеством "на вчера ", все со свистом провелось.
Как быть?

23. Евгения Карук (ekaruk) 2534 31.05.16 20:25 Сейчас в теме
(22) kepka, Т.е. второй документ датой "вчера"?
Контроль выполняется на дату документа. Соответственно, если вчера товар был, то документ правильно провелся.
24. Вася Сидоров (kepka) 01.06.16 13:10 Сейчас в теме
(23) ekaruk,
Я так понимаю что если некоторые негодяи-пользователи проводят расходные будущим числом(им так удобно, на завтра типа) то в текущем дне будет черт знает что. Или если "поправят" в прошлом.
Смысл тогда в этой обработке? Я расчитывал что при проведении задним числом она пересчитает цепочку "до победного конца" и если где-то будет переход через 0 то ругнется. Вот это было бы совсем другое дело.
25. Вася Сидоров (kepka) 01.06.16 13:12 Сейчас в теме
Если так сможете доделать, хотя бы под мои потребности - пожму руку и позолочу.
26. Вася Сидоров (kepka) 01.06.16 13:13 Сейчас в теме
Чебуратор, кажется про это именно и намекал))
27. Евгения Карук (ekaruk) 2534 01.06.16 13:26 Сейчас в теме
(24) kepka, Я об этом уже писала в (10).
По моей оценке проверять всю цепочку при проведении каждого документа это слишком тяжелая проверка, чтобы выполнять ее при проведении каждого документа.
Просто вопрос скорости выполнения.

Подумаю еще. Может, со временем добавлю отдельной опцией.
28. Сергей (Che) Коцюра (CheBurator) 3366 02.06.16 00:43 Сейчас в теме
В типовой - придется извращаться. а делать нетиповой - восьмерочников от этого тошнит и они теряют сознание... от страха наверное.. ;-)
29. rjhev korum (корум) 290 13.09.16 09:58 Сейчас в теме
(23) ekaruk, вариант поставить два контроля, на дату документа и "на конец времён" позволит убрать хотя бы часть проблем.