|
v7: помогите с поиском по документам | ☑ | ||
---|---|---|---|---|
0
bahan
01.02.12
✎
10:12
|
Привет всем.
Помогите пожалуйста с поиском по документам. Нужно найти в разных документах одинаковые ФИО и по ним отобразить за определенный период ДатаДок и Док.Вид. Вобщем есть документ подключение и есть документ отключение. Вот по этим двум видам документа и нужно произвести поиск и засунуть все в отчет. Что сделал <code> Док=СоздатьОбъект("Документ.Подключение"); Док1=СоздатьОбъект("Документ.Отключение"); Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода); Док1.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода); Док.ВыбратьСтроки(); Док1.ВыбратьСтроки(); Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); Таб.ВывестиСекцию("Заголовок"); Пока (Док.ПолучитьДокумент()>0) или (Док1.ПолучитьДокумент()>0) Цикл абонент=Док.ФИО; абонент1=Док1.ФИО; Дат=Док.ДатаДок; Вид=Док.Вид(); Дат1=Док1.ДатаДок; Вид1=Док1.Вид(); Таб.ВывестиСекцию("Строка1"); Таб.Опции(0,0,0,0); Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать",""); </code> В этом случае все документы с датами и ФИО выводит в отчет. Как теперь сделать что требуется? Помогите пожалуйста по 1с ни бэ ни мэ). |
|||
1
1Сергей
01.02.12
✎
10:14
|
Док.ФИО - это строка или чо?
|
|||
2
bahan
01.02.12
✎
10:14
|
это реквизит
|
|||
3
Эльниньо
01.02.12
✎
10:19
|
(2) Тип реквизита?
|
|||
4
1Сергей
01.02.12
✎
10:21
|
(2) спасибо, КЭП :)
|
|||
5
bahan
01.02.12
✎
10:21
|
свойствах документа посмотрел там написано что тип значения - справочник.клиенты, идентификатор - ФИО
|
|||
6
Волесвет
01.02.12
✎
10:24
|
в таблицу значений выбираемые данные помещай, сортируй и выводи
|
|||
7
1Сергей
01.02.12
✎
10:24
|
(5) тогда запрос с группировкой по фио
|
|||
8
bahan
01.02.12
✎
10:33
|
вот делал запрос вот такой
<code> Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с Дата1 по Дата2; |ФИО = Документ.Отключение.ФИО; |ДатаДок = Документ.Отключение.ДатаДок; |ФИО1 = Документ.Подключение.ФИО; |ДатаДок1 = Документ.Отключение.ДатаДок; |Отключение = Документ.Отключение.ТекущийДокумент; |Подключение = Документ.Подключение.ТекущийДокумент; |Группировка ФИО; |Группировка ФИО1; |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Пока Запрос.Группировка(1) = 1 Цикл Пока Запрос.Группировка(2) = 1 Цикл ФИО = запрос.ФИО; ФИО1 = запрос.ФИО1; ДатаДок = запрос.ДатаДок; ДатаДок1= запрос.ДатаДок1; Вид = запрос.Подключение; Вид1 = запрос.Отключение; </code> И не работает. Киньте примером пожалуйста. И при таком запросе никаких данных не выдает. И все равно не понимаю как мне в отчет вывести такую конструкцию ФИО - Дата отключения - Дата подключения |
|||
9
Дядя Васька
01.02.12
✎
10:35
|
(8) Хфункцию добавь, заработает...
|
|||
10
bahan
01.02.12
✎
10:36
|
Енто как)? просто я по книжке пытаюсь что нибудь сделать. Что за функция?
|
|||
11
1Сергей
01.02.12
✎
10:37
|
(9) не нужна там функция
|
|||
12
1Сергей
01.02.12
✎
10:38
|
|Период с Дата1 по Дата2;
|ФИО = Документ.Отключение.ФИО, Документ.Подключение.ФИО; |Док = Документ.Отключение.ТекущийДокумент, Документ.Подключение.ТекущийДокумент; |Группировка ФИО; |
|||
13
1Сергей
01.02.12
✎
10:39
|
+ Группировка Документ;
|
|||
14
bahan
01.02.12
✎
10:40
|
Секундочку, щас попробую.
|
|||
15
bahan
01.02.12
✎
10:44
|
Т.е. мне нужно этот запрос вставить в цикл?
<code> Пока (Док.ПолучитьДокумент()>0) или (Док1.ПолучитьДокумент()>0) Цикл КонецЦикла; </code> и в конце запроса вставить? <code> Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с Дата1 по Дата2; |ФИО = Документ.Отключение.ФИО, Документ.Подключение.ФИО; |Док = Документ.Отключение.ТекущийДокумент, Документ.Подключение.ТекущийДокумент; |Группировка ФИО; |Группировка Док; </code> |
|||
16
Эльниньо
01.02.12
✎
10:44
|
Пока (Док.ПолучитьДокумент()>0) или (Док1.ПолучитьДокумент()>0) Цикл
Если Док.ФИО = ВыбКлиент Тогда Продолжить; КонецЕсли; абонент=Док.ФИО; абонент1=Док1.ФИО; Дат=Док.ДатаДок; |
|||
17
1Сергей
01.02.12
✎
10:49
|
(15) запрос в цикл не надо. надо двумя циклами перебрать группировки зароса
|
|||
18
bahan
01.02.12
✎
11:10
|
Почему то при таком раскладе выдает в отчете одну и туже инфу
<code> Перем ТекДок; Перем ТекДок1; Перем Дат; Перем Дат1; Перем ФИО; Перем абонент; Перем абонент1; Перем ВыбКлиент; Процедура Сформировать() Док=СоздатьОбъект("Документ.Подключение"); Док1=СоздатьОбъект("Документ.Отключение"); Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода); Док1.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода); Док.ВыбратьСтроки(); Док1.ВыбратьСтроки(); Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); Таб.ВывестиСекцию("Заголовок"); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |ФИО = Документ.Отключение.ФИО, Документ.Подключение.ФИО; |Док = Документ.Отключение.ТекущийДокумент,Документ.Подключение.ТекущийДокумент; |Дат = Документ.Отключение.ДатаДок,Документ.Подключение.ДатаДок; |Группировка ФИО; |Группировка Док; |"//}}ЗАПРОС ; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Пока (Док.ПолучитьДокумент()>0) или (Док1.ПолучитьДокумент()>0) Цикл Пока Запрос.Группировка(1) = 1 Цикл Пока Запрос.Группировка(2) = 1 Цикл абонент= запрос.ФИО; Дат=запрос.Дат; Вид=запрос.Док; КонецЦикла; КонецЦикла; Таб.ВывестиСекцию("Строка1"); Таб.Опции(0,0,0,0); Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать",""); </code> Т.е. в отчете ФИО Дата подкл Вид документа ФИО Дата откл. Вид документа И.И.Иванов 01.03.09 подключение И.И.Иванов 01.03.09 подключение |
|||
19
1Сергей
01.02.12
✎
11:14
|
(18) пилять... ну и каша...
апрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |ФИО = Документ.Отключение.ФИО, Документ.Подключение.ФИО; |Док = Документ.Отключение.ТекущийДокумент,Документ.Подключение.ТекущийДокумент; |Группировка ФИО; |Группировка Док; |"//}}ЗАПРОС ; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Пока Запрос.Группировка(1) = 1 Цикл Пока Запрос.Группировка(2) = 1 Цикл абонент= запрос.ФИО; Дат=запрос.Док.ДатаДок; Вид=запрос.Док; Таб.ВывестиСекцию("Строка1"); КонецЦикла; КонецЦикла; |
|||
20
bahan
01.02.12
✎
11:17
|
Простите, я только учусь)
|
|||
21
bahan
01.02.12
✎
11:28
|
Почему не выдает никаких данных
|
|||
22
bahan
01.02.12
✎
11:28
|
забыл добавить "то"
|
|||
23
bahan
01.02.12
✎
11:35
|
Сори, забыл в конце вставить
<code> Таб.Опции(0,0,0,0); Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать",""); </code> Клево работает запрос. Только вот почему то все равно выдает в отчете <code> ФИО Дата подкл Вид документа ФИО Дата откл. Вид документа И.И.Иванов 01.03.09 подключение И.И.Иванов 01.03.09 подключение </code> а должен <code> ФИО Дата подкл Вид документа ФИО Дата откл. Вид документа И.И.Иванов 01.03.09 отключение И.И.Иванов 21.03.09 подключение </code> |
|||
24
bahan
01.02.12
✎
11:45
|
Все, разобрался, туплю жестко)
|
|||
25
bahan
01.02.12
✎
11:45
|
Копипастить нужно с умом)
|
|||
26
palpetrovich
01.02.12
✎
11:49
|
(16) это что? это как, где такое? :)
|
|||
27
bahan
01.02.12
✎
11:54
|
это в отчете выдавало
|
|||
28
bahan
01.02.12
✎
12:31
|
Огромное спасибо ребят что откликнулись.
Но отчет все таки не работает как хотелось бы при таком раскладе. <code> Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |ФИО = Документ.Отключение.ФИО, Документ.Подключение.ФИО; |Док = Документ.Отключение.ТекущийДокумент,Документ.Подключение.ТекущийДокумент; |Группировка ФИО; |Группировка Док; |"//}}ЗАПРОС ; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Пока Запрос.Группировка(1) = 1 Цикл Пока Запрос.Группировка(2) = 1 Цикл абонент= запрос.ФИО; Дат=запрос.Док.ДатаДок; Вид=запрос.Док; Таб.ВывестиСекцию("Строка1"); КонецЦикла; КонецЦикла; </code> группировка работает по фамилии, но в отчете в полях выводит вот так ФИО Дата откл Вид документа ФИО Дата подкл. Вид документа И.И.Иванов 01.03.09 подключение И.И.Иванов 01.03.09 подключение а должен ФИО Дата откл. Вид документа ФИО Дата подкл. Вид документа И.И.Иванов 01.03.09 отключение И.И.Иванов 21.03.09 подключение |
|||
29
Cthulhu
01.02.12
✎
12:55
|
Почему-то сильно кажется, что графа отбора "ПодклОтклФИО" типа "Справочник.Клиенты", включающая в свой состав реквизиты "ФИО" документов "Подключение" и "Отключение" - будет весьма не лишней. Тогда решение и этой задачи, и многих других - сильно упростятся.
|
|||
30
bahan
01.02.12
✎
12:59
|
а где эту графу отбора нужно создать?
|
|||
31
bahan
01.02.12
✎
13:47
|
Ну ребят, помогите пожалуйста!
|
|||
32
Ёпрст
01.02.12
✎
13:51
|
(30) она тебе не нужна, если что, запрос в том виде в каком ты хочешь табличку тебе не выведет - только либо докм обоих видов в перемежку по позиции документа, или отсортированные по виду документа (если в тексте запроса попросишь).
А так, проще прямой запрос и full join или извращаться с тем что есть, с помощью ТЗ, например |
|||
33
Cthulhu
01.02.12
✎
13:53
|
(30): в конфигураторе.
(32): либо две выборки в ТЗ с проходом по одной и поиском по другой. либо два запроса с проходом по одному и попыткой "брать" из результата выполнения второго либо - да! - прямой запрос с джойном. |
|||
34
bahan
01.02.12
✎
13:55
|
а прямой запрос с джойном это как?
|
|||
35
Ёпрст
01.02.12
✎
14:01
|
либо..2 чорных запроса (по каждому виду документов - отдельно)
+ общий цикл + ПечДок1=""; Если Запрос1.Группировка()=1 Тогда ПечДок1 = Запрос1.Док; КонецЕсли; Таб.ВывестиСекцию("Документ|Док1"); ПечДок1=""; Если Запрос1.Группировка()=1 Тогда ПечДок1 = Запрос1.Док; КонецЕсли; Таб.ВывестиСекцию("Документ|Док1"); ПечДок2=""; Если Запрос2.Группировка()=1 Тогда ПечДок2 = Запрос2.Док; КонецЕсли; Таб.ПрисоединитьСекцию("Документ|Док2"); |
|||
36
bahan
01.02.12
✎
15:11
|
уф, все равно не могу понять. Неужели я такой тупой(
Ёпрст4, что означает общий цикл? Это в общий цикл занести нужно? И что такое ПечДок1 и ПечДок2? |
|||
37
bahan
01.02.12
✎
15:12
|
в смысле перед циклами группировки?
|
|||
38
Ёпрст
01.02.12
✎
15:20
|
да любой цикл, пока хотя бы одна из выборок что-то возвращает.
|
|||
39
bahan
01.02.12
✎
15:25
|
а, понятно. Т.е. я должен сейчас создать два запроса, один например на вид документа подключение, другой на вид документа отключение? И через циклы группировок выбирать от туда данные?
|
|||
40
Ёпрст
01.02.12
✎
15:29
|
(39) какой догадливый однако :)
|
|||
41
bahan
01.02.12
✎
15:30
|
)
|
|||
43
bahan
01.02.12
✎
15:35
|
крутая помощи однако)))
Епрст4 получилась вот такая вот херня. Выдает только ФИО, Дату и документ отключение. Документ подключение не отдает и что с ним связано. <code> Процедура Сформировать() Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); Таб.ВывестиСекцию("Заголовок"); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |ФИО = Документ.Отключение.ФИО; |Док = Документ.Отключение.ТекущийДокумент; |Группировка ФИО; |Группировка Док; |"//}}ЗАПРОС ; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Запрос1 = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС1(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |ФИО1 = Документ.Подключение.ФИО; |Док1 = Документ.Подключение.ТекущийДокумент; |Группировка ФИО1; |Группировка Док1; |"//}}ЗАПРОС ; Если Запрос1.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Пока Запрос.Группировка(1) = 1 Цикл Пока Запрос.Группировка(2) = 1 Цикл абонент1= запрос.ФИО; Дат1=запрос.Док.ДатаДок; Вид1=запрос.Док; Таб.ВывестиСекцию("Строка1"); КонецЦикла; КонецЦикла; Пока Запрос1.Группировка(1) = 1 Цикл Пока Запрос1.Группировка(2) = 1 Цикл абонент= запрос.ФИО; Дат=запрос.Док.ДатаДок; Вид=запрос.Док; Таб.ВывестиСекцию("Строка1"); КонецЦикла; КонецЦикла; Таб.Опции(0,0,0,0); Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать",""); КонецПроцедуры </code> |
|||
44
Ёпрст
01.02.12
✎
15:36
|
(43) не угадал
:( |
|||
45
bahan
01.02.12
✎
16:30
|
Что то со сложными запросами нифига не получается(
|
|||
46
bahan
01.02.12
✎
17:14
|
а почему когда в запросе ставишь условие запрос не вытаскивает данные? 1С что тупо пробегает с верху вниз по данным что ли?
ФИО=Документ.Отключение.ФИО ФИО1=Документ.Подключение.ФИО Условие ФИО=ФИО1 |
|||
47
Ёпрст
01.02.12
✎
17:26
|
(46) он просто не умеет ругаться матом на такой текст запроса - тупо обижается и ничего не возвращает
|
|||
48
viktor_vv
01.02.12
✎
17:28
|
Пока Запрос1.Группировка(1) = 1 Цикл
Пока Запрос1.Группировка(2) = 1 Цикл абонент= запрос1.ФИО; Дат=запрос1.Док1.ДатаДок; Вид=запрос1.Док1; Таб.ВывестиСекцию("Строка1"); КонецЦикла; КонецЦикла; Копипаст зло :). |
|||
49
viktor_vv
01.02.12
✎
17:29
|
(48)* абонент= запрос1.ФИО1;
Вообще-то должен был долго и нудно ругаться при выводе. |
|||
50
viktor_vv
01.02.12
✎
17:31
|
(49)+ А вижу, ругаться не должен был.
|
|||
51
bahan
01.02.12
✎
17:34
|
да я уже тупею на глазах, уже скопипастить не могу правильно)
|
|||
52
Босечка
01.02.12
✎
17:42
|
(0) Если не хочешь черный запрос,
создаешь 2 таблицы значений Док=СоздатьОбъект("Документ"); Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода); ПОка Док.ПолучитьДокумент()=1 цикл Если Док.Вид()="Подключение" тогда Т1.НоваяСтрока(); Т1.ФИО=Док.ФИО; Т1.Докум=Док; иначеЕсли Док.Вид()="Отключение" тогда Т2.НоваяСтрока(); Т2.ФИО=Док.ФИО; Т2.Докум=Док; Конецесли; Конеццикла; Потом обходишь одну из них и ищешь Т1.ФИО и т.д. |
|||
53
palpetrovich
01.02.12
✎
17:48
|
(16) сорьки, в (16) - это стеб оказывается :)
(51) на один док "Подключение" может быть один док "Отключение" и его надо найти для однго и того-же ФИО? |
|||
54
bahan
01.02.12
✎
18:17
|
ага
|
|||
55
Cthulhu
01.02.12
✎
18:25
|
// как-то так ещё можно попробовать... навскидку...
...=; |Период с ВыбНачПериода по ВыбКонПериода; |ДокВкл=Документ.Подключение; ФиоВкл=Документ.Подключение.ФИО; |ДокОткл=Документ.Отключение; ФиоОткл=Документ.Отключение.ФИО; |Группировка ДокВкл; Группировка ДокОткл; Условие(ФиоВкл=ФиоОткл);"; |
|||
56
viktor_vv
01.02.12
✎
18:37
|
Скорее так.
...=; |Период с ВыбНачПериода по ВыбКонПериода; |Док=Документ.Подключение.ТекущийДокумент,Документ.Отключение.ТекущийДокумент; |ФИО=Документ.Подключение.ФИО,Документ.Отключение.ФИО; |Группировка ФИО; |Группировка Док; "; |
|||
57
Trushc
01.02.12
✎
18:44
|
Если у тебя ситуация, при которой дата подключения и дата отключения равны - добавь группировку по датаДок первой, и уже от нее пляши;
Если же у тебя одному подключению соответствует одно отключение, тогда первая группировка вид документа, вторая дата. |
|||
58
bahan
01.02.12
✎
19:35
|
у меня дата подключения и дата отключения может не совпадать, документы совпадают только по ФИО, ну и может существовать ситуация при которой есть только подключение, а отключения еще не было.
|
|||
59
bahan
01.02.12
✎
20:01
|
при таком запросе
|Период с ВыбНачПериода по ВыбКонПериода; |Док=Документ.Подключение.ТекущийДокумент,Документ.Отключение.ТекущийДокумент; |ФИО=Документ.Подключение.ФИО,Документ.Отключение.ФИО; |Группировка ФИО; |Группировка Док; "; получается вот так ФИО Дата откл Вид документа ФИО Дата подкл. Вид документа И.И.Иванов 01.03.09 подключение И.И.Иванов 01.03.09 подключение И.И.Иванов 01.03.09 подключение И.И.Иванов 01.03.09 подключение а при таком раскладе Перем ДокВкл, ДокОткл; Процедура Сформировать() Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); Таб.ВывестиСекцию("Заголовок"); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |ДокВкл=Документ.Подключение.Вид; |ФиоВкл=Документ.Подключение.ФИО; |ДокОткл=Документ.Отключение.Вид; |ФиоОткл=Документ.Отключение.ФИО; |Группировка ДокВкл; |Группировка ДокОткл; |Условие(ФиоВкл=ФиоОткл); |"//}}ЗАПРОС ; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Пока Запрос.Группировка(1) = 1 Цикл Пока Запрос.Группировка(2) = 1 Цикл Сообщить(Строка(Запрос.ДокВкл)); Сообщить(Строка(Запрос.ДокОткл)); Сообщить(Строка(Запрос.ФиоВкл)); Сообщить(Строка(Запрос.ФиоОткл)); КонецЦикла; КонецЦикла; Таб.Опции(0,0,0,0); Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать",""); КонецПроцедуры Ошибка Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда {Отчет.ВновьПодкл.Форма.Модуль(36)}: ДокВкл=Документ.Подключение <<?>> ; Запрос[3] : Переменную описывают различные типы данных Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда {Отчет.ВновьПодкл.Форма.Модуль(36)}: ДокОткл=Документ.Отключение <<?>> ; Запрос[5] : Переменную описывают различные типы данных |
|||
60
bahan
02.02.12
✎
08:52
|
начитавшись про возможности 1с 8 версии лучше походу дела переходить на нее, все равно конфигурашка самописная. Или все таки есть выход, весь вечер вчера мучался с этим запросами. с табличными значениями как то не получается. А не подскажет кто нибудь, как данные полученные запросом поместить в таблицу значений и потом вытащить из таблицы значений значения? И что лучше, список значений или таблица значений?
|
|||
61
Mikeware
02.02.12
✎
09:09
|
(60) Тебе - лучше всего нанять программиста...
|
|||
62
bahan
02.02.12
✎
09:14
|
Спасибо большое, мне от твоего ответа как то легче стало.......
|
|||
63
Ёпрст
02.02.12
✎
09:14
|
(60) база дбф ?
|
|||
64
Ёпрст
02.02.12
✎
09:15
|
ФИО - реквизит какого типа?
|
|||
65
viktor_vv
02.02.12
✎
09:15
|
(59) Как выводишь при первом запросе ?
Пока Запрос.Группировка(1) = 1 Цикл ПеременнаяИзТаблицыФИО = Запрос.ФИО ; ПеременнаяИзТаблицыПодключениеДата = "" ; ПеременнаяИзТаблицыПодключениеВид = "" ; ПеременнаяИзТаблицыОтключениеДата = "" ; ПеременнаяИзТаблицыОтключениеВид = "" ; Пока Запрос.Группировка(2) = 1 Цикл Если Запрос.Док.Вид() = "Подключение" Тогда ПеременнаяИзТаблицыПодключениеДата = Запрос.Док.ДатаДок ; ПеременнаяИзТаблицыПодключениеВид = Запрос.Док.Вид() ; Иначе ПеременнаяИзТаблицыОтключениеДата = Запрос.Док.ДатаДок ; ПеременнаяИзТаблицыОтключениеВид = Запрос.Док.Вид() ; КонецЕсли ; КонецЦикла ; Таб.ВывестиСекцию("Строка") ; КонецЦикла ; |
|||
66
bahan
02.02.12
✎
09:16
|
dbf
|
|||
67
bahan
02.02.12
✎
09:25
|
Открываю конфигуратор, открываю документ подключение, выбираю реквизит ФИО, нажимаю изменить, появляются свойства реквизита ФИО, написано тип значения - Справочник.Клиенты. Тоже самое у документа Отключение.
|
|||
68
bahan
02.02.12
✎
09:26
|
viktorr_vv щас попробую так как ты говоришь, я во0бще с какими то колонками мучался
|
|||
69
Ёпрст
02.02.12
✎
10:15
|
На вот, развлекайся:
http://zalil.ru/32627137 предварительно скачай это http://snegopat.ru/downloads/1sqlite/1sqlite_1025.zip и кинь в папку \bin, где у тебя установлина 1с-ина..или в каталог с ИБ |
|||
70
bahan
02.02.12
✎
10:25
|
Блин viktor_vv работает, ОФИГЕТЬ))))))
|
|||
71
bahan
02.02.12
✎
10:25
|
СПАСИБО
|
|||
72
bahan
02.02.12
✎
10:27
|
я без таблицы обошелся, просто в циклах с использование если и без дублей, кароче что уж тут говорить, вот
<code> Процедура Сформировать() Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); Таб.ВывестиСекцию("Заголовок"); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |ФИО = Документ.Отключение.ФИО,Документ.Подключение.ФИО; |Док = Документ.Отключение.ТекущийДокумент,Документ.Подключение.ТекущийДокумент; |Отключение = Документ.Отключение.ТекущийДокумент; |Подключение = Документ.Подключение.ТекущийДокумент; |Группировка ФИО; |Группировка Док; |"//}}ЗАПРОС ; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Пока Запрос.Группировка(1) = 1 Цикл абонент=Запрос.ФИО; Дат=""; Вид=""; Дат1=""; Вид1=""; Пока Запрос.Группировка(2) = 1 Цикл Если Запрос.Док.Вид()="Подключение" Тогда Дат=Запрос.Док.ДатаДок; Вид=Запрос.Док.Вид(); Иначе Дат1=Запрос.Док.ДатаДок; Вид1=Запрос.Док.Вид(); КонецЕсли; //Если Запрос.Док.Вид()="Подключение" Тогда //Сообщить(Строка("Подключение найдено")); //КонецЕсли; //Если Запрос.Док.Вид()="Октлючение" Тогда //Иначе // Сообщить(Строка("Отключение найдено")); //КонецЕсли; // абонент= запрос.ФИО; //Дат=запрос.Док.ДатаДок; //Вид=запрос.Док; //Таб.ВывестиСекцию("Строка1"); КонецЦикла; Таб.ВывестиСекцию("Строка1"); КонецЦикла; Таб.Опции(0,0,0,0); Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать",""); КонецПроцедуры </code> |
|||
73
Ёпрст
02.02.12
✎
10:30
|
(72) при таком подходе, ты видишь "лесенку" всегда.
И результата как в (0) не получишь |
|||
74
bahan
02.02.12
✎
10:31
|
там где закоментированно, это я вчера пытался отловить потключение и отключение.
Теперь осталось сделать так, чтобы те кто небыли отключены за данный период или вообще еще никогда не были отключены, чтобы не выводились. |
|||
75
viktor_vv
02.02.12
✎
10:38
|
(73) Да не, там ВывестиСекцию() во внешнем цикле, во внутреннем только формирует данные для строки. Это если на один документ подключение, один документ отключение.
|
|||
76
Ёпрст
02.02.12
✎
10:43
|
(75) да я вижу уже, что в (65) полный ПЭ написан..
Т.е, абсолютно НЕ рабочий код. |
|||
77
Ёпрст
02.02.12
✎
10:45
|
+76
если у васи было 10 Подключений и 2 Отключений, твой код выдаст только последнее подключение и последние отключение.. |
|||
78
bahan
02.02.12
✎
10:48
|
Епрст4, извини, но мне нужно вывести только последние подключения и отключения. Пока задача стоит вывести не все подключения и отключения по ФИО, а только последние и спрятать те ФИО, которые были подключены и небыли отключены за конкретный промежуток времени.
|
|||
79
viktor_vv
02.02.12
✎
10:51
|
(77) Это я знаю, просто (78) описывалось где-то выше, на него и опирался.
|
|||
80
bahan
02.02.12
✎
11:23
|
viktor_vv, а цикл мне получается нужно писать отдельный после всех циклов группировок и создавать для полученных в этих циклах данных промежуточные переменные?
Т.е. Пока группировка(1).... Пока группировка(2).... КонецЦикла; КонецЦикла; а потом типа Видвр=Запрос.Док.Вид() Пока (Видвр="Поключение") и ПустоеЗначение(Видвр)<>0 Цикл Таб.ВывестиСекцию(Строка1) КонецЦикла; |
|||
81
viktor_vv
02.02.12
✎
11:27
|
(80) Ниче не понял. В (75) у тебя же вроде получилось, как ты хотел.
|
|||
82
bahan
02.02.12
✎
11:48
|
да получилось
Просто есть ФИО, которые никогда не отключались, вот их он выводит и есть кто отключился и больше никогда не подключался, отчет тоже их вывод. А так отчет красиво показывает тех кто отключился и через несколько дней потключился, типа временные отключения. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |