|
v7: В печатной форме отчетов неправильно сворачиваются строки | ☑ | ||
---|---|---|---|---|
0
alex_reglament
09.12.11
✎
20:23
|
привет всем помогите пожалуйста разобраться что я натворил то такого
ситуация следующая нужно проанализировать документы за период затем в ТЗ выгрузить значения реквизитов документов со следующими идентификаторами Наименование, количество да прастите тянуться должно не только за определенный период а еще и по складам так вот написал следующее но у меня в таблице наименование сворачивается а вот суммы не те в таблице колонки следующих наименований Наименование_ суммаПоступления СуммаРасхода Наименование_ = наименование ид табл части документа суммаПоступления = количество из дока но выбрка должа идти по документам поступления СуммаРасхода = количество из дока но выбрка должа идти по документам расхода на форме дока имеются реквизиты ДатаНач , ДатаКон , Склад. кнопки сформировать и закрыть //====================================================================== Процедура ПриОткрытии() ДатаНач = НачМесяца(РабочаяДата()); ДатаКон = КонМесяца(РабочаяДата()); КонецПроцедуры //******************************************* Процедура Сформировать() Таблица = СоздатьОбъект("Таблица"); Таблица.ИсходнаяТаблица("Таблица1"); Таблица.ВывестиСекцию("Шапка"); Док = СоздатьОбъект("Документ"); Док.ВыбратьДокументы(ДатаНач,ДатаКон); ТЗ_Приход = СоздатьОбъект("ТаблицаЗначений"); ТЗ_Приход.НоваяКолонка("ВидДокумента"); ТЗ_Приход.НоваяКолонка("Наименование"); ТЗ_Приход.НоваяКолонка("Пришло"); ТЗ_Приход.НоваяКолонка("Ушло"); Пока Док.ПолучитьДокумент() > 0 Цикл Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку() > 0 Цикл Если Док.ПометкаУдаления() <> 1 Тогда Если Док.Проведен() = 1 Тогда сумма = ""; ТЗ_Приход.НоваяСтрока(); Если (Док.Вид() = "ГотоваяПродукция") Тогда Если Док.МестоХранения = Склад_ Тогда сумма = Док.Количество; Если сумма <> 0 Тогда ТЗ_Приход.ВидДокумента = Док.Вид(); ТЗ_Приход.Наименование = Док.ТМЦ; ТЗ_Приход.пришло = сумма; КонецЕсли; КонецЕсли; КонецЕсли; Если (Док.Вид() = "ПоступлениеТоваров") Тогда Если Док.МестоХранения = Склад_ Тогда сумма = Док.Количество; Если сумма <> 0 Тогда ТЗ_Приход.ВидДокумента = Док.Вид(); ТЗ_Приход.Наименование = Док.ТМЦ; ТЗ_Приход.пришло = сумма; КонецЕсли; КонецЕсли; КонецЕсли; Если Док.Вид() = "ПеремещениеТоваров" Тогда Если Док.СкладПолучатель = Склад_ Тогда Если Док.ВидПеремещенияТовара = Перечисление.ВидПеремещенияТовара.РозницаОпт Тогда сумма = Док.Количество; Если сумма <> 0 Тогда ТЗ_Приход.ВидДокумента = Док.Вид(); ТЗ_Приход.Наименование = Док.ТМЦ; ТЗ_Приход.пришло = сумма; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; Если (Док.Вид() = "РасходТовара") Тогда Если Док.МестоХранения = Склад_ Тогда сумма_ = Док.Количество; Если сумма_ <> 0 Тогда ТЗ_Приход.ВидДокумента = Док.Вид(); ТЗ_Приход.Наименование = Док.ТМЦ; ТЗ_Приход.Ушло = сумма_; КонецЕсли; КонецЕсли; КонецЕсли; Если Док.Вид() = "ПеремещениеТоваров" Тогда Если Док.СкладОтправитель = Склад_ Тогда Если Док.ВидПеремещенияТовара = Перечисление.ВидПеремещенияТовара.ОптРозница Тогда сумма_ = Док.Количество; Если сумма_ <> 0 Тогда ТЗ_Приход.ВидДокумента = Док.Вид(); ТЗ_Приход.Наименование = Док.ТМЦ; ТЗ_Приход.Ушло = сумма_; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; ТЗ_Приход.Свернуть("ВидДокумента,Наименование","пришло,Ушло"); ТЗ_Приход.ВыбратьСтроки(); Пока ТЗ_Приход.ПолучитьСтроку() = 1 Цикл Наименование_ = ТЗ_Приход.Наименование; суммаПоступления = ТЗ_Приход.пришло; СуммаРасхода = ТЗ_Приход.Ушло; Таблица.ВывестиСекцию("Строка"); КонецЦикла; Таблица.Опции(0, 0, 2, 5, "Расчет естественной убыли"); Таблица.Показать("Расчет естественной убыли"); КонецПроцедуры |
|||
1
Rie
09.12.11
✎
20:30
|
(0)
Почему у тебя сумма - то строка, то число? Колонки таблицы значений - типизированы? |
|||
2
alex_reglament
09.12.11
✎
20:30
|
что ни кто не поможет?
|
|||
3
alex_reglament
09.12.11
✎
20:30
|
(1) а что беда в этом?
|
|||
4
alex_reglament
09.12.11
✎
20:31
|
(1) подскажи как бороться
|
|||
5
alex_reglament
09.12.11
✎
20:35
|
да прастите
ТЗ_Приход.Свернуть("ВидДокумента,Наименование","пришло,Ушло"); нужно так ТЗ_Приход.Свернуть("Наименование","пришло,Ушло"); почему сделал так ТЗ_Приход.Свернуть("ВидДокумента,Наименование","пришло,Ушло"); потому что если сворачивать только наименование тогда наименование заполнено дапустим приход тоже а вот расход не заполнен хотя он должен быть ну а когда сворачиваю по виду и наименованию то вродебы все и ок но не красиво изза того что заполнены колонки или приход или расход ну а во вторых данные не правильны |
|||
6
alex_reglament
09.12.11
✎
20:35
|
почему?? ни как понять не могу
|
|||
7
alex_reglament
09.12.11
✎
20:36
|
странно 496 чел на форуме и ни кто помочь не может
|
|||
8
alex_reglament
09.12.11
✎
20:38
|
люди ну помогите не зря ж я так подробно все описывал
|
|||
9
alex_reglament
09.12.11
✎
20:38
|
пожалуйста
|
|||
10
Rie
09.12.11
✎
20:40
|
(7) Подробно? Был вопрос о типизации колонок таблицы значений. Ответ где?
|
|||
11
alex_reglament
09.12.11
✎
20:42
|
я не понял прасти смысла типизации колонок
|
|||
12
Rie
09.12.11
✎
20:47
|
(11) Второй параметр у НоваяКолонка при создании таблицы значений укажи.
И не путай строки и числа. |
|||
13
alex_reglament
09.12.11
✎
20:49
|
прасти ты имеешь в виду указать тип?
|
|||
14
Креатив
09.12.11
✎
20:50
|
(0)Код сам по себе жуткий.
Проверку на пометку удаления убери совсем, на проведение вынеси из цикла по строкам. Используй конструкции типа Если (Док.Вид() = "ГотоваяПродукция") или (Док.Вид() = "ПоступлениеТоваров") Тогда потому как код внутри обоих условий одинаков. Ещё лучше будет, если ты научишься пользоваться запросами. |
|||
15
Rie
09.12.11
✎
20:51
|
(13) Да.
А как ещё можно понять (12)? |
|||
16
Mans
09.12.11
✎
20:52
|
(13)
ТЗ_Приход.НоваяКолонка("Пришло,"Число"); ТЗ_Приход.НоваяКолонка("Ушло","Число); |
|||
17
babytype
09.12.11
✎
20:55
|
(0)+ еще лучше будет, если научишься обнулять переменные и вставлять ТЗ_Приход.НоваяСтрока(); туда, где в ТЗ действительно что-то будет записываться.
|
|||
18
alex_reglament
09.12.11
✎
20:57
|
извини на каждое условие
|
|||
19
alex_reglament
09.12.11
✎
20:57
|
?
|
|||
20
alex_reglament
09.12.11
✎
20:57
|
+(18)(17)
|
|||
21
Rie
09.12.11
✎
21:03
|
IMHO, это - развод.
|
|||
22
babytype
09.12.11
✎
21:03
|
(18) да, в твоем случае, в каждое условие перед записью в ТЗ. А на самом деле лучше прислушайся к (14)
|
|||
23
alex_reglament
09.12.11
✎
21:10
|
сделал вро де как в (14)
//====================================================================== Процедура ПриОткрытии() ДатаНач = НачМесяца(РабочаяДата()); ДатаКон = КонМесяца(РабочаяДата()); КонецПроцедуры //******************************************* Процедура Сформировать() Таблица = СоздатьОбъект("Таблица"); Таблица.ИсходнаяТаблица("Таблица1"); Таблица.ВывестиСекцию("Шапка"); Док = СоздатьОбъект("Документ"); Док.ВыбратьДокументы(ДатаНач,ДатаКон); ТЗ_Приход = СоздатьОбъект("ТаблицаЗначений"); ТЗ_Приход.НоваяКолонка("ВидДокумента"); ТЗ_Приход.НоваяКолонка("Наименование"); ТЗ_Приход.НоваяКолонка("Пришло","Число"); ТЗ_Приход.НоваяКолонка("Ушло","Число"); Пока Док.ПолучитьДокумент() > 0 Цикл Если Док.Проведен() = 1 Тогда Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку() > 0 Цикл сумма = ""; Если (Док.Вид() = "ГотоваяПродукция") или (Док.Вид() = "ПоступлениеТоваров") Тогда Если Док.МестоХранения = Склад_ Тогда сумма = Док.Количество; Если сумма <> 0 Тогда ТЗ_Приход.НоваяСтрока(); ТЗ_Приход.ВидДокумента = Док.Вид(); ТЗ_Приход.Наименование = Док.ТМЦ; ТЗ_Приход.пришло = сумма; КонецЕсли; КонецЕсли; КонецЕсли; Если Док.Вид() = "ПеремещениеТоваров" Тогда Если Док.СкладПолучатель = Склад_ Тогда Если Док.ВидПеремещенияТовара = Перечисление.ВидПеремещенияТовара.РозницаОпт Тогда сумма = Док.Количество; Если сумма <> 0 Тогда ТЗ_Приход.НоваяСтрока(); ТЗ_Приход.ВидДокумента = Док.Вид(); ТЗ_Приход.Наименование = Док.ТМЦ; ТЗ_Приход.пришло = сумма; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; Если (Док.Вид() = "РасходТовара") Тогда Если Док.МестоХранения = Склад_ Тогда сумма_ = Док.Количество; Если сумма_ <> 0 Тогда ТЗ_Приход.НоваяСтрока(); ТЗ_Приход.ВидДокумента = Док.Вид(); ТЗ_Приход.Наименование = Док.ТМЦ; ТЗ_Приход.Ушло = сумма_; КонецЕсли; КонецЕсли; КонецЕсли; Если Док.Вид() = "ПеремещениеТоваров" Тогда Если Док.СкладОтправитель = Склад_ Тогда Если Док.ВидПеремещенияТовара = Перечисление.ВидПеремещенияТовара.ОптРозница Тогда сумма_ = Док.Количество; Если сумма_ <> 0 Тогда ТЗ_Приход.НоваяСтрока(); ТЗ_Приход.ВидДокумента = Док.Вид(); ТЗ_Приход.Наименование = Док.ТМЦ; ТЗ_Приход.Ушло = сумма_; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; ТЗ_Приход.Свернуть("ВидДокумента,Наименование","пришло,Ушло"); ТЗ_Приход.ВыбратьСтроки(); Пока ТЗ_Приход.ПолучитьСтроку() = 1 Цикл Наименование_ = ТЗ_Приход.Наименование; суммаПоступления = ТЗ_Приход.пришло; СуммаРасхода = ТЗ_Приход.Ушло; Таблица.ВывестиСекцию("Строка"); КонецЦикла; Таблица.Опции(0, 0, 2, 5, "Расчет естественной убыли"); Таблица.Показать("Расчет естественной убыли"); КонецПроцедуры |
|||
24
alex_reglament
09.12.11
✎
21:10
|
так все ок будет?
|
|||
25
SnarkHunter
09.12.11
✎
21:12
|
Неправильно писать "не правильно"...
|
|||
26
alex_reglament
09.12.11
✎
21:19
|
спасибо всем вроде все сходится
и всеже где обнулять переменные |
|||
27
alex_reglament
09.12.11
✎
21:20
|
да и вроде ж она у меня обнуляется или я не там ее обнуляю?
Пока Док.ПолучитьДокумент() > 0 Цикл Если Док.Проведен() = 1 Тогда Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку() > 0 Цикл сумма = ""; |
|||
28
DJ Anthon
09.12.11
✎
21:22
|
ты знаешь, что такое обнуление?
|
|||
29
alex_reglament
09.12.11
✎
21:27
|
ну в общем да!!
|
|||
30
alex_reglament
09.12.11
✎
21:27
|
сумма = ""; или это не правильно нужно так?? сумма = 0;
|
|||
31
alex_reglament
09.12.11
✎
21:32
|
и еще последний вопрос
почему не доступен предворительный просмотр |
|||
32
Креатив
09.12.11
✎
21:34
|
Зайди в файл - параметры страницы
|
|||
33
alex_reglament
09.12.11
✎
21:37
|
(32) там тоже не доступно
|
|||
34
alex_reglament
09.12.11
✎
21:40
|
Зайди в файл - параметры страницы
там тоже не доступно |
|||
35
alex_reglament
09.12.11
✎
21:40
|
что делать то?
|
|||
36
Mans
09.12.11
✎
21:40
|
(33) Таблица на форме? если да то кликни на ней
|
|||
37
alex_reglament
09.12.11
✎
21:40
|
может здесь чего не дописал?
Таблица.ВывестиСекцию("Строка"); КонецЦикла; Таблица.Опции(0, 0, 2, 5, "Расчет естественной убыли"); Таблица.Показать("Расчет естественной убыли"); КонецПроцедуры |
|||
38
SnarkHunter
09.12.11
✎
21:41
|
Установить принтер...
|
|||
39
alex_reglament
09.12.11
✎
21:41
|
нет отдельно
|
|||
40
alex_reglament
09.12.11
✎
21:41
|
не на форме
|
|||
41
alex_reglament
09.12.11
✎
21:50
|
принтер установлен но предварительный просмотр не пашет
|
|||
42
Mans
09.12.11
✎
21:54
|
параметры страницы пересохранить ... колеса попинать и т.д
|
|||
43
alex_reglament
09.12.11
✎
21:55
|
(42) слуша получилось а что это за глюк?
|
|||
44
Mans
09.12.11
✎
22:06
|
помогли знач колёса
|
|||
45
alex_reglament
09.12.11
✎
22:06
|
спасибо за помощь пока
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |