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

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

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

41 Comments

  1. vasilykushnir

    А обясните коллега, как это могут остатся движения, если документ не проведен? Может программисту по щупальцам надавать за модуль Проведения/ОтменыПроведения документа, чем лобазить подобные обработки?

    Reply
  2. vasilykushnir

    + к (1) Обратите внимание на абзац после слов «Оценка сообщества» и на последнюю строчку вашего описания — не находите, что или что-то лишнее, или одно из двух?

    Reply
  3. icq65312855

    Иногда в наследство достается конфа с огромным количеством доработанного функционала среди которого могут быть очень неожиданные кривости. И отловить все такие точки достаточно сложно и долго. А работать как-то дальше надо =)

    Reply
  4. Tatitutu

    +(2) Автор уберите из описание

    «Активно ставим плюсики если пригодилось ;)»

    а то будет расценено совершено противоположно

    «Активно ставим МИНУСА если не пригодилось — не проходите мимо»

    Reply
  5. vasilykushnir

    (3) Возможно, возможно…. Но косяки поЛЮБЭ надо исправлять.

    а как относительно (2)? Вымогательство плюсов не ИС не приветствуется — об этом администрация уже подсуетилась.

    Reply
  6. vasilykushnir

    Вот и чудненько.

    Хотя, Tatitutu, не вспомнишь — вроде подобная обработка уже где-то представлялась на ИС? Интересно, автор просмотрел аналоги, прежде чем выкладывать…

    Reply
  7. vasilykushnir

    Ну что ж пусть сообщество заценит теперь эту штукойовину — описание подправлено, скрин есть — претензий естественно больше нет.

    Reply
  8. Tatitutu

    (7) Молодец — все оперативно исправил.

    (многие 7-ники в страшном сне представить себе не могут — у непроведенного документа — движения по регистрам)

    Reply
  9. vasilykushnir

    (8) Это действительно страшный сон. Но уж если если приснилась северная лиса (писец) регистрам, то эта обработка будет прлезна. А посему ставим +.

    Reply
  10. vasilykushnir

    + к (9) А товарищ автор не пробовал опять провести и отменить проведение документа? Ведь по логике: если при первой отмене регистры по каким-либо причинам не очистились (транзакция, землетрясение в Индонезии), то при второй ОБЯЗАНЫ.

    Reply
  11. icq65312855

    (10) Иногда такой документ нельзя провести в силу всяческих контролей (заполненность обязательных реквизитов, наличие остатков и т.д.)

    Reply
  12. anig99

    (1) Надавайте по щупальцам программистам 1с (: Ситуация с непроведенными документами с движениями возникает в стандартных конфах в разных ситуациях. Например при активном использовании УРБД. Опять-таки движения в таком документе часто можно решить Документ.Записать(РежимЗаписиДокумента.ОтменаПроведения). Для себя в комплексной обработке делал такое. Завтра оценю на работе код. Может в расширенном виде лучше будет.

    Reply
  13. Lusik

    Добавлю про наличие проводок у непроведенных — встречается. Например, в некоторых партнерских конфигурациях, в которых не только сие чудо случается по необъяснимой причине (безо всяких РИБ), но и другие не менее чудные неприятности типа затроения движений по некоторым регистрам, закономерность появления которых не смогли выявить даже разработчики, а потому заботливо вставили прямо в конфу обработки, подобные выложенной здесь 🙂

    Reply
  14. sergeypv

    (1) Для 8-ки явление непроведенного документа с движениями очень распространено: так в таблице регистров есть колонка «Активность» и у непроведенного документа могут быть записи в регистре с Активностью = ложь.

    При необходимости, при проведении документа, в определенных случаях не нужно делать повторные расчеты, а достаточно изменить одну запись, а остальным поставить активность = истина. Это резко увеличивает скорость проведения (аналог вкл./выкл. проводок операции в 7.7). Станадартные запросы 1с к регистрам игнорируют «неактивные» записи регистров. Если работаете с прямыми запросами к базе, не забудьте учесть «Активность» в запросе.

    Для «старых» документов в «закрытом» периоде неактивные записи регистров являются «информационным мусором». Их имеет смысл и удалить для сокращения объема базы.

    Reply
  15. lion11

    Спасибо, пригодится.

    Есть одно замечание — в параметр запроса вместо ДатаКон поставить КонецДня(ДатаКон) — больше документов найдет 🙂

    И есть еще пожелание — чтоб можно было как-то посмотреть, по какому регистру есть движения у этих непроведенных документов, чтоб потом анализ сделать — кому по рукам бить (себе, как программисту, или юзерам, или платформе…)

    Reply
  16. IronDemon
  17. vasilykushnir

    (16) Дим, а у тебя там скрина нет…. Нехорошо…. Добавь скрины — от меня плюсара.

    Reply
  18. maxst22

    Скажу честно, была такая ситуация с одним документом, он был не проведен, но движения были. Выловил его по отчетам, потом провел и опять сделал не проведенным. Движения исчезли.

    Была. бы у меня раньше такая обработка, не пришлось бы ковырять отчеты: запустил и все исправилось.

    Спасибо автору за разработку.

    Reply
  19. lion11

    (16) Видел, хорошая штука. Основное отличие от этой — нет анализа движений по регистрам бухгалтерии, а тут есть.

    Reply
  20. lvictor58

    Сам сталкиваюсь с подобной проблемой неоднократно при загрузке данных из ТиС 7.7 в БП 8.1. Очень часто бывают такие ситуации особенно если проведение документа вида «Возврат поставщику» програмно отменяется из-за какой-либо ошибки (например отсутствуют остатки партий указанного поставщика в должном количестве) — все сделанные проведения до момента ошибки остаются. Кажется приходилось помечать документ на удаление. Но это гемор — отслеживать движения и проверять проведен документ или нет. Тем более, что он проводится частично и от этого неизбежны косяки в учете.

    Тут еще одна беда бывает когда при перезаписи документа (в режиме «Проведение») записи регистра удваиваются!

    Reply
  21. Minotavrik

    Сегодня как раз была такая проблема! Самое интересное это у нас в Казахстане в типовой сделали изменения (запретили автоматическое удаление движений) и прописали их в событии ОбработкаУдаленияДвижений 🙂 я когда увидел чуть не упал. Короче результат таков: куча не проведенных документов по которым есть проводки.

    Reply
  22. coder1cv8

    Сколлько понакомментили )

    (1) Объясню и я коллеге ) Посмотри документ в любой типовой «Корректировка записей регистров накопления», у него вообще выключена возможность проведения, а следовательно Проведен всегда равно Ложь. И при этом у него конечно же могут быть движения.

    Это просто пример. В данном случае все регулируется Активностью. Я к тому что для восьмерки такая ситуация не следствие косяков программиста.

    ЗЫ: Кстати! Автор, Ваша обработка такие движения тоже найдет и потрет преспокойненько??? ))) Или же все-таки есть проверка на разрешено/запрещено проведение (я не качал)?…

    Reply
  23. icq65312855

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

    Reply
  24. afanasko

    (0) Поставлю плюс, но все-таки ценности вашей обработки не понимаю. Во-первых в типовых конфах практически всегда присутствуют документы, у которых есть движения, но которые при этом не проводятся (у них даже свойство «Проведение» стоит в положение «запрещено»). Посмотрите хотя бы на «Операция» в УПП или на «Перенос данных» в ЗиУП. Даже на признак «проведения» опираться нельзя. Как говорилось выше, в типовых конфах существуют механизмы оптимизации проведения документов, при которых записи не удаляются, а помечаются неактивными.

    Во-вторых, такую штуку можно сваять в консоли запросов за пару минут.

    Reply
  25. coder1cv8

    (23) Ну это же не дело совсем!

    Разве нельзя не помечать такие документы по-умолчанию или выделять их как-то или вообще не включать в список? Добавьте немного интеллектуальности обработке — это не сложно, а не опытного админа убережет от лишних проблем.

    Reply
  26. icq65312855

    (24,25) Документы, у которых не установлен признак разрешения проведения, в список не включаются.

    Reply
  27. Felicia

    Тоже сталкивалась с этой проблемой, полезная вещь 🙂 +

    Reply
  28. Felicia

    Полезная штука, я тоже сталкивалась, ставлю +, токо для УПП строчку надо поправить:» ТекстЗапроса = СтрЗаменить(ТекстЗапроса,»Период «,»Регистратор.Дата «);

    «, а то Случился такой регистр «ПериодыРаботыРАботников» и Ваше СтрЗаменить цеплялось за него..

    Reply
  29. "Я"
    {Форма.Форма(40)}: Ошибка при вызове метода контекста (Выполнить): {(4, 58)}: Неправильный псевдоним «Регистратор.ДатаыЗанятостиПомещений»
    РегистрСведений.Регистратор.ДатаыЗанятостиПомещений КАК <<?>>Регистратор.ДатаыЗанятостиПомещений
    ТаблицаРезультата = Запрос.Выполнить().Выгрузить();

    бред какой-то 🙂

    Reply
  30. "Я"

    изменила

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

    Reply
  31. "Я"

    ах, там таких много…

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

    Reply
  32. Gerts

    У меня, к сожалению, не нашла такой документ. Хотя Активность = Истина, Док.Проведен = Ложь, и движения в общем-то есть. Конфигурация УТ, документ «Отчет о розничных продажах». Просто на 1 из регистров не дал права на изменение. Но 2-м регистрам движения появились, а по остальным нет. Обработку запускал под полными правами. Обратку (ну или идею) считаю полезной, но «+» не ставлю, т.к. проверка не пройдена.

    Reply
  33. dront_70

    А для чего вот это?

    Процедура ОбработатьДвижения(ИмяРегистра,ВидРегистра,Периодический=Истина)

    Запрос= Новый Запрос;

    ТекстЗапроса =

    «ВЫБРАТЬ

    | БракВПроизводстве.Регистратор.Ссылка КАК Ссылка

    |ИЗ

    | РегистрНакопления.БракВПроизводстве КАК БракВПроизводстве

    |ГДЕ

    | БракВПроизводстве.Регистратор.Проведен = ЛОЖЬ

    | И БракВПроизводстве.Период МЕЖДУ &ДатаНач И &ДатаКон»;

    ТекстЗапроса = СтрЗаменить(ТекстЗапроса,»БракВПроизводстве»,ИмяРегистра);

    ТекстЗапроса = СтрЗаменить(ТекстЗапроса,»РегистрНакопления»,ВидРегистра);

    Если НЕ Периодический Тогда

    ТекстЗапроса = СтрЗаменить(ТекстЗапроса,»Период»,»Регистратор.Дата»);

    КонецЕсли;

    Запрос.Текст = ТекстЗапроса;

    Запрос.УстановитьПараметр(«ДатаНач»,ДатаНач);

    Запрос.УстановитьПараметр(«ДатаКон»,ДатаКон);

    ТаблицаРезультата = Запрос.Выполнить().Выгрузить();

    Если ТаблицаРезультата.Количество() Тогда

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

    КонецЕсли;

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

    А вызывается это так:

    //Регистры накопления

    Для каждого Регистр Из Метаданные.РегистрыНакопления Цикл

    Состояние(«Обрабатывается регистр накопления: «+Регистр.Имя);

    ОбработатьДвижения(Регистр.Имя,»РегистрНакопления»);

    КонецЦикла;

    //Регистры сведений

    Для каждого Регистр Из Метаданные.РегистрыСведений Цикл

    Если Регистр.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.ПодчинениеРегистратору Тогда

    Состояние(«Обрабатывается регистр сведений: «+Регистр.Имя);

    Периодический = (Регистр.ПериодичностьРегистраСведений <> Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический);

    ОбработатьДвижения(Регистр.Имя,»РегистрСведений»,Периодический);

    КонецЕсли;

    КонецЦикла;

    //Регистры бухгалтерии

    Для каждого Регистр Из Метаданные.РегистрыБухгалтерии Цикл

    Состояние(«Обрабатывается регистр бухгалтерии: «+Регистр.Имя);

    ОбработатьДвижения(Регистр.Имя,»РегистрБухгалтерии»);

    КонецЦикла;

    Вроде в аннотации написано, что «Внешний отчет, обработка для 1С: Предприятие 8.1»

    Reply
  34. dront_70

    Извиняюсь, все относится к процедуре общего назначения. А так если переписать, то работает )))

    Reply
  35. TRansgen

    Офигенная вещь, очень нужна когда тестируешь конвертацию данных!!! Очень часто возникают ситуации когда у документа снимается пометка проведения, а на факте проводки остаются. Удаляет всё как надо, никаких нареканий!

    Reply
  36. oberon355

    под 8.2 работает?

    Reply
  37. drkhaired

    Ошибка, СтрЗаменяет сами знаете что при запросе в регистр ПериодическиеНачисления (Период). Надо заменять «%СтрокаЗамены%»

    Reply
  38. hzhz

    Вопрос…. а если надо наоборот провести документ и оставить все проводки. Период закрыт, только болтаются не проведенные доки. ВЕРНЕЕ — поставить на документ отметку проведения и все. не трогая регистров и проводок. Как это сделать?

    Reply
  39. practik1c

    Спасибо, пригодилось. Типовая бух 2.0

    Reply
  40. arteast

    (38)

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

    Объект.Проведен = Истина;

    Объект.Записать();

    Но если период жестко закрыт — то даже записать без проведения не даст…

    Reply
  41. hzhz

    Спасибо. я так и делаю.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *