Удаление документов для любых баз на управляемых формах











Удаление и распроведение документов для любых баз на УФ.

Всем привет!

Решал задачу — создания новой базы для новой организации, но с теми же контрагентами и номенклатурой.

Самым простым решением стало — скопировать имеющуюся базу и почистить ее от всех документов. Так и родилась данная обработка.

Разрабатывалась на конфигурации, платформа 1С:Предприятие 8.3 (8.3.13.1644) :

  — Бухгалтерия предприятия, редакция 3.0 (3.0.71.89).

Также протестирована с успехом была на:

  — Зарплата и управление персоналом, редакция 3.1 (3.1.7.61)

Еще не отлажена на конфигурациях (но следите за изменениями):

  — Управление нашей фирмой, редакция 1.6 (1.6.13.54) (ошибка в документе ПоказателиЕНВД)

  — Розница, редакция 2.2 (2.2.11.29) (есть нюансы с Чеками ККМ, пример тут //infostart.ru/public/1115171/)

Данные ограничения можно обойти с помощью списков из п.7.

Немного теории и практики.

1. Если надо удалить/распровести документы до определенной даты, то ставьте в поле "До даты" любой период. По умолчанию период устанавливается текущей датой. Можете указать организацию, иначе будут обработаны документы без учета организации.

 

 Не все документы имеют реквизит "Организация" — необходима проверка на организацию

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

Пример свертки и удаления только помеченных на удаление документов: //infostart.ru/public/1033813/

В связи с этим добавлена функциональность

3. Однажды удалял документы на измененной типовой базе и столкнулся с тем, что документ-регистратор был удален из базы без проверки связанных ссылок, а записи по регистру сведений удалены не были. После чего программно или интерактивно удалить записи из регистра не удается! Задействовал "Тестирование и исправление" с режимом "создания объекта — при наличии ссылок на несуществующие объекты". После чего почистил записи.

Так как в той ситуации подобных баз было несколько (филиальная сеть) — решил перед удалением распровести документы. И так появилась еще одна функциональность "Распроводить документы перед удалением":

 

4. В дальнейшем, идея распроводить документы перед удалением мне понравилась, и я выделил "Распроведение документов" в отдельный функционал:

 

 Не все документы имеют разрешение на проведение при записи — необходима проверка свойства

5. Иногда при чистке баз требуется оставить вместе с номенклатурой цены, поэтому появилась функциональность "Не удалять документы Установка цен номенклатуры":

6. После удаления документов без проверок связанных ссылок, необходимо почистить вручную все зарегистрированные изменения для обмена. В моем случае в исходной базе был настроен обмен с УТ.

Не забудьте обнулить номера сообщений.

7. Добавил возможность отбирать документы для удаления / распроведения в виде прямых и обратных списков: "Обрабатывать только из списка" и "Не обрабатывать из этого списка".

 

С помощью данных списков можно исключить из обработки документы, по которым специфичным образом настроены типовые механизмы и из-за которых, к примеру, нельзя распровести документы перед удалением. См. нюансы отладки Розницы и УНФ в начале статьи.

 

Всем успехов!

Перейти к файлу скачивания—>

См. также:

Фильтр товаров по свойствам как на сайтах

Загрузка товаров, штрихкодов, цен и остатков на управляемых формах на примере Розница 2.2

Как свернуть базу УТ 10.3: принципы свертки, технология

Сравнение двух запросов в одном окне с выводом результата

Как эффективно использовать Инфостарт и начать получать профвыгоду

Список реализаций + структура подчиненности + реестр документов в одном окне

Список заказов поставщикам + структура подчиненности в одном окне

Список заказов покупателей + структура подчиненности в одном окне

Договоры для 1с-ника ТОП-скачиваний

Адаптивная сетка расписания (Свой адаптивный планировщик)

Два механизма, которые ускорили работу бухгалтеров в 1С

Мини-CRM для УТ 10.3

Расчет банковских (рабочих) дней

Шаблоны кода в режиме 1С:Предприятие

Доработка конфигурации Конвертация Данных

Планирование платежей. Прогнозирование прибылей и убытков

Ввод показателей план-факта БП 3.0

Инвентаризация личного опыта

Большие запросы: взгляд на проблему

Технология создания коммерческих разработок

Андроид-решение для создания заказов в 1С

Отчет Остатки и цены

Печать ценников с одной и двумя ценами 55х40, 100х60, 140х200

Загрузка данных о розничных продажах из магазинов Intimissimi (Интимиссими) и Calzedonia (Кальцедония)

Доработки обмена "УТ 10.3 — интернет-магазина Shop-Script"

20 Comments

  1. born85

    Не все документы удаляет. Например в ут 11.4 (можно в демо базе посмотреть) документы по которым были отгрузки — не удаляет.

    Reply
  2. Rustig

    (2) ок, посмотрю.

    на всякий случай, напишу, что УТ 11.4 не входило в список тестируемых конфигураций.

    P.S. Замечу, что запрет на удаление документов, по которым были отгрузки — это на уровне алгоритмов запреты.

    Возможно стоит их обойти так: сначала помечаете на удаление все связанные

    отгрузки.

    Потом уже основные документы.

    То есть имеет значение порядок чистки документов.

    Reply
  3. Rustig

    (2) есть же стандарт разработки — когда перед записью встраивается конструкция Если ОбменДанными.Загрузка = Истина Тогда никакие проверки не делаются!

    В этом случае можно удалить /загрузить/распровести / использовать групповую типовую обработку.

    Если это правило игнорируется, и ставятся проверки до этой конструкции, то групповой обработкой уже не воспользуешься, ибо у вас есть связанные отгрузки.

    В Рознице 2.2 с чеками ровно такая проблема.

    Reply
  4. Rustig

    (2) что за фраза «документы по которым были отгрузки» ?

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

    Поясните вашу фразу пож-та.

    Reply
  5. born85

    (5) Документы покупателей по котором были частичные или полные отгрузки. Соответственно — эти документы ваша обработка пропускает.

    Reply
  6. born85

    (3) Зачем в описании вводите в заблуждение тогда «Удаление и распроведение документов для любых баз на УФ»

    Reply
  7. Rustig

    (6)

    Документы покупателей по котором были частичные или полные отгрузки

    опять непонятно.

    «Отгрузка» это и есть документ «Реализация товаров и услуг». У вас фраза звучит как «Документы по которым были документы».

    Отгрузка может быть по товарам или по покупателям. Но по документам отгрузка быть не может.

    Смысл фразы какой?

    Reply
  8. Rustig

    (7) В описании все честно написано — на каких конфигурациях тестировалась. Никого не ввожу в заблуждение.

    Для удаления используется платформенная процедура ДокументОбъект.Удалить()

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

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

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

    К вашему замечанию я прислушаюсь, гляну что там за проблемы удаления/распроведения в УТ 11.4.

    Reply
  9. born85

    (8) Возможно не правильно сформулирован, но суть же понятна Вам, для примера так же привел конфигурацию — т.е. повторить ситуацию — возможность есть. В данных условиях обработка не работает. Если устраните — будет здорово.

    Reply
  10. born85

    (9) Я Вас понимаю, и от части разделяю Вашу точку зрения. Но в данном случае нельзя обработку считать универсальных средством и писать что работает во всех УФ — это не соответствует действительности. А так — да, обработка рабочая, но очень медленная, например при удалении движения не плохо бы в метаданных сразу проверять есть движения (проведен или нет) нежеле далее по циклу гнать в алгоритм, это бы ускорило немного ее.. В общем это придирки, по большому счету все сделано на быструю руку..

    Reply
  11. Rustig

    (10) Ладно, посмотрю УТ 11.4.

    Только не понял какую ситуацию моделировать, и на каких документах проверять.

    Reply
  12. Rustig

    (11) Доработаю, только спроса ведь на доработку до сих пор никто не высказывал. Спасибо что написали замечание и рекомендации дали.

    Я ведь не в курсе, кому она нужна и интересна.

    Обратную связь мало кто оставляет.

    Reply
  13. born85

    (12) Не поленюсь и добавлю скриншот с настройкой в демо базе ут последней. Посмотрите после отработки — документы останутся с движениями.

    Управление торговлей, редакция 11 (11.4.5.111) (http://v8.1c.ru/trade/)

    Copyright © ООО «1С-Софт», 2003-2018. Все права защищены

    (http://www.1c.ru)

    Reply
  14. born85

    (13) Ну я например скачал за внутрисайтовые мани. И указал на замечания. На счет спроса — вам виднее статистику использования.

    Reply
  15. born85

    (14) Здесь посмотрите — после всех манипуляций — останутся документы не «распроведенные», так же с удалением.

    Reply
  16. Rustig

    (14) Расследование причин не закончено. Но вот, что уже выявлено:

    1) В УТ 11 по-умолчанию запущено много фоновых и регламентных заданий — их надо отключить — тогда обработка отработает быстрее

    2) В УТ 11 — много подписок на события, которые срабатывают ПередЗаписью документов, при этом проверяется кроме параметра ОбменДанными.Загрузка — различные параметры подобно Источник.ДополнительныеСвойства.Свойство(«ПропуститьЗаписьВерсииОбъекта«)

    или Объект.ДополнительныеСвойства.Свойство(«ЗаписатьНаборыЗначенийДоступа«)

    и еще что-то… Но пока особо непонятно — насколько допсвойства влияют на универсальные групповые обработки документов…

    возможно для других целей это знание пригодится — то есть, чтобы реализовать универсально что-то — необходимо знать и учитывать все ДопСвойства…

    3) Попробовал программно распровести Заказ ТД0000…3 от 06.04.2017 с помощью текущей обработки — вышла ошибка — смотрю Журнал регистрации — транзакция отменена на объекте РегистрСведений ГрафикПлатежей — это независимый и непериодический регистр….

    Хм, попробовал распровести этот заказ интерактивно — распровелся запросто — попробовал провести снова — вышла ошибка — не проводит, то есть заложена функциональность такая — что случайно можно распровести вручную, а вернуть в исходное состояние уже нельзя…. ловушка для пользователей ?!.

    Покамест отложу процесс поиска причин….

    Reply
  17. Rustig

    (14) собственно ни один документ нельзя распровести интерактивно (то есть вручную)… надо разбираться с функционалом… искать точки обхода блокировок распроведения…

    Reply
  18. Rustig

    (14) Знаете, я попробовал Удалить документы без распроведения.

    В итоге, удалилось.

    Единственно, ошибка вышла:

    {ВнешняяОбработка.УдалитьВсеДокументыБезПроверки.Форма.Форма.Форма(181)}: Ошибка при вызове метода контекста (Удалить)
    Док.Удалить();
    по причине:
    Ошибка при выполнении обработчика — ‘ПередУдалением’
    по причине:
    {ОбщийМодуль.ЗапасыСервер.Модуль(11222)}: По документу Передача товаров ТД00-000048 от 31.03.2017 23:59:59 есть движения в регистре РезервыТоваровОрганизаций. Удаление документа невозможно.
    ВызватьИсключение ТекстИсключения;

    Собственно, перед удалением что-то там проверяется и то только для одного вида документа (в список документов не попали документы после 07.04.2017г) — возможно есть другие виды документов, перед удалением которых проверяется что-то.

    …Но в целом, удалились все документы до 07.04.2017.

    Уже начинаю думать, что разработчики УТ 11 правильно сделали — зачем распроводить документы, тем более связанные ?!

    Если надо удалить и почистить базу — то, пож-та, удаляйте и чистите.

    Но при этом не надо распроводить…. 🙂

    Reply
  19. born85

    (19) По сути проблемы есть по функционалу обработки в приведенной мной базе, не так как «изначально подразумевался функционал работает», свою проблему я решил быстро переписав часть функционала под клиента, Вам как автору сообщил о не доработках, т.к. так же как и все скачивал за старт мани и обидно что то дописывать в таких случаях (читай как лениво) — точнее о поведении обработки в конкретной базе, далее на ваше усмотрение — поправите хорошо, нет так нет ).

    Хорошего вечера.

    Reply
  20. Rustig

    (20) ок. спасибо тогда)

    Reply

Leave a Comment

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