|
v7: Как правильно добавить в отчет дополнительные колонки? | ☑ | ||
---|---|---|---|---|
0
Irina3gger
29.06.17
✎
08:54
|
Доброго времени.
Очень сильно нужна помощь, как правильно добавить колонки в отчет который формируется. Отчет уже есть он работает как надо и к нему надо просто добавить два столбца, один который будет подтягивать данные из актов, а другую для записей от пользователя. По книгам я поняла как это работает, но тяжело дается разобраться с кодом предыдущего программиста. Помогите пожалуйста как в код, который ниже, вставить правильно эти колонки. Перем Таблица; //====================================================================== Процедура Сформировать() сз = СоздатьОбъект("СписокЗначений"); ТабЗначВсего = СоздатьОбъект("ТаблицаЗначений"); ТабЗначОбъект = СоздатьОбъект("ТаблицаЗначений"); ТабЗначИтогРайон = СоздатьОбъект("ТаблицаЗначений"); ТабОбъект = СоздатьОбъект("ТаблицаЗначений"); ТабЗначЗаказчик = СоздатьОбъект("ТаблицаЗначений"); ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТабОбъект.НоваяКолонка("с1"); ТабОбъект.НоваяКолонка("с2"); ТабОбъект.НоваяКолонка("с3"); ТабОбъект.НоваяКолонка("с4"); ТабЗначВсего.НоваяКолонка("с1","Число"); ТабЗначВсего.НоваяКолонка("с2","Число"); ТабЗначВсего.НоваяКолонка("с3","Число"); ТабЗначИтогРайон.НоваяКолонка("с1","Число"); ТабЗначИтогРайон.НоваяКолонка("с2","Число"); ТабЗначИтогРайон.НоваяКолонка("с3","Число"); ТабЗначЗаказчик.НоваяКолонка("с1","Число"); ТабЗначЗаказчик.НоваяКолонка("с2","Число"); ТабЗначЗаказчик.НоваяКолонка("с3","Число"); Таб = СоздатьОбъект("Таблица"); RS = СоздатьОбъект("ODBCRecordset"); RS.УстБД1С(); ТекстЗапроса = " |SELECT | Жур.IDDoc as [Док $Документ], | Жур.IDDocDef as Док_вид, | Спр.Code as Код, | Спр.Descr as Наименование, | $Док.Объект as [Объект $Справочник.Объект], | $Док.Сумма as Сумма, | $Док.ДолгПоОплате as ДолгПоОплате, | $Док.ПризнакПодпис as [ПризнакПодпис $Перечисление.Признак], | $Док.ВидАкта as [ВидАкта $Справочник.ВидАкт], | $Спр.Заказчик as [Заказчик $Справочник.Заказчик], | $Спр.Район as [Район $Справочник.Области] |FROM | _1SJourn as Жур |INNER JOIN | $Документ.АктОбъемаРабот as Док ON Док.IDDoc = Жур.IDDoc |INNER JOIN | $Справочник.Объект as Спр ON Спр.ID = $Док.Объект | |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.Closed & 1 = 1 | AND $Док.ВидАкта <> :ВидАктов | AND $Док.ДолгПоОплате <> 0 | AND $Спр.Заказчик = :ТекЗаказчик |" ; Таб.ВывестиСекцию("ШапкаОсновная"); Таб.ВывестиСекцию("Шапка"); ТекЗаказчик = ""; Номер = 1; СпрРайон = СоздатьОбъект("Справочник.Области"); СпрРайон.ПорядокКодов(); СпрРайон.ВыбратьЭлементы(); Пока СпрРайон.ПолучитьЭлемент() = 1 Цикл Таб.ВывестиСекцию("Район"); СпрЗаказчик = СоздатьОбъект("Справочник.Заказчик"); СпрЗаказчик.ВыбратьЭлементы(); Пока СпрЗаказчик.ПолучитьЭлемент() = 1 Цикл Если СпрЗаказчик.Район = СпрРайон.ТекущийЭлемент() Тогда RS.УстановитьТекстовыйПараметр("НачДата", НачПер); RS.УстановитьТекстовыйПараметр("КонДата", ОконПер); RS.УстановитьТекстовыйПараметр("ОстМеньше", ОстМеньше); спрВидАкта = СоздатьОбъект("Справочник.ВидАкт"); Если спрВидАкта.НайтиПоКоду(2) = 1 Тогда RS.УстановитьТекстовыйПараметр("ВидАктов", спрВидАкта.ТекущийЭлемент()); КонецЕсли; RS.УстановитьТекстовыйПараметр("ТекЗаказчик",СпрЗаказчик.ТекущийЭлемент()); ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку() = 1 Цикл СуммаНеПодпис = 0; СуммаПодпис = 0; ДолгЭкспертизы = 0; Если Число(ТЗ.ВидАкта.Код) = Число(4) Тогда ДолгЭкспертизы = ТЗ.ДолгПоОплате; Иначе Если ТЗ.ПризнакПодпис = Перечисление.Признак.Нет Тогда СуммаНеПодпис = ТЗ.ДолгПоОплате; ИначеЕсли ТЗ.ПризнакПодпис = Перечисление.Признак.Да Тогда СуммаПодпис = ТЗ.ДолгПоОплате; КонецЕсли; КонецЕсли; ТабОбъект.НоваяСтрока(); ТабОбъект.с1 = ТЗ.Объект; ТабОбъект.с2 = СуммаНеПодпис; ТабОбъект.с3 = СуммаПодпис; ТабОбъект.с4 = ДолгЭкспертизы; КонецЦикла; ТабОбъект.Свернуть("с1","с2,с3,с4"); Если (ТабОбъект.Итог("с2") > ОстМеньше) или (ТабОбъект.Итог("с3") > ОстМеньше) или (ТабОбъект.Итог("с4") > ОстМеньше) Тогда Таб.ВывестиСекцию("Заказчик"); КонецЕсли; ТабОбъект.ВыбратьСтроки(); Пока ТабОбъект.ПолучитьСтроку() = 1 Цикл Если (ТабОбъект.с2 > ОстМеньше) или (ТабОбъект.с3 > ОстМеньше) или (ТабОбъект.с4 > ОстМеньше) Тогда сз.УдалитьВсе(); сз.ДобавитьЗначение(ТабОбъект.с1.Код); Таб.ВывестиСекцию("Объект"); Номер = Номер + 1; ТабЗначЗаказчик.НоваяСтрока(); ТабЗначЗаказчик.с1 = ТабОбъект.с2; ТабЗначЗаказчик.с2 = ТабОбъект.с3; ТабЗначЗаказчик.с3 = ТабОбъект.с4; КонецЕсли; КонецЦикла; ТабОбъект.УдалитьСтроки(); Если (ТабЗначЗаказчик.Итог("с1") > ОстМеньше) или (ТабЗначЗаказчик.Итог("с2") > ОстМеньше) или (ТабЗначЗаказчик.Итог("с3") > ОстМеньше) Тогда Таб.ВывестиСекцию("Итого"); КонецЕсли; ТабЗначИтогРайон.НоваяСтрока(); ТабЗначИтогРайон.с1 = ТабЗначЗаказчик.Итог("с1"); ТабЗначИтогРайон.с2 = ТабЗначЗаказчик.Итог("с2"); ТабЗначИтогРайон.с3 = ТабЗначЗаказчик.Итог("с3"); ТабЗначЗаказчик.УдалитьСтроки(); КонецЕсли; КонецЦикла; Если (ТабЗначИтогРайон.Итог("с1") > ОстМеньше) или (ТабЗначИтогРайон.Итог("с2") > ОстМеньше) или (ТабЗначИтогРайон.Итог("с3") > ОстМеньше) Тогда Таб.ВывестиСекцию("ИтогоРайон"); КонецЕсли; ТабЗначВсего.НоваяСтрока(); ТабЗначВсего.с1 = ТабЗначИтогРайон.Итог("с1"); ТабЗначВсего.с2 = ТабЗначИтогРайон.Итог("с2"); ТабЗначВсего.с3 = ТабЗначИтогРайон.Итог("с3"); ТабЗначИтогРайон.УдалитьСтроки(); КонецЦикла; Таб.ВывестиСекцию("Всего"); Таб.Опции(0,1,9); Таб.ПараметрыСтраницы(1,,,0,0,0,10,0,10,1,0); Таб.ТолькоПросмотр(1); Таб.Показать(); КонецПроцедуры //====================================================================== Процедура ОбработкаЯчейкиТаблицы(список,фл) фл=1; тип=ТипЗначенияСтр(список); Если тип="СписокЗначений" Тогда фл=0; спрОбъект = СоздатьОбъект("Справочник.Объект"); Если спрОбъект.НайтиПоКоду(СтрЗаменить(список.ПолучитьЗначение(1),"""","_")) = 1 Тогда ОткрытьФормуМодально("Обработка.ЖурналОбъекта", спрОбъект.ТекущийЭлемент()); КонецЕсли; конецЕсли; КонецПроцедуры //====================================================================== Процедура ПриОткрытии() НачПер = "01.01.2006"; ОконПер = ТекущаяДата(); ОстМеньше = 5; КонецПроцедуры |
|||
1
пипец
29.06.17
✎
09:06
|
ну прямой запрос, что добавить то нужно
Зы да еще по документам |
|||
2
1dvd
29.06.17
✎
09:08
|
Лучше позвать специалиста
|
|||
3
Irina3gger
29.06.17
✎
09:10
|
я просто только второй день только на 1с и для меня это паника, я пытаюсь логику найти, но явно не учитываю много нюансов и от моих личных проб, получается только ерунда. Я не прошу чтоб за меня сделали. я прошу чтоб мне помогли разобраться с кодом, и с логикой. а дальше я уже сама разбирусь
|
|||
4
1dvd
29.06.17
✎
09:13
|
(3) не понятно что именно тебе не понятно.
Задай конкретный вопрос |
|||
5
пипец
29.06.17
✎
09:17
|
в общем это внешняя компонента 1cpp )))
ЗЫ отож только вчерась пытали ))) ЗЫЫ только 2-й день с 1С ))))))) жесть |
|||
6
mehfk
29.06.17
✎
09:17
|
(0) Колонки в отчет правильно добавлять в те места, где они нужны: слева, справа, или посреди уже существующих.
|
|||
7
Irina3gger
29.06.17
✎
09:19
|
в код что я скинула, как вставить новую колонку которая будет подтягивать данные со справочника. Я не могу понять что за с1,с2,с3,с4? что это за переменные, и что к ним можно присвоить? Как к колонке привязать справочник который будет подтягивать данные с отчетов? У меня вопросов больше чем ответов
|
|||
8
NikVars
29.06.17
✎
09:19
|
(3) Пол в ЛК поменяй. Да, и это - фотку покруче. Спецы тут любят фотки в ЛК разглядывать. Да и помощь сразу объявится.
С отчетом, смотри (2). |
|||
9
Irina3gger
29.06.17
✎
09:20
|
(5) Да, я писала на С# а тут перевели на 1с, и ни черта не понятно
|
|||
10
Irina3gger
29.06.17
✎
09:23
|
(8) я не хочу афишировать что я девушка, потому что подтверждать стереотип о том что девушки кодить не умеют, тоже не хочется, а так я только начала на 1с то тупить буду и часто
|
|||
11
povar
29.06.17
✎
09:24
|
(9) это тебе не С#, тут думать надо
|
|||
12
пипец
29.06.17
✎
09:25
|
хмм мало писать на си , нужно понимать структуру 1С
ЗЫ вот как раз понимая структуру 1С и принципы связей, можно писать на чем угодно ))) |
|||
13
Irina3gger
29.06.17
✎
09:25
|
(11) а в С#, что думать не надо? Сложность не в количестве размышлений, а в том что все ново и не понятно еще.
|
|||
14
1dvd
29.06.17
✎
09:26
|
(13) Есть понимание что такое ТаблицаЗначений ?
|
|||
15
Irina3gger
29.06.17
✎
09:29
|
(12) суть вроде как понятна, что для каждого столбца, создается переменная, к которой привязывается справочник, а справочник заполняется пользователями походу работы. Верно же?
(14)Вроде как да |
|||
16
Irina3gger
29.06.17
✎
09:30
|
(14) на этом же форуме читала про ТаблицуЗначений
|
|||
17
пипец
29.06.17
✎
09:31
|
(15) что такое реляционные базы данных - понятие присутствует ?
или скажем так - связанные таблицы ? |
|||
18
1dvd
29.06.17
✎
09:33
|
(15) ну, так, с1 с2 с3 - это колонки таблицы значений, которые заполняются данными из другой ТЗ, полученной из запроса
|
|||
19
Irina3gger
29.06.17
✎
09:33
|
(17)Да понимаю, имела дела с MySQL запросами, думаю тут аналогично все
|
|||
20
пипец
29.06.17
✎
09:35
|
Проще так - создать (наристовать) на форме таблицу значений с именем например ТЗЗ
и ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса); вписать строку ТЗ.Выгрузить(ТЗЗ); ТЗ.ВыбратьСтроки(); ЗЫ сдается это метро каширская и варшавская )))) |
|||
21
Irina3gger
29.06.17
✎
09:38
|
(20)"сдается это метро каширская и варшавская"
что это значит? В каком городе такое метро? |
|||
22
пипец
29.06.17
✎
09:39
|
(21) нет ? хмм уж очень синхронно тема всплыла
|
|||
23
Irina3gger
29.06.17
✎
09:42
|
(22)нет, я с Гродно)
|
|||
24
Смотрящий
29.06.17
✎
09:43
|
В почту ID и пароль от тима слей
|
|||
25
пипец
29.06.17
✎
09:45
|
(23) в общем пробуй как в 20
|
|||
26
1dvd
29.06.17
✎
09:46
|
>>Я не могу понять что за с1,с2,с3,с4?
см. выше >>что это за переменные, и что к ним можно присвоить? Колонка в ТЗ может быть типизирована, а может и нет. Если не типизирована, то туда можно записать любое (ну, почти) значение. У тебя в начале видно что часть колонок не типизированы, а часть имеют тип число >>Как к колонке привязать справочник который будет подтягивать данные с отчетов? Отчет строится по макету (смотри внизу формы вкладку Таблица). Тебе нужно в макете добавить твои колонки, при выводе очередной секции методом Таб.ВывестиСекцию( переменные в макете заполняются текущими значениями переменных |
|||
27
Irina3gger
29.06.17
✎
09:46
|
(25) и что должно получится?
|
|||
28
Irina3gger
29.06.17
✎
09:53
|
(26) В макете я добавила свои колонки. Добавленные колонки как-то добавляются в в секцию, или их нужно прописывать?
|
|||
29
1dvd
29.06.17
✎
09:57
|
(28) Секции бывают вертикальные и горизонтальные. Если ты добавила колонку, то во всех горизонтальных она появится автоматически. Другой вопрос, откуда будут браться данные для их заполнения
|
|||
30
Irina3gger
29.06.17
✎
10:04
|
(29) в одной колонке должны отображаться источники финансирования, и как я понимаю они должны подгружаться со справочника с аналогичным именем. и вот теперь у меня вопрос, как сделать чтоб подтягивались данные со справочника?
|
|||
31
1dvd
29.06.17
✎
10:04
|
(30) изменить Запрос, изменить таблицы значений, изменить заполнение и обработку таблиц значений
|
|||
32
Irina3gger
29.06.17
✎
10:07
|
(31) звучит ужасно)
|
|||
33
пипец
29.06.17
✎
10:11
|
(27) результат запроса должен получится
|
|||
34
пипец
29.06.17
✎
10:12
|
+ визуальный
|
|||
35
Irina3gger
29.06.17
✎
10:14
|
(34) на что влияет что это внешняя компонента 1cpp?
|
|||
36
пипец
29.06.17
✎
10:19
|
(35) на то - что запрос написан на ней, родной язык 1С слегка отличается )))
ЗЫ на быстроту доступа и наличием расширенных возможностей |
|||
37
пипец
29.06.17
✎
10:20
|
// сидит ржот, только вчера мну пытали про 1с++ терь сижу консультирую, анекдот прям
|
|||
38
Irina3gger
29.06.17
✎
10:22
|
(36) т.е. я смогу нынешний запрос который написан, просто дописать чтобы добавить новые колонки? или нужно переписывать?
|
|||
39
h-sp
29.06.17
✎
10:38
|
(38) ну да, одну строчку добавить. если это ваше поле есть в документе АктОбъемаРабот.
|
|||
40
Irina3gger
29.06.17
✎
10:48
|
(39)вроде как есть
|
|||
41
Irina3gger
29.06.17
✎
11:08
|
(38)Внимание вопрос, в документе АктОбъемаРабот нет поля которое мне необходимо.
Но есть справочник, который привязан к объектам, которые в свою очередь имеются в АктОбъемаРабот. Как мне дописать запрос, чтоб эта информация подтягивалась? |
|||
42
пипец
29.06.17
✎
11:22
|
(41) через этот реквидит который есть и там и там
|
|||
43
пипец
29.06.17
✎
11:22
|
//реквизит
|
|||
44
Irina3gger
29.06.17
✎
11:37
|
подскажите что делает это кусочек кода
Таб.ВывестиСекцию("Объект"); Номер = Номер + 1; ТабЗначЗаказчик.НоваяСтрока(); ТабЗначЗаказчик.с1 = ТабОбъект.с2; ТабЗначЗаказчик.с2 = ТабОбъект.с3; ТабЗначЗаказчик.с3 = ТабОбъект.с4; КонецЕсли; |
|||
45
Irina3gger
29.06.17
✎
11:45
|
Хотя не надо я уже поняла
Осталось разобраться как сделать чтоб подттягивалось, запрос изменила а дальше не понятно |
|||
46
NikVars
29.06.17
✎
14:45
|
(45) На будущее, вдруг пригодиться.
http://www.mista.ru/tutor_1c/ Если думать умеешь, на пару раз почитать и запомнить, где потом образцы разглядывать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |