|
Получить список документов | ☑ | ||
---|---|---|---|---|
0
Тиль
22.08.11
✎
07:35
|
Парни такая проблемка:Хочу удалить документы из базы непосредственно по организации, написал такое:
//выбираем документы по орагнизации Выборка=Документы.ПлатежноеПоручениеИсходящее.Выбрать() ; Пока Выборка.следующий() Цикл Если Выборка.Организация=ПолеВВода1 Тогда//находим документ по реквизиту Организация //проверяем проведен ли документ и если да помечаем на удаление, это удалит все движения по документу и удаляем его Если Выборка.Проведен тогда Док=Выборка.ПолучитьОбъект(); Док.УстановитьПометкуУдаления(Истина); Док.Удалить(); КонецЕсли; //Заканчиваем с пометкой удаления и собственно самим удалением //Сообщаем какой документ удален Сообщить ("Удален Документ " +Выборка.Ссылка); КонецЕсли; КонецЦикла; Но здесь только по одному документу. Как перебрать все документы в базе? |
|||
1
Азат
22.08.11
✎
07:36
|
Для Каждого Док Из Метаданные["Документы"] Цикл
Имя = Док.Имя; Выборка = Документы[Имя].Выбрать(); бла-бла-бла КонецЦикла; ну как-то так, за точность не ручаюсь |
|||
2
Wobland
22.08.11
✎
07:43
|
Выборка.Организация=ПолеВВода1 - как это?
|
|||
3
Wobland
22.08.11
✎
07:44
|
а непроведённые удалять не будем?
|
|||
4
Amra
22.08.11
✎
07:46
|
(0) Бугага, как думаешь что вернет в твоем случае Выборка.Ссылка в Сообщить?))
|
|||
5
Тиль
22.08.11
✎
07:51
|
(2)-Реквизит на форме обработки Тип-Мправочник.Организации. Мдя, щас непроведенные доделаю...
(4)-блин, ага, ступил признаю...в цикл воткну поряньше удаления:) |
|||
6
Wobland
22.08.11
✎
07:53
|
(5) ЭлементыФормы.ПолеВвода1.Значение
|
|||
7
Тиль
22.08.11
✎
07:58
|
вот исправил
Для каждого Документ из Метаданные ["Документы"] Цикл Док=Документ.Имя; //выбираем документы по орагнизации Выборка=Документы[Док].Выбрать() ; Пока Выборка.следующий() Цикл Если Выборка.Организация=ПолеВВода1 Тогда//находим документ по реквизиту Организация Док=Выборка.ПолучитьОбъект(); Док.УстановитьПометкуУдаления(Истина); Док.Удалить(); //Заканчиваем с пометкой удаления и собственно самим удалением КонецЕсли; КонецЦикла; КонецЦикла; (6)-пучему так? там тип то стооит ссылка везде, у меня и так нормально выбирает |
|||
8
Тиль
22.08.11
✎
08:16
|
ап, нормально?
|
|||
9
Wobland
22.08.11
✎
08:19
|
а что скажет Выборка.Организация, если реквизита Организация у документа не будет?
|
|||
10
Wobland
22.08.11
✎
08:21
|
и не лучше ли обработкой пометить, а удаление помеченных стандартно сделать потом?
|
|||
11
Тиль
22.08.11
✎
08:22
|
(9)я так думаю, что этого не будет, ну проверку поставлю на наличие реквизита. Так то код нормальный?
|
|||
12
Wobland
22.08.11
✎
08:27
|
(11) да как-то юзать выборку вместо запроса некошерно. впрочем, если это разовая обработка, какая разница, нормальный код или нет. отработает себе и ладно ;)
|
|||
13
Тиль
22.08.11
✎
08:33
|
да, это разовая обработка
|
|||
14
Wobland
22.08.11
✎
08:36
|
а ещё есть групповая обработка документов, там вообще писать не надо
|
|||
15
Тиль
22.08.11
✎
08:44
|
да, есть но там не по организации выборка идет а в общем и ставится только пометка на удаление
|
|||
16
Wobland
22.08.11
✎
08:53
|
(15) да ну? отбирать по многим реквизитам можно. напрямую не удаляет, да, но, может, оно и не надо?
|
|||
17
Тиль
22.08.11
✎
08:54
|
надо, нам блин базу дали работать а там орагниизаций, котоорые с ней раньше работали куча, только без них объектов, помеченных на удаление больше 300 000
|
|||
18
Тиль
22.08.11
✎
10:52
|
а как поставить проверку на наличие этого реквизита в документе? например Документ Корректировка записей регистров этого реквизита не имеет
|
|||
19
Reset
22.08.11
✎
10:56
|
Имхо, базе абзац.
|
|||
20
Wobland
22.08.11
✎
10:57
|
цитирую ОбщегоНазначения.ЕстьРеквизитДокумента():
Если МетаданныеДокумента.Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда |
|||
21
Reset
22.08.11
✎
10:58
|
(18) Документ.Реквизиты.Найти("Организация")
|
|||
22
Aleksey
22.08.11
✎
10:58
|
А не проще ле взять готовую обработку. Ведь там кроме документов есть куча справочников (например договора), куча Регистр Сведений?
|
|||
23
Тиль
22.08.11
✎
11:09
|
Для каждого Документ из Метаданные ["Документы"] Цикл
Док=Документ.Имя; //выбираем документы по орагнизации Выборка=Документы[Док].Выбрать() ; ДокументОбъект=Выборка.ПолучитьОбъект(); МетаданныеДокумента=ДокументОбъект.Метаданные(); Если МетаданныеДокумента.Реквизиты.Найти("Организация") <> Неопределено тогда Пока Выборка.следующий() Цикл Если Выборка.Организация=ПолеВВода1 Тогда//находим документ по реквизиту Организация Док=Выборка.ПолучитьОбъект(); Док.УстановитьПометкуУдаления(Истина); Док.Удалить(); //Заканчиваем с пометкой удаления и собственно самим удалением КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; вот что получилось |
|||
24
Wobland
22.08.11
✎
11:14
|
после Выборка=Документы[Док].Выбрать() надо Следующий() делать
|
|||
25
Тиль
22.08.11
✎
11:18
|
сделал...Значение не является значением объектного типа ПолучитьОбъект()
|
|||
26
Wobland
22.08.11
✎
11:19
|
(25) плохо сделал
|
|||
27
Азат
22.08.11
✎
11:19
|
пздц, из копеечной задачи запутали автора в трех соснах...
|
|||
28
Тиль
22.08.11
✎
11:25
|
(27) можешь подсказать как надо? в чем ошибка?
|
|||
29
Тиль
22.08.11
✎
11:48
|
Для каждого Документ из Метаданные ["Документы"] Цикл
ИМЯДок=Документ.Имя; //выбираем документы по орагнизации Выборка=Документы[ИМЯДок].Выбрать() ; Если Документ.Реквизиты.Найти("Организация" <> Неопределено тогда Пока Выборка.следующий() Цикл Если Выборка.Организация=ПолеВВода1 Тогда//находим документ по реквизиту Организация Док=Выборка.ПолучитьОбъект(); Док.УстановитьПометкуУдаления(Истина); Док.Удалить(); КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; вот так сделал..вроде нормально..прогоняется |
|||
30
Wobland
22.08.11
✎
11:49
|
резервную копию сделал хоть?
|
|||
31
Азат
22.08.11
✎
11:50
|
Для каждого Документ из Метаданные ["Документы"] Цикл
ИМЯДок=Документ.Имя; //выбираем документы по орагнизации Выборка=Документы[ИМЯДок].Выбрать() ; Пока Выборка.следующий() Цикл Попытка Орг = Выборка.Организация; Исключение Прервать; КонецПопытки; Если Выборка.Организация=ПолеВВода1 Тогда Док=Выборка.ПолучитьОбъект(); Док.УстановитьПометкуУдаления(Истина); Док.Удалить(); КонецЕсли; КонецЦикла; КонецЦикла; |
|||
32
Reset
22.08.11
✎
11:52
|
(31) Писец
Ты бы еще вместо проверки на 0 перед делением, само деление в попытку заключал |
|||
33
Reset
22.08.11
✎
11:54
|
(31)
код в (29) на порядок грамотней, чем твой |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |