IE2017

Непосредственное удаление

Администрирование - Чистка базы

Бывает, создашь документ (случайно или при тестировании),
и хочешь его удалить, а он лишь помечается на удаление.
Войти монопольно и удалить помеченные далеко не всегда возможно.
Эта маленькая обработка поможет избавиться от мусора.
(Используется FormEx, автор АЛьФ).

Как подключить?

  1. В "Конфигураторе" создайте кнопку на панели инструментов и "привяжите" ее к этой обработке. При желании здесь же можно назначить сочетание клавиш, например, Ctrl+Alt+D
  2. В глобальном модуле создайте процедуру ПриНажатииКнопкиКлавиатуры() (опять же FormEx) и в ней обработайте требуемое сочетание клавиш, например, Ctrl+Alt+D
    (интересен вариант 1+2 без сброса ФСО :)
  3. см. "Условности" п.2.


Условности (см. процедуру ПриОткрытии() данной обработки)

1. В строку

Если глПользователь.СуперПупер<>1 
    Тогда Возврат; 
КонецЕсли;

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

2. Используется глобальная переменная глСервис, которую я определяю в глобальном модуле:

Перем глСервис Экспорт;

И в конце процедуры ПриНачалеРаботыСистемы() указываю

Если ЗагрузитьВнешнююКомпоненту("FormEx.dll")=0 Тогда
    Сообщить("Не удалось загрузить ""FormEx.dll"","!");
    Возврат; 
КонецЕсли;
Попытка 
    глСервис=СоздатьОбъект("Сервис"); 
Исключение; 
КонецПопытки;

Но можно это сделать и внутри обработки.

Первый вызов сделайте при всех закрытых окнах.

PS
Хотелось бы для кнопки в панели инструментов сделать свою иконку (типа "Не влезай - убьет!"). Может, кто подскажет, как это делается.

Скачать файлы

Наименование Файл Версия Размер
Erasing
.1226663911 9,42Kb
20.10.14
202
.1226663911 9,42Kb 202 Скачать

См. также

Комментарии
1. Ёпрст (Ёпрст) 1019 14.11.08 15:46 Сейчас в теме
2. VasilyKushnir (vasilykushnir) 14.11.08 16:24 Сейчас в теме
(1) Абсолютне прав пан Ёпрст - штатными средствами, пишем внешнюю ert с выбором документа и удаляем безо всяких ВК, кнопочек и прочих понтов, меняющих конфигурацию. Не упоминай имя Бога своего и Formex всуе.... К тому, что если можно что-то сделать штатно и без проблем - делай это. М.Б. я не прав, но ИМХО формекс - для расширения и добавления недостающего фукнционала.
Хотя возможно кому-то идея покажется привлекательной.
3. Альтаир (Altair777) 638 14.11.08 16:37 Сейчас в теме
(1), (2) - полностью согласен!
Автор, прими совет - удаляй пока не заминусовали :-)
4. Федор (tdr1225) 36 14.11.08 17:02 Сейчас в теме
(2) Небольшое уточнение - документ выбирать не надо
(3) Да минусуйте - я не гордый
5. VasilyKushnir (vasilykushnir) 14.11.08 17:07 Сейчас в теме
(4) Разве только в выборе документа дело? Не боись - еще никто никого не минусует.
6. Альтаир (Altair777) 638 14.11.08 17:09 Сейчас в теме
Такие вещи пишутся за 3 минуты, если надо
Код
Процедура ПриОткрытии()         
   Перем ТД;      
   Док=СоздатьОбъект("Документ");      
   Если Док.Выбрать("Выберите документ для удаления нах","") = 1 Тогда      
      ТД=""+Док.ТекущийДокумент();   
      Попытка   
         Док.Удалить(1);
         Сообщить("Документ удален"+ТД);
      Исключение   
         Сообщить("Документ не удален"+ТД,"!");
      КонецПопытки;   
   КонецЕсли;      
   СтатусВозврата(0);      
КонецПроцедуры         
Показать полностью
7. Федор (tdr1225) 36 17.11.08 09:18 Сейчас в теме
2 (VasilyKushnir) В данном случае - в выборе.
2 (Altair777)
Потрать еще 3 минуты и найди в этой обработке команду Выбрать()
8. Ёпрст (Ёпрст) 1019 17.11.08 09:27 Сейчас в теме
>>>"Хотелось бы для кнопки в панели инструментов сделать свою иконку (типа "Не влезай - убьет!"). Может, кто подскажет, как это делается."
Открой пофигуратор и добавляй в интерфейс .. делов то..
9. VasilyKushnir (vasilykushnir) 17.11.08 09:31 Сейчас в теме
(7) ну если уж так настаиваешь... Лично я обработки доков у себя вешаю на кнопу Печать в журнале, при вызове определенной обработки из журнала беру контекст текущего дока и дальше делаю с ним, что хочу. Как видишь - выбора дока в данном варианте нет. Но это так... детали реализации.
Еще раз повторюсь - никто не ставит целей тебя заулюлюкать. И вполне допускаю, что твой метод имеет право на жизнь, хотя бы в качестве примера использования Формекса. Просто, я всегда стараюсь сделать все средствами 1С, если это без напряга делается средствами 1С. Хотя Формекс у меня есть и вовсю используется. Но это мое личное ИМХО :-)
10. VasilyKushnir (vasilykushnir) 17.11.08 09:37 Сейчас в теме
+ к (7) А в доказательство выше сказанного - вот тебе плюсик, так сказать за попыткую (лиха беда начало :-) )
11. Альтаир (Altair777) 638 17.11.08 09:39 Сейчас в теме
(7) Потрать еще 3 минуты и найди в этой обработке команду Выбрать()
Ты так и не понял, что тебе пытаются сказать? Зачем вешать формексы, кнопочки на панель инструментов?
Непосредственное удаление документов - это исключительная мера.
Нельзя как попало ее применять.
А если уж приспичит, за 3 минуты можно написать внешнюю обработку ждя этого.
П.С. У меня есть в универсальном журнале через ТЗ (сам писал), но использовал не более 10 раз.
vasilykushnir; lomok; +2 Ответить 1
12. Аркадий Кучер (Abadonna) 3681 17.11.08 10:27 Сейчас в теме
Если уж юзается formex, то можно сделать красивее и универсальнее:
Код
Процедура ПриОтжатииПравойКнопки(Конт,Состоян,X,Y,ФСО)
   Перем ВыбЗнач,Поз;        
   Если ИмяПользователя()<>"Кучер" Тогда 
      Возврат; // поставьте свое условие, кому нельзя
   КонецЕсли;
   ФормаРасш = СоздатьОбъект("РасширениеФормы");   
   Попытка
      ФормаРасш.УстановитьФорму(Конт.Форма);
   Исключение
      Возврат;
   КонецПопытки;   
   Тип=ФормаРасш.ТипОбъекта(); 
   Если (Тип="Журнал") И (Y<0) Тогда // кликнули правой кнопкой на тулбаре открытого журнала
      СПС=СоздатьОбъект("СписокЗначений");
      СПС.ДобавитьЗначение("Пометить","Пометить на удаление");    
      СПС.ДобавитьЗначение("УдалитьСсылка","Удалить с проверкой ссылок");
      СПС.ДобавитьЗначение("УдалитьБезСсылок","Удалить без проверки ссылок");
                        // можно добавить еще печать документа и т.д.  
      Если СПС.ВыбратьЗначение(ВыбЗнач,"Действие",Поз,30,0)<=0 Тогда
         Возврат;
      КонецЕсли;            
      Док=СоздатьОбъект("Документ"); 
      Док.НайтиДокумент(Конт.ТекущийДокумент);
      Если Поз=1 Тогда    
         Док.Удалить(0);  
      ИначеЕсли Поз=3 Тогда 
         ТекстВопроса="Документ будет удален безвозвратно. Продолжить?";
         Ответ=Вопрос(ТекстВопроса,"Да+Нет");
         Если Ответ="Нет" Тогда Возврат;  КонецЕсли;
         Док.Удалить(1);
      Иначе
         ТЗС=СоздатьОбъект("ТаблицаЗначений");
         НайтиСсылки(Док.ТекущийДокумент(),ТЗС);
         Если ТЗС.КоличествоСтрок()>0 Тогда
            Предупреждение("На документ есть ссылки, удалять нельзя!",15);
            Возврат;
         Иначе
            Док.Удалить(1); 
         КонецЕсли;      
      КонецЕсли;
   КонецЕсли;   
КонецПроцедуры    
Показать полностью
13. VasilyKushnir (vasilykushnir) 17.11.08 10:49 Сейчас в теме
(12) Дык все это понятно и здорово... Но постановка задачи-то в другом: создали пробный док, или создали по ошибке и надо шустренько его удалить. Скажите на милость товарищ Абадонна какие тут проверки ссылок? Его надо тупо удалить, а это действительно пара строчек (не две!! - к слову не цепляйтесь) кода. Ну и, естественно, я бы этот инструмент кому-попало не давал...
14. Аркадий Кучер (Abadonna) 3681 17.11.08 10:54 Сейчас в теме
(13) >Но постановка задачи-то в другом:
Это у автора постановка в другом, а у меня постановка в том, чтобы создать себе, любимому, максимум удобств.
Это я что ж, должен Файл-Открыть... выбрать в обработке документ, потом еще кнопку нажать и прочим онанизмом заниматься? ;)
15. Федор (tdr1225) 36 17.11.08 10:58 Сейчас в теме
(13-14) У автора постановка не в другом, а "в себе любимом":
Код
Если глПользователь.СуперПупер<>1 Тогда Возврат; КонецЕсли;
Показать полностью

и
Код
Если ИмяПользователя()<>"Кучер" Тогда Возврат; КонецЕсли;
Показать полностью

16. VasilyKushnir (vasilykushnir) 17.11.08 10:59 Сейчас в теме
(14) Зачем "Файл-Открыть... выбрать в обработке документ" - почитай (9):
1. Левой "лапой" мыши по нужному доку в журнале потом по кнопе Печать
2. Из списка действий выбираем "Удалить с концами"
Все!
17. Альтаир (Altair777) 638 17.11.08 11:05 Сейчас в теме
(0) А в чем революционность метода?
Если про кнопочку на панельке - это плагит.
У Альфа есть конфигурация - FormEx Demo
Copyright© Алексей Фёдоров aka АЛьФ, 2003
18. VasilyKushnir (vasilykushnir) 17.11.08 11:05 Сейчас в теме
+ к (16) - Но согласен и с тем, что метод (12) более общий и правильный. :-)
19. Аркадий Кучер (Abadonna) 3681 17.11.08 11:06 Сейчас в теме
(9)>Лично я обработки доков у себя вешаю на кнопу Печать в журнале
Позор, друган мой Василий! ;) В каждый журнал вешать на кнопку "Печать". А если их пара десятков?
Ключевые слова в (12) - красивее и универсальнее
20. Альтаир (Altair777) 638 17.11.08 11:08 Сейчас в теме
(15) Вторая проверка лишняя, имхо :-)
21. VasilyKushnir (vasilykushnir) 17.11.08 11:15 Сейчас в теме
(19) Не поверишь, но в каждом журнале у меня висит кнопа печать. И там не только печать самого дока (текущего)....
22. Федор (tdr1225) 36 17.11.08 11:16 Сейчас в теме
(Altair777) Первая проверка моя, вторая - Абадонны. Это одно и то же.
(VasilyKushnir) Именно пара десятков (см 19)
(Abadonna) Хотел использовать
Код
Тип=ФормаРасш.ТипОбъекта();
Показать полностью
, но отказался,
т.к. не различаются "Справочник" и "Справочник.ФормаСписка"
23. Альтаир (Altair777) 638 17.11.08 11:17 Сейчас в теме
по сабжу и по комментам.
Зачем цеплять на кнопку только одно действие?
Можно написать многофункциональную процедурку, в которой пользователь выбирает, что он хочет с делать с тем или иным объектом.
В зависимости от прав можно динамически формировать список доступных действий.
Типа - Напечатать, УдалитьСКонцами, НайтиСсылки и т.п.
Это будет универсальнее :-)
24. Федор (tdr1225) 36 17.11.08 11:24 Сейчас в теме
25. Аркадий Кучер (Abadonna) 3681 17.11.08 11:26 Сейчас в теме
(22)>т.к. не различаются "Справочник" и "Справочник.ФормаСписка"
RTFM ;) Для таких случаев юзай вот это:
ПолныйТипОбъекта()
Синтаксис:
ПолныйТипОбъекта()
Назначение:
Возвращает полный тип объекта, которому принадлежит расширяемая форма.
Пример:
ФормаРасш = СоздатьОбъект("РасширениеФормы");
ФормаРасш.УстановитьФорму(Форма);
Сообщить(ФормаРасш.ПолныйТипОбъекта());
// выводит строку вида: Справочник.Тестовый.ФормаСписка.ДляВыбора
26. Альтаир (Altair777) 638 17.11.08 11:32 Сейчас в теме
(24) сравнил.
И что? Внятнее, лиз, оформляй свои мысли.
27. Альтаир (Altair777) 638 17.11.08 11:34 Сейчас в теме
+26 буковка не пропечаталсь

(24) сравнил.
И что? Внятнее, плиз, оформляй свои мысли.
28. Федор (tdr1225) 36 17.11.08 11:34 Сейчас в теме
(25) слишком большой TFM, сразу не осилишь ;)
Оставьте свое сообщение