|
выбор документов, не делающих движения в определенном регистре | ☑ | ||
---|---|---|---|---|
0
zhabakot
09.10.15
✎
09:23
|
Доброго дня суток! В отчете необходимо подсчитать количество документов, которые не делают движений в регистре Хозрасчетный. Как это сделать? Делаю обходом метаданных, он считает все документы, а как убрать ненужные мне?
|
|||
1
aka AMIGO
09.10.15
✎
09:27
|
(0) плохоньки, но вариант: Выбрать движения всех документов по регистрам в некую табличку, и проанализировать её
|
|||
2
aka AMIGO
09.10.15
✎
09:28
|
* плохоньки = плохонький
|
|||
3
aleks_default
09.10.15
✎
09:31
|
(1) Че? Полбазы выбрать в табличку? Ну-ну...
|
|||
4
aka AMIGO
09.10.15
✎
09:32
|
(3) выбирать не сами движения, а факт их наличия.
|
|||
5
ДенисЧ
09.10.15
✎
09:32
|
которые не длают в принципе, или которые могут, но не сделали?
|
|||
6
aka AMIGO
09.10.15
✎
09:34
|
(5) которые могут, но не сделали? это, пожалуй, маловероятно..
|
|||
7
zhabakot
09.10.15
✎
09:36
|
(5) , которые не делают вообще, документы, которые не являются регистраторами для этого регистра
|
|||
8
aleks_default
09.10.15
✎
09:37
|
(7)WTF?
|
|||
9
SiAl-chel
09.10.15
✎
09:38
|
(0) Ничего сложного, работы максимум на час.
1. Через перебор метаданных выбрать те виды документов, которые могут делать движения по регистру Хозрастченый. 2. С помощью конкатенации строк создать запрос с соединениями виртуальной таблицы оборотов регистра и таблиц документов, в которых проверять наличие регистратора в виртуальной таблице регистра Хозрасчетный. |
|||
10
ДенисЧ
09.10.15
✎
09:38
|
(7) Тогда по метаданным.
|
|||
11
aleks_default
09.10.15
✎
09:40
|
Но зачем такую хрень делать?
|
|||
12
aka AMIGO
09.10.15
✎
09:41
|
||||
13
zhabakot
09.10.15
✎
09:52
|
(9) "2. С помощью конкатенации строк создать запрос с соединениями виртуальной таблицы оборотов регистра и таблиц документов, в которых проверять наличие регистратора в виртуальной таблице регистра Хозрасчетный." пожалуйста, можно поподробнее?
|
|||
14
aka AMIGO
09.10.15
✎
09:54
|
Часть кода (7.7!)
Для у=1 По Метаданные.Регистр() Цикл ТР = Метаданные.Регистр(у).Идентификатор; Рег = СоздатьОбъект("Регистр."+ТР); Если Рег.ВыбратьДвиженияДокумента(ТекДок)=1 Тогда Конк = ""+ТекДок.Вид()+ТР; СтрТЗ=0; ТЗ.НайтиЗначение(Конк,СтрТЗ,"Конк"); Если СтрТЗ=0 Тогда ТЗ.НоваяСтрока(); ТЗ.ВидДока = ТекДок.Вид(); Если Рег.Приход = 1 Тогда ТЗ.Знак = "(+)"; ИначеЕсли Рег.Расход = 1 Тогда ТЗ.Знак = "(--)"; Иначе ТЗ.Знак=""; КонецЕсли; ТЗ.СчРег = "Регистр"; ТЗ.Дт = ТР; ТЗ.Кт = ""; ТЗ.Конк = Конк; //""+ТекДок.Вид()+ТР; СтрТЗ = ТЗ.НомерСтроки; КонецЕсли; КонецЕсли; КонецЦикла; |
|||
15
aka AMIGO
09.10.15
✎
09:55
|
+14 вот такой Г-код (с бооольшой буквы Г :) )
|
|||
16
SiAl-chel
12.10.15
✎
12:30
|
(13) "Более подробно", чем в (9), - это написать весь код за тебя.
|
|||
17
ДенисЧ
12.10.15
✎
12:31
|
(14) а что, ТЗ прочитать никак было?
|
|||
18
Ринат-СПб
12.10.15
✎
14:21
|
Примерно так (накидал за 10 минут за кружкой чая)
Запрос = Новый Запрос; Текст = "ВЫБРАТЬ | ВложенныйЗапрос.Ссылка |ИЗ | ("; Первое = Истина; Для Каждого Мета Из Метаданные.Документы Цикл Если Мета.Движения.Содержит(Метаданные.РегистрыБухгалтерии.Хозрасчетный)Тогда Сообщить(Мета.Имя); Если Не Первое Тогда Текст = Текст + " | ОБЪЕДИНИТЬ ВСЕ |"; КонецЕсли; Текст = Текст + "ВЫБРАТЬ | Док.Ссылка КАК Ссылка | ИЗ | Документ." +Мета.Имя +" КАК Док" ; Первое = Ложь; КонецЕсли; КонецЦикла; Текст = Текст + ") КАК ВложенныйЗапрос |ГДЕ | НЕ ВложенныйЗапрос.Ссылка В | (ВЫБРАТЬ | Хозрасчетный.Регистратор КАК Ссылка | ИЗ | РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный)"; Запрос.Текст = Текст; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |