|
Помогите с запросом | ☑ | ||
|---|---|---|---|---|
|
0
KENT2007
08.07.12
✎
08:42
|
Есть выборка договоров
ВЫБРАТЬ ДоговорыКонтрагентов.Владелец.Родитель.Наименование КАК Группа, ДоговорыКонтрагентов.Номер КАК НомерРоллета, ДоговорыКонтрагентов.Владелец КАК ФИО, ДоговорыКонтрагентов.Наименование КАК НаименованиеУслуги, СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотДт) КАК СуммаОборотДт, СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт) КАК СуммаОборотКт ИЗ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Начало, &Конец, , , Счет В ИЕРАРХИИ (&Счет62), , ) КАК ХозрасчетныйОстаткиИОбороты ПО (ХозрасчетныйОстаткиИОбороты.Субконто2 = ДоговорыКонтрагентов.Ссылка) СГРУППИРОВАТЬ ПО ДоговорыКонтрагентов.Владелец.Родитель.Наименование, ДоговорыКонтрагентов.Владелец, ДоговорыКонтрагентов.Номер, ДоговорыКонтрагентов.Наименование УПОРЯДОЧИТЬ ПО Группа, НомерРоллета ИТОГИ СУММА(СуммаОборотДт), СУММА(СуммаОборотКт) ПО ОБЩИЕ, Группа АВТОУПОРЯДОЧИВАНИЕ |
|||
|
1
KENT2007
08.07.12
✎
08:43
|
как сортировать номера договоров если номер это строка которая содержит симоволы 54-56 ...
ВЫБРАТЬ ВЫБОР КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 1, 1) = "1" ТОГДА 1 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 1, 1) = "2" ТОГДА 2 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 1, 1) = "3" ТОГДА 3 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 1, 1) = "4" ТОГДА 4 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 1, 1) = "5" ТОГДА 5 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 1, 1) = "6" ТОГДА 6 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 1, 1) = "7" ТОГДА 7 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 1, 1) = "8" ТОГДА 8 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 1, 1) = "9" ТОГДА 9 ИНАЧЕ "" КОНЕЦ КАК Символ1, ВЫБОР КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 2, 1) = "1" ТОГДА 1 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 2, 1) = "2" ТОГДА 2 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 2, 1) = "3" ТОГДА 3 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 2, 1) = "4" ТОГДА 4 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 2, 1) = "5" ТОГДА 5 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 2, 1) = "6" ТОГДА 6 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 2, 1) = "7" ТОГДА 7 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 2, 1) = "8" ТОГДА 8 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 2, 1) = "9" ТОГДА 9 ИНАЧЕ "" КОНЕЦ КАК Символ2, ВЫБОР КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 3, 1) = "1" ТОГДА 1 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 3, 1) = "2" ТОГДА 2 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 3, 1) = "3" ТОГДА 3 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 3, 1) = "4" ТОГДА 4 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 3, 1) = "5" ТОГДА 5 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 3, 1) = "6" ТОГДА 6 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 3, 1) = "7" ТОГДА 7 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 3, 1) = "8" ТОГДА 8 КОГДА ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 3, 1) = "9" ТОГДА 9 ИНАЧЕ "" КОНЕЦ КАК Символ3 ПОМЕСТИТЬ ИЗ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов; |
|||
|
2
rphosts
08.07.12
✎
09:04
|
>как сортировать номера договоров если номер это строка которая содержит симоволы 54-56
может так: если номер договора - подстрока с 54 по 56 позиции реквизита ДоговорыКонтрагентов.Номер? Или ещё как-то по другому? Сортировать как? Как строку или как числовое представление строки? |
|||
|
3
KENT2007
08.07.12
✎
09:21
|
как строку не получается
|
|||
|
4
KENT2007
08.07.12
✎
09:22
|
ВЫБОР
КОГДА ДоговорыКонтрагентов.Номер = (ВЫРАЗИТЬ(ДоговорыКонтрагентов.Номер КАК СТРОКА(1))) ТОГДА 1 КОГДА ДоговорыКонтрагентов.Номер = (ВЫРАЗИТЬ(ДоговорыКонтрагентов.Номер КАК СТРОКА(2))) ТОГДА 2 КОГДА ДоговорыКонтрагентов.Номер = (ВЫРАЗИТЬ(ДоговорыКонтрагентов.Номер КАК СТРОКА(3))) ТОГДА 3 КОГДА ДоговорыКонтрагентов.Номер = (ВЫРАЗИТЬ(ДоговорыКонтрагентов.Номер КАК СТРОКА(4))) ТОГДА 4 КОГДА ДоговорыКонтрагентов.Номер = (ВЫРАЗИТЬ(ДоговорыКонтрагентов.Номер КАК СТРОКА(5))) ТОГДА 5 КОГДА ДоговорыКонтрагентов.Номер = (ВЫРАЗИТЬ(ДоговорыКонтрагентов.Номер КАК СТРОКА(6))) ТОГДА 6 КОГДА ДоговорыКонтрагентов.Номер = (ВЫРАЗИТЬ(ДоговорыКонтрагентов.Номер КАК СТРОКА(7))) ТОГДА 7 КОГДА ДоговорыКонтрагентов.Номер = (ВЫРАЗИТЬ(ДоговорыКонтрагентов.Номер КАК СТРОКА(8))) ТОГДА 8 КОГДА ДоговорыКонтрагентов.Номер = (ВЫРАЗИТЬ(ДоговорыКонтрагентов.Номер КАК СТРОКА(9))) ТОГДА 9 КОГДА ДоговорыКонтрагентов.Номер = (ВЫРАЗИТЬ(ДоговорыКонтрагентов.Номер КАК СТРОКА(10))) ТОГДА 10 КОГДА ДоговорыКонтрагентов.Номер = (ВЫРАЗИТЬ(ДоговорыКонтрагентов.Номер КАК СТРОКА(11))) ТОГДА 11 КОГДА ДоговорыКонтрагентов.Номер = (ВЫРАЗИТЬ(ДоговорыКонтрагентов.Номер КАК СТРОКА(12))) ТОГДА 12 КОГДА ДоговорыКонтрагентов.Номер = (ВЫРАЗИТЬ(ДоговорыКонтрагентов.Номер КАК СТРОКА(13))) ТОГДА 13 КОНЕЦ |
|||
|
5
rphosts
08.07.12
✎
09:30
|
>как строку не получается
в смысле? создаёшь вычислимое поле: ПОДСТРОКА(ДоговорыКонтрагентов.Номер, 54, 3) и сортируй по нему... или если у него длина менее 3 символов - дополняй пробелами справа. |
|||
|
6
DrShad
08.07.12
✎
09:34
|
и неплохо было бы ограничить выборку из таблицы остатков одним субконто
|
|||
|
7
KENT2007
08.07.12
✎
09:38
|
может попутно с обработкой поможете
нужно выбрать первые 7 символов из наменования договора сделать группу и переместить договор в группу договора |
|||
|
8
DrShad
08.07.12
✎
09:41
|
а че там помогать? что именно у тебя не получается?
|
|||
|
9
KENT2007
08.07.12
✎
09:45
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
ВоборкаСправочников = Справочники.ДоговорыКонтрагентов.Выбрать(); Пока ВоборкаСправочников.Следующий() Цикл ИмяДог=строка(ВоборкаСправочников.Наименование,7,1); Конеццикла; КонецПроцедуры |
|||
|
10
KENT2007
08.07.12
✎
09:45
|
строку небось не так отсечь?
|
|||
|
11
DrShad
08.07.12
✎
09:46
|
ЛЕВ()
|
|||
|
12
KENT2007
08.07.12
✎
09:49
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
ВоборкаСправочников = Справочники.ДоговорыКонтрагентов.Выбрать(); Пока ВоборкаСправочников.Следующий() Цикл ИмяДог=ЛЕВ(ВоборкаСправочников.Наименование,7); ГруппаДог=Справочники.ДоговорыКонтрагентов.СоздатьГруппу(); ГруппаДог.Наименование=ИмяДог; Конеццикла; КонецПроцедуры |
|||
|
13
KENT2007
08.07.12
✎
09:50
|
а как терь переместить договор в эту грппу при условии что могут быть разные договора
|
|||
|
14
rphosts
08.07.12
✎
09:50
|
(11) лучше Подстрока() прямо в запросе и сортировать по нему
|
|||
|
15
rphosts
08.07.12
✎
09:51
|
>а как терь переместить договор в эту грппу при условии что могут быть разные договора
вам какие-то итоги по группе нужны или сортировка по группе а в группе по договору? |
|||
|
16
DrShad
08.07.12
✎
09:52
|
(14) тогда уж и группировать по нему, а потом обходом по группировке присваивать Родителя
|
|||
|
17
KENT2007
08.07.12
✎
09:53
|
(15) итоги по группам договоров с сортировкой по номеру
|
|||
|
18
rphosts
08.07.12
✎
09:54
|
(16) есесьно, пусть запрос делает всё что ему возможно перепоручить! Для того язык запросов и придумали!!!
|
|||
|
19
KENT2007
08.07.12
✎
09:56
|
может кто напишет обрзаец, опыта программить нет
|
|||
|
20
rphosts
08.07.12
✎
10:00
|
(17) вычислимое поле Подстрока(ЧегоТоТам.НомерДоговора,1,7) как ГрупповоеПоле
>итоги по группам договоров настроить на закладке итоги построителя запросов. >с сортировкой по номеру сортировать по ГрупповоеПоле, ЧегоТоТам.НомерДоговора или вместо ЧегоТоТам.НомерДоговора использовать сортровку по Подстрока(ЧегоТоТам.НомерДоговора,54,3) и ещё, старайтесь никогда не использовать в качестве имён полей столбцов таблиц и переменных - предопределённые имена (как Группа из (1)). |
|||
|
21
rphosts
08.07.12
✎
10:06
|
(19) ну ты халявщик!
Запрос = Новый Запрос("ВЫБРАТЬ | РеализацияТоваров.Ссылка, | РеализацияТоваров.Контрагент КАК Контрагент, | РеализацияТоваров.СуммаДокумента КАК СуммаДокумента |ИЗ | Документ.РеализацияТоваров КАК РеализацияТоваров |ИТОГИ | СУММА(СуммаДокумента) |ПО | Контрагент"); Результат = Запрос.Выполнить(); ВыборкаКонтрагент = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаКонтрагент.Следующий() Цикл Сообщить("ИТОГИ."+ВыборкаКонтрагент.Контрагент.Наименование+" "+ВыборкаКонтрагент.Ссылка+" "+ВыборкаКонтрагент.СуммаДокумента); ВыборкаДок = ВыборкаКонтрагент.Выбрать(); Пока ВыборкаДок.Следующий() Цикл Сообщить("ДЕТАЛИ. "+ВыборкаДок.Ссылка+" "+ВыборкаДок.СуммаДокумента); КонецЦикла; КонецЦикла; |
|||
|
22
KENT2007
08.07.12
✎
10:09
|
спасибо
но что то ошибка {Форма.Форма.Форма(15)}: Ошибка при вызове метода контекста (Выполнить) Результат = Запрос.Выполнить(); |
|||
|
23
KENT2007
08.07.12
✎
10:11
|
а вот то что я написал
Процедура КнопкаВыполнитьНажатие(Кнопка) ВоборкаСправочников = Справочники.ДоговорыКонтрагентов.Выбрать(); Пока ВоборкаСправочников.Следующий() Цикл ИмяДог=ЛЕВ(ВоборкаСправочников.Наименование,7); ГруппаДог=Справочники.ДоговорыКонтрагентов.СоздатьГруппу(); ГруппаДог.Наименование=ИмяДог; ГруппаДог.Владелец=ВоборкаСправочников.Родитель.Наименование; Если ИмяДог = ГруппаДог тогда ГруппаДог.Родитель= ГруппаДог ; иначе ГруппаДог.Записать(); КонецЕсли Конеццикла; КонецПроцедуры это бред? |
|||
|
24
rphosts
08.07.12
✎
10:16
|
если УФ, то код делится на клиентский (гдеотрабатывают клавиатурномышечные клики) и серверный (со всеми обращениями к ИБ)
|
| Форум | Правила | Описание | Секции | Поиск |