gifts2017

"Разрушающий" контроль (анализ актуальности движений документа)

Опубликовал Сергей Большаков (axae) в раздел Обработки - Обработка документов

Обработка, позволяющая определить, какие документы при перепроведении изменят свои движения.

На выкладывание этой обработки меня сподвигла публикация http://infostart.ru/public/22269/  от KukA.5

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

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

Обработка делает следующее:

  1. НАЧАЛО ТРАНЗАКЦИИ

  2. Запоминает текущие движения документа

  3. Отменяет проведение документа

  4. Проводит документ

  5. Сравнивает движения документа

  6. ОТКАТ ТРАНЗАКЦИИ

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

Результаты сравнения (если есть различия в движениях) выводятся в окно сообщений.

Безусловно, после "реального" проведения выявленных документов может понадобиться проведение других документов...

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

Наименование Файл Версия Размер Кол. Скачив.
Обработка
.epf 16,86Kb
05.09.14
232
.epf 16,86Kb 232 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Сергей (Che) Коцюра (CheBurator) 01.07.10 18:43
2. Евгений Люлюк (Evg-Lylyk) 01.07.10 19:40
3. Игорь Исхаков (Ish_2) 01.07.10 19:46
(1) Ты бы предложил нелобовой подход. Интересно.
4. Eugeneer (Eugeneer) 01.07.10 20:24
а в чем смысл? какое практическое применение?
5. Eugeneer (Eugeneer) 01.07.10 20:25
Она никогда не отследит возможные изменения движений документа если они зависят от движения других документов!! Например по партии провели док задним и в итоге последующие доки изменят свлои движения, причем накатывающей волной.
Этого тут нет. Поставил бы минус. Потому что бестолковая обработка.
Aleksey.Bochkov; +1 Ответить 2
6. Олег (simol) 02.07.10 00:58
Зато можно узнать с какого документа начинается.
7. Сергей Большаков (axae) 02.07.10 07:38
(6) Да, действительно, видимо на вопрос "с какого документа требуется перепроведение?" эта обработка сможет ответить в определенных случаях.
(4) Но я думаю, эта обработка не для практического применения (она же ничего не изменяет в базе). Она скорее для теоретического интереса: "а где, когда и как у нас здесь начинаются косяки?"
(5) Да конечно, никогда не отследит. Никто не отследит, не зная конкретных последовательностей документов конкретных конфигураций.
В нашей бухгалтерии страх боятся перепроводить документы: "А вдруг изменятся оборотки? У нас уже всё сведено!". Я предложил эту идею такого контроля актуальности движений нашим админам базы данных и своему начальнику - они поддержали...
А при такой "накатывающей" волне требуется просто перепроводить документы по партии. Для этого я админам делал другую, простую обработку перепроведения по конкретной партии, причем с выбором всего одной партии и только по бухгалтерии 8.1 - но и этого им было достаточно. А обработка "разрушающего контроля" поможет найти начало нарушения последовательности по партии (6).
(1) А какой нелобовой подход может быть для решения задачи "какие документы при перепроведении изменят свои движения"?
8. Игорь Исхаков (Ish_2) 02.07.10 08:06
(5) Эээ... Ты - сразу минус...
Лучше дождаться от автора убедительного примера в каких случаях применение обработки эффективно.
9. Eugeneer (Eugeneer) 02.07.10 09:18
(6) вы видимо не в курсе что такое последовательность документов. кстати по которой делается аналогичный запрос - что нужно будет перепровести, и даже можно управлять процессом.
10. Eugeneer (Eugeneer) 02.07.10 09:21
(7)"В нашей бухгалтерии страх боятся перепроводить документы: "А вдруг изменятся оборотки? У нас уже всё сведено!"" Ну так и сделайте, чтобы посследовательность вост анавливалась до здачи отчетности. У нас обычно перепроводят отчетный период до сдачи отчетности, потом ставят запрет редактирования и все.
А еще лучше сделать регламентную процедуру которая автоматом каждый день восстанавливает последовательность. И вообще надо строить работу чтобы задним числом не работали.
11. ediks (ediks) 02.07.10 09:22
Лично я воспринимаю данный портал как сборник идей, некую копилку (выкладывание обработок с ИТС и т.д. для накручивания рейтинга не считаем). В данном случае идея мне понравилась, хотя я пока не вижу практического применения для себя. Ну а если кому-то обработка не подошла сразу без доработки напильником, то это не повод размахивать шашкой. IMHO
12. Сергей (Che) Коцюра (CheBurator) 02.07.10 10:15
(10) о чем вы говорите? бухтя в принципе не может работать без заднего числа. потому что в бухии все время бардак. потому что вместо того, чтобы чел который принес авансовый отчет дней через 20 - накатать взыскание - они у него этот отчет примут и начнут задним числом вносить...
13. rhtr Иванов (rhtr) 02.07.10 10:36
При разработки конфы полезная приблуда))Немного под себя тисануть и у сё.))ИДЕЯ +
14. Bizon2005 (8c1.ru) 02.07.10 10:48
Переделанная УТ 10.2.8.2, при нажатии "отобрать документы":

{Форма.Форма(167)}: Ошибка при вызове метода контекста (Выполнить): {(7, 2)}: Неоднозначное поле "ЧекККМ.Проведен"
<<?>>ЧекККМ.Проведен = ИСТИНА
Выборка = Запрос.Выполнить().Выбрать();
по причине:
{(7, 2)}: Неоднозначное поле "ЧекККМ.Проведен"
<<?>>ЧекККМ.Проведен = ИСТИНА


15. Сергей Большаков (axae) 02.07.10 12:42
(14) Спасибо, не люблю, когда что-то не работает :( Найду УТ 10.2.8.2, посмотрю
(13) А как при разработке конфы может пригодится?
(11) Скорее ради идеи и писалась обработка, практическое применение обработке видимо каждый придумывает самостоятельно :D
16. Александр Хомяк (logarifm) 02.07.10 13:35
А вот теперь такое.

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

"В данной транзакции уже были ошибки" и опля, мы имеем в итоге распроведенный документв нормальном заднем периоде, при устранении ошибки проведения мы еще имеем и не те движения так как документ может уже не те данные взять!!!
17. Сергей Большаков (axae) 02.07.10 15:20
(16) Это не хорошо. Вот это не хорошо.
Какой вариант решения может быть для обработки?
А в таком случае придется видимо восстанавливать выгрузкой/загрузкой из копии базы документ с движениями...
18. Александр Хомяк (logarifm) 02.07.10 15:27
Да нет решения. На копии разве только делать и все.
19. Александр Хомяк (logarifm) 02.07.10 15:55
собственно после описанной ошибки в (16) обработка приобретает свою суть указанную в теме поста. То есть "Разрушающий"
20. Eugeneer (Eugeneer) 02.07.10 16:09
:D надо ставить плюс)) чем больше разрушенных баз - тем больше работы программистам)
21. Игорь Исхаков (Ish_2) 02.07.10 17:44
(16) Правильно ли я понял ? Проверить нет возможности.
Запускаем текущую обработку для одного документа , в которой происходит откатывание транзакции. Затем интерактивно открываем этот же документ и проводим.
И тогда выдается сообщение "В данной транзакции уже были ошибки" ? Так ?

Такая картина представляется очень странной. Из-за того что мы не смогли один раз провести документ (откат транзакции по каким -либо причинам) - мы не можем в следующий раз его провести.
22. Александр Хомяк (logarifm) 02.07.10 18:38
(21) нет не правильно поняли. Все это происходит во время работы обработки. А поскольку была отмена проведения и при следуещем проведении возникла ошибка система попытается откатать транзакцию, а вложенных транзакций 1С не поддерживает и таким образом будем иметь не проведенный документ.

Тоесть, откат происходит сам 1С, а вот в обработке указывается ОтменаТранзакции поскольку возникли ошибки и здесь будет болт мягко говоря. 1С скажет, что уже были ошибки в данной транзакции, таким образом повторюсь, обработка сначала распровела документа в транзакции потом попыталась его провести для сравнения движений и тут во время проведения возникла ошибка, 1С откатывает автоматом данную транзакцию, а обработка видит Ошибка надо откатать транзакцию обратно и вернуть проведение в первичное состояние документа, но не судьба этому уже не быть...
23. Александр Хомяк (logarifm) 02.07.10 18:43
Вот такая вот ошибка не хорошая и опасная! Уже проходил это!
24. Игорь Исхаков (Ish_2) 02.07.10 18:59
25. Сергей Большаков (axae) 02.07.10 23:41
(22) Мы ведь запомнили первоначальные движения документа... Можно ли отследить эту ошибку и при ее возникновении вернуть движения документа на место прямыми записями в регистры?
26. Олег (simol) 04.07.10 22:27
(9)Более чем осведомлен и мне знакомо, что граница последовательности и то, что я написал в (6) это разные вещи(документы, даты). Это Вы скорее больше теоретик, чем практик (не примите это в обиду).
27. Виталий (nafa) 06.07.10 15:36
По поводу (16) - не понимаю в чем здесь проблема? Ну распровелся документ - и что страшного. Старые движения то у нас сохранились. Записываем их назад и все.
(Для новеньких: В 1С 8 проводками (движениями) можно управлять независимо от записи (проведения) самого документа.)

А обработка реально очень полезная.
28. Александр Хомяк (logarifm) 06.07.10 15:45
(27) А страшное в том, что документ останеться не проведенным!
29. Виталий (nafa) 06.07.10 21:18
(28) Документу просто устанавливаем признак что он проведен. (Без вызова процедуры проведения).
30. Яков Коган (Yashazz) 07.07.10 09:47
Мдя. Вообще делать проведение, которое само по себе системная транзакция, внутри объявленной транзакции - моветон. Ish_2 очень правильно всё сказал. Это будет недиагностируемое выпадание посреди процесса.
Можно ведь читать старые движения, а потом насильно вписывать их по окончании транзакции для каждого документа. Так и опасность пессимистических блокировок поменьше.
Кроме того, сама обработка неряшливо сделана. Хелп почти никакой, рекомендации 1С не соблюдены, да ещё малопонятный макет про Альфа-авто болтается.
Не ахти, в общем.
31. Сергей Большаков (axae) 08.07.10 07:16
(30) Макет да, лишний здесь. А где можно ознакомиться с рекомендациями 1С?
32. Сергей Большаков (axae) 08.07.10 07:52
(30) Можно и читать старые движения...
Я думаю здесь еще есть вопрос на какой базе делается это: либо на рабочей, либо на копии. Если на рабочей, то и там и там опасность:
В моем случае (с откатами транзакций) есть вероятность ее слетания при сбое проведения.
В случае с восстановлением движений я думаю есть вероятность, что какой-нибудь документ успеет увидеть новые, до того, как перезапишутся старые.
33. Яков Коган (Yashazz) 08.07.10 10:46
(31) На дисках ИТС.
Да и мелочей полно. Почему, например, юзверю можно всяко править дерево результатов? Жмякнет на del, потом сам через пять минут впадёт в ступор.

(32) Будем говорить про самый экстрим (про который, например, я пишу свою обработку, чем-то похожую на вашу), считаем, что рабочая база. Некогда туда-сюда архивы делать, экспериментировать. Насчёт "увидеть новые до перезаписи старых" - да, такое возможно. Однако стоит помозговать, может, удастся и это обойти...
34. Малышко В.Н. (molot) 08.07.10 17:27
(30) >рекомендации 1С не соблюдены

Да за соблюдение их стандартов вообще расстреливать надо, ес чессно... Вот это ты задвинул...
35. Яков Коган (Yashazz) 08.07.10 17:44
(34) За советы писать директивы клиента и сервера в модуле надо расстреливать? Впрочем, сие оффтоп.
36. Малышко В.Н. (molot) 08.07.10 18:14
(35) Если это имелось ввиду в посте №30, то это уже не "рекомендации 1С не соблюдены", а "безграмотно закодировано".

ЗЫ. Я никого не хотел обидеть, бо код и не смотрел даже...
37. Надежда Иванова (Nadezhda09) 12.07.10 07:57
Спасибо!
Запускаю на копии БД.
Выдаваемые сообщения позволяют разобраться с ситуацией до того, как будет запущено восстановление в рабочей базе.
Очень полезная обработка!




Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа