|
Создание отчета на основании табличного документа | ☑ | ||
---|---|---|---|---|
0
Иванов Иван Иваныч
18.07.19
✎
07:34
|
Доброго всем дня! Подскажите пожалуйста, а то я в этом вообще не шарю) Получается создаю отчет на основании табдока. https://ibb.co/LtrHhxk (сам табдок) и https://ibb.co/HHqbbF8 (ТЗ). МесяцГод это период отчета (например с 1 по 31 мая 2019 или просто май 2019), Контрагент должен быть в столбик, Заявлено - кол-во товара из док-та СчетНаОплатуПокупателю, Отпущено - кол-во товара из док-та РеализацияТоваровУслуг, где основанием является СчетНаОплатуПокупателю, ну и НомерСтроки - соответственно номер строки. Пока в форме отчета я имею такой код:
&НаСервере Процедура СформироватьОтчетНаСервере() ТабДок = Новый ТабличныйДокумент; Макет = ПолучитьМакетНаСервере(); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьТаблица = Макет.ПолучитьОбласть("Таблица"); ОбластьКонтрагент = Макет.ПолучитьОбласть("Контрагент"); ТабДок.Очистить(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СчетНаОплатуПокупателю.Товары.( | Номенклатура КАК Номенклатура, | Количество КАК Количество | ) КАК Товары, | РеализацияТоваровУслуг.Товары.( | Номенклатура КАК Номенклатура, | Количество КАК Количество | ) КАК Товары1, | СчетНаОплатуПокупателю.Контрагент КАК Контрагент |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг | ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю | ПО РеализацияТоваровУслуг.ДокументОснование = СчетНаОплатуПокупателю.Ссылка" ; Выборка = Запрос.Выполнить().Выгрузить(); КонецПроцедуры &НаСервере Функция ПолучитьМакетНаСервере() ОтчетОбъект = РеквизитФормыВЗначение("Отчет"); Макет = ОтчетОбъект.ПолучитьМакет("Макет"); Возврат Макет; КонецФункции &НаКлиенте Процедура СформироватьОтчет(Команда) СформироватьОтчетНаСервере(); КонецПроцедуры Правильно ли я делаю и как дальше правильно прописать циклы для выгрузки данных в макет? |
|||
1
Лефмихалыч
18.07.19
✎
07:46
|
тут нечем помогать
|
|||
2
Иванов Иван Иваныч
18.07.19
✎
07:55
|
(1) сарказм?
|
|||
3
НичегоНе Понятно
18.07.19
✎
08:07
|
(2)Нет. Просто неправильно вообще все.
1. Запрос вернет вообще все счета. Без ограничений по дате, также туда попадут проведенные и не проведенные. 2. В Товары и Товары1 у тебя будет таблица с табличной частью этих документов, это бессмысленно в данном случае. >>Правильно ли я делаю нет >>и как дальше правильно прописать циклы для выгрузки данных в макет? Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий Цикл //здесь установить параметры макета КонецЦикла; |
|||
4
Иванов Иван Иваныч
18.07.19
✎
08:23
|
(3) счет в условии не задается, выборка идет с табличной части "Товары", т.е. все что там, должно быть и в результате, как сделать ограничение периодом пока не разобрался, а второй пункт не понял, можете объяснить?
|
|||
5
catena
18.07.19
✎
08:38
|
"все что там, должно быть и в результате" - со всех документов за все время существования базы?
"как сделать ограничение периодом пока не разобрался" - судя по .Товары.( вы запрос собираете конструктором, там есть закладка, которая так и называется: "Условия". "второй пункт не понял" - конструкция .Товары.( вернет таблицу значений. Т.е., в результате запроса будет таблица в таблице. Если в задании у вас выбирать из табличной части, то и нужно выбирать из табличной части "Выбрать * из Документ.РеализацияТоваровУслуг.Товары" |
|||
6
craxx
18.07.19
✎
08:45
|
(0) позовите программиста
|
|||
7
dezss
18.07.19
✎
09:02
|
На заре освоения 1с тоже так тупил.
Таб. часть - это отдельная таблица и к ней надо обращаться отдельно, а не из самого документа. |
|||
8
Джо-джо
18.07.19
✎
09:06
|
(0) Нет, не правильно. Создание отчета на основании табличного документа это моветон
|
|||
9
bootini
18.07.19
✎
09:14
|
Как то так, но вряд ли это вас спасет ))
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказКлиентаТовары.Ссылка.Партнер КАК Партнер, | ЗаказКлиентаТовары.Номенклатура КАК Номенклатура, | ЗаказКлиентаТовары.Количество КАК КоличествоЗаказ, | РеализацияТоваровУслугТовары.Количество КАК КоличествоРеализация |ИЗ | Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары | ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | ПО ЗаказКлиентаТовары.Ссылка = РеализацияТоваровУслугТовары.ЗаказКлиента | И ЗаказКлиентаТовары.Номенклатура = РеализацияТоваровУслугТовары.Номенклатура |ГДЕ | ЗаказКлиентаТовары.Ссылка МЕЖДУ &ДатаНачала И &ДатаОкончания | И ЗаказКлиентаТовары.Ссылка.Партнер = &Партнер"; Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала); Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания); Запрос.УстановитьПараметр("Партнер", Партнер); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Партнер = ВыборкаДетальныеЗаписи.Партнер; Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура; и т.д. КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА |
|||
10
НичегоНе Понятно
18.07.19
✎
09:38
|
(8) +1, но куда деваться, это бы освоить
|
|||
11
СтоКатов
18.07.19
✎
09:39
|
(10) Лучше осваивать всё-таки с методической литературой, а не методом проб и ошибок, натыкаясь на всевозможные грабли. Возьмите книгу Хрусталёвой, освойте язык запросов и потренируйтесь на кошках, взяв за пример несколько готовых несложных отчётов из типовых конф.
|
|||
12
Джо-джо
18.07.19
✎
09:41
|
(10) Накуа это осваивать? Намного проще подтянуть данные из регистров и не париться над тем проведён ли документ, отменены ли эти строки и вообще в каком он статусе: надо всем этим уже подумал вендор при проведении документа
|
|||
13
СтоКатов
18.07.19
✎
09:49
|
(12) ТС явно ещё до регистров не дошёл.
|
|||
14
Бишбармак
18.07.19
✎
10:28
|
ВЫБРАТЬ
0 КАК Заявлено, РеализацияТоваровУслугТовары.Количество КАК Отпущено, РеализацияТоваровУслугТовары.Ссылка.Контрагент, РеализацияТоваровУслугТовары.Номенклатура КАК Продукция ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ СчетНаОплатуПокупателюТовары.Количество, 0, СчетНаОплатуПокупателюТовары.Ссылка.Контрагент, СчетНаОплатуПокупателюТовары.Номенклатура ИЗ Документ.СчетНаОплатуПокупателю.Товары КАК СчетНаОплатуПокупателюТовары |
|||
15
НичегоНе Понятно
18.07.19
✎
18:50
|
(11)(12)Это все понятно. Но человеку отчет нужен здесь и сейчас. А СКД будет позже.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |