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

14.11.08

База данных - Чистка данных

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Erasing
.1226663911 9,42Kb
202
202 Скачать (1 SM) Купить за 1 850 руб.

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

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


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

1. В строку

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

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

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

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

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

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

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

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

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

См. также

Чистка данных Пользователь Оперативный учет 7.7 1С:Торговля и склад 7.7 Абонемент ($m)

Установка пометки на удаление справочника Номенклатура. Торговля 77. 9.2.

1 стартмани

21.11.2022    2659    3    Sevg    0    

2

Чистка данных Программист Пользователь Платформа 1С v7.7 1С:Бухгалтерия 7.7 1С:Зарплата и кадры 7.7 1С:Торговля и склад 7.7 Россия Абонемент ($m)

Обработка для поиска и пометки на удаление дублирующихся элементов произвольного справочника.

1 стартмани

12.09.2022    3129    9    tetraren    0    

2

Свертка базы Чистка данных Перенос данных 1C Системный администратор Программист Платформа 1С v7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 Абонемент ($m)

Приводится порядок действий для создания новой информационной базы на основе имеющейся файл-серверной "Торговля и Склад" ред.9.2, для учёта с нуля. В новую базу выполняется перенос справочников и остатков номенклатуры. Журналы документов, данные регистров, долги контрагентов, партии очищаются.

1 стартмани

14.01.2022    6450    6    etmarket    3    

4

Чистка данных Корректировка данных Программист Пользователь Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Архив различных обработок 1С 7.7 с открытым исходным кодом для работы с данными при свертке, выгрузке, исправлении, модификации информационной базы. Можно использовать любую обработку в качестве заготовки для добавления собственных функций.

1 стартмани

13.05.2021    8156    12    etmarket    0    

3

Чистка данных Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Эта обработка позволяет удалить созданные системой элементы справочников. Например, когда элементы создаются при тестировании и исправлении базы с наименованиями, включающими строку "ФС". Обработка тестировалась на базе конфигурации Бухгалтерский учет для Казахстана, редакции 7.70.257.

10 стартмани

26.03.2021    8701    2    softmaker    0    

0

Поиск данных Чистка данных Логистика, склад и ТМЦ Программист Оперативный учет 7.7 1С:Торговля и склад 7.7 Управленческий учет Абонемент ($m)

Простая и удобная обработка предназначена для поиска и исправления задублированных (повторяющихся) номенклатурных штрихкодов справочника Единицы. Также она даёт возможность посмотреть номенклатурные остатки. Полезна в случаях, когда номенклатура сопоставляется по штрихкоду с другими внешними источниками, а именно с модулем "Обмент ГИСМТ".

1 стартмани

19.11.2020    7924    1    Kuzya_brаtsk    4    

8

Чистка данных Системный администратор Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Когда удаляются документы и элементы справочников в 1С 7.7 через удаление помеченных на удаление объектов, запись из dbf файла не удаляется, она помечается как удаленная, но физически остается в файле. Если эти помеченные на удаление записи удалить физически, то размер файлов значительно уменьшится.

1 стартмани

18.10.2018    16158    48    evg520750    5    

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

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

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

(24) сравнил.
И что? Внятнее, плиз, оформляй свои мысли.
Оставьте свое сообщение