Имя: Пароль:
1C
1С v8
Выборочное удаление элементов с формы
0 ПривеДМедвед
 
22.10.12
09:08
Есть код который удаляет все добавленные элементы с формы. Вопрос: что нужно в коде написать, чтобы элементы не все удалялись, а выборочно.Как это осуществить можно?Подскажите пожалуйста)
&НаКлиенте
Процедура УдалитьФайлыСФормы(Команда)
   УдалитьЭлементыФормы();
   ОчиститьТабличнуюЧасть();
КонецПроцедуры

&НаСервере
Процедура ОчиститьТабличнуюЧасть()
   Объект.Сертификаты.Очистить();
КонецПроцедуры
1 Нуф-Нуф
 
22.10.12
09:09
замени УдалитьЭлементыФормы() на УдалитьЭлементыФормыВыборочно()
2 Cube
 
22.10.12
09:11
(1) +100! Сам долго парился, пока не узнал про эту конструкцию!)
3 ПривеДМедвед
 
22.10.12
09:11
Ошибка Процедура или функция с указанным именем не определена (УдалитьЭлементыФормыВыборочно)
4 Cube
 
22.10.12
09:12
(3) Так у тебя конфигуратор краденый... Покупай лицензию, там всё есть.
5 AaNnDdRrEeYy
 
22.10.12
09:12
Попробуй
УдалитьЭлементыФормыВыборочноНуПожалуйста()
6 ПривеДМедвед
 
22.10.12
09:12
лецензионный
7 butterbean
 
22.10.12
09:13
(6) а нужен лицензионный
8 ПривеДМедвед
 
22.10.12
09:14
ах да у меня на форме элементы в виде ссылок на документы может это как то влияет?
9 AaNnDdRrEeYy
 
22.10.12
09:14
а если серьезно то
поставь курсор на
УдалитьЭлементыФормы(); и нажми F12, вот там и смотри что менять надо
10 butterbean
 
22.10.12
09:14
(7)+ по сабжу — ты бы выложил код процедуры УдалитьЭлементыФормы()
11 ПривеДМедвед
 
22.10.12
09:15
&НаСервере
Процедура УдалитьЭлементыФормы()
   Если Объект.Сертификаты.Количество()>0 Тогда
       ДобавляемыеРеквизиты = Новый Массив();
       Для каждого Стр из Объект.Сертификаты Цикл
           ДобавляемыеРеквизиты.Добавить("Сертификат" +Стр.НомерСтроки);
       КонецЦикла;
   ИзменитьРеквизиты(    ,ДобавляемыеРеквизиты);
   КонецЕсли;
КонецПроцедуры
12 Cube
 
22.10.12
09:16
(11) Код написан с целью введения потенциального противника в заблуждение... :)
13 butterbean
 
22.10.12
09:16
нда
14 ПривеДМедвед
 
22.10.12
09:18
как мог так и написал)
15 Cube
 
22.10.12
09:19
(14) Ну так давай тогда процедуру ИзменитьРеквизиты(    ,ДобавляемыеРеквизиты)... Мы же не телепаты... :)
16 AaNnDdRrEeYy
 
22.10.12
09:20
(14) тогда перепиши как можешь, в чем проблема?
17 ПривеДМедвед
 
22.10.12
09:21
&НаСервере
Процедура СоздатьЭлементыФормы()
   Если Объект.Сертификаты.Количество()>0 Тогда
       Массив = Новый Массив();
       Массив.Добавить(Тип("СправочникСсылка.ХранимыеФайлы"));
       ОписаниеТиповС = Новый ОписаниеТипов(Массив);                  
       ДобавляемыеРеквизиты = Новый Массив();
       Для каждого Стр из Объект.Сертификаты Цикл                                                
           Если Элементы.Найти("Сертификат" +Стр.НомерСтроки) = Неопределено Тогда
           Реквизит = Новый РеквизитФормы("Сертификат" +Стр.НомерСтроки, ОписаниеТиповС);
           Реквизит.СохраняемыеДанные = Истина;      
           ДобавляемыеРеквизиты.Добавить(Реквизит);
           КонецЕсли;
       КонецЦикла;
       ИзменитьРеквизиты(ДобавляемыеРеквизиты);
       Для каждого Стр из Объект.Сертификаты Цикл
          Если Элементы.Найти("Сертификат" +Стр.НомерСтроки) = Неопределено Тогда                    
               Элемент = Элементы.Добавить("Сертификат" +Стр.НомерСтроки, Тип("ПолеФормы"), Элементы.ГруппаСертификаты);          
               Элемент.Вид = ВидПоляФормы.ПолеНадписи;
               Элемент.Гиперссылка = Истина;
               Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
               Элемент.ПутьКДанным = "Сертификат" + Стр.НомерСтроки;
               Элемент.УстановитьДействие("Нажатие", "Поле1Нажатие");
               ЭтаФорма["Сертификат" + Стр.НомерСтроки] = Стр.Файл;                
           КонецЕсли;    
       КонецЦикла;            
   КонецЕсли;
КонецПроцедуры
18 AaNnDdRrEeYy
 
22.10.12
09:26
так попробуй

&НаСервере
Процедура УдалитьЭлементыФормы()
   Если Объект.Сертификаты.Количество()>0 Тогда
       ДобавляемыеРеквизиты = Новый Массив();
       Для каждого Стр из Объект.Сертификаты Цикл
          Если Твое условие неудаление реквизита Тогда
             Продолжить;
           КонецЕсли;
       
           ДобавляемыеРеквизиты.Добавить("Сертификат" +Стр.НомерСтроки);
       КонецЦикла;
   ИзменитьРеквизиты(    ,ДобавляемыеРеквизиты);
   КонецЕсли;
КонецПроцедуры
19 Serg_1960
 
22.10.12
09:34
ТС, тебя просили озвучить ИзменитьРеквизиты(), а не типовые куски алгоритмов "от балды" копипастить.

Понедельник, утро... сегодня не "твой день" - выключи и не включай комп :)
20 AaNnDdRrEeYy
 
22.10.12
09:39
(19) он наверно ее в конфиги ищет.
вот она это встроенная

УправляемаяФорма (ManagedForm)
ИзменитьРеквизиты (ChangeAttributes)
Синтаксис:

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

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

Тип: Массив.
Массив, содержащий объекты типа РеквизитФормы.
Добавлять можно реквизиты верхнего уровня и вложенные реквизиты, являющиеся колонками.
К добавленным реквизитам верхнего уровня из модуля можно обращаться только с помощью конструкции ЭтаФорма.<Имя реквизита>.
<УдаляемыеРеквизиты> (необязательный)

Тип: Массив.
Массив, содержащий строки, описывающие пути к удаляемым реквизитам.
Удалять можно только ранее программно добавленные реквизиты.
Описание:

Изменяет структуру реквизитов формы.
Сначала выполняется удаление реквизитов. Таким образом массивы добавляемых и удаляемых реквизитов могут содержать реквизиты с одинаковым путём.

Доступность:

Сервер.
2 + 2 = 3.9999999999999999999999999999999...