1с удалить движения у непроведенных документов

Обновлено: 07.07.2024

Программы » 1С:Предприятие 1C - 1C: Вопросы по конфигурациям
Варезник » 1C:Предприятие 7.7 - 1С:Предприятие v.8.x - 1C Диск ИТС - 1С: Совместимо 8.х Топик 1C Ebooks
ЗДЕСЬ (обновлено 22.02.14 ) - небольшая библиотечка (книги, документация, видео, утилиты) по 1С, финансам, бухучету и т.п.
Все рассортировано по версиям. Для заблудившихся в трех соснах >>> FAQ по форуму RU.Board

ПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения)

Если Источник.ПометкаУдаления = истина Тогда
Отказ = истина

Платформа 8.3.5 1088 Конфигурация УПП 1.3.54.2, клиент-серверный варинт. Сервер базы на Postgres.

Пример кода на участке которого платформа зависает на несколько минут:

НаборЗаписейДляПроверки.ОбменДанными.Загрузка = Истина;
// . ТУТ НЕ ОЧЕНЬ ДЛИТЕЛЬНОЕ ЗАВИСАНИЕ .
НаборЗаписейДляПроверки.Записать(Истина, Ложь, Истина, Ложь);

ЗапросПроверки = Новый Запрос(
"ВЫБРАТЬ
| Начисления.Сотрудник,
| Начисления.ВидРасчета,
| Начисления.ДатаНачала,
| Начисления.ДатаОкончания,
| Начисления.НомерСтроки
|ПОМЕСТИТЬ ВТНачисления
|ИЗ &парамНачисления КАК Начисления
|ИНДЕКСИРОВАТЬ ПО Сотрудник, ВидРасчета;
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Начисления.НомерСтроки КАК НомерСтроки
|ИЗ
| РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизации
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций.ФактическийПериодДействия(Регистратор = &парамСсылка) КАК ОсновныеНачисленияРаботниковОрганизацииФактическийПериодДействия
| ПО ОсновныеНачисленияРаботниковОрганизации.НомерСтроки = ОсновныеНачисленияРаботниковОрганизацииФактическийПериодДействия.НомерСтроки
| И ОсновныеНачисленияРаботниковОрганизации.Регистратор = ОсновныеНачисленияРаботниковОрганизацииФактическийПериодДействия.Регистратор
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТНачисления КАК Начисления
| ПО (Начисления.Сотрудник = ОсновныеНачисленияРаботниковОрганизации.Сотрудник)
| И (Начисления.ВидРасчета = ОсновныеНачисленияРаботниковОрганизации.ВидРасчета)
| И (Начисления.ДатаНачала = ОсновныеНачисленияРаботниковОрганизации.ПериодДействияНачало)
| И (КОНЕЦПЕРИОДА(Начисления.ДатаОкончания, День) = КОНЕЦПЕРИОДА(ОсновныеНачисленияРаботниковОрганизации.ПериодДействияКонец, День))
|ГДЕ
| ОсновныеНачисленияРаботниковОрганизации.Регистратор = &парамСсылка
| И ОсновныеНачисленияРаботниковОрганизацииФактическийПериодДействия.Регистратор ЕСТЬ NULL
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки УБЫВ");


ЗапросПроверки.УстановитьПараметр("парамСсылка", СcылкаОбъекта);
ЗапросПроверки.УстановитьПараметр("парамНачисления", Начисления.Выгрузить());
СтрокиКУдалению = ЗапросПроверки.Выполнить().Выгрузить();
// удалим проверочный набор записей
НаборЗаписейДляПроверки.Очистить();
// . ТУТ ДЛИТЕЛЬНОЕ ЗАВИСАНИЕ .
НаборЗаписейДляПроверки.Записать(Истина, Ложь, Истина, Ложь);

Для Каждого СтрокаТЗ Из СтрокиКУдалению Цикл
Начисления.Удалить(СтрокаТЗ.НомерСтроки - 1);
КонецЦикла;

Во многих конфигурациях есть константа "ПараметрыАдминистрированияИБ" типа "ХранилищеЗначения". Запиши туда, что требуется и читай себе на здоровье
Представь данные таким образом, чтобы использовать "ЗаполнитьЗначенияСвойств()".

Обработка позволяет делать как полное, так и выборочное удаление движений документов в 1С.

  • Бухгалтерия предприятия 3.0
  • Управление торговлей 11.4
  • Управление предприятием ERP 2.4
  • Зарплата и управление персоналом 3.1
  • Комплексная автоматизация 2.4
  • Розница 2.3
  • Управление нашей фирмой 1.6

Необходимость принудительно удалить движения документа возникает достаточно редко - в 99% случаев достаточно отменить проведение документа. Однако бывают ситуации, когда отмена проведения (и даже пометка на удаление) не помогают, движения не удаляются.

Для таких курьезных случаев и предназначена эта обработка. Она позволяет удалять движения ЛЮБЫХ документов в ЛЮБЫХ конфигурациях с управляемыми формами.

На форме обработки выбираем нужный документ (вначале выбирается тип документа) и нажимаем Удалить движения .

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

мк

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

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

Это поможет сайту развиваться и расширять аудиторию.

Вас может заинтересовать

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

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

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

Определение имен таблиц MSSQL

Структура базы данных 1С весьма запутана и состоит из малозначимых для человека названий. 1С содержит функцию определения структуры хранения по имени объекта. В основу разработки положена эта функция ПолучитьСтруктуруХраненияБазыДанных, которая согласно русскому названию возвращает описание структуры. В этой структуре важны 2 поля Назначение, которое должно быть равно «Основная», и название таблицы ИмяТаблицыХранения.

Определение смещения дат

Таблица _YearOffset содержит число, обозначающее смещение года дат. Оно принимает значение 0 или 2000. Так со смещением 2000 дата 01.01.2014 будет храниться в базе данных как 01.01.4014. Соответственно при отборе по датам (удаление происходит за период времени) нужно учитывать смещение. Смещение можно получить следующим кодом 1С:

Установка пометки на удаление документов

Имея названия таблиц документов и зная, что поля _Date_Time, _Marked и _Posted отвечают за дату, отметку об удалении и отметку о проведении соответственно, можно одним SQL-запросом пометить их все на удаление. Делается это так:

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

Не смотря на установку отметки на удаление у документов, в журналах документов хранятся дубли отметок об удалении на каждый документ. Список журналов, где участвует документ можно получить из метаданных документа так: Метаданные.ЖурналыДокументов
Отметка на удаление через поля _Marked и _Posted происходит аналогично через команду:

Удаление движений регистров

При удалении документов 1С удаляет движения документа по регистрам. В случае прямого доступа эти движения нужно удалить самостоятельно. Список регистров можно получить через метаданные ДокументМетаданные.Движения.
Команда, которой выполняется удаление движений следующая:

Заключение

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

PS. Список возникающих проблем и пути устранения:
1. Обработка игнорирует документы, где запрещено проведение, например, корректировка записей регистров. В корректировке записей регистров удаление документа связано со снятием активности записей регистров.
2. Результат удаления не отражается в планах обмена. Решается одновременным запуском обработки в связанных базах.
3. Не затрагивает таблицы итогов. Решается пересчетом итогов через Конфигуратор-Тестирование и Исправление-Пересчет итогов.

Из этой статьи вы узнаете, как в удалить в 1С объект при помощи программного кода, а также как поставить пометку на удаление.

В предыдущей статье, я рассказывал, как интерактивно удалить в 1С объект, и что для этого нужно настроить в правах конфигурации:

Программное удаление справочника в 1С

Для того чтобы программно удалить экземпляр справочника в 1С, необходимо воспользоваться методом Удалить объекта справочника. Для демонстрации разберу пример: разместим на форме обработки реквизит с ссылкой на справочник Контрагенты.

Реквизит управляемой формы 1С

И при выполнении команды формы обработки, будем удалять этот экземпляр справочника.

В этом коде удаление экземпляра справочника я производил в серверном контексте. Сначала при помощи метода ПолучитьОбъект() из ссылки был получен экземпляр объекта справочника, а потом этот экземпляр удален при помощи метода Удалить(). В реквизит Контрагент управляемой формы я записал пустую ссылку, чтобы отображение ссылки удаленного объекта не вводило в заблуждение.

Замечу, что программное удаление произошло при таких правах на объект.

Права на справочник 1С

Право «Интерактивное удаление» снято, то есть мы не можем непосредственно удалять экземпляр этого объекта, но мы можем удалить его программно (благодаря установленному праву Удалить).

Замечу, что при программном удалении объекта контроль ссылочной целостности не происходит! Поэтом не следует злоупотреблять этой возможностью!

Программное удаление документа в 1С

Документ программным способом удаляется также, как и справочник: нужно воспользоваться методом Удалить() экземпляра объекта документа. Например, на форме этой обработки я размещу реквизит с ссылкой на документ.

Реквизит управляемой формы 1С

А при выполнении команды документ будет удаляться.

Как и в случае справочника, программное удаление документа стало возможным благодаря установленному праву «Удалить».

Права на документ 1С

Пометка на удаление программно в 1С

Для того, чтобы программно пометить на удаление объект необходимо воспользоваться методом объекта УстановитьПометкуУдаления.

Для документов он имеет следующий синтаксис: УстановитьПометкуУдаления(<ПометкаУдаления>), где параметр ПометкаУдаления имеет тип булево.

Переделаем предыдущий пример: на форме разместим две команды.

Команды на управляемой форме

Одна команда будет устанавливать пометку на удаление у документа в реквизите, вторая снимать.

В этом коде, в процедуре УстановитьНаСервере() мы устанавливаем пометку на удаление, передав в метод УстановитьПометкуУдаления параметр Истина, а в процедуре СнятьНаСервере() снимаем пометку, передав Ложь.

Для объектов справочников метод УстановитьПометкуУдаления имеет следующий синтаксис:

Параметр ВключаяПодчиненные имеет тип Булево, и если установлено Истина, то будут помечены на удаление подчиненные элементы (если справочник иерархический), а также все объекты подчиненного справочника (если есть).

Продемонстрируем работу второго параметра: на форму поместим реквизит с типом булево, реквизит с типом ссылка на справочник Контрагенты , и сделаем две команды: установить и снять.

Реквизиты и команды на управляемой форме 1С

В обработчиках команд будем устанавливать и снимать пометку на удаление.

У справочника Контрагенты включим иерархию.

Иерархия справочника в 1С

И также сделаем подчиненный справочник.

Если мы установим пометку для группы с флажком подчиненные.

Пометка на удаление в 1С

То будет помечена группа и все входящие в неё объекты.

Пометка на удаление в 1С

А без установленного флага Подчиненные будет помечена только группа.

Пометка на удаление в 1С

Тоже самое с объектами из подчиненного справочника. При установленном флаге Подчиненные.

Пометка на удаление в 1С

Будет помечен на удаление и сам элемент справочника, и объекты подчиненного ему справочника.

Пометка на удаление в 1С

А иначе, будет помечен только сам элемент.

Пометка на удаление в 1С

Программировать в 1С за 11 шагов

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Основы разработки в 1С такси

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


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

можно оплатить вручную:

Читайте также: