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

14.11.08

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

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

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

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

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

  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    2372    3    Sevg    0    

2

Поиск и удаление дублей справочника 7.7

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

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

1 стартмани

12.09.2022    2881    6    tetraren    0    

2

Учет с нуля на основе имеющейся файл-серверной базы данных 1С 7.7

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

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

1 стартмани

14.01.2022    6045    5    etmarket    3    

3

Комплект обработок 1С 7.7 для работы со справочниками и документами

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

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

1 стартмани

13.05.2021    7822    8    etmarket    0    

3

Удаление элементов справочника в 1С 7.7

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

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

10 стартмани

26.03.2021    8302    2    softmaker    0    

0

Поиск и исправление дублей штрихкодов для номенклатурных единиц измерения

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

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

1 стартмани

19.11.2020    7644    1    Kuzya_brаtsk    4    

8

Сжатие DBF-файлов для 1С:Предприятие 7.7

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

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

1 стартмани

18.10.2018    15701    45    evg520750    5    

1
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Ёпрст 1063 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 644 14.11.08 16:37 Сейчас в теме
(1), (2) - полностью согласен!
Автор, прими совет - удаляй пока не заминусовали :-)
6. Altair777 644 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 3958 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 644 17.11.08 09:39 Сейчас в теме
(7) Потрать еще 3 минуты и найди в этой обработке команду Выбрать()
Ты так и не понял, что тебе пытаются сказать? Зачем вешать формексы, кнопочки на панель инструментов?
Непосредственное удаление документов - это исключительная мера.
Нельзя как попало ее применять.
А если уж приспичит, за 3 минуты можно написать внешнюю обработку ждя этого.
П.С. У меня есть в универсальном журнале через ТЗ (сам писал), но использовал не более 10 раз.
vasilykushnir; Vitek; +2 Ответить
8. Ёпрст 1063 17.11.08 09:27 Сейчас в теме
>>>"Хотелось бы для кнопки в панели инструментов сделать свою иконку (типа "Не влезай - убьет!"). Может, кто подскажет, как это делается."
Открой пофигуратор и добавляй в интерфейс .. делов то..
12. Abadonna 3958 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 3958 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 644 17.11.08 11:08 Сейчас в теме
(15) Вторая проверка лишняя, имхо :-)
17. Altair777 644 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 3958 17.11.08 11:26 Сейчас в теме
(22)>т.к. не различаются "Справочник" и "Справочник.ФормаСписка"
RTFM ;) Для таких случаев юзай вот это:
ПолныйТипОбъекта()
Синтаксис:
ПолныйТипОбъекта()
Назначение:
Возвращает полный тип объекта, которому принадлежит расширяемая форма.
Пример:
ФормаРасш = СоздатьОбъект("РасширениеФормы");
ФормаРасш.УстановитьФорму(Форма);
Сообщить(ФормаРасш.ПолныйТипОбъекта());
// выводит строку вида: Справочник.Тестовый.ФормаСписка.ДляВыбора
28. tdr1225 37 17.11.08 11:34 Сейчас в теме
(25) слишком большой TFM, сразу не осилишь ;)
23. Altair777 644 17.11.08 11:17 Сейчас в теме
по сабжу и по комментам.
Зачем цеплять на кнопку только одно действие?
Можно написать многофункциональную процедурку, в которой пользователь выбирает, что он хочет с делать с тем или иным объектом.
В зависимости от прав можно динамически формировать список доступных действий.
Типа - Напечатать, УдалитьСКонцами, НайтиСсылки и т.п.
Это будет универсальнее :-)
24. tdr1225 37 17.11.08 11:24 Сейчас в теме
26. Altair777 644 17.11.08 11:32 Сейчас в теме
(24) сравнил.
И что? Внятнее, лиз, оформляй свои мысли.
27. Altair777 644 17.11.08 11:34 Сейчас в теме
+26 буковка не пропечаталсь

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