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


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 человек.
Рекламное место пустует