|
v7: ТИС: отчет за период и без выходных дней | ☑ | ||
---|---|---|---|---|
0
Kapystin
22.12.14
✎
17:42
|
Добрый день.
Подскажите как можно в запросе указать условие отбора без выходных дней? мне нужно вывести информацию в таблицу при помощи запроса. и чтобы информация за выходной день не попадала. ТекстЗапроса = " |Период с НачДата по КонДата; |Фирма = Регистр.ПартииНаличие.Фирма; |Себестоимость = Регистр.ПартииНаличие.СуммаРуб; | |Функция КО = КонОст(Себестоимость); // |Условие ( |Условие (Фирма = Фирма1); |Группировка День; |"; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Сообщить("Ошибка в запросе"); Возврат; КонецЕсли; Пока Запрос.Группировка("День") = 1 Цикл ТабДата = Запрос.День; ТабСебестоимость = Запрос.КО; Таблица.ВывестиСекцию("Строка"); КонецЦикла; Таблица.Показать(); |
|||
1
mikecool
22.12.14
✎
17:44
|
как это влияет на себестоимость?
|
|||
2
Kapystin
22.12.14
✎
17:44
|
никак, просто хочу чтобы в отчет не попадала инфа за выходные дни
|
|||
3
Aleksey
22.12.14
✎
17:46
|
Ф у функции есть параметр Когда
плюс можно внешнюю функцию заюзать |
|||
4
mikecool
22.12.14
✎
17:47
|
(2) когда деньНедели 6 или 7 тогда продолжить
|
|||
5
Mutniy2
22.12.14
✎
17:49
|
(3) Все бы хорошо, но какую переменную запроса анализировать собираешся? "День"? не думаю, что сработает.
|
|||
6
Aleksey
22.12.14
✎
17:51
|
(5) Регистр.ТекущийДокумент.ДатаДок
|
|||
7
Kapystin
22.12.14
✎
17:52
|
(5) Регистр.ТекущийДокумент.ДатаДок
а каким образом условие в запросе составить? |
|||
8
Aleksey
22.12.14
✎
17:53
|
(7) На функцию условие вешай, чтобы когда суббота или воскресенье он брал 0 иначе из регистра
|
|||
9
Aleksey
22.12.14
✎
17:54
|
Хотя ... конечный остаток... может не сработать
|
|||
10
Kapystin
22.12.14
✎
17:55
|
спасибо огромное, теперь буду пробовать
не не не КО обязателен. может есть еще варианты? |
|||
11
spectre1978
22.12.14
✎
21:11
|
(10) Минутку. Если я правильно помню структуру регистра в семерке, там есть таблица движений и таблица итогов. В случаях когда период запроса превышает период сохранения итогов, используются таблицы итогов. Но свертка итогов в эти таблицы осуществляется по всем движениям, и этот процесс программистом никак не может быть изменен.
Таким образом, если даже мы сумеем исключить из КО выходные в периоде менее периода сохранения итогов, то в случае периода более периода сохранения итогов в запросе будут использованы таблицы итогов, из которых возьмутся данные по всем движениям. В том числе с учетом выходных. Таким образом, в результате будет белиберда - где-то исключены выходные, где-то нет. Похоже, задача нерешаема... |
|||
12
Mutniy2
22.12.14
✎
21:23
|
(6) > Регистр.ТекущийДокумент.ДатаДок
Нету такого Есть Регистр.ВидРегистра.ТекущийДокумент.ВидДокумента.ДатаДок; + вопрос по остаткам!!! |
|||
13
Mutniy2
22.12.14
✎
21:25
|
Лучше фильтровать при выводе.
|
|||
14
Kapystin
23.12.14
✎
08:47
|
(13) Уточните как это? примером
я так понимаю в запросе УСЛОВИЕ ФУНКЦИЯ (функция которая будет проверять на день недели) не нужно использовать. а уже в цикле по группировке производить отбор? |
|||
15
Mutniy2
23.12.14
✎
08:59
|
Что ты собираешся делать с запросом?
|
|||
16
Kapystin
23.12.14
✎
09:09
|
в запросе указать
|Условие (ВыходнойДень(ТекДок) = 1); а функция проверяет на Функция ВыходнойДень(ТекДок) ДатДок = ТекДок.ДатаДок; Сообщить(НомерДняНедели(ДатДок)); Если (НомерДняНедели(ДатДок) = 6) или (НомерДняНедели(ДатДок) = 7) Тогда Возврат 0; Иначе Возврат 1; КонецЕсли; т.е мы не выводим инфу за выходные дни я вот так сделал |
|||
17
Kapystin
23.12.14
✎
09:39
|
Функция ВыходнойДень(ТекДок)
ДатДок = ТекДок.ДатаДок; Сообщить(НомерДняНедели(ДатДок)); Если (НомерДняНедели(ДатДок) = 6) или (НомерДняНедели(ДатДок) = 7) Тогда Возврат 0; Иначе Возврат 1; КонецЕсли; //Сообщить(ТекДок); //Сообщить(ДатДок); КонецФункции Процедура Сформировать() Фирмы = СоздатьОбъект("Справочник.Фирмы"); Фирмы.НайтиПоКоду("ВР001"); ФирмаЭлис = Фирмы.ТекущийЭлемент(); Таблица = СоздатьОбъект("Таблица"); Таблица.ВывестиСекцию("Заголовок"); Таблица.ВывестиСекцию("Шапка"); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = " |Период с НачДата по КонДата; |Фирма = Регистр.ПартииНаличие.Фирма; |Себестоимость = Регистр.ПартииНаличие.СуммаРуб; |ТекДок = Регистр.ПартииНаличие.ТекущийДокумент; | |Функция ПР = Приход(Себестоимость); |Функция РА = Расход(Себестоимость); |Функция КО = КонОст(Себестоимость); |Условие (ВыходнойДень(ТекДок) = 1); |Условие (Фирма = ФирмаЭлис); |Группировка День; |"; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Сообщить("Ошибка в запросе"); Возврат; КонецЕсли; ТЗ = ""; Запрос.Выгрузить(ТЗ); ТЗ.ВыбратьСтроку(); // Пока Запрос.Группировка("День") = 1 Цикл ТабДата = Запрос.День; ТабСебестоимость = Запрос.КО; Таблица.ВывестиСекцию("Строка"); ТабСебестоимость = ""; // Сообщить(Запрос.ТекДок); // Сообщить(Запрос.КО); // Сообщить(Запрос.Фирма); КонецЦикла; Таблица.Показать(); КонецПроцедуры ОчиститьОкноСообщений(); Ошибка в том что в отчет выводится информация за ВЫХОДНЫЕ! данные в СУББОТУ И ВОСКРЕСЕНЬЕ идентичны что и в ПЯТНИЦУ. Возможно есть вариант не выводить просто дни выходные(функция не помогла) или сделать нулевыми данные за ВЫХОДНЫЕ(повторюсь что инфа на выходных идентична ПЯТНИЦЕ) как это исправить? Спасибо |
|||
18
Kapystin
23.12.14
✎
09:41
|
ДАТА Себестоимость
14.11.14 54769168.69 пятница 15.11.14 54769168.69 суббота 16.11.14 54769168.69 воскресение 17.11.14 56631635.88 понедельниу что добавить в запрос или какие можно внести изменения чтобы ВЫХОДНЫЕ были НУЛЕВЫЕ или Пустые |
|||
19
Mutniy2
23.12.14
✎
16:11
|
Еще раз, в черном запросе ты такое не отфильтруешь.
Нет там переменной "День". Фильровать надо тут: Пока Запрос.Группировка("День") = 1 Цикл ТабДата = Запрос.День; // < тут надо спотреть и отбрасывать выходные. ТабСебестоимость = Запрос.КО; Таблица.ВывестиСекцию("Строка"); ТабСебестоимость = ""; КонецЦикла; |
|||
20
Kapystin
23.12.14
✎
17:43
|
Вот только разобрался хотел написать как у самого получилось допетрить))))
а тут уже добрый народ разжевал все!!! Спасибо ВСЕМ огромное. |
|||
21
Злопчинский
24.12.14
✎
02:33
|
Вполне можно все в запрсе получить/отфильтровать по типу как в (17)
|
|||
22
Kapystin
24.12.14
✎
08:59
|
Если у кого-то будет время подскажите как это можно в запросе отфильтровать?
|
|||
23
lavalit
24.12.14
✎
13:59
|
В запросе легко
Условие(ДеньВыходной(День)=0); А вот отдельно от запроса ставь функцию Функция ДеньВыходной(дата) Перем Рез; // Здесь блабла бла выясняешь выходной это или нет // можно для этого использовать "рабочий календарь" если он //есть в конфиге просто не помню в ТиС оно есть или нет в //комплексной и в производстве точняк есть //из него получишь не только сб и вскр но и праздники если //оно надо тебе устаканиваешь переменку рез = 0 или 1 Возврат Рез; КонецФункции В результате получишь выборку в запросе с уже выполненным условием по выхам. дополнительно не надо проверять. |
|||
24
lavalit
24.12.14
✎
14:02
|
Ну конечно
Функция ДеньВыходной(ПроверяемаяДата) ...просто "Дата" низзя ))) оно обругается))) |
|||
25
Mutniy2
24.12.14
✎
14:03
|
А я говорю, что в черном запросе не получится.
Ведь он хочет остатки получить, а не движения. |
|||
26
lavalit
24.12.14
✎
14:19
|
ну тогда использовать не условие а
Функция КО = КонОст(Себестоимость) Когда(ДеньВыходной(День)=0); |
|||
27
Kapystin
24.12.14
✎
16:29
|
ок, спасибо
|
|||
28
lavalit
24.12.14
✎
17:35
|
какой вариант получился в итоге?
|
|||
29
Kapystin
24.12.14
✎
18:24
|
В цикле.
После изменения в запросе себе себестоимость пропала. дату выводит верно, а себестоимость 0. |Функция КО = КонОст(Себестоимость) Когда (ВыходнойДень(ТекДок)=0); Спасибо за помощь |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |