1с удалить строку табличной части программно

Обновлено: 04.07.2024

Из этой статьи вы узнаете, как в удалить в 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


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

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

В табличном документе таблица не умещается по ширине
Добрый день, делаю внешнюю печатную форму, как мне сделать, если таблица не помещается в ширину.

1с 8.3 Программное определение координат области в табличном документе
Всем привет! Возможно ли программно определить координаты левого верхнего угла области.


Как сделать чтобы в табличном документе список разбивался при выводе на Подразделения?
Здравствуйте форумчане! У меня есть справочники: Должности, Подразделения и Сотрудники; без.

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

И проблема не в том, что строки не удаляются, а в пунктах 1 и 2

Диагноз: при удалении сбивается индех и итератор лепит мимо.
Лекарство: (два варианта)
1. Идти с конца
2. выгрузить в массив ссылки на строки (напр., НайтиСтроки()) и по нему цикл 2. выгрузить в массив ссылки на строки (напр., НайтиСтроки()) и по нему цикл

то это ничего не меняет.

Добавлено через 9 минут
Написал так

Жму на команду, потом на команду провести и вылазит ошибка (о том, что данные изменены другим пользователем, та что в начале теме описана). Так что здесь имеет место быть что-то другое

может dt скинуть?

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

harmless, у меня из команды идет обращение к модулю объекта. Это по заданию так надо. Оттуда вызывается экспортная процедура, которая должна очистить ненужные строки, заданные заданием.

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

и во время выполнения мне сообщается Поле объекта не обнаружено (ТабличнаяЧасть1)

Добавлено через 4 минуты
Моя первая проблема в
ОбъектДок.Записать()

Добавлено через 1 час 30 минут
С проходом к началу тоже ничего не выходит у меня

У каждого экземпляра объекта в 1С есть версия! Эта версия считывается при открытии формы, когда ты вызываешь программный метод с сервера Объект.Записать() то запускаешь в БД транзакцию записи объекта что приводит к смене его версии! Форма при записи пытается получить открытую ей версию и не находит ее, тем самым сообщает вам что запись была кем то изменена! То ВАМ в серверном вызове.
Что бы этого избежать, вы из формы должны перечитать объект, или не записывать его и обновлять данные формы.

В табличном документе таблица не умещается по ширине
Добрый день, делаю внешнюю печатную форму, как мне сделать, если таблица не помещается в ширину.

1с 8.3 Программное определение координат области в табличном документе
Всем привет! Возможно ли программно определить координаты левого верхнего угла области.


Как сделать чтобы в табличном документе список разбивался при выводе на Подразделения?
Здравствуйте форумчане! У меня есть справочники: Должности, Подразделения и Сотрудники; без.

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

И проблема не в том, что строки не удаляются, а в пунктах 1 и 2

Диагноз: при удалении сбивается индех и итератор лепит мимо.
Лекарство: (два варианта)
1. Идти с конца
2. выгрузить в массив ссылки на строки (напр., НайтиСтроки()) и по нему цикл 2. выгрузить в массив ссылки на строки (напр., НайтиСтроки()) и по нему цикл

то это ничего не меняет.

Добавлено через 9 минут
Написал так

Жму на команду, потом на команду провести и вылазит ошибка (о том, что данные изменены другим пользователем, та что в начале теме описана). Так что здесь имеет место быть что-то другое

может dt скинуть?

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

harmless, у меня из команды идет обращение к модулю объекта. Это по заданию так надо. Оттуда вызывается экспортная процедура, которая должна очистить ненужные строки, заданные заданием.

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

и во время выполнения мне сообщается Поле объекта не обнаружено (ТабличнаяЧасть1)

Добавлено через 4 минуты
Моя первая проблема в
ОбъектДок.Записать()

Добавлено через 1 час 30 минут
С проходом к началу тоже ничего не выходит у меня

У каждого экземпляра объекта в 1С есть версия! Эта версия считывается при открытии формы, когда ты вызываешь программный метод с сервера Объект.Записать() то запускаешь в БД транзакцию записи объекта что приводит к смене его версии! Форма при записи пытается получить открытую ей версию и не находит ее, тем самым сообщает вам что запись была кем то изменена! То ВАМ в серверном вызове.
Что бы этого избежать, вы из формы должны перечитать объект, или не записывать его и обновлять данные формы.

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