Вход | Регистрация


1С:Предприятие ::

Метки:

Отбор документов

Я
   Serg_Y
23.11.04 - 13:45
Есть такая проблемка
Необходимо отобрать документы за определенный период и удалить, но эти документы могут быть реквизитом другого документа.
необходимо удалить только те документы, которые не связаны ни скакими документами
Это реально!!!
Подскажите как это сделать.
Заранее огромное спасибо
 
 
   GrayT
 
1 - 23.11.04 - 13:48
Перебераешь документы, проверяешь если есть хоть один подчиненный, проходишь мимо, ПОМЕЧАЕШЬ на удаление
   miki
 
2 - 23.11.04 - 13:51
Попытка
    ДокПерем=СоздатьОбъект("Документ");
    ДокПерем.УстановитьФильтр(1,0,1,1,1,1);

    ДокЗаяв.ВыбратьДокументы(Дата1,Дата2);КК=0;
    Пока ДокЗаяв.ПолучитьДокумент()=1 Цикл
        Если ДокПерем.ВыбратьПодчиненныеДокументы(,,ДокЗаяв)=1 Тогда
            Продолжить;
        Иначе
            КК=КК+1;
            Сообщить("Помечаю: "+ДокЗаяв);
            Состояние("Пометил: "+КК);
            ДокЗаяв.Удалить(0)//можешь единичку нарисовать

        КонецЕсли;
    КонецЦикла;
ИсклюЧение
        ГрупповоеПроведение=ОлдГрупПров;
КонецПопытки;
   kabazЯba
 
3 - 23.11.04 - 14:00
Это 1С:Предприятие 7.7? Тогда лучше пользоваться вот этим - прост удобнее.

НайтиСсылки(<?>,);
Синтаксис:
НайтиСсылки(<Объекты>,<Ссылки>)
Назначение:
Находит ссылки на объекты, переданные в списке значений.
Параметры:
<Объекты> - конкретное значение искомого объекта или значение типа ''СписокЗначений'', в котором данной процедуре передаются объекты, по которым надо найти ссылки.
<Ссылки> - идентификатор объекта типа ''ТаблицаЗначений'', в который данная процедура помещает найденные ссылки на объекты. Таблица значений состоит из 3 колонок: 1. объект на который ссылаются; 2. объект, который содержит ссылку; 3. комментарий к ссылке.
   GrayT
 
4 - 23.11.04 - 14:07
Имхо, намного дольше. Тем более что по условию (0) только подчиненные документы и ничего остального. А т.к. это не факт то и помечать надо, а не удалять с ходу
   321
 
5 - 23.11.04 - 14:27
(0)В типовой можешь посмотреть, видел как-то в обработке по обрезанию базы
   Serg_Y
6 - 23.11.04 - 21:13
Проблему решил вот так

Процедура УдалитьСФ()
        
        ДокСФ=СоздатьОбъект("Документ.Счет");
        
        ДокСФ.ВыбратьДокументы(Дата1,Дата2);
        Пока ДокСФ.ПолучитьДокумент()=1 Цикл
                ТбС = СоздатьОбъект("ТаблицаЗначений");
                НайтиСсылки(ДокСФ.ТекущийДокумент(),ТбС);
                Если ТбС.КоличествоСтрок() = 0 Тогда
                        ДокСФ.Удалить(1);
                КонецЕсли;
        КонецЦикла;
                
КонецПроцедуры

Неплохо работает
но долго, мож есть еще какие алгоритмы???
Заранее огромное спасибо!!!
   France
 
7 - 23.11.04 - 21:15
(2) микки, этому кролиководу не стоит помогать)))
   GrayT
 
8 - 23.11.04 - 21:20
(6)Мдя уж
   Serg_Y
9 - 23.11.04 - 21:25
France
7 - 23.11.04 - 21:15
Чего это??? Не понял???
   Serg_Y
10 - 23.11.04 - 21:26
France
7 - 23.11.04 - 21:15
Почему ко мне такая не приязнь???
 
 
   France
 
11 - 23.11.04 - 21:26
да ничего...
в постах про группу ты меня сильно подвел...
про рабочий код сказал, что не работает..
   miki
 
12 - 23.11.04 - 21:27
(7)
(6)Читать так них и не научился.
   France
 
13 - 23.11.04 - 21:28
приезжай, научиш, нах..
   miki
 
14 - 23.11.04 - 21:30
(13)Перевожу: в тою сторону там только тишина была.
Так что учись читать тоже.
   Serg_Y
15 - 23.11.04 - 21:34
France
11 - 23.11.04 - 21:26

Сорки спасибо у меня там все заработало
там м-ля какойто глюк не понятный произошел
я тоже самое написал в чистой обработке в отладчике отюзал и все оки
потом перенес назад в свою и тож заработало
В мире еще много загадочных вещей :-)))
Я не спорю твой код рабочий просто почему то не заработал, я так задолбался с теми группами, что даже впадло было разбираться чего он не заработал сразу
мо ж как нить на досуге
кстати вот тот исходный вариант который у меня заработал тада

Если СпрКли.НайтиПоНаименованию(КлиентНайм,0,1) = 0 Тогда
                               
     СпрГ = СоздатьОбъект("Справочник.Клиенты");
     НайдГр =0;
     Если СпрГ.НайтиПоНаименованию("ПОКУПАТЕЛИ",0,1)=1 Тогда
     Сообщить ("Найдена группа "+СпрГ+"!!!","!!!");
     НайдГр = 1;
КонецЕсли;
                                
Если НайдГр = 0 Тогда
     СпрГ.НоваяГруппа();
     СпрГ.Наименование = "Покупатели";
     СпрГ.Записать();
     НайдГр = 0;
     Сообщить ("Группа ''Покупатели'' не найдена ","!!!");   
     Сообщить ("Была создана группа ''Покупатели''","!!!");
КонецЕсли;
                        
СпрКли.Новый(); 
СпрКли.Наименование = КлиентНайм;
СпрКли.Родитель = СпрГ;
СпрКли.ПолнНаименование = КлиентПолнНайм; 
СпрКли.Адрес = КлиентАдрес; 
СпрКли.НомерСвидетельства = КлиентНомерСвидетельства; 
СпрКли.ИНН = КлиентИНН;
СпрКли.Телефоны = КлиентТелефон;
СпрКли.Примечание = КлиентПримечание;
СпрКли.ОКПО = КлиентОКПО;
СпрКли.ДокНомер = КлиентСерияПасп;
СпрКли.ДокСерия = КлиентНомерПасп;
СпрКли.ИспользоватьДату(ДатаДокФайла); 
СпрКли.Записать();
   Serg_Y
16 - 23.11.04 - 21:38
miki

что то я не пойму, чуть-чуть
12 и 14
что не так??????
я что то не пойму???
   miki
 
17 - 23.11.04 - 21:45
(15) Просто совет. Можешь покласть на него свой какой там у тебя. Насчет "тоже самое написал в чистой обработке" Учи метод копи/пасте.
Второму: Дятлов тоже стоит учить. Иногда. Пока терпение не иссякнет. Иногда сам что-то новое узнаЕшь. Не стоит учить того, кто публично от этого отказывается. В грубой форме:
ОФФ Про $100, хороший код и все такое..., 8-ой пост.

PS.(15) Не могу молчать:
На куй создаешь ""Покупатели""
, а ищешь ""ПОКУПАТЕЛИ""?
   miki
 
18 - 23.11.04 - 21:47
(16)Перевожу. Это было насчет "мож есть еще какие алгоритмы". Идея была в (1), а в (2) пример реализации.
   Serg_Y
19 - 23.11.04 - 21:54
Я в ноль не правильно написал
конфа большая и этот док счет который нада удалять мог быть не тока реквизитом в одном каком то дркументе, он мог быть реквезитом еще гдето
времени нет разбираться где и как
и потом у я решил проверять на ссылки
поповоду то же самое написал в чистой обработке
я реально все что было мне выложено и рпедложено на форуме пытался пригвоздить к своей обработке, из этого ничего не получалось, пока я не начал все это отлаживать в отладчике в чистой обработке и после того как я увидел что в се пашет я перенес обратно в свою самый оптимальный вариант, просто юзать ту обработку старую в отладчике было тяжеловато, она большая и я просто не доходил даже иногда не доходил до тех вариантов которые мне предлагали
Ну вобщем прогнал просто сроки были настолько сжатые что дуплиться не было реально времени
   Serg_Y
20 - 23.11.04 - 21:58
miki
17 - 23.11.04 - 21:45
а поповоду отказываться в грубой форме
так я никогда и не отказывался от помощи да еще и в грубой форме
мне помошь в 1С нужна как воздух, щимят так на работе что ...
по поводу покупателей немного прогнал - спешу сильно - времени мало ваще
я с группами мучился 1,5 ну плюс буховская текучка
хотя должен был за 20 мин все зделать
   Serg_Y
21 - 23.11.04 - 22:01
miki
18 - 23.11.04 - 21:47
а у тебя есть аська, мож дашь мне номер, а то и спросить если что не у кого
да и ты как выразился сам тоже учишся када других учишь :-))))
   miki
 
22 - 23.11.04 - 22:02
(19)Да ладно тебе, не пенься. Все будет хорошо. Наверное... Где нибудь... Когда нибудь... С кем нибудь...
Мы все учились по-немногу. Чему нибудь и как нибудь.(С)Пушкин. Кажется...
   miki
 
23 - 23.11.04 - 22:04
(20) Читать учись. Там же сказано: второму. Ты-первый. Учись ходить по ссылкам.
(21)С тетей асей не знаком. Человек для меня авторитетный сказал не надо. Я послушался.



Список тем форума
Рекламное место пустует   Рекламное место пустует
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует