|
Можно ли при обходе через менеджер узнать есть ли реквизит? | ☑ | ||
---|---|---|---|---|
0
temsa
26.12.12
✎
08:26
|
Есть такой код:
Для Каждого Док Из Документы Цикл ОбработкаПрерыванияПользователя(); ЕстьОрганизация = (Док.Реквизиты.Найти("Организация")<>Неопределено); Если ЕстьОрганизация Тогда Выборка = Док.Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.Организация <> ВыбОрг Тогда Состояние(""+Выборка.Ссылка); Если Выборка.ПометкаУдаления = Ложь Тогда Объект = Выборка.ПолучитьОбъект(); Объект.УстановитьПометкуУдаления(Истина); КонецЕсли; КонецЕсли; Прервать; // Убрать КонецЦикла; КонецЕсли; Прервать; // Убрать КонецЦикла; Не работает это ЕстьОрганизация = (Док.Реквизиты.Найти("Организация")<>Неопределено); Как это решить? |
|||
1
1Сергей
26.12.12
✎
08:27
|
Метаданные()
|
|||
2
temsa
26.12.12
✎
08:27
|
Хочу удалить доки другой организации. Но заранее не знаю в каких видах документа нет реквизит организация. Хотелось бы знать при обходе.
|
|||
3
temsa
26.12.12
✎
08:28
|
(1) Проборвал Док.Метаданные() Нельзя.
|
|||
4
1Сергей
26.12.12
✎
08:28
|
(3) чего нельзя?
|
|||
5
Ursus maritimus
26.12.12
✎
08:30
|
Коллекция Документы у тебя от сырости образовалась? Может на этапе её создания проверять? Когда ты имена документов знаешь.
|
|||
6
Starhan
26.12.12
✎
08:31
|
в типовых же есть методы проверки существования реквизитов
|
|||
7
Alexaha
26.12.12
✎
08:31
|
Док.Метаданные.Реквизиты.Найти(ИмяРеквизитаКотороеИщешь)
|
|||
8
Ursus maritimus
26.12.12
✎
08:33
|
А вообще код в (0) полное гуано.
|
|||
9
Alexaha
26.12.12
✎
08:33
|
Док.Метаданные().Реквизиты.Найти(ИмяРеквизитаКотороеИщешь)
пардон |
|||
10
1Сергей
26.12.12
✎
08:34
|
(9) +1
Хотя, хз что у него там в "Документы" |
|||
11
Alexaha
26.12.12
✎
08:35
|
(10) ну по идее таки документ ))))
|
|||
12
Heckfy
26.12.12
✎
08:35
|
Для Каждого Док из Метаданные.Документы Цикл
А дальше запросом Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | БлаБлаБла |ИЗ | Документ."+Док.Имя+" КАК Документ |Где |БлаБлаБла" ; РезультатЗапроса=Запрос.Выполнить().Выбрать(); Или я чего то не понял...... |
|||
13
temsa
26.12.12
✎
08:35
|
Выражение - Док
Значение - ДокументМенеджер.ABCКлассификацияПокупателей Тип - ДокументМенеджер.ABCКлассификацияПокупателей |
|||
14
Alexaha
26.12.12
✎
08:39
|
(13) а че ты вообще за задачу решаешь?
снимаешь пометку удаления с помеченных доков по выбранной организации? |
|||
15
1Сергей
26.12.12
✎
08:40
|
(13) так бы сразу и сказал. У менеджера нет метаданных. нужен объект или ссылка
|
|||
16
temsa
26.12.12
✎
08:40
|
(14) Мне нужно в базе с несколькими организациями убрать лишние организации.
|
|||
17
Heckfy
26.12.12
✎
08:41
|
Групповая обрабока справочников и документов не подойдет?
|
|||
18
Alexaha
26.12.12
✎
08:42
|
(16) а с доками по этим олрганизациям что делать будешь?
|
|||
19
1Сергей
26.12.12
✎
08:44
|
Если Не Док.ПустаяСсылка().Метаданные().Реквизиты.Найти(ИмяРеквизитаКотороеИщешь) = Неопределено Тогда
|
|||
20
temsa
26.12.12
✎
08:58
|
(17) Там отбор по реквизиту организация нет.
(18) Удалять. |
|||
21
Heckfy
26.12.12
✎
09:01
|
(20) Есть.
|
|||
22
temsa
26.12.12
✎
09:11
|
(21) У меня казахские а там нет.
|
|||
23
1Сергей
26.12.12
✎
09:14
|
(22) ты (19) пробовал?
|
|||
24
Serg_1960
26.12.12
✎
09:33
|
(0) Код - в топку, автора - в поиск! хмм... Новый год всё-таки скоро...
ТС, посмотри в сторону НайтиПоСсылкам() - организация упоминается не только в документах. И ещё: то, что ты разыскиваешь, не всегда "оно" называться может быть "Организация" (фиг его знает что там в казахских конфигурациях натворили...) |
|||
25
temsa
26.12.12
✎
09:34
|
нашел такой кусочек
Запрос = Новый Запрос; Запрос.УстановитьПараметр("Организация", ВыбОрг); Для Каждого ДокументМетаданные ИЗ Метаданные.Документы Цикл Запрос.Текст = Запрос.Текст + ?(Запрос.Текст = "", "", " |ОБЪЕДИНИТЬ ВСЕ |") + "ВЫБРАТЬ """ + ДокументМетаданные.Имя + """ КАК ИмяДокумента, Представление КАК Представление, Ссылка КАК Ссылка, Дата КАК Дата ИЗ Документ." + ДокументМетаданные.Имя; Если ВыбОрг <> Неопределено И ДокументМетаданные.Реквизиты.Найти("Организация") <> Неопределено Тогда Если ТипЗнч(ВыбОрг) = Тип("Массив") Тогда Запрос.Текст = Запрос.Текст + " И Организация В (&Организация)"; Иначе Запрос.Текст = Запрос.Текст + " И Организация = &Организация"; КонецЕсли; КонецЕсли; КонецЦикла; ТаблицаДокументов = Запрос.Выполнить().Выгрузить(); |
|||
26
cw014
26.12.12
✎
09:43
|
Замени:
Для Каждого Док Из Документы Цикл на: Для Каждого Док Из Метаданные.Документы Цикл |
|||
27
Мыш
26.12.12
✎
09:48
|
> Выражение - Док
> Значение - ДокументМенеджер.ABCКлассификацияПокупателей Тип - ДокументМенеджер.ABCКлассификацияПокупателей Док.ПустаяСсылка().Метаданные() и далее по тексту ) |
|||
28
Aprobator
26.12.12
✎
09:52
|
граждане, в связи с участившимися случаями кражи СП и типовых конфигураций, будьте предельно внимательны. Отгоняйте подозрительных личностей от своего компьютера и отключите его от интернета.
|
|||
29
temsa
26.12.12
✎
10:03
|
Осоили код
Запрос = Новый Запрос; Запрос.УстановитьПараметр("Организация", ВыбОрг); Для Каждого ДокументМетаданные ИЗ Метаданные.Документы Цикл Запрос.Текст = Запрос.Текст + ?(Запрос.Текст = "", "", " |ОБЪЕДИНИТЬ ВСЕ |") + "ВЫБРАТЬ """ + ДокументМетаданные.Имя + """ КАК ИмяДокумента ИЗ Документ." + ДокументМетаданные.Имя+" |ГДЕ "; Если ВыбОрг <> Неопределено И ДокументМетаданные.Реквизиты.Найти("Организация") <> Неопределено Тогда Запрос.Текст = Запрос.Текст + ДокументМетаданные.Имя+".Организация <> &Организация"; КонецЕсли; КонецЦикла; ТаблицаДокументов = Запрос.Выполнить().Выгрузить(); Но не рабочий ((( |
|||
30
Мыш
26.12.12
✎
10:30
|
Что именно не работает? Почему запрос используется, хотя никаких данных не тянет?
|
|||
31
temsa
26.12.12
✎
10:41
|
{Форма.Форма.Форма(16)}: Ошибка при вызове метода контекста (Выполнить)
ТаблицаДокументов = Запрос.Выполнить().Выгрузить(); по причине: {(3, 1)}: Синтаксическая ошибка "ОБЪЕДИНИТЬ" <<?>>ОБЪЕДИНИТЬ ВСЕ |
|||
32
Мыш
26.12.12
✎
10:47
|
(31) У тебя ошибка в тексте запроса. Подозреваю, что ОБЪЕДИНИТЬ идет сразу после ГДЕ без условия.
И ещё раз спрошу, зачем запросом делаешь, если данные не выбираешь? |
|||
33
temsa
26.12.12
✎
10:52
|
(32) Данные я буду вибирать. посто хотябы сначала запрос заработал.
Вот еще пример накопал здесь ЗапросТекст = ""; Для каждого ДокументМетаданные Из Метаданные.Документы Цикл ЗапросТекст = ЗапросТекст + Символы.ПС + "ВыБРАТЬ ССЫЛКА ИЗ Документ."+ДокументМетаданные.Имя; КонецЦикла; Запрос = новый Запрос(СтрЗаменить(СокрЛП(ЗапросТекст), Символы.ПС, " ОБЪЕДИНИТЬ ВСЕ ")); ЗапросВыборка = Запрос.Выполнить().Выбрать(); Пока ЗапросВыборка.Следующий() Цикл Сообщить(ЗапросВыборка.Ссылка) КонецЦикла; еще Для Каждого ВидДока Из Метаданные.Документы Цикл Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | &ВидДока.Ссылка |ИЗ | Документ.&ВидДока КАК &ВидДока"; Запрос.Текст = СтрЗаменить(Запрос.Текст,"&ВидДока",ВидДока.Имя); Выборка = Запрос.Выполнить().Выбрать(); КонецЦикла; |
|||
34
Serg_1960
26.12.12
✎
11:16
|
Автор, ты точно уверен что в твоей конфигурации нет документов, например, "ВнутреннееПеремещениеНаличныхДенежныхСредств" (где организация указана в реквизитах "ОрганизацияОтправитель", "ОрганизацияПолучатель") и ему подобных? Если не уверен - то ещё раз повторю:
Ищи по типу! |
|||
35
Serg_1960
26.12.12
✎
11:31
|
Я у автора в игноре? Игнорировать собеседника нехорошо. Наказание - подскажу, но через пол-часа.
|
|||
36
temsa
26.12.12
✎
12:54
|
(35) Прошу прощения. Я перезжал, пробки.
(34) На счет этой идеи понял. Но я думал что не смотря на то что несколько фирм сидят в базе они все равно ведут учет обособлено. Ведь нет же такого документа перемещение ТМЦ между организациями. Юридичеки они же разные и значит между ними не должны быть перемещений |
|||
37
Serg_1960
26.12.12
✎
13:56
|
Документы, проведенные только по управленческому учету, но имеющие реквизит "Организация" - тоже будешь удалять "не глядя"? Например, документы перемещения товаров между складами? Удаление документов (да и не только их) - процесс творческий :)
PS: я тут написал болванку - может пригодится: ПоискЧто = "Справочник.Организации"; ПоискТип = ТипЗнч(Справочники.Организации.ПустаяСсылка()); ТекстЗапроса = ""; Для Каждого Документ ИЗ Метаданные.Документы Цикл Для Каждого Реквизит Из Документ.Реквизиты Цикл Если Реквизит.Тип.СодержитТип(ПоискТип) Тогда ТекстЗапроса = ТекстЗапроса + "ОБЪЕДИНИТЬ ВСЕ |ВЫБРАТЬ | ТекОбъект.Ссылка КАК Ссылка |ИЗ | Документ." + Документ.Имя + " КАК ТекОбъект |ГДЕ | ТекОбъект." + Реквизит.Имя + " ССЫЛКА " + ПоискЧто + " | И ТекОбъект." + Реквизит.Имя + " = &Ссылка |"; КонецЕсли; КонецЦикла; КонецЦикла; ТекстЗапроса = Сред(ТекстЗапроса,16); |
|||
38
temsa
26.12.12
✎
17:35
|
(37) Спасибо. Буду удалять все кроме одной организации.
|
|||
39
temsa
26.12.12
✎
17:36
|
по ходу мой вариант. как бы там ни говорили код рабочий.
Для Каждого Док Из Документы Цикл ОбработкаПрерыванияПользователя(); мд = Док.ПустаяСсылка().Метаданные(); ЕстьОрганизация = (мд.Реквизиты.Найти("Организация")<>Неопределено); Если ЕстьОрганизация Тогда Выборка = Док.Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.Организация <> ВыбОрг Тогда Состояние(""+Выборка.Ссылка); Если Выборка.ПометкаУдаления = Ложь Тогда Объект = Выборка.ПолучитьОбъект(); Попытка Объект.УстановитьПометкуУдаления(Истина); Исключение сообщить(" "+Объект+"!!!"); КонецПопытки; КонецЕсли; КонецЕсли; // Прервать; // Убрать КонецЦикла; КонецЕсли; //Прервать; // Убрать КонецЦикла; |
|||
40
Aprobator
26.12.12
✎
18:22
|
а млин, так Док это менеджер документа. Типа Документы.РеализацияТоваровИУслуг. Вот почему так тема названа то была )
|
|||
41
Aprobator
26.12.12
✎
18:23
|
все тупо в код в (0) уперлись, вот и развели бодягу на ровном месте.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |