Как программно очистить дополнительные реквизиты 1с

удаление программно добавленных реквизитов

Я
   Strimteam

02.08.16 — 15:00

Всем доброго дня.

Столкнулся с проблемой:

На форму добавляю свой реквизит типа «Строка», с отображением как «ПолеФормы». Затем при повторной активизации формы хочу проверить — добавлен ли реквизит на форму, и удалить его если он там есть.

Для добавления использую конструкцию:

НовыйРек = Новый РеквизитФормы(СтрЗаменить(ИмяРеквизита,» «,»»),ДопустимыеТипы,,ИмяРеквизита);

МассивРеквизитов = Новый Массив;

МассивРеквизитов.Добавить(НовыйРек);

ЭтаФорма.ИзменитьРеквизиты(МассивРеквизитов);

Но при попытке найти такой реквизит чтобы его удалить на форме — система просто не находит его в Элементы.

Если использовать ЭтаФорма[ИмяРеквизита] — находит конкретно значение типа Строка. Сделать с ней, само собой, ничего нельзя.

Вопрос — как можно удалить элемент, если он был добавлен раньше программно?

  

Партнерская программа EFSOL Oblako

   lera01

1 — 02.08.16 — 15:08

Проверить, если есть — просто не добавлять. Это вариант?

   Strimteam

2 — 02.08.16 — 15:11

(1) Мне скорее надо его удалить, так как имя реквизита могло изменится, и чтобы старый не мешал — сначала пытаюсь убрать ранее добавленные. Так что всё же нужно удалять.

   Nuobu

3 — 02.08.16 — 15:15

   f_vadim

4 — 02.08.16 — 15:21

Элементы.Найти

   f_vadim

5 — 02.08.16 — 15:22

или тут старообрядцы?

   Nuobu

6 — 02.08.16 — 15:23

(4) Тут реквизиты формы, а не элементы.

   f_vadim

7 — 02.08.16 — 15:26

(6) обсыпал голову пеплом. и на всякий случай другие части тела.

   Strimteam

8 — 02.08.16 — 15:28

(3) похоже что всё печально. У меня обработка внутри конфигурации, но созданные реквизиты так же не получить через Метаданные(). Значит пытаться искать элементы по наименованию, а затем «переопределять» элементы на другие реквизиты. Спасибо за ссылку.

   Kuzen

9 — 02.08.16 — 15:31

(0) Так что удалить то надо «Элемент формы» или «Реквизит Формы»?

   Kuzen

10 — 02.08.16 — 15:32

Если реквизит то есть второй параметр у ИзменитьРеквизиты

ИзменитьРеквизиты(<ДобавляемыеРеквизиты>, <УдаляемыеРеквизиты>)

   Strimteam

11 — 02.08.16 — 15:33

(10) Чтобы использовать ИзменитьРеквизиты надо сначала найти этот реквизит, и в массив передать. А я не могу найти такие реквизиты, если они были добавлены на форму программно. Если есть рабочий пример использования — буду признателен.

   Kuzen

12 — 02.08.16 — 15:34

(0) Твой код добавляет реквизит формы, элемент формы она не создает. Поэтому в элементах ты и не находишь скорее всего.

   Strimteam

13 — 02.08.16 — 15:37

(12) Элементы создаю отдельно, и сами элементы найти можно.

НовоеПолеФормы=ЭтаФорма.Элементы.Добавить(СтрЗаменить(ИмяРеквизита,» «,»»),Тип(«ПолеФормы»),НайденаяГруппа);

Но только я реквизит не могу найти, чтобы его удалить затем.

   FIXXXL

14 — 02.08.16 — 15:43

(13) я при добавлении сохраняю в списки

и при удалении чищу по спискам

//управление программно созданными реквизитами

&НаСервере

Процедура ЗафиксироватьПрограммноСозданныеРеквизитыИЭлементы(РеквизитПС)

    
    //при обновлении формы необходимо полное перезаполнение,

    //состав программно сформированных колонок может изменится

    //сохраним названия созданных при открытии формы колонок,

    //перед обновлением информации удалим согласно списка

    
    СписокУдаляемыхРеквизитов.Добавить(РеквизитПС.Путь + «.» + РеквизитПС.Имя);

    СписокУдаляемыхЭлементов.Добавить(РеквизитПС.Имя);

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

&НаСервере

Процедура УдалитьПрограммноСозданныеРеквизитыИЭлементы()

    
    //удаление ранее созданных программно колонок

    
    //убираем элементы формы

    Для каждого ЭлементФ Из СписокУдаляемыхЭлементов Цикл

        НайденныйЭлементФормы = ЭтаФорма.Элементы.Найти(ЭлементФ.Значение);

        Если НайденныйЭлементФормы <> Неопределено  Тогда

            ЭтаФорма.Элементы.Удалить(НайденныйЭлементФормы);

        КонецЕсли;

    КонецЦикла;

    
    //убираем реквизиты формы

    МассивУдаляемыхРеквизитов = Новый Массив;

    Для каждого ЭлементСписка Из СписокУдаляемыхРеквизитов Цикл

        МассивУдаляемыхРеквизитов.Добавить(ЭлементСписка.Значение);

    КонецЦикла;    

    ИзменитьРеквизиты(,МассивУдаляемыхРеквизитов);

    
    СписокУдаляемыхРеквизитов.Очистить();

    СписокУдаляемыхЭлементов.Очистить();

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

   1sanekmaloi1

15 — 02.08.16 — 15:45

Зачем его искать?

<УдаляемыеРеквизиты> (необязательный)

Тип: Массив.

Массив, содержащий строки, описывающие пути к удаляемым реквизитам.

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

В массиве Строки с путями и все.

   Kuzen

16 — 02.08.16 — 15:49

//добавить реквизит

    ИмяРеквизита     = «Тест»;

    Путь             = «»;

    НовыйРек         = Новый РеквизитФормы(ИмяРеквизита,Новый ОписаниеТипов(«Строка»,,Новый КвалификаторыСтроки(100)),Путь,ИмяРеквизита);

    МассивРеквизитов = Новый Массив;

    МассивРеквизитов.Добавить(НовыйРек);

    ЭтаФорма.ИзменитьРеквизиты(МассивРеквизитов);

    //удалить реквизит

    МассивУдалить = Новый Массив;

    МассивУдалить.Добавить(«Тест»);

    ЭтаФорма.ИзменитьРеквизиты(,МассивУдалить);

  

Strimteam

17 — 02.08.16 — 16:12

(16) Спасибо

(15) Спасибо

(14) Спасибо

Так же оказалось полезной функция ЭтаФорма.ПолучитьРеквизиты() . Элементы при добавлении на форму, и работе с формой — нормально по поиску находятся. Если же было обращение к другой форме (у меня открывалась подчинённая форма), то при возврате к оригинальной форме — элементы на форме есть, но через Элементы их в общем списке нет. Зато через ЭтаФорма.ПолучитьРеквизиты() можно увидеть что был реквизит, а значит был и элемент формы.

Всем большое спасибо за решение.

Как удалить дополнительный реквизит без изменения конфигурации

Автор 1cka, 03 апр 2014, 11:22

0 Пользователей и 1 гость просматривают эту тему.

В программах 1С версии 8 предусмотрен специальный механизм создания дополнительных свойств и категорий в режиме пользователя, без изменения конфигурации.
Создала я реквизит для справочника — все получилось, а вот как теперь его удалить? :dfbsdfbsdf:


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

В этом механизме задествованы следующие объекты:
План видов характеристик свойства объектов.
Справочник Значения свойствобъектов
Регистр сведений Значения свойств объектов.


(0)есть такой объект «ПланВидовХарактеристик».
удали ВСЁ своё из него.

Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают


Теги:

  • Форум 1С

  • Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4

  • Конфигурирование, программирование в 1С Предприятие 8

  • Как удалить дополнительный реквизит без изменения конфигурации

Похожие темы (5)

Рейтинг@Mail.ru

Rambler's Top100

Поиск


пятница, 3 января 2014 г.

Программно очистить реквизит в форме

Для того чтобы очистить реквизит в форме, следует присвоить этому реквизиту значение по умолчанию.
Например, для реквизита Контрагент имеющего тип СправочникСсылка.Контрагенты фрагмент кода будет выглядеть следующим образом:

Объект.Контрагент ПредопределенноеЗначение(«Справочник.Контрагенты.ПустаяСсылка»);


Добавить комментарий

2 комментария
:

  1. Можно ещё так:
    Объект.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
    ИЛИ
    Объект.Контрагент = ПредопределенноеЗначение(Объект.Контрагент.Метаданные().ПолноеИмя()+».ПустаяСсылка»));

    ОтветитьУдалить

  2. Объект.Контрагент = ПредопределенноеЗначение(Объект.Контрагент.Метаданные().ПолноеИмя()+».ПустаяСсылка»);

    ОтветитьУдалить

vpivo

7 / 7 / 3

Регистрация: 09.01.2018

Сообщений: 210

1

1C 8.x

Добавил доп.реквизит. не могу удалить

07.10.2020, 18:58. Показов 6404. Ответов 2

Метки нет (Все метки)


УТ 11… Добавил новый реквизит для «Склады и магазины»… Не могу удалить… В НСИ и администрирование -> Дополнительные реквизиты его не вижу, но запрос (выполняю в известной обработке «Консоль запросов»)

1C
1
ВЫБРАТЬ * ИЗ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения

Возвращает в том числе и его.
Как удалить? Подскажите.



0



1808 / 1228 / 442

Регистрация: 16.01.2015

Сообщений: 5,396

07.10.2020, 19:34

2

НСИ-Сервис-Удаление помеченных объектов. Если волнует только консоль, к запросу отбор ГДЕ Пометка = Ложь



1



7 / 7 / 3

Регистрация: 09.01.2018

Сообщений: 210

07.10.2020, 20:00

 [ТС]

3

1С неисчерпаем, как Windows…
Увидел «галку» «Показать неиспользуемые», включил, появились, пометил на удаление, окончательно удалил.
Не знаю… но «галку» увидел, когда у всех складов с определенным значением доп.реквизита нажал «крест».
Что это значит в 1С-е — не знаю, по логике нормальных СУБД — это прописать NULL.
Всем спасибо.



0



17 правил для составления оптимального ЗАПРОСа к данным базы 1С 47
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ


1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш


1С Предприятие что это? 12
Что такое 1С?
1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » — конкретный продукт, который выпускает компания 1С .
Что такое


COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине.
Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)):
НаКлиенте
Процедура Загрузки()
ПутьКБазе=» D:ВашаБаза1с77″ ;
Пользователь=


Excel файл как Внешний источник данных 16
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто.
1. В конфигурации добавляет новый объект метаданных типа » Внешние источники данных» и назовем его просто » Excel» .
https://helpf.pro/uploads/img


Посмотреть все результаты поиска похожих

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

УдаляемыеРеквизитыТЗ = Новый Массив;
ТЗ = СтрокиРабочийТабель.Выгрузить();  // СтрокиРабочийТабель – это ТаблицаЗначений на форме
УдаляемыеРеквизитыТЗ.Добавить(СтрокиРабочийТабель.Линия1);  // добавляемв массив сначала реквизиты, который нужно удалить
Элементы.Удалить(Элементы[Линия1]);  // теперь добавляем в массив элементы формы, которые нужно удалить
ЭтаФорма.ИзменитьРеквизиты(, УдаляемыеРеквизитыТЗ);  //  непосредственное удаление реквизитов с помощью метода управляемой формы

Понравилась статья? Поделить с друзьями:
  • Как продлить время работы автозапуска старлайн а 93
  • Как продлить время работы автозапуска томагавк 9010
  • Как проехать в аптекарский огород в москве на метро
  • Как проехать в болгарию минуя украину на автомобиле
  • Как проехать в терминал с шереметьево на автомобиле