|
v8: Реестр существующих доков [так делать не надо] Ø (Волшебник 30.05.2013 16:40) | ☑ | ||
---|---|---|---|---|
0
Терминатор1С
30.05.13
✎
15:19
|
ДатаКон=ТекущаяДата(); //реквизиты на форме
ДатаНач=НачалоМесяца(ДатаКон); ТЗ=""; Для Каждого Мет Из Метаданные.Документы Цикл ДокВыборка = Документы[Мет.Имя].Выбрать(); Если ДокВыборка.Следующий() Тогда Если ТЗ<>"" Тогда ТЗ=ТЗ+" ОБЪЕДИНИТЬ ВСЕ "+Символы.ПС; КонецЕСли; ТЗ=ТЗ+" ВЫБРАТЬ """+Мет.Имя+""" КАК ДокументИмя, """+Мет.Синоним+""" КАК ДокументСиноним, "+1+" КАК КоличВсего, "+0+" КАК КоличВПериоде ИЗ Документ."+Мет.Имя; ТЗ=ТЗ+" ОБЪЕДИНИТЬ ВСЕ "+Символы.ПС; ТЗ=ТЗ+" ВЫБРАТЬ """+Мет.Имя+""" КАК ДокументИмя, """+Мет.Синоним+""" КАК ДокументСиноним, "+0+" КАК КоличВсего, "+1+" КАК КоличВПериоде ИЗ Документ."+Мет.Имя; Если (ДатаНач>'00010101')ИЛИ(ДатаКон>'00010101') Тогда ТЗ=ТЗ+" ГДЕ "; Если (ДатаНач>'00010101') Тогда ТЗ=ТЗ+" Документ."+Мет.Имя+".Дата >=&ДатаНач "; КонецЕСли; Если (ДатаНач>'00010101')И(ДатаКон>'00010101') Тогда ТЗ=ТЗ+" И "; КонецЕсли; Если (ДатаКон>'00010101') Тогда ТЗ=ТЗ+" Документ."+Мет.Имя+".Дата <=&ДатаКон "; КонецЕСли; КонецЕсли; КонецЕсли; КонецЦикла; //Сообщить(ТЗ); Запрос=Новый Запрос(ТЗ); ПараметрыЗапроса=Запрос.НайтиПараметры(); Для Каждого Параметр Из ПараметрыЗапроса Цикл //Сообщить(Параметр.Имя); Если Параметр.Имя="ДатаНач" Тогда Запрос.УстановитьПараметр("ДатаНач",НачалоДня(ДатаНач)); КонецЕсли; Если Параметр.Имя="ДатаКон" Тогда Запрос.УстановитьПараметр("ДатаКон",КонецДня(ДатаКон)); КонецЕсли; КонецЦикла; тбВидыДокументов=Новый ТаблицаЗначений; тбВидыДокументов=Запрос.Выполнить().Выгрузить(); Если тбВидыДокументов.Количество()>0 Тогда тбВидыДокументов.Свернуть("ДокументИмя,ДокументСиноним","КоличВсего,КоличВПериоде"); тбВидыДокументов.ВыбратьСтроку(); КонецЕсли; |
|||
1
MaxisUssr
30.05.13
✎
15:20
|
(0)
Похвастался? |
|||
2
Терминатор1С
30.05.13
✎
15:30
|
Как бы сделать что бы запрос возвращал итоговые записи без детальных
|
|||
3
Волшебник
30.05.13
✎
15:33
|
Пипец... Зачем запросом выбирать все документы из базы?
|
|||
4
Волшебник
30.05.13
✎
15:34
|
Почему бы в запросе не сделать так?
ВЫБРАТЬ Количество(*) ведь нужно только количество |
|||
5
zladenuw
30.05.13
✎
15:36
|
(0) а зачем еще и выборка по документу ? смысл ее ?
|
|||
6
Лефмихалыч
30.05.13
✎
15:37
|
а если база весит, например, 600ТБ, сколько лет будет этот реестр из базы высираться?
|
|||
7
RomanYS
30.05.13
✎
15:41
|
(0) делается (можно конструктором) текст запроса для одного документа (например "АвансовыйОтчет"), а потом
Запрос.Текст = Запрос.Текст + ?(ЗначениеЗаполнено(Запрос.Текст)," ОБЪЕДИНИТЬ ВСЕ ","") + СтрЗаменить(ТекстШаблона, "АвансовыйОтчет", Мет.Имя); и да все условия уже в шаблон, никаких предварительных выборок и проверок дат |
|||
8
Defender aka LINN
30.05.13
✎
15:41
|
+(6) И что он вообще будет символизировать?
|
|||
9
palpetrovich
30.05.13
✎
15:43
|
ник соответсвует ;)
|
|||
10
RomanYS
30.05.13
✎
15:49
|
(0) не обратил сначала внимания на установку параметров - это шедевр!
|
|||
11
Терминатор1С
30.05.13
✎
15:58
|
Исправил на Количество(*)
ДатаКон=ТекущаяДата(); //реквизиты на форме ДатаНач=НачалоМесяца(ДатаКон); ТЗ=""; Для Каждого Мет Из Метаданные.Документы Цикл ДокВыборка = Документы[Мет.Имя].Выбрать(); Если ДокВыборка.Следующий() Тогда Если ТЗ<>"" Тогда ТЗ=ТЗ+" ОБЪЕДИНИТЬ ВСЕ "+Символы.ПС; КонецЕСли; ТЗ=ТЗ+" ВЫБРАТЬ """+Мет.Имя+""" КАК ДокументИмя, """+Мет.Синоним+""" КАК ДокументСиноним, Количество(*) КАК КоличВсего, "+0+" КАК КоличВПериоде ИЗ Документ."+Мет.Имя; ТЗ=ТЗ+" ОБЪЕДИНИТЬ ВСЕ "+Символы.ПС; ТЗ=ТЗ+" ВЫБРАТЬ """+Мет.Имя+""" КАК ДокументИмя, """+Мет.Синоним+""" КАК ДокументСиноним, "+0+" КАК КоличВсего, Количество(*) КАК КоличВПериоде ИЗ Документ."+Мет.Имя; Если (ДатаНач>'00010101')ИЛИ(ДатаКон>'00010101') Тогда ТЗ=ТЗ+" ГДЕ "; Если (ДатаНач>'00010101') Тогда ТЗ=ТЗ+" Документ."+Мет.Имя+".Дата >=&ДатаНач "; КонецЕСли; Если (ДатаНач>'00010101')И(ДатаКон>'00010101') Тогда ТЗ=ТЗ+" И "; КонецЕсли; Если (ДатаКон>'00010101') Тогда ТЗ=ТЗ+" Документ."+Мет.Имя+".Дата <=&ДатаКон "; КонецЕСли; КонецЕсли; КонецЕсли; КонецЦикла; //Сообщить(ТЗ); Запрос=Новый Запрос(ТЗ); ПараметрыЗапроса=Запрос.НайтиПараметры(); Для Каждого Параметр Из ПараметрыЗапроса Цикл //Сообщить(Параметр.Имя); Если Параметр.Имя="ДатаНач" Тогда Запрос.УстановитьПараметр("ДатаНач",НачалоДня(ДатаНач)); КонецЕсли; Если Параметр.Имя="ДатаКон" Тогда Запрос.УстановитьПараметр("ДатаКон",КонецДня(ДатаКон)); КонецЕсли; КонецЦикла; тбВидыДокументов=Новый ТаблицаЗначений; тбВидыДокументов=Запрос.Выполнить().Выгрузить(); Если тбВидыДокументов.Количество()>0 Тогда тбВидыДокументов.Свернуть("ДокументИмя,ДокументСиноним","КоличВсего,КоличВПериоде"); тбВидыДокументов.ВыбратьСтроку(); КонецЕсли; |
|||
12
Терминатор1С
30.05.13
✎
16:00
|
(7) а если даты на форме будут не заполнены?
|
|||
13
Прыгун
30.05.13
✎
16:02
|
Убить автора на лету лопатой.
|
|||
14
Терминатор1С
30.05.13
✎
16:02
|
(10) где именно "шедевр"?
|
|||
15
Defender aka LINN
30.05.13
✎
16:05
|
(11) Прямо полегчало, да... Теперь у нас не кусок гуано, а кусок гуано со стразиком.
|
|||
16
Кир Пластелинин
30.05.13
✎
16:06
|
тему хорошо переименовали)
|
|||
17
Волшебник
30.05.13
✎
16:07
|
(11) Добавь ещё ИТОГИ
|
|||
18
Терминатор1С
30.05.13
✎
16:08
|
прям забросали какашками, нет что б подсказать конкретно
|
|||
19
Терминатор1С
30.05.13
✎
16:09
|
только САМ и помогает, остальные крутые
|
|||
20
salvator
30.05.13
✎
16:09
|
(0) О, то что надо, давно искал! Спасибо!!11
|
|||
21
Волшебник
30.05.13
✎
16:11
|
(18) как-то так:
Итоги = Новый Соответствие; Для Каждого Мет Из Метаданные.Документы Цикл Запрос.Текст = "Выбрать количество(*) как колво ИЗ Документ." + Мет.имя; выб = Запрос.Выполнить().Выбрать(); выб.следующий(); итоги[мет.Имя] = выб.колво; КонецЦикла; |
|||
22
Defender aka LINN
30.05.13
✎
16:12
|
(18) Что подсказать-то? Как получить число 42 в разрезе всей базы?
|
|||
23
Терминатор1С
30.05.13
✎
16:16
|
(22) допустим открываем реестр документов в торговле и хотим выбрать какие то виды документов, мы видим в том числе и те которые никогда не использовались, а мой реестр показывает только те которые использовались
|
|||
24
Defender aka LINN
30.05.13
✎
16:18
|
(23) Переводчик! В зале есть переводчик?
Какая практическая польза от этой твоей цифры? |
|||
25
RomanYS
30.05.13
✎
16:19
|
Шаблон =
"ВЫБРАТЬ | КОЛИЧЕСТВО(*) КАК КоличВсего, | ""_Синоним_"" КАК Синоним, | ""АвансовыйОтчет"" КАК ДокументИмя, | СУММА(ВЫБОР | КОГДА Док.Дата МЕЖДУ &Дата1 И &Дата2 | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ) КАК КоличВПериоде |ИЗ | Документ.АвансовыйОтчет КАК Док | |ИМЕЮЩИЕ | КОЛИЧЕСТВО(*) <> 0"; ТЗ = ""; Для каждого МДДок Из Метаданные.Документы Цикл Подзапрос = СтрЗаменить(Шаблон, "АвансовыйОтчет", МДДок.Имя); Подзапрос = СтрЗаменить(Подзапрос, "_Синоним_", МДДок.Синоним); ТЗ = ТЗ + ?(ЗначениеЗаполнено(ТЗ), Символы.ПС + "ОБЪЕДИНИТЬ ВСЕ" + Символы.ПС,"") + Подзапрос; КонецЦикла; Запрос = Новый Запрос(ТЗ); Запрос.УстановитьПараметр("Дата1",Дата1); Запрос.УстановитьПараметр("Дата2",Дата2); тбВидыДокументов=Запрос.Выполнить().Выгрузить(); тбВидыДокументов.ВыбратьСтроку(); |
|||
26
Терминатор1С
30.05.13
✎
16:22
|
(24) по этому реестру можно быстро оценить направление деятельности в незнакомой базе особенно если там используются редкие документы.
|
|||
27
MaxisUssr
30.05.13
✎
16:26
|
(26)
Может быть один документ, в котором 10000000 строк в ТЧ, и 1000 документов с одним реквизитом |
|||
28
shuhard
30.05.13
✎
16:27
|
(26) форум дружно поржал
|
|||
29
mikeA
30.05.13
✎
16:29
|
(26) открой для себя базопузомер )))
|
|||
30
Терминатор1С
30.05.13
✎
16:30
|
(26)предполагается что Дата1 и Дата2 реквизиты на форме и могут быть не установлены
|
|||
31
Лефмихалыч
30.05.13
✎
16:31
|
(30) для этих целей культурные люди СКД или на худой конец построитель используют
|
|||
32
Терминатор1С
30.05.13
✎
16:32
|
(29) владельцу джипа не нужен велик?
|
|||
33
Терминатор1С
30.05.13
✎
16:33
|
(31) Реестр документов в торговле сделан на СКД?
|
|||
34
Лефмихалыч
30.05.13
✎
16:34
|
(24) ну как?.. открываешь, а там - татататам-татам - одна и та же херня, которую ты уже видет в 100499 других утэшках. Видишь и понимаешь - все по плану.
|
|||
35
Лефмихалыч
30.05.13
✎
16:34
|
(33) ты ни хрена не понял...
|
|||
36
Defender aka LINN
30.05.13
✎
16:36
|
(26) А, точно. В ЗУПе я увижу 100500 документов "Начисление заработной платы", глубокомысленно обдумаю эту информацию и сделаю неопровержимый вывод - в этой базе начисляют людям зарплату!
|
|||
37
Терминатор1С
30.05.13
✎
16:39
|
(36) Господа модераторы удалите тему плиз Defender'у aka LINN эта обработка не нужна
|
|||
38
Терминатор1С
30.05.13
✎
16:40
|
пошёл я дальше делать то что не надо
|
|||
39
Лефмихалыч
30.05.13
✎
16:41
|
(37),(38) на, держи, ты потерял: ,, - !
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |