Нужен такой отчет. Можно ли сделать его "малой кровью"? Работали в SLS-склад. Присматриваемся к этой программе.
Такое сделать, думаю, возможно.
Если кто-то возьмется помогать здесь на форуме, смогу подсказывать. К сожалению, выделить время на полное создание отчета не могу.
Кстати, сразу опишите, чтобы было понятно:
1) возможны ли у вас случаи, когда товар в одной накладной с различных складов?. Если да, то название склада логичнее ставить напротив каждой позиции товара.
2) Откуда брать текст "наличный рассчет" , в каких случаях он должен проставляться?
3) данные должны выводиться по текущей активной фирме, если я все правильно понял
4) что значат *** в заголовке, где выводятся данные по расходной накладной?
1) да возможны
2) я поствил его в накладной в графу "Условие продаж"
3) да, у нас одна активная
4) это "красявости" SLS склада - никакой информативности
В принципе, не нужны даже клиенты. Только товар, кол-во, цена, сумма, но офильтрованный по полю "Условие продаж" (или по другому, куда можно внести слово "нал".
В таком случае, все немного проще, если я все правильно понял.
Вот вам запрос для отчета.
Создавайте новый.
Параметры: период дат.
Выводятся данные только по одной активной фирме.
Данные сортируются по условию продажи, затем по дате, после по отдельным документам, ну и в конце по названию товара.
Цены и суммы указываются сразу с учетом скидки.
Запрос слегка избыточен, но это для универсальности.
Шаблон пробуйте создать сами. На форуме есть пользователи, готовые подсказать, как это делается... я так думаю
Select
tm.curr_to_cena + tm.curr_cena_pdv as cena_with_znizhka,
tm.curr_to_suma + tm.curr_suma_pdv as suma_with_znizhka,
tm.from_kolvo,
tm.mdate,
c.short_name,
c.name as curr_name,
sn.name as sklad_name,
v.nu,
v.prod_umov ,
v.client,
tn.*
From
Tovar_move tm
left join tovar_name tn on (tm.tovar_id=tn.num)
left join currency c on (tm.curr_type=c.num)
left join sklad_names sn on (tm.from_sklad_id=sn.num)
left join vnakl v on (tm.doc_id=v.num)
where
tm.doc_type_id =1
and tm.from_firma_id=#активная_фирма_№#
and tm.mdate>='#дата_с#'
and tm.mdate<='#дата_по#'
order by
v.prod_umov,
tm.mdate,
v.num,
tn.name
Спасибо. Как танкисту: Открываю "Создать новый отчет", ставлю птицу "Период дат", копирую-вставляю ваш SQL-код в нижнее поле, нажимаю кнопку "Редактировать шаблон", редактирую (сильны сомнения :) ), сохраняю новый файл, новый отчет. Все должно работать! Я нигде не ошибся?
Так точно!
Вы совершенно правы!
Для уточнения. После выставления параметров и добавления отчета, просто редактировать шаблон, а после (на самом деле можно и не редактировать, а сразу сохранить) сохранить (при нажатии кнопки Редактировать создается новый шаблон автоматически).
Что же, тогда продолжим.
Я для всех бэндов: ReportTitle, Header, MasterData, Footer, GroupFooter, GroupHeader выставляю свойство stretched=true. Это значит, что эти поля будут растягиваться под содержимое, которое находится внутри них (т.е. данные не будут накладываться друг на друга).
А для всех текстовых полей, кроме тех, которые не хочу, чтобы растягивались (например, если в заголовках колонок одно текстовое поле располагается над другим, то не стоит делать описанное далее), выставляю свойство StretchMode=smMaxHeight, что значит, что текстовое поле будет автоматически увеличиваться (в общем случае по вертикали вниз) до длины самого "высокого" поля на бенде (чтобы получилась красивая табличка, а не одна ячейка больше, другая меньше).
Итак выставили strethed = true (я ставлю для всех бэндов), и StretchMode=smMaxHeight (для текстовых полей, которые должны выводиться в виде таблички). Это, конечно, делается, обычно в конце или в процессе добавления.
Добавьте заголовок группы (GroupHeader), где в поле Условие: Поле БД, выберите PROD_UMOV.
Перетянуть заголовок группы над MasterData. Здесь вы можете вывести текстовое поле с переменной [PROD_UMOV], а ниже просуммировать по группе значений поля Условия продажи.
Добавьте подвал группы (GroupFooter), здесь после добавьте текстовое поле с суммированием по группе. Для этого разместить на этом Бэнде текстовое поле и вписать в него значение [SUM(<DataRep."SUMA_WITH_ZNIZHKA">,MasterData1,1)]
.
На MasterFooter (подвал данных) скопируйте текстовое поле из GroupFooter (то, где все суммируется), это будет ваша конечная сумма по всему товару в накладных.
Остальные поля (Название товара, сумма, склад (т.к. в накладных может быть товар с различных складов) и т.д.) киньте на MasterData.
Если с этим все получится, вы можете сгруппировать еще данные и по накладным. Т.е. добавить GroupHeader и GroupFooter в которых выставить Условие: Поле БД=NU. Данные группы должны находиться внутри Группы по Условию продажи
Таким образом у вас должна получиться следующая структура (для данного отчета она вполне подходит):
ReportTitle
Header (здесь можно разместить заголовки колонок)
GroupHeader (Группировка по Условию продажи)
GrouHeader (Группировка по № документа, можно пропустить)
MasterData (вывод данных по товару)
GroupFooter (Если пропущена группировка по документу, не добавлять.
Вывод итогов/сумм по документу)
GroupFooter (Подвал группы по условию продажи)
MasterFooter (Вывод итогов по отчету)
Расписал это, т.к. судя по предыдущему посту вы поймете или полностью или в каком направлении двигаться. Я рад, что все больше пользователей УкрСклада осваивают механизмы работы с отчетами)
Сори за "радугу", но данное форматирование несет в себе некий смысл.
Да уж, пару вечеров уже не будут томными :D. Попробую разобраться, об успехах (неудачах) доложу. Еще раз премного благодарен за участие!
TheOK
Да осилит дорогу идущий :) Чую, где-то что-то не так. При Просмотре вылазит такое
А шаблон методом "научного тыка" такой получился. Слишком быстро слепил, поэтому не верю в правильность.
1) Очень странно, что выскакивает такая ошибка...
Просмотрите внимательно запрос, который вы вставили в поле SQL запрос отчета. Не появились ли там вместо слов #активная_фирма_№# , #дата_с# и #дата_по# крокозябр, наподобии #??????_??# или вроде того.
Если такое есть, то с сайта скопируйте текст сначала в WordPad а затем из него в поле SQL запрос.
Если с этим все нормально, то попробуйте удалите все из поля SQL запрос и добавьте по новой.
2) Скиньте сюда свой шаблон на всякий случай ( в режиме редактирования Файл->Сохранить как)
Да нет, все 1:1
Select
tm.curr_to_cena + tm.curr_cena_pdv as cena_with_znizhka,
tm.curr_to_suma + tm.curr_suma_pdv as suma_with_znizhka,
tm.from_kolvo,
tm.mdate,
c.short_name,
c.name as curr_name,
sn.name as sklad_name,
v.nu,
v.prod_umov ,
v.client,
tn.*
From
Tovar_move tm
left join tovar_name tn on (tm.tovar_id=tn.num)
left join currency c on (tm.curr_type=c.num)
left join sklad_names sn on (tm.from_sklad_id=sn.num)
left join vnakl v on (tm.doc_id=v.num)
where
tm.doc_type_id =1
and tm.from_firma_id=#активная_фирма_№#
and tm.mdate>='#дата_с#'
and tm.mdate<='#дата_по#'
order by
v.prod_umov,
tm.mdate,
v.num,
tn.name
Внешний вид не корректировал.
Исправил:
Добавил одну группировку по ProdUmov.
Было выставлено ограничение на кол-во выводимых данных = 8 в свойствах MasterData.
Скорее всего были выставлены дополнительные источники данных в Отчет->данные или что-то подобное.
Текстовое поле с кол-вом не находилось на MasterData (хотя визуально казалось, что оно там)
Может быть еще что-то убрал автоматом.
У меня все работает..
Замените свой шаблон на данный (Имя вашего шаблона "светится" в верху шаблона. Если знаете где он "лежит" то скиньте туда (предварительно переименовав)
Все так и сделал, в папке rus нашел свой шаблон, заменил вашим, все равно вылазит та ошибка. В блоке "Выбор нужных компонентов для отчета", у меня птица только "Период дат", может надо еще проставить в других позициях? То, что у меня пока не зарегистрированная версия, не может влиять на работу?
Вот так выглядит. Пару верхних строк не видно
Странная штука..... у меня все ОК. Почему-то программе кажется, что что-то не так.
Может ли это быть изза незарегистрированной версии программы... не знаю никогда не сталкивался с такими проблемами, скорее всего дело в другом...
У меня есть некоторые предположения, но они далековаты от здравого смысла...
Давайте попробуем вот этот запрос. Если он будет работать, то останется 2 места для ошибки (вариантов при этом будет больше). Если же не захочет работать... но об этом позже
Select
tm.curr_to_cena + tm.curr_cena_pdv as cena_with_znizhka,
tm.curr_to_suma + tm.curr_suma_pdv as suma_with_znizhka,
tm.from_kolvo,
tm.mdate,
c.short_name,
c.name as curr_name,
sn.name as sklad_name,
v.nu,
v.prod_umov ,
v.client,
tn.*
From
Tovar_move tm
left join tovar_name tn on (tm.tovar_id=tn.num)
left join currency c on (tm.curr_type=c.num)
left join sklad_names sn on (tm.from_sklad_id=sn.num)
left join vnakl v on (tm.doc_id=v.num)
where
tm.doc_type_id =1
order by
v.prod_umov,
tm.mdate,
v.num,
tn.name
Но, согласно тексту ошибки, или непечатаемый символ где-то или какой-то символ стоит где-то за полями запроса (т.е. где-то за пределами "окошка".
Вариант:
Очистите все-все-превсе поле SQL запрос, добавьте туда текст из вложенного файла. Открывать в WordPad, в других программах (как word не желательно , впрочем как и в Notepad и тому подобных).
Почти победили ;)
Вот результат. Только не считает сумму и не фильтрует "нал", но уже работает
Скажем у Хопланда было 58*40 эко 4,78тыс по 37 грн/1тыс. В итоговой таблице этой позиции нет
Цитата: bkost від Березень 28, 2013, 09:31:03
Почти победили ;)
Вот результат. Только не считает сумму и не фильтрует "нал", но уже работает
Скажем у Хопланда было 58*40 эко 4,78тыс по 37 грн/1тыс. В итоговой таблице этой позиции нет
Может быть из-за следующего:
а) Документ выписан из другой активной фирмы (не текущей)
б) Документ не вошел в период дат выставляемый в отчете
в) Документ не был проведен ("галочка" в правом нижнем углу документа в режиме редактирования)
Других причин на данный момент не вижу....
Можно было бы отфильтровать по слову нал, но об этом позже, не ранее выходных (если не забуду..)
Попробовал на работе: первый ваш запрос выдает ту же ошибку, второй проходит, выдает 8 позиций товара из первых двух накладных (хотя их там 37 позиций товара), причем эти накладные с пустым полем "Условия продажи".
а) Активная фирма всего одна
б) Входят все накладные
в) Галочка всегда установлена, как по-умолчанию.
Я вроде бы исправлял настройку, из-за которой выводилось только 8 строк данных.... Это из за нее у вас выводятся частичные данные.
А по поводу ошибок 104, это проблемы с кодировкой, где-то затесывается нечитаемый символ...
Кстати, к сведениями разработчиков, до изменения поля на другое, с поддержкой форматирования (если не ошибаюсь поле ранее было без форматирования) проблем с особенностями кодировки никогда не было при добавлении отчета (может быть и были.... но у меня ни разу).... может быть из-за этого? :) Все равно никто не будет писать в поле SQL запрос сразу. Я, например, в Notpad++ или сразу в IBExpert пишу...
Но не будем отвлекаться. Я посчитал, что будет дольше объяснять чем самому подправить некоторые вещи.
Во вложенном файле отчет (запрос + файл).
Надеюсь, что все будет работать. Хотя, 104 ошибочка все равно может выскочить... я не особо разбирался в кодировках, не знаю как решать такие проблемы... вернее не хочу знать...
УРА!!! Свершилось чудо. Заработало и дома и на работе безошибочно. Низкий поклон!
Одна мелочь осталась: отчет берет цену Приходную, а не Расходную, а как поменять, я не понял :(
Да, правда, цена выводится из справочника.
Вставьте в ячейку, где выводится цена, следующий текст
[DataRep."CENA_WITH_ZNIZHKA"]
Это фактическая цена за товар (с учетом скидки и НДС).
В яблочко!!! Теперь точно всё!