Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Удаление помеченных объектов и внешних ссылок на них          
Vofka Подменю пользователя
сообщение 13.09.12, 13:20
Сообщение #1

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Позвонил мне только что друг один и задал вопрос:
Есть куча помеченных на удаление объектов, но удалить их нельзя, т.к. на них есть куча ссылок. Можно ли как-то удалить все эти объекты вместе с внешними ссылками в автоматическом режиме (т.е. чтоб не заходить и не удалять руками все внешние ссылки, потому что их очень много)?

Может это есть в платформе либо какие-то готовые внешние обработки?

Сообщение отредактировал Vofka - 25.09.12, 16:31

alex040269 Подменю пользователя
сообщение 13.09.12, 14:31
Сообщение #2

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Ну как? Есть такая фишка, как НайтиПоСсылкам, кажется.
так вот я когда-то пробовал. На найденные объекты - тоже потом есть ссылки и т.д.
В общем у меня снеслось процентов 90 базы!!!


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

Vofka Подменю пользователя
сообщение 13.09.12, 14:54
Сообщение #3

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Цитата(alex040269 @ 13.09.12, 15:31) *
Есть такая фишка, как НайтиПоСсылкам

Ссылки находит, но их же руками каждую нужно пометить на удаление, не?

sava1 Подменю пользователя
сообщение 13.09.12, 14:57
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Удалить(1), потом в тестировани/исправление прибить левые ссылки
хотя полностью корректно не выйдет (да и по времени хз)


Сообщение отредактировал sava1 - 13.09.12, 14:59

Спасибо сказали: Vofka,

alex040269 Подменю пользователя
сообщение 13.09.12, 14:58
Сообщение #5

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Соврал smile.gif

НайтиПомеченныеНаУдаление(<?>);
Синтаксис:
НайтиПомеченныеНаУдаление(<Объекты>)
Назначение:
Находит все помеченные на удаление объекты.
Параметры:
<Объекты> - идентификатор объекта типа ''СписокЗначений'', в который данная процедура помещает найденные объекты.


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

Спасибо сказали: Vofka,

Vofka Подменю пользователя
сообщение 13.09.12, 15:08
Сообщение #6

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Цитата(sava1 @ 13.09.12, 15:57) *
потом в тестировани/исправление прибить левые ссылки

Все такие ссылки одним кликом можно убить?

Цитата(alex040269 @ 13.09.12, 15:58) *
НайтиПомеченныеНаУдаление

Это все хорошо, но найдет система все помеченные на удаление объекты. Но оно их и так находит при "Удаление помеченных объектов". Проблема в том, что на них много не помеченных на удаление ссылок и вручную их все чистить сильно долго.

sava1 Подменю пользователя
сообщение 13.09.12, 15:12
Сообщение #7

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Цитата(Vofka @ 13.09.12, 16:08) *
Все такие ссылки одним кликом можно убить?

Точно не помню - спрашивает типа Восстановить? Создать? (в-общем надо пробовать)

alex040269 Подменю пользователя
сообщение 13.09.12, 15:25
Сообщение #8

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Цитата(Vofka @ 13.09.12, 16:08) *
Это все хорошо, но найдет система все помеченные на удаление объекты. Но оно их и так находит при "Удаление помеченных объектов". Проблема в том, что на них много не помеченных на удаление ссылок и вручную их все чистить сильно долго.


НайтиСсылки(<?>,);
Синтаксис:
НайтиСсылки(<Объекты>,<Ссылки>)
Назначение:
Находит ссылки на объекты, переданные в списке значений.
Параметры:
<Объекты> - конкретное значение искомого объекта или значение типа ''СписокЗначений'', в котором данной процедуре передаются объекты, по которым надо найти ссылки.
<Ссылки> - идентификатор объекта типа ''ТаблицаЗначений'', в который данная процедура помещает найденные ссылки на объекты. Таблица значений состоит из 3 колонок: 1. объект на который ссылаются; 2. объект, который содержит ссылку; 3. комментарий к ссылке.


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

Спасибо сказали: Vofka,

Vofka Подменю пользователя
сообщение 13.09.12, 20:22
Сообщение #9

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Всем спасибо, попробую поиграться с этим всем.

ЗЫ. забыл 7.7 уже faceoff.gif

mister-x Подменю пользователя
сообщение 13.09.12, 20:28
Сообщение #10

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Цитата(alex040269 @ 13.09.12, 15:31) *
В общем у меня снеслось процентов 90 базы!!!

тобто, разом із не потрібним знеслось і потрібне?

Сообщение отредактировал mister-x - 13.09.12, 20:29

alex040269 Подменю пользователя
сообщение 13.09.12, 20:57
Сообщение #11

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

ну да. правда копия была smile.gif


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

mister-x Подменю пользователя
сообщение 13.09.12, 21:14
Сообщение #12

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

мда, не надійна річ

MATEVI Подменю пользователя
сообщение 13.09.12, 21:50
Сообщение #13

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 956 раз
Рейтинг: 0

Цитата(Vofka @ 13.09.12, 21:22) *
Всем спасибо, попробую поиграться с этим всем.

Никогда такое не делал. Поигрался. Но это как воду в решете носить smile.gif
Плюс возможно цифры поплывут если, например, что то "помеченое" выбрано в проведеном документе.
В принципе можно проверять если проведенный документ то пропускать. И наверное проверку на удаленность объектов еще добавить.

//примерный код, тренеруемся на копии
Перем СпЗн, ТабЗн;
НачатьТранзакцию();
Сообщить("Выполняется поиск...");
НайтиПомеченныеНаУдаление(СпЗн);
НайтиСсылки(СпЗн,ТабЗн);
ТабЗн.Свернуть("Объект","");
ТабЗн.ВыбратьСтроки();
Пока ТабЗн.ПолучитьСтроку()=1 Цикл
    ВидОб = ТабЗн.Объект.Вид();
    Если ТипЗначения(ТабЗн.Объект)=11 Тогда
        Об=СоздатьОбъект("Справочник."+ВидОб);
        Если Об.НайтиЭлемент(ТабЗн.Объект)=1 Тогда
            Об.Удалить(0);
            Сообщить("Установлена пометка: "+Об);
        КонецЕсли;    
    ИначеЕсли ТипЗначения(ТабЗн.Объект)=12 Тогда
        Об=СоздатьОбъект("Документ."+ВидОб);
        Если Об.НайтиДокумент(ТабЗн.Объект)=1 Тогда
            Об.Удалить(0);
            Сообщить("Установлена пометка: "+Об);
            // стремный справочник партии...
            Парт=СоздатьОбъект("Справочник.Партии");
            Если Парт.НайтиПоРеквизиту("Док",ТабЗн.Объект,1)=1 Тогда
                Парт.Удалить(0);
                Сообщить("Установлена пометка: "+Парт);    
            КонецЕсли;
        КонецЕсли;        
    Иначе
        Сообщить("Тип объекта "+ ТипЗначения(ТабЗн.Объект));  //хз
    КонецЕсли;
КонецЦикла;
ЗафиксироватьТранзакцию();


ЗЫ Мне кажется может стоит подумать об обрезке базы. Или о переносе данных. (хотя это наверное не меньший гемор)

Сообщение отредактировал MATEVI - 13.09.12, 22:00

Спасибо сказали: bob210250, Vofka,

Vofka Подменю пользователя
сообщение 14.09.12, 8:19
Сообщение #14

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

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

igmig65 Подменю пользователя
сообщение 14.09.12, 11:03
Сообщение #15

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 613
Из: Донецкая обл
Спасибо сказали: 168 раз
Рейтинг: 140.9

Тупа поудалять ссылки нельзя, если база самописаная, нет движений по счетам и по регистрам, то я так понимаю все движения в документах. Соответственно возможно у документа или справочника помеченного могут быть ссылки на другие документы/справочники, а их то удалять может нельзя. Делал когдато такое, тоесть чистил, корректировал ссылки. Находил ссылки на помеченные и менял значения этих ссылок по возможности. Но понятно что это все индивидуально. Нужно знать структуру базы. После этого большинство объектов удалил.

Vofka Подменю пользователя
сообщение 25.09.12, 15:44
Сообщение #16

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

MATEVI, ещё раз вам спасибо за код! Только что почистил базу, пусть смотрят что получилось smile.gif . Только вы немножко опечатались: вместо
ТабЗн.Свернуть("Объект","");

надо
ТабЗн.Свернуть("Ссылка","");

Ну и ниже по тексту, соответственно smile.gif .
icon_beer17.gif

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 15:54
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!