|
сравнение ТЧ документов | ☑ | ||
---|---|---|---|---|
0
Black Dragon
30.12.14
✎
10:25
|
Доброго дня!
есть некая конфа, в которой у некоторых доков в ТЧ встречается несколько собственников. Собственники некое подобие проектов. Для очистки старых(неиспользуемых) собственников требуется удалить все их документы из базы. В связи с особенностью, описанной выше, необходимо проверить, нет ли в удаляемых доках других собственников. Написал вот такой запрос: //список исключаемых доков Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ОстаткиТоваров1.Заказ КАК ЗаказНеУдалять, | ОстаткиТоваров2.Заказ.Собственник КАК ЧужойСобственник, | ОстаткиТоваров2.Заказ КАК ЧужойЗаказ, | ОстаткиТоваров1.Регистратор.Владелец КАК Документ, | ОстаткиТоваров2.Регистратор КАК ЧужаяОперация |ИЗ | РегистрНакопления.ОстаткиТоваров.ОстаткиИОбороты(, , Регистратор, , Заказ.Собственник = &Собственник) КАК ОстаткиТоваров1 | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.ОстаткиИОбороты(, , Регистратор, , ) КАК ОстаткиТоваров2 | ПО (ОстаткиТоваров1.Регистратор.Владелец = ОстаткиТоваров2.Регистратор.Владелец | И (НЕ ОстаткиТоваров1.Заказ.Собственник = ОстаткиТоваров2.Заказ.Собственник)) |УПОРЯДОЧИТЬ ПО | Документ"; Состояние("Формируется список документов-исключений..."); ТабИсклДоков = Запрос.Выполнить().Выгрузить(); Если ТабИсклДоков.Количество() Тогда ТабИскл = ТабИсклДоков; Сообщить("Обнаружены документы, содержащие несколько собственников!" + Символы.ПС + "Удаление выбранного собственника невозможно!"); ЭлементыФормы.ТабИсклДоков.СоздатьКолонки(); МожноУдалитьСобственника = Ложь; Иначе МожноУдалитьСобственника = Истина; КонецЕсли Очень долго работает, помогите оптимизировать алгоритм |
|||
1
vicof
30.12.14
✎
10:40
|
Сверни базу. Загрузи остатки в новую, потом удаляй, сколько влезет.
|
|||
2
Black Dragon
30.12.14
✎
10:47
|
свертка пока не нужна
|
|||
3
Black Dragon
30.12.14
✎
10:48
|
суть ВТ Обороты в рамках данной задачи будет заменять ОстаткиИОбороты?
|
|||
4
ktvladimir
30.12.14
✎
10:55
|
Регистратор и заказ составные то улучшит ситуацию приведение к типу
|
|||
5
Black Dragon
30.12.14
✎
10:56
|
тормозит именно из-за ОстаткиИОбороты
|
|||
6
polosov
30.12.14
✎
10:58
|
Я бы сделал что-нибудь такое.
Выбрать всех удаляемых собственников с добавлением поля Признак1 = "Х". ВЫбрать всех не удаляемых собственников с добавлением поля Признак1 = "У". Соединил Выбрал все ТЧ в разрезе документов. Левое соединение по собственнику. Если в группировке есть и Х и У - этот док не удаляем. Если только Х - удаляем. Как-то так. |
|||
7
Black Dragon
30.12.14
✎
10:59
|
(4) Регистратор.Владелец имеет очень много типов, практически невозможно
|
|||
8
Black Dragon
30.12.14
✎
11:00
|
(6) ТЧ доков формируются динамически из регистра, собственно
|
|||
9
Black Dragon
30.12.14
✎
11:00
|
по сути, в моем запросе это и реализовано
|
|||
10
Black Dragon
30.12.14
✎
11:05
|
сейчас сравниваю результат между запросами:
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ОстаткиОбороты1.Регистратор.Владелец КАК Документ, | ОстаткиОбороты1.Заказ КАК ЗаказНеУдалять, | ОстаткиОбороты1.Заказ.Собственник КАК Собственник, | ОстаткиОбороты2.Заказ.Собственник КАК ЧужойСобственник |ИЗ | РегистрНакопления.ОстаткиТоваров.ОстаткиИОбороты(, , Регистратор, , Заказ.Собственник = &Собственник) КАК ОстаткиОбороты1 | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.ОстаткиИОбороты(, , Регистратор, , ) КАК ОстаткиОбороты2 | ПО ОстаткиОбороты1.Регистратор.Владелец = ОстаткиОбороты2.Регистратор.Владелец | И ОстаткиОбороты1.Заказ.Собственник <> ОстаткиОбороты2.Заказ.Собственник"; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Обороты1.Регистратор.Владелец КАК Документ, | Обороты1.Заказ КАК ЗаказНеУдалять, | Обороты1.Заказ.Собственник КАК Собственник, | Обороты2.Заказ.Собственник КАК ЧужойСобственник |ИЗ | РегистрНакопления.ОстаткиТоваров.Обороты(, , Регистратор, , Заказ.Собственник = &Собственник) КАК Обороты1 | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Обороты(, , Регистратор, , ) КАК Обороты2 | ПО Обороты1.Регистратор.Владелец = Обороты2.Регистратор.Владелец | И Обороты1.Заказ.Собственник <> Обороты2.Заказ.Собственник"; |
|||
11
polosov
30.12.14
✎
11:16
|
(8) Ну дык предварительно выбери все документы по удаляемым собственникам.
Не тереби РН. |
|||
12
Black Dragon
30.12.14
✎
11:16
|
собственно, вот и результат, выходные данные идентичны, время выполнения в неск раз дольше у ОстаткиИОбороты
Всем спасибо за участие и разъяснения |
|||
13
Black Dragon
30.12.14
✎
11:32
|
(11) не все документы имеют реквизит Собственник, а только по регистру имеют связь через Заказ...вот так все печально(
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |