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

0. 47 07.07.09 15:30 Сейчас в теме
Обработка для удаления движений у непроведенных документов.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. vasilykushnir 63 07.07.09 15:30 Сейчас в теме
А обясните коллега, как это могут остатся движения, если документ не проведен? Может программисту по щупальцам надавать за модуль Проведения/ОтменыПроведения документа, чем лобазить подобные обработки?
2. vasilykushnir 63 07.07.09 15:32 Сейчас в теме
+ к (1) Обратите внимание на абзац после слов "Оценка сообщества" и на последнюю строчку вашего описания - не находите, что или что-то лишнее, или одно из двух?
4. Tatitutu 3834 07.07.09 15:37 Сейчас в теме
+(2) Автор уберите из описание
"Активно ставим плюсики если пригодилось ;)"
а то будет расценено совершено противоположно
"Активно ставим МИНУСА если не пригодилось - не проходите мимо"
12. anig99 2812 07.07.09 22:01 Сейчас в теме
(1) Надавайте по щупальцам программистам 1с (: Ситуация с непроведенными документами с движениями возникает в стандартных конфах в разных ситуациях. Например при активном использовании УРБД. Опять-таки движения в таком документе часто можно решить Документ.Записать(РежимЗаписиДокумента.ОтменаПроведения). Для себя в комплексной обработке делал такое. Завтра оценю на работе код. Может в расширенном виде лучше будет.
14. sergeypv 08.07.09 07:40 Сейчас в теме
(1) Для 8-ки явление непроведенного документа с движениями очень распространено: так в таблице регистров есть колонка "Активность" и у непроведенного документа могут быть записи в регистре с Активностью = ложь.
При необходимости, при проведении документа, в определенных случаях не нужно делать повторные расчеты, а достаточно изменить одну запись, а остальным поставить активность = истина. Это резко увеличивает скорость проведения (аналог вкл./выкл. проводок операции в 7.7). Станадартные запросы 1с к регистрам игнорируют "неактивные" записи регистров. Если работаете с прямыми запросами к базе, не забудьте учесть "Активность" в запросе.
Для "старых" документов в "закрытом" периоде неактивные записи регистров являются "информационным мусором". Их имеет смысл и удалить для сокращения объема базы.
22. coder1cv8 3434 09.07.09 13:47 Сейчас в теме
Сколлько понакомментили )
(1) Объясню и я коллеге ) Посмотри документ в любой типовой "Корректировка записей регистров накопления", у него вообще выключена возможность проведения, а следовательно Проведен всегда равно Ложь. И при этом у него конечно же могут быть движения.
Это просто пример. В данном случае все регулируется Активностью. Я к тому что для восьмерки такая ситуация не следствие косяков программиста.

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

Тут еще одна беда бывает когда при перезаписи документа (в режиме "Проведение") записи регистра удваиваются!
21. Minotavrik 1605 09.07.09 12:24 Сейчас в теме
Сегодня как раз была такая проблема! Самое интересное это у нас в Казахстане в типовой сделали изменения (запретили автоматическое удаление движений) и прописали их в событии ОбработкаУдаленияДвижений :) я когда увидел чуть не упал. Короче результат таков: куча не проведенных документов по которым есть проводки.
23. icq65312855 47 09.07.09 13:59 Сейчас в теме
Для этих целей в обработке есть флажки в табличной части, если у какого-то документа не надо удалять движения, просто не устанавливайте флажок обработки.
25. coder1cv8 3434 09.07.09 14:10 Сейчас в теме
(23) Ну это же не дело совсем!
Разве нельзя не помечать такие документы по-умолчанию или выделять их как-то или вообще не включать в список? Добавьте немного интеллектуальности обработке - это не сложно, а не опытного админа убережет от лишних проблем.
24. afanasko 35 09.07.09 14:06 Сейчас в теме
(0) Поставлю плюс, но все-таки ценности вашей обработки не понимаю. Во-первых в типовых конфах практически всегда присутствуют документы, у которых есть движения, но которые при этом не проводятся (у них даже свойство "Проведение" стоит в положение "запрещено"). Посмотрите хотя бы на "Операция" в УПП или на "Перенос данных" в ЗиУП. Даже на признак "проведения" опираться нельзя. Как говорилось выше, в типовых конфах существуют механизмы оптимизации проведения документов, при которых записи не удаляются, а помечаются неактивными.

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



бред какой-то :)
30. -I- 28.10.09 10:53 Сейчас в теме
изменила

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

31. -I- 28.10.09 11:16 Сейчас в теме
ах, там таких много...

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

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

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

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

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

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

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


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

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

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

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


Но если период жестко закрыт - то даже записать без проведения не даст...
39. practik1c 89 21.11.13 10:09 Сейчас в теме
Спасибо, пригодилось. Типовая бух 2.0
41. hzhz 12 02.12.13 07:42 Сейчас в теме
Оставьте свое сообщение
Вакансии
Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Архитектор 1С
Москва
зарплата от 260 000 руб.
Полный день

Начальник отдела архитектуры
Москва
зарплата от 300 000 руб.
Полный день

Эксперт по технологическим вопросам
Москва
зарплата от 250 000 руб.
Полный день

Ведущий разработчик 1С
Ростов-на-Дону
зарплата от 200 000 руб.
Полный день