|
v7: нужна помощь с отчетом | ☑ | ||
---|---|---|---|---|
0
antoha86
10.12.13
✎
13:15
|
Модуль отчета содержит раздел расчета средней себестоимости, как мне ее вывести в форму отчета, а то отчет только количество и сумму показывает?
Процедура Сформировать() Перем Запрос, ТекстЗапроса, Таб; Если ВыбДата>ПолучитьДатуТА() Тогда Сообщить("Отчет построен по точку актуальности: "+ПолучитьДатуТА()); ДатаОтчета=ПолучитьДатуТА(); Иначе ДатаОтчета=ВыбДата; КонецЕсли; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ДатаОтчета по ДатаОтчета; |Номенклатура = Регистр.ОстаткиТоваров.Номенклатура, Регистр.СтоимостьТоваров.Номенклатура; |Количество = Регистр.ОстаткиТоваров.Количество; |Стоимость = Регистр.СтоимостьТоваров.Стоимость; |Функция КоличествоКонОст = КонОст(Количество); |Функция СтоимостьКонОст = КонОст(Стоимость); |Группировка Номенклатура без групп; |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка(1) = 1 Цикл Если Запрос.Количество>0 Тогда СредняяСебестоимость=Формат((Запрос.Стоимость/Запрос.Количество),"Ч15.2,"); иначе СредняяСебестоимость=""; КонецЕсли; // Заполнение полей Номенклатура Таб.ВывестиСекцию("Номенклатура"); КонецЦикла; // Заполнение полей "Итого" Таб.ВывестиСекцию("Итого"); // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать", ""); КонецПроцедуры |
|||
3
Kupogun
10.12.13
✎
13:18
|
СредняяСебестоимость НА макете напиши
|
|||
4
Kupogun
10.12.13
✎
13:18
|
а кто писал отчет?
|
|||
5
antoha86
10.12.13
✎
13:18
|
Версия 7 склад + торговля
|
|||
9
antoha86
10.12.13
✎
13:19
|
отчет с учебника + небольшая модификация с форумов дали ребята
|
|||
10
1Сергей
10.12.13
✎
13:19
|
(9) молодцы какие, ребята
|
|||
16
antoha86
10.12.13
✎
13:22
|
(3) что значит на макете? просто без свойств выражения просто слово?
|
|||
20
aka AMIGO
10.12.13
✎
13:25
|
(16) макет - это заготовка таблицы отчета, а написать надо в какой-нть ячейке таблицы, свойства = выражение
|
|||
21
antoha86
10.12.13
✎
13:26
|
(15)Методическое пособие к курсу настройка и спровождение 1с тут дали на этом форуме
|
|||
22
Kupogun
10.12.13
✎
13:26
|
(16) поищи внизу закладочку "Сформировать" и внимательно изучи, чего там и как
|
|||
23
antoha86
10.12.13
✎
13:27
|
(20) я писал выражение средняя себестоимость свойства выражение просто пустота а расчета нет
|
|||
25
antoha86
10.12.13
✎
13:29
|
(22) (23)
|
|||
28
aka AMIGO
10.12.13
✎
13:31
|
(23) значит, надо искать, почему в с/ст пусто.. возможно, нет остатков на выбранную дату у выбранной номенклатуры
|
|||
29
aka AMIGO
10.12.13
✎
13:31
|
(27) да ладно тебе..
|
|||
31
Kupogun
10.12.13
✎
13:35
|
(27) ты не знал!? вся миста об этом говорит.
сумма сделки до сих пор не оглашается. |
|||
32
aka AMIGO
10.12.13
✎
13:35
|
(30) ты ета.. кого спрашиваешь? или чисто риторический вопрос? :)
|
|||
33
Kupogun
10.12.13
✎
13:36
|
ставишь после
СредняяСебестоимость=Формат((Запрос.Стоимость/Запрос.Количество),"Ч15.2,"); строчку сообщить(СредняяСебестоимость); и от этого пляшешь |
|||
35
Масянька
10.12.13
✎
13:38
|
(32) Ну, тому, кто знает....
|
|||
36
aka AMIGO
10.12.13
✎
13:38
|
(33) можно плясать от отладчика :)
|
|||
37
Масянька
10.12.13
✎
13:38
|
(34) ИМХО, подмена понятий.
|
|||
38
Kupogun
10.12.13
✎
13:42
|
(36) вангую, что слово отладчик автору ветки ни о чем не говорит
|
|||
39
antoha86
10.12.13
✎
13:42
|
(28) остатки есть отчет формируется количество и сумма есть тольок графа все равно пустая
|
|||
41
antoha86
10.12.13
✎
13:43
|
(33) так значит я пишу сообщить в модуле, и ставлю выражение СредняяСебестоимость, все равно пусто?
|
|||
46
aka AMIGO
10.12.13
✎
13:51
|
(45) скрин таблицы можешь показать?
|
|||
47
aka AMIGO
10.12.13
✎
13:53
|
+46 имею в виду - из конфигуратора, а не из 1с-предприятия
|
|||
48
antoha86
10.12.13
✎
13:59
|
а как тут у вас прикрепить файл ?
|
|||
49
aka AMIGO
10.12.13
✎
14:02
|
(48) только ссылка
удобно с Gyazo |
|||
50
antoha86
10.12.13
✎
14:06
|
(49) да я с рабочего тут нельзя устанавливать программы...
|
|||
51
antoha86
10.12.13
✎
14:07
|
(48) могу скинуть на мыло
|
|||
52
aka AMIGO
10.12.13
✎
14:08
|
(51) [email protected]
и тогда уж не скрин, а отчет |
|||
53
antoha86
10.12.13
✎
14:21
|
(49) взял на себя смелость и скинул вам его на указанный в личной карточке емаил
|
|||
54
antoha86
10.12.13
✎
14:21
|
(52) блин ща перекину...
|
|||
55
antoha86
10.12.13
✎
14:23
|
(52) что значит отчет а не скрин?сохранить как внешний отчет и сам файл вам передать?
|
|||
56
aka AMIGO
10.12.13
✎
14:24
|
(54) не надо, я увидел
тогда кинь еще фрагмент выходной таблицы |
|||
57
aka AMIGO
10.12.13
✎
14:24
|
(55) ага, именно так
|
|||
58
antoha86
10.12.13
✎
14:30
|
(57) скинул файл на новую почту и скрин итогового отчета
|
|||
59
aka AMIGO
10.12.13
✎
14:39
|
(58) у меня таких регистров нет, переделал под свой
считает.. http://gyazo.com/4c71f31258bed532635c9f5a74b3c961 |
|||
60
aka AMIGO
10.12.13
✎
14:41
|
(59) +
есть регистр ОстаткиТМЦ с измерениями Номенклатура, ЦенаПрод и ресурсом Количество. Поскольку у меня ЦенаПрод в 1с не заполняется, себестоимость подсчитывется равной нулю. Но выводится. |
|||
61
antoha86
10.12.13
✎
14:44
|
(59) И что это может означать? У меня же ведь показывает остатки по количеству и стоимости, а ноликов нет...Хотя когда я дописывал к Выражению СредняяСебестоимость#Ч15.2 нолики появляются
|
|||
62
aka AMIGO
10.12.13
✎
14:54
|
(61) да не нолики у тебя должны появляться..
попробуй отчет из моего письма. больше, пожалуй ничем не смогу помочь. Даже тимвьюера нет у меня |
|||
63
aka AMIGO
10.12.13
✎
14:55
|
+62 ошибся, не тот выслсл.
возьми из второго письма |
|||
64
antoha86
10.12.13
✎
15:00
|
(63) Воо!!! отлично благодарю, а можно поинтересоваться, что было изменено?
|
|||
65
aka AMIGO
10.12.13
✎
15:02
|
(64) убрал правую пустую колонку в таблице
переместил в свойствах выравнивание вправо изменил вызов переменных запроса: Если Запрос.КоличествоКонОст>0 Тогда СредняяСебестоимость=Формат((Запрос.СтоимостьКонОст/Запрос.КоличествоКонОст),"Ч15.2,"); вроде всё.. |
|||
66
Масянька
10.12.13
✎
15:03
|
"А вы, что и есть за меня будете?" - "Ага!"
|
|||
67
aka AMIGO
10.12.13
✎
15:04
|
(66) Агааа :)
на столе у меня лежит кексик, угостил шеф.. могу выложить фотокарточку :) |
|||
68
aka AMIGO
10.12.13
✎
15:06
|
а вообще-то что-то странное есть в таблице.. но разбираться уже лень :)
|
|||
69
Масянька
10.12.13
✎
15:13
|
(67) Не. Давай лучше кексом делись :))))
|
|||
70
aka AMIGO
10.12.13
✎
15:18
|
ничуть не жалко.. только далеко :)
"а горы вооонаа где!" © :) |
|||
71
antoha86
10.12.13
✎
15:24
|
Вот второй программист на моем опыте которому проще самому все сделать.
|
|||
72
antoha86
23.12.13
✎
13:00
|
Помогите пожалуйста
Модуль расходной накладной: Перем Рег, СтоимРег, РегПартии; Процедура ИнициализацияПеременных() Рег=СоздатьОбъект("Регистр.ОстаткиТоваров"); СтоимРег=СоздатьОбъект("Регистр.СтоимостьТоваров"); Если Константа.МетодСписания<>Перечисление.МетодыСписания.ПоСреднему Тогда РегПартии=СоздатьОбъект("Регистр.ПартииТоваров"); КонецЕсли; СЗ=СоздатьОбъект("СписокЗначений"); ВыгрузитьТабличнуюЧасть(СЗ,"Номенклатура"); Рег.УстановитьЗначениеФильтра("Номенклатура",СЗ,2); СтоимРег.УстановитьЗначениеФильтра("Номенклатура",СЗ,2); Если ИтогиАктуальны()=0 Тогда Рег.ВременныйРасчет(1); СтоимРег.ВременныйРасчет(1); Если Константа.МетодСписания<>Перечисление.МетодыСписания.ПоСреднему Тогда РегПартии.УстановитьЗначениеФильтра("Номенклатура",СЗ,2); РегПартии.ВременныйРасчет(1); КонецЕсли; РассчитатьРегистрыНа(ТекущийДокумент()); КонецЕсли; КонецПроцедуры Процедура СписатьПартии() //РегПартии=СоздатьОбъект("Регистр.ПартииТоваров"); //СЗ=СоздатьОбъект("СписокЗначений"); //ВыгрузитьТабличнуюЧасть(СЗ,"Номенклатура"); //РегПартии.УстановитьЗначениеФильтра("Номенклатура",СЗ,2); ТЗ=СоздатьОбъект("ТаблицаЗначений"); РегПартии.ВыгрузитьИтоги(ТЗ,1); Если Константа.МетодСписания=Перечисление.МетодыСписания.FIFO Тогда Направление = "+"; Иначе Направление="-"; КонецЕсли; ТЗ.Сортировать("+Номенклатура,"+Направление+"Партия",1); ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл ОсталосьСписать=Количество; ТЗСтрока=0; ТЗ.НайтиЗначение(Номенклатура,ТЗСтрока,"Номенклатура"); Для Ном=ТЗСтрока По ТЗ.КоличествоСтрок() Цикл ТЗ.ПолучитьСтрокуПоНомеру(ном); ОстКол=ТЗ.Количество; ОстСум=ТЗ.Стоимость; Списать=МИН(ОстКол,ОсталосьСписать); СебестоимостьСписания=Списать/ОстКол*ОстСум; Регистр.ПартииТоваров.Номенклатура=Номенклатура; Регистр.ПартииТоваров.Партия=ТЗ.Партия; Регистр.ПартииТоваров.Количество=Списать; Регистр.ПартииТоваров.Стоимость=СебестоимостьСписания; Регистр.ПартииТоваров.ПривязыватьСтроку(НомерСтроки); Регистр.ПартииТоваров.ДвижениеРасходВыполнить(); ОсталосьСписать=ОсталосьСписать-Списать; Если ОсталосьСписать=0 Тогда Прервать; КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры Процедура ОбработкаПроведения() ИнициализацияПеременных(); //Рег=СоздатьОбъект("Регистр.ОстаткиТоваров"); //СтоимРег=СоздатьОбъект("Регистр.СтоимостьТоваров"); ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл ОстКол=Рег.Остаток(Номенклатура,Склад,"Количество"); Если ОстКол < Количество Тогда Сообщить ("В строке № "+НомерСтроки +"не хватает товара"""+Номенклатура+ """, из необходимых"+Количество+ "на складе "+Склад+" имеется" +ОстКол+","); СтатусВозврата(0); КонецЕсли; Если СтатусВозврата()<> 1 Тогда Продолжить; КонецЕсли; ОстСум=СтоимРег.Остаток(Номенклатура,"Стоимость"); ОстКолОбщ=Рег.СводныйОстаток(Номенклатура,,"Количество"); СебестоимостьСписания=Количество/ОстКолОбщ*ОстСум; Регистр.ОстаткиТоваров.Номенклатура=Номенклатура; Регистр.ОстаткиТоваров.Склад=Склад; Регистр.ОстаткиТоваров.Количество=Количество; Регистр.ОстаткиТоваров.ПривязыватьСтроку(НомерСтроки); Регистр.ОстаткиТоваров.ДвижениеРасходВыполнить(); Регистр.СтоимостьТоваров.Номенклатура=Номенклатура; Регистр.СтоимостьТоваров.Стоимость=СебестоимостьСписания; Регистр.СтоимостьТоваров.ДвижениеРасходВыполнить(); Регистр.Прибыль.Движение(Номенклатура, Контрагент, Сумма-СебестоимостьСписания); КонецЦикла; Если СтатусВозврата()<>1 Тогда Сообщить ("Документ"+ТекущийДокумент()+"не проведен!"); Иначе Если Константа.МетодСписания<>Перечисление.МетодыСписания.ПоСреднему Тогда СписатьПартии(); КонецЕсли; КонецЕсли; Регистр.Взаиморасчеты.ДвижениеПриход(Контрагент, Итог("Сумма")); КонецПроцедуры Выдает ошибку: Регистр.Прибыль.Движение(Номенклатура, Контрагент, Сумма-СебестоимостьСписания); {Документ.РасходнаяНакладная.Модуль Документа(95)}: Операция вычитания не определена для строковых величин |
|||
73
oslokot
23.12.13
✎
13:05
|
(72) Смотри что у тебя в переменной "Сумма"
|
|||
74
lamme
23.12.13
✎
13:06
|
Сообщить ("В строке № "+сокрлп(НомерСтроки)
+"не хватает товара"""+сокрлп(Номенклатура)+ """, из необходимых"+сокрлп(Количество)+ "на складе "+сокрлп(Склад)+" имеется" +сокрлп(ОстКол)+","); |
|||
75
lamme
23.12.13
✎
13:07
|
пардон. тупость
|
|||
76
lamme
23.12.13
✎
13:07
|
Регистр.Прибыль.Движение(Номенклатура, Контрагент, Сумма-СебестоимостьСписания);
смотри типы Сумма и СебестоимостьСписания |
|||
77
lamme
23.12.13
✎
13:08
|
и еще косяк
обязательно вывалится как-нибудь СебестоимостьСписания=Количество/ОстКолОбщ*ОстСум; будет типа - деление на 0 |
|||
78
antoha86
23.12.13
✎
13:12
|
Так а что с ней какая именно строчка, я не сильно пока разбираюсь что такое переменная суммы, вижу СтоимРег и ОстСумм
|
|||
79
antoha86
23.12.13
✎
13:28
|
(73) а что с ней?
|
|||
80
oslokot
23.12.13
✎
13:30
|
(79) ну тебе же явно пишут "Операция вычитания не определена для строковых величин"
Значит тормозись в отладчике на строке где ошибка и смотри чему равны переменные Сумма и СебестоимостьСписания |
|||
81
antoha86
23.12.13
✎
14:28
|
(79) сумма равна произведению числа на списываемую стоимость, а себестоимость СебестоимостьСписания=Списать/ОстКол*ОстСум;
и что не то? |
|||
82
antoha86
23.12.13
✎
14:35
|
(77) была у меня строка
Если Запрос.Количество > 0 тогда СредняяСебестоимость=Формат((Запрос.Стоимость/Запрос.Количество),"Ч15.2,"); иначе СредняяСебестоимость = ""; КонецЕсли; но она стала выдавать ошибку что переменная не определена |
|||
83
antoha86
23.12.13
✎
14:37
|
а извиняюсь это с другого модуля...
|
|||
84
antoha86
09.01.14
✎
13:31
|
Вопрос у меня есть расходная накладная:
Перем Рег, СтоимРег, РегПартии; Процедура ИнициализацияПеременных() Рег=СоздатьОбъект("Регистр.ОстаткиТоваров"); СтоимРег=СоздатьОбъект("Регистр.СтоимостьТоваров"); Если Константа.МетодСписания<>Перечисление.МетодыСписания.ПоСреднему Тогда РегПартии=СоздатьОбъект("Регистр.ПартииТоваров"); КонецЕсли; СЗ=СоздатьОбъект("СписокЗначений"); ВыгрузитьТабличнуюЧасть(СЗ,"Номенклатура"); Рег.УстановитьЗначениеФильтра("Номенклатура",СЗ,2); СтоимРег.УстановитьЗначениеФильтра("Номенклатура",СЗ,2); Если ИтогиАктуальны()=0 Тогда Рег.ВременныйРасчет(1); СтоимРег.ВременныйРасчет(1); Если Константа.МетодСписания<>Перечисление.МетодыСписания.ПоСреднему Тогда РегПартии.УстановитьЗначениеФильтра("Номенклатура",СЗ,2); РегПартии.ВременныйРасчет(1); КонецЕсли; РассчитатьРегистрыНа(ТекущийДокумент()); КонецЕсли; КонецПроцедуры Процедура СписатьПартии() //РегПартии=СоздатьОбъект("Регистр.ПартииТоваров"); //СЗ=СоздатьОбъект("СписокЗначений"); //ВыгрузитьТабличнуюЧасть(СЗ,"Номенклатура"); //РегПартии.УстановитьЗначениеФильтра("Номенклатура",СЗ,2); ТЗ=СоздатьОбъект("ТаблицаЗначений"); РегПартии.ВыгрузитьИтоги(ТЗ,1); Если Константа.МетодСписания=Перечисление.МетодыСписания.FIFO Тогда Направление = "+"; Иначе Направление="-"; КонецЕсли; ТЗ.Сортировать("+Номенклатура,"+Направление+"Партия",1); ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл ОсталосьСписать=Количество; ТЗСтрока=0; ТЗ.НайтиЗначение(Номенклатура,ТЗСтрока,"Номенклатура"); Для Ном=ТЗСтрока По ТЗ.КоличествоСтрок() Цикл ТЗ.ПолучитьСтрокуПоНомеру(ном); ОстКол=ТЗ.Количество; ОстСум=ТЗ.Стоимость; Списать=МИН(ОстКол,ОсталосьСписать); СебестоимостьСписания=Списать/ОстКол*ОстСум; Регистр.ПартииТоваров.Номенклатура=Номенклатура; Регистр.ПартииТоваров.Партия=ТЗ.Партия; Регистр.ПартииТоваров.Количество=Списать; Регистр.ПартииТоваров.Стоимость=СебестоимостьСписания; Регистр.ПартииТоваров.ПривязыватьСтроку(НомерСтроки); Регистр.ПартииТоваров.ДвижениеРасходВыполнить(); ОсталосьСписать=ОсталосьСписать-Списать; Если ОсталосьСписать=0 Тогда Прервать; КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры Процедура ОбработкаПроведения() ИнициализацияПеременных(); //Рег=СоздатьОбъект("Регистр.ОстаткиТоваров"); //СтоимРег=СоздатьОбъект("Регистр.СтоимостьТоваров"); ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл ОстКол=Рег.Остаток(Номенклатура,Склад,"Количество"); Если ОстКол < Количество Тогда Сообщить ("В строке № "+НомерСтроки +"не хватает товара"""+Номенклатура+ """, из необходимых"+Количество+ "на складе "+Склад+" имеется" +ОстКол+","); СтатусВозврата(0); КонецЕсли; Если СтатусВозврата()<> 1 Тогда Продолжить; КонецЕсли; ОстСум=СтоимРег.Остаток(Номенклатура,"Стоимость"); ОстКолОбщ=Рег.СводныйОстаток(Номенклатура,,"Количество"); СебестоимостьСписания=Количество/ОстКолОбщ*ОстСум; Регистр.ОстаткиТоваров.Номенклатура=Номенклатура; Регистр.ОстаткиТоваров.Склад=Склад; Регистр.ОстаткиТоваров.Количество=Количество; Регистр.ОстаткиТоваров.ПривязыватьСтроку(НомерСтроки); Регистр.ОстаткиТоваров.ДвижениеРасходВыполнить(); Регистр.СтоимостьТоваров.Номенклатура=Номенклатура; Регистр.СтоимостьТоваров.Стоимость=СебестоимостьСписания; Регистр.СтоимостьТоваров.ДвижениеРасходВыполнить(); Регистр.Прибыль.Движение(Номенклатура, Контрагент, Число(Сумма)-СебестоимостьСписания); КонецЦикла; Если СтатусВозврата()<>1 Тогда Сообщить ("Документ"+ТекущийДокумент()+"не проведен!"); Иначе Если Константа.МетодСписания<>Перечисление.МетодыСписания.ПоСреднему Тогда СписатьПартии(); КонецЕсли; КонецЕсли; Регистр.Взаиморасчеты.ДвижениеПриход(Контрагент, Итог("Сумма")); КонецПроцедуры Она в конце формирует прибыль в реестре прибыль, и ведет учет в реестре партий товаров(партия это приходная накладная), как мне сделать(у меня есть отчет который показывает приход по партиям), чтобы когда прибыль сформировалась еще и показала с каких партий это списано(то есть какие накладные, под какими номерами были списаны)в реестре партии товаров |
|||
85
antoha86
30.01.14
✎
15:45
|
Помогите, пожалуйста отчет выдает ошибку:
<<?>>Перем КолГруппировок, Таб; {Отчет.АнализПродаж.Форма.Модуль(14)}: Объявления переменных должны быть расположены в начале модуля, процедуры или функции <<?>>Процедура СформироватьТаблицу(Знач Запрос, Знач НомГруппировки) {Отчет.АнализПродаж.Форма.Модуль(15)}: Определения процедур и функций должны размещаться перед операторами основной программы Модуль: //******************************************* Процедура ПриОткрытии() СЗ.ДобавитьЗначение("Номенклатура"); СЗ.ДобавитьЗначение("Контрагент"); КонецПроцедуры Процедура СдвинутьЗначение () Если СЗ.ТекущаяСтрока()=1 Тогда СЗ.СдвинутьЗначение(1, СЗ.ТекущаяСтрока()); Иначе СЗ.СдвинутьЗначение(-1,СЗ.ТекущаяСтрока()); КонецЕсли; КонецПроцедуры Перем КолГруппировок, Таб; Процедура СформироватьТаблицу(Знач Запрос, Знач НомГруппировки) Отступ=""; Если НомГруппировки<>1 Тогда Для КолСимвТабуляции=1 По НомГруппировки Цикл Отступ=Отступ+" "; КонецЦикла; КонецЕсли; Пока Запрос.Группировка(НомГруппировки)=1 Цикл Значение=Отступ+Запрос.ЗначениеУпорядочивания(НомГруппировки); Выручка=Запрос.Выручка; Таб.ВывестиСекцию("Строка"); Если НомГруппировки <> КолГруппировок Тогда СформироватьТаблицу(Зарос, НомГруппировки+1); КонецЕсли; КонецЦикла; КонецПроцедуры Процедура Сформировать() Таб=СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); Таб.ВывестиСекцию("Шапка"); Запрос=СоздатьОбъект("Запрос"); ТекстЗапроса= "//((ЗАПРОС(Запрос1) |Период с НачДата по КонДата; |Номенклатура=Регистр.Прибыль.Номенклатура; |Контрагент=Регистр.Прибыль.Контрагент; |Сумма=Регистр.Прибыль.Сумма; |Функция Прибыль=Сумма(Сумма);"; КолГруппировок=0; Для Ном=1 По СЗ.КоличествоСтрок() Цикл Если СЗ.Пометка(Ном)=1 Тогда ТекстЗапроса=ТекстЗапроса+" |Группировка"СЗ.ПолучитьЗначение(Ном)+";"; КолГруппировок=КолГруппировок+1; КонецЕсли; КонецЦикла; Если КолГруппировок = 0 Тогда Предупреждение("Нельзя построить отчет без группировок!",60); Возврат; КонецЕсли; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; СформироватьТаблицу(Запрос,1); Таб.ТолькоПросмотр(1); Таб.Опции(0,0,0,0); Таб.Показать(""); КонецПроцедуры |
|||
86
antoha86
03.03.14
✎
14:20
|
Помогите пожалуйста, отчет не выводит запрос с регистра Партии товаров, ошибок не выдает
Текст модуля: Перем КолГруппировок, Таб; Процедура ПриОткрытии() СЗ.ДобавитьЗначение("Номенклатура"); СЗ.ДобавитьЗначение("Контрагент"); КонецПроцедуры Процедура СдвинутьЗначение () Если СЗ.ТекущаяСтрока()=1 Тогда СЗ.СдвинутьЗначение(1, СЗ.ТекущаяСтрока()); Иначе СЗ.СдвинутьЗначение(-1,СЗ.ТекущаяСтрока()); КонецЕсли; КонецПроцедуры Процедура СформироватьТаблицу(Запрос, НомГруппировки) Отступ=""; нн=0; Если НомГруппировки<>1 Тогда Для КолСимвТабуляции=1 По НомГруппировки Цикл Отступ=Отступ+" "; КонецЦикла; КонецЕсли; Пока Запрос.Группировка(НомГруппировки)=1 Цикл Значение=Отступ+Запрос.ЗначениеУпорядочивания(НомГруппировки); Сумма=Запрос.Сумма; Если Запрос.Номенклатура.ЭтоГруппа()=1 Тогда Таб.ВывестиСекцию("Группа"); Иначе нн=нн+1; Таб.ВывестиСекцию("Строка"); КонецЕсли; Если НомГруппировки <> КолГруппировок Тогда СформироватьТаблицу(Запрос, НомГруппировки+1); КонецЕсли; КонецЦикла; КонецПроцедуры Процедура Сформировать() Таб=СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); Таб.ВывестиСекцию("Шапка"); Запрос=СоздатьОбъект("Запрос"); ТекстЗапроса= "//((ЗАПРОС(Запрос1) |Период с НачДата по КонДата; |Номенклатура=Регистр.Прибыль.Номенклатура; |Контрагент=Регистр.Прибыль.Контрагент; |Сумма=Регистр.Прибыль.Сумма; |Партия=Регистр.ПартииТоваров.Партия; |Функция Прибыль=Сумма(Сумма);"; КолГруппировок=0; Для Ном=1 По СЗ.РазмерСписка() Цикл Если СЗ.Пометка(Ном)=1 Тогда ТекстЗапроса=ТекстЗапроса+" |Группировка "+ СЗ.ПолучитьЗначение(Ном)+";"; //СЗ.ПолучитьЗначение(Ном);" КолГруппировок=КолГруппировок+1; КонецЕсли; КонецЦикла; Если КолГруппировок = 0 Тогда Предупреждение("Нельзя построить отчет без группировок!",60); Возврат; КонецЕсли; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; СформироватьТаблицу(Запрос,1); Таб.ТолькоПросмотр(1); Таб.Опции(0,0,0,0); Таб.Показать(""); КонецПроцедуры |
|||
87
Мигало
03.03.14
✎
15:53
|
(86) В таком виде и не должен выводить ничего с партий ...
Структуру регистра партии и прибыль дай |
|||
88
Ёпрст
03.03.14
✎
16:12
|
(86) и не должен.
Пользуйся функциями для останкового регистра - НачОст,КонОст,Приход,Расход наслаждайся.. |
|||
89
Злопчинский
03.03.14
✎
16:13
|
на операторе
СредняяСебестоимость=Формат((Запрос.Стоимость/Запрос.Количество)... . прога запросто может сломаться, потому что запросто у школяров бывают ситуации когда подвисают суммы без количеств |
|||
90
antoha86
06.03.14
✎
17:00
|
Да не волнуйтесь я всего лишь по учебнику делаю
|
|||
91
antoha86
06.03.14
✎
17:02
|
(87) Можно поподробнее, пожалуйста, ты меня побуждаешь что то ввести или что бы я что то тебе дал?
|
|||
92
antoha86
06.03.14
✎
17:05
|
(88) а можно пожалуйста, поподробнее, что куда необходимо в моем коде вбить
|
|||
93
Ёпрст
06.03.14
✎
17:10
|
(92) Замени функция Сумма в тексте запроса на любую из (88) по вкусу.. наслаждайся
|
|||
94
antoha86
06.03.14
✎
17:21
|
(93) Зачем сумма у меня в отчет выводится, я хотел к этой сумму прикрепить партию из регистра партии товаров
|
|||
95
Ёпрст
06.03.14
✎
17:24
|
ааа.. посмотрел, че ты там понаписал.
У тебя запрос к 2-м регитсрам и нет никакой связи между ними. Втыкай в переменные текста запроса, чтоб с обоих регистров брались данные , ну и соответствующие функции (для оборотного регистра, это сумма(), для останкового - те что в (88)) |Номенклатура=Регистр.Прибыль.Номенклатура,Регистр.ПартииТоваров.Номенклатура; |
|||
96
antoha86
11.03.14
✎
15:35
|
(95) А функцию на партию как нужно написать?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |