Как написать программно, чтобы цена выводилась в таблице при формировании отчета?
07.03.2012
07:28
#1
"Имеется отчет, при его формировании выводится таблица с ФИО пациента, Процедурами которые он прошел, Количество процедур, Цена и Стоимость.<br>ФИО, Наименования процедур и их Количество выводится в таблице, теперь нужно добавить графы Цена и Стоимость. Цена должна выводиться из справочника Тариф, ну а Стоимость - из произведения Цены и Количества. Прикрепляю скрины... помогите пожалуйста...<br> <br> <br>Т = СоздатьОбъект("Таблица");<br> тзПроцедуры = СоздатьОбъект("ТаблицаЗначений");<br> тзПроцедуры.НоваяКолонка("Контрагент");<br> тзПроцедуры.НоваяКолонка("ФИО");<br> тзПроцедуры.НоваяКолонка("Цена", "Число");<br> СпрТарифы.ВыбратьЭлементы();<br> Пока СпрТарифы.ПолучитьЭлемент() = 1 Цикл<br> Колонка = "к" + СокрЛП(СпрТарифы.Код);<br> тзПроцедуры.НоваяКолонка(Колонка, "Число");<br> КонецЦикла;<br> //тзПроцедуры.Выгрузить(ТТТ);<br><br> Док = СоздатьОбъект("Документ.СтатКартаПациента");<br> Если ПустоеЗначение(Контрагент) = 1 Тогда<br> Док.ВыбратьДокументы(НачДата, КонДата);<br> Пока Док.ПолучитьДокумент() = 1 Цикл<br> //Сообщить(Док.НомерДок);<br> Док.ВыбратьСтроки();<br> Пока Док.ПолучитьСтроку() = 1 Цикл<br> Если СокрЛП(Док.КодПроцедуры) = """" Тогда<br> Продолжить;<br> КонецЕсли;<br> тзПроцедуры.НоваяСтрока();<br> тзПроцедуры.ФИО = Док.Пациент;<br> тзПроцедуры.Контрагент = Док.Авиакомпания;<br> тзПроцедуры.Цена = Док.Цена;<br> КодПроцедуры = СокрЛП(Док.КодПроцедуры.Код);<br> //Сообщить(КодПроцедуры);<br> тзПроцедуры.УстановитьЗначение(тзПроцедуры.НомерСтроки, "к" + СокрЛП(КодПроцедуры), 1);<br> КонецЦикла;<br> КонецЦикла;<br> Иначе<br> Док.ВыбратьДокументы(НачДата, КонДата);<br> Пока Док.ПолучитьДокумент() = 1 Цикл<br> Если Док.Авиакомпания <> Контрагент Тогда<br> Продолжить;<br> КонецЕсли;<br> Док.ВыбратьСтроки();<br> Пока Док.ПолучитьСтроку() = 1 Цикл<br> Если СокрЛП(Док.КодПроцедуры) = """" Тогда<br> Продолжить;<br> КонецЕсли;<br> тзПроцедуры.НоваяСтрока();<br> тзПроцедуры.ФИО = Док.Пациент;<br> тзПроцедуры.Контрагент = Док.Авиакомпания;<br> тзПроцедуры.Цена = Док.Цена;<br> КодПроцедуры = СокрЛП(Док.КодПроцедуры.Код);<br> //Сообщить(КодПроцедуры);<br> тзПроцедуры.УстановитьЗначение(тзПроцедуры.НомерСтроки, "к" + СокрЛП(КодПроцедуры), 1);<br> КонецЦикла;<br> КонецЦикла;<br> КонецЕсли;<br><br> //Сообщить(тзПроцедуры.КоличествоКолонок());<br><br> // формируем список колонок для свертки *************************************************************<br> //тзПроцедуры.Выгрузить(ТТТ);<br> СписокКолонок = "Цена";<br> Для а = 4 По тзПроцедуры.КоличествоКолонок() - 3 Цикл<br> СписокКолонок = СписокКолонок + "," + СокрЛП(а);<br> КонецЦикла;<br> тзПроцедуры.Свернуть("ФИО,Контрагент", СписокКолонок);<br> тзПроцедуры.Сортировать("Контрагент,ФИО");<br> //тзПроцедуры.Выгрузить(ТТТ);<br><br> // удаляем лишние колонки без итогов<br> а=4;<br> Пока а <= тзПроцедуры.КоличествоКолонок() Цикл<br> Если тзПроцедуры.Итог(а) = 0 Тогда<br> тзПроцедуры.УдалитьКолонку(а); //удаляем строку, но "а" не увеличиваем, т.к. следующая строка у нас и есть "а"<br> Иначе<br> а = а + 1; //увеличиваем а (для перехода на след. строку)<br> КонецЕсли;<br> КонецЦикла;<br> //тзПроцедуры.Выгрузить(ТТТ);<br><br> // выводим на печать ********************************************************************************<br> // шапка<br> Т.ВывестиСекцию("Шапка|ФИО");<br> Т.ПрисоединитьСекцию("Шапка|Контрагент");<br> Для а = 4 По тзПроцедуры.КоличествоКолонок() Цикл<br> КодПроцедуры = тзПроцедуры.ПолучитьПараметрыКолонки(а);<br> КодПроцедуры = Прав(КодПроцедуры, 6);<br> СпрТарифы.НайтиПоКоду(КодПроцедуры);<br> КодПроцедуры = СпрТарифы.ТекущийЭлемент().ПолноеНаименование;<br> <br> <br> СпрТарифы.НайтиПоКоду(КодПроцедуры);<br> Цена = СпрТарифы.ТекущийЭлемент().Цена;<br> //Итог = тзПроцедуры.Итог(а);<br> //Если Итог <> 0 Тогда<br> Т.ПрисоединитьСекцию("Шапка|Процедуры");<br> //КонецЕсли;<br><br> КонецЦикла;<br> Т.ПрисоединитьСекцию("Шапка|Цена");<br> Т.ПрисоединитьСекцию("Шапка|ИтогоПоПациенту");<br><br> // строки<br> тзПроцедуры.ВыбратьСтроки();<br> Пока тзПроцедуры.ПолучитьСтроку() = 1 Цикл<br> Т.ВывестиСекцию("Строка|ФИО");<br> Т.ПрисоединитьСекцию("Строка|Контрагент");<br><br> ИтогоПоПациенту = 0;<br> Для а = 4 По тзПроцедуры.КоличествоКолонок() Цикл<br> Посещения = тзПроцедуры.ПолучитьЗначение(тзПроцедуры.НомерСтроки, а);<br> Т.ПрисоединитьСекцию("Строка|Процедуры");<br> ИтогоПоПациенту = ИтогоПоПациенту + Посещения;<br> КонецЦикла;<br><br> Т.ПрисоединитьСекцию("Строка|Цена");<br> Т.ПрисоединитьСекцию("Строка|ИтогоПоПациенту");<br> КонецЦикла;<br><br> <br> <br><br> // подвал<br> Т.ВывестиСекцию("Подвал|ФИО");<br> Т.ПрисоединитьСекцию("Подвал|Контрагент");<br> //Т.ПрисоединитьСекцию("Шапка|Контрагент");<br> Для а = 4 По тзПроцедуры.КоличествоКолонок() Цикл<br> ИтогоПосещений = тзПроцедуры.Итог(а);<br> СпрПрейскурант.НайтиПоКоду(КодПроцедуры);<br> Цена = СпрПрейскурант.ТекущийЭлемент().Цена;<br> Цена = СпрПрейскурант.Цена.Получить();<br> Т.ПрисоединитьСекцию("Подвал|Процедуры");<br> КонецЦикла;<br> Т.ПрисоединитьСекцию("Подвал|Цена");<br> Т.ПрисоединитьСекцию("Подвал|ИтогоПоПациенту");<br><br> Т.Опции(0);<br> Т.Показать();<br>КонецПроцедуры"
07.03.2012
09:44
#3
там нет ошибки, ошибка в программе... да я заметила, там не определена переменная ЦенаПроцедуры, а в макете Цена... я меняла названия, скрины просто разные по дате, но я все исправила, и все равно строка Цена у меня пустует(( вы праверьте пожалуйста, правильно ли я написала в конфигурации программу... может забыла что то?
07.03.2012
10:18
#4
Я не вижу в Вашей программе ничего с ЦенаПроцедуры.<br>Сохраните. Закройте. Откройте и еще раз пройтитесь с отладчиком.
07.03.2012
10:20
#5
вместо ЦенаПроцедуры, у меня сейчас стоит Цена... и в макете таблицы я все исправила
16.03.2012
14:01
#8
"По видимому, строки таблицы выводятся этим участком кода:<br> <br><pre> // строки тзПроцедуры.ВыбратьСтроки(); Пока тзПроцедуры.ПолучитьСтроку() = 1 Цикл Т.ВывестиСекцию("Строка|ФИО"); Т.ПрисоединитьСекцию("Строка|Контрагент"); ИтогоПоПациенту = 0; Для а = 4 По тзПроцедуры.КоличествоКолонок() Цикл Посещения = тзПроцедуры.ПолучитьЗначение(тзПроцедуры.НомерСтроки, а); Т.ПрисоединитьСекцию("Строка|Процедуры"); ИтогоПоПациенту = ИтогоПоПациенту + Посещения; КонецЦикла; Т.ПрисоединитьСекцию("Строка|Цена"); Т.ПрисоединитьСекцию("Строка|ИтогоПоПациенту"); КонецЦикла;</pre><br><br>В нем не вижу, чтобы где-то была переменная "Цена", которая используется в макете. Видимо ее тут надо куда-то вставить."
16.03.2012
14:06
#9
спасибо большое за подсказку, с этим я уже разобралась и сдала этот отчет))) все равно спасибо что уделили время на просмотр кода!
16.03.2012
14:23
#10
"Для а = 4 По тзПроцедуры.КоличествоКолонок() Цикл<br> ИтогоПосещений = тзПроцедуры.Итог(а);<br> КодПроцедуры = тзПроцедуры.ПолучитьПараметрыКолонки(а);<br> КодПрейскуранта = Сред(КодПроцедуры, 2, 1);<br> КодПроцедуры = Прав(КодПроцедуры, 6);<br> СпрПрейскурант.НайтиПоКоду(КодПрейскуранта);<br> СпрТарифы.ИспользоватьВладельца(СпрПрейскурант.ТекущийЭлемент());<br><br> СпрТарифы.НайтиПоКоду(КодПроцедуры);<br> Цена =СпрТарифы.Цена.получить(НачДата);<br> сумма = Цена*ИтогоПосещений;<br> Т.ПрисоединитьСекцию("Подвал|Процедуры");<br> ИтогоПосещений=0;<br> Цена=0;<br>КонецЦикла;<br> <br>мне помогли, и Цену и Стоимость добавили, все работает отлично! спасибо!"
Читают тему
(гостей: 1)