gifts2017

Удаление движений у непроведенных документов

Опубликовал Айдер Муйдинов (icq65312855) в раздел Обработки - Обработка документов

Обработка для удаления движений у непроведенных документов.

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

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

Наименование Файл Версия Размер
- 548
.1246965736 9,36Kb
25.09.09
548
.1246965736 9,36Kb Скачать

См. также

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

Комментарии

1. Vasily Kushnir (vasilykushnir) 07.07.09 15:30
А обясните коллега, как это могут остатся движения, если документ не проведен? Может программисту по щупальцам надавать за модуль Проведения/ОтменыПроведения документа, чем лобазить подобные обработки?
2. Vasily Kushnir (vasilykushnir) 07.07.09 15:32
+ к (1) Обратите внимание на абзац после слов "Оценка сообщества" и на последнюю строчку вашего описания - не находите, что или что-то лишнее, или одно из двух?
3. Айдер Муйдинов (icq65312855) 07.07.09 15:36
Иногда в наследство достается конфа с огромным количеством доработанного функционала среди которого могут быть очень неожиданные кривости. И отловить все такие точки достаточно сложно и долго. А работать как-то дальше надо =)
4. Юрий Тимофеев (Tatitutu) 07.07.09 15:37
+(2) Автор уберите из описание
"Активно ставим плюсики если пригодилось ;)"
а то будет расценено совершено противоположно
"Активно ставим МИНУСА если не пригодилось - не проходите мимо"
5. Vasily Kushnir (vasilykushnir) 07.07.09 15:39
(3) Возможно, возможно.... Но косяки поЛЮБЭ надо исправлять.
а как относительно (2)? Вымогательство плюсов не ИС не приветствуется - об этом администрация уже подсуетилась.
6. Vasily Kushnir (vasilykushnir) 07.07.09 15:42
Вот и чудненько.
Хотя, Tatitutu, не вспомнишь - вроде подобная обработка уже где-то представлялась на ИС? Интересно, автор просмотрел аналоги, прежде чем выкладывать...
7. Vasily Kushnir (vasilykushnir) 07.07.09 15:44
Ну что ж пусть сообщество заценит теперь эту штукойовину - описание подправлено, скрин есть - претензий естественно больше нет.
8. Юрий Тимофеев (Tatitutu) 07.07.09 16:09
(7) Молодец - все оперативно исправил.
(многие 7-ники в страшном сне представить себе не могут - у непроведенного документа - движения по регистрам)
9. Vasily Kushnir (vasilykushnir) 07.07.09 16:23
(8) Это действительно страшный сон. Но уж если если приснилась северная лиса (писец) регистрам, то эта обработка будет прлезна. А посему ставим +.
10. Vasily Kushnir (vasilykushnir) 07.07.09 16:25
+ к (9) А товарищ автор не пробовал опять провести и отменить проведение документа? Ведь по логике: если при первой отмене регистры по каким-либо причинам не очистились (транзакция, землетрясение в Индонезии), то при второй ОБЯЗАНЫ.
11. Айдер Муйдинов (icq65312855) 07.07.09 16:44
(10) Иногда такой документ нельзя провести в силу всяческих контролей (заполненность обязательных реквизитов, наличие остатков и т.д.)
12. Александр Медведев (anig99) 07.07.09 22:01
(1) Надавайте по щупальцам программистам 1с (: Ситуация с непроведенными документами с движениями возникает в стандартных конфах в разных ситуациях. Например при активном использовании УРБД. Опять-таки движения в таком документе часто можно решить Документ.Записать(РежимЗаписиДокумента.ОтменаПроведения). Для себя в комплексной обработке делал такое. Завтра оценю на работе код. Может в расширенном виде лучше будет.
13. Людмила ? (Lusik) 08.07.09 07:23
Добавлю про наличие проводок у непроведенных - встречается. Например, в некоторых партнерских конфигурациях, в которых не только сие чудо случается по необъяснимой причине (безо всяких РИБ), но и другие не менее чудные неприятности типа затроения движений по некоторым регистрам, закономерность появления которых не смогли выявить даже разработчики, а потому заботливо вставили прямо в конфу обработки, подобные выложенной здесь :)
14. Сергей Поляк (sergeypv) 08.07.09 07:40
(1) Для 8-ки явление непроведенного документа с движениями очень распространено: так в таблице регистров есть колонка "Активность" и у непроведенного документа могут быть записи в регистре с Активностью = ложь.
При необходимости, при проведении документа, в определенных случаях не нужно делать повторные расчеты, а достаточно изменить одну запись, а остальным поставить активность = истина. Это резко увеличивает скорость проведения (аналог вкл./выкл. проводок операции в 7.7). Станадартные запросы 1с к регистрам игнорируют "неактивные" записи регистров. Если работаете с прямыми запросами к базе, не забудьте учесть "Активность" в запросе.
Для "старых" документов в "закрытом" периоде неактивные записи регистров являются "информационным мусором". Их имеет смысл и удалить для сокращения объема базы.
15. Ден (lion11) 08.07.09 08:43
Спасибо, пригодится.
Есть одно замечание - в параметр запроса вместо ДатаКон поставить КонецДня(ДатаКон) - больше документов найдет :)
И есть еще пожелание - чтоб можно было как-то посмотреть, по какому регистру есть движения у этих непроведенных документов, чтоб потом анализ сделать - кому по рукам бить (себе, как программисту, или юзерам, или платформе...)
17. Vasily Kushnir (vasilykushnir) 08.07.09 10:41
(16) Дим, а у тебя там скрина нет.... Нехорошо.... Добавь скрины - от меня плюсара.
18. Max Столбов (maxst22) 08.07.09 12:48
Скажу честно, была такая ситуация с одним документом, он был не проведен, но движения были. Выловил его по отчетам, потом провел и опять сделал не проведенным. Движения исчезли.
Была. бы у меня раньше такая обработка, не пришлось бы ковырять отчеты: запустил и все исправилось.
Спасибо автору за разработку.
19. Ден (lion11) 08.07.09 15:22
(16) Видел, хорошая штука. Основное отличие от этой - нет анализа движений по регистрам бухгалтерии, а тут есть.
20. Виктор Левченко (lvictor58) 08.07.09 16:59
Сам сталкиваюсь с подобной проблемой неоднократно при загрузке данных из ТиС 7.7 в БП 8.1. Очень часто бывают такие ситуации особенно если проведение документа вида "Возврат поставщику" програмно отменяется из-за какой-либо ошибки (например отсутствуют остатки партий указанного поставщика в должном количестве) - все сделанные проведения до момента ошибки остаются. Кажется приходилось помечать документ на удаление. Но это гемор - отслеживать движения и проверять проведен документ или нет. Тем более, что он проводится частично и от этого неизбежны косяки в учете.

Тут еще одна беда бывает когда при перезаписи документа (в режиме "Проведение") записи регистра удваиваются!
21. Андрей Пастухов (Minotavrik) 09.07.09 12:24
Сегодня как раз была такая проблема! Самое интересное это у нас в Казахстане в типовой сделали изменения (запретили автоматическое удаление движений) и прописали их в событии ОбработкаУдаленияДвижений :) я когда увидел чуть не упал. Короче результат таков: куча не проведенных документов по которым есть проводки.
22. Андрей Скляров (coder1cv8) 09.07.09 13:47
Сколлько понакомментили )
(1) Объясню и я коллеге ) Посмотри документ в любой типовой "Корректировка записей регистров накопления", у него вообще выключена возможность проведения, а следовательно Проведен всегда равно Ложь. И при этом у него конечно же могут быть движения.
Это просто пример. В данном случае все регулируется Активностью. Я к тому что для восьмерки такая ситуация не следствие косяков программиста.

ЗЫ: Кстати! Автор, Ваша обработка такие движения тоже найдет и потрет преспокойненько??? ))) Или же все-таки есть проверка на разрешено/запрещено проведение (я не качал)?...
23. Айдер Муйдинов (icq65312855) 09.07.09 13:59
Для этих целей в обработке есть флажки в табличной части, если у какого-то документа не надо удалять движения, просто не устанавливайте флажок обработки.
24. Dmitry Afanasyev (afanasko) 09.07.09 14:06
(0) Поставлю плюс, но все-таки ценности вашей обработки не понимаю. Во-первых в типовых конфах практически всегда присутствуют документы, у которых есть движения, но которые при этом не проводятся (у них даже свойство "Проведение" стоит в положение "запрещено"). Посмотрите хотя бы на "Операция" в УПП или на "Перенос данных" в ЗиУП. Даже на признак "проведения" опираться нельзя. Как говорилось выше, в типовых конфах существуют механизмы оптимизации проведения документов, при которых записи не удаляются, а помечаются неактивными.

Во-вторых, такую штуку можно сваять в консоли запросов за пару минут.
25. Андрей Скляров (coder1cv8) 09.07.09 14:10
(23) Ну это же не дело совсем!
Разве нельзя не помечать такие документы по-умолчанию или выделять их как-то или вообще не включать в список? Добавьте немного интеллектуальности обработке - это не сложно, а не опытного админа убережет от лишних проблем.
26. Айдер Муйдинов (icq65312855) 09.07.09 14:43
(24,25) Документы, у которых не установлен признак разрешения проведения, в список не включаются.
27. Felicia (Felicia) 10.07.09 12:49
Тоже сталкивалась с этой проблемой, полезная вещь :) +
28. Felicia (Felicia) 10.07.09 13:21
Полезная штука, я тоже сталкивалась, ставлю +, токо для УПП строчку надо поправить:" ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"Период ","Регистратор.Дата ");
", а то Случился такой регистр "ПериодыРаботыРАботников" и Ваше СтрЗаменить цеплялось за него..
29. "Я" ("Я") 28.10.09 10:40
{Форма.Форма(40)}: Ошибка при вызове метода контекста (Выполнить): {(4, 58)}: Неправильный псевдоним "Регистратор.ДатаыЗанятостиПомещений"
РегистрСведений.Регистратор.ДатаыЗанятостиПомещений КАК <<?>>Регистратор.ДатаыЗанятостиПомещений
	ТаблицаРезультата = Запрос.Выполнить().Выгрузить();



бред какой-то :)
30. "Я" ("Я") 28.10.09 10:53
изменила

	Если (НЕ Периодический) И (ИмяРегистра <> "ПериодыЗанятостиПомещений") Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"Период","Регистратор.Дата");
	КонецЕсли;

31. "Я" ("Я") 28.10.09 11:16
ах, там таких много...

	Если Лев(ИмяРегистра,7) = "Периоды" Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса,".Период ",".Регистратор.Дата ");
	ИначеЕсли НЕ Периодический Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"Период","Регистратор.Дата");
	КонецЕсли;
...Показать Скрыть

32. Герц Николай (Gerts) 16.08.10 11:27
У меня, к сожалению, не нашла такой документ. Хотя Активность = Истина, Док.Проведен = Ложь, и движения в общем-то есть. Конфигурация УТ, документ "Отчет о розничных продажах". Просто на 1 из регистров не дал права на изменение. Но 2-м регистрам движения появились, а по остальным нет. Обработку запускал под полными правами. Обратку (ну или идею) считаю полезной, но "+" не ставлю, т.к. проверка не пройдена.
33. dront_70 (dront_70) 20.10.10 16:34
А для чего вот это?
Процедура ОбработатьДвижения(ИмяРегистра,ВидРегистра,Периодический=Истина)

Запрос= Новый Запрос;
ТекстЗапроса =
"ВЫБРАТЬ
| БракВПроизводстве.Регистратор.Ссылка КАК Ссылка
|ИЗ
| РегистрНакопления.БракВПроизводстве КАК БракВПроизводстве
|ГДЕ
| БракВПроизводстве.Регистратор.Проведен = ЛОЖЬ
| И БракВПроизводстве.Период МЕЖДУ &ДатаНач И &ДатаКон";

ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"БракВПроизводстве",ИмяРегистра);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"РегистрНакопления",ВидРегистра);
Если НЕ Периодический Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"Период","Регистратор.Дата");
КонецЕсли;

Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("ДатаНач",ДатаНач);
Запрос.УстановитьПараметр("ДатаКон",ДатаКон);
ТаблицаРезультата = Запрос.Выполнить().Выгрузить();

Если ТаблицаРезультата.Количество() Тогда
ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаРезультата,ТЗДокументы);
КонецЕсли;

КонецПроцедуры


А вызывается это так:
//Регистры накопления
Для каждого Регистр Из Метаданные.РегистрыНакопления Цикл
Состояние("Обрабатывается регистр накопления: "+Регистр.Имя);
ОбработатьДвижения(Регистр.Имя,"РегистрНакопления");
КонецЦикла;

//Регистры сведений
Для каждого Регистр Из Метаданные.РегистрыСведений Цикл
Если Регистр.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.ПодчинениеРегистратору Тогда
Состояние("Обрабатывается регистр сведений: "+Регистр.Имя);
Периодический = (Регистр.ПериодичностьРегистраСведений <> Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический);
ОбработатьДвижения(Регистр.Имя,"РегистрСведений",Периодический);
КонецЕсли;
КонецЦикла;

//Регистры бухгалтерии
Для каждого Регистр Из Метаданные.РегистрыБухгалтерии Цикл
Состояние("Обрабатывается регистр бухгалтерии: "+Регистр.Имя);
ОбработатьДвижения(Регистр.Имя,"РегистрБухгалтерии");
КонецЦикла;

Вроде в аннотации написано, что "Внешний отчет, обработка для 1С: Предприятие 8.1"
34. dront_70 (dront_70) 20.10.10 16:46
Извиняюсь, все относится к процедуре общего назначения. А так если переписать, то работает )))
35. Игорь Алексеев (TRansgen) 10.01.12 18:55
Офигенная вещь, очень нужна когда тестируешь конвертацию данных!!! Очень часто возникают ситуации когда у документа снимается пометка проведения, а на факте проводки остаются. Удаляет всё как надо, никаких нареканий!
36. Владимир (oberon355) 06.03.12 16:06
37. Антон Акименко (drkhaired) 15.03.12 12:01
Ошибка, СтрЗаменяет сами знаете что при запросе в регистр ПериодическиеНачисления (Период). Надо заменять "%СтрокаЗамены%"
38. hzhz hzhz (hzhz) 14.08.13 07:40
Вопрос.... а если надо наоборот провести документ и оставить все проводки. Период закрыт, только болтаются не проведенные доки. ВЕРНЕЕ - поставить на документ отметку проведения и все. не трогая регистров и проводок. Как это сделать?
39. Юрий Ачкасов (practik1c) 21.11.13 10:09
Спасибо, пригодилось. Типовая бух 2.0
40. Артем Бичинов (arteast) 01.12.13 20:03
(38)
Через универсальную обработку выполнить алгоритм
Объект.Проведен = Истина;
Объект.Записать();


Но если период жестко закрыт - то даже записать без проведения не даст...
41. hzhz hzhz (hzhz) 02.12.13 07:42
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа