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











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

Всем привет!

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

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

Разрабатывалась на конфигурации, платформа 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 не будет опубликован. Обязательные поля помечены *