Как написать программно, чтобы цена выводилась в таблице при формировании отчета?

Новая тема
"Имеется отчет, при его формировании выводится таблица с ФИО пациента, Процедурами которые он прошел, Количество процедур, Цена и Стоимость.
ФИО, Наименования процедур и их Количество выводится в таблице, теперь нужно добавить графы Цена и Стоимость. Цена должна выводиться из справочника Тариф, ну а Стоимость - из произведения Цены и Количества. Прикрепляю скрины... помогите пожалуйста...


Т = СоздатьОбъект("Таблица");
   тзПроцедуры = СоздатьОбъект("ТаблицаЗначений");
   тзПроцедуры.НоваяКолонка("Контрагент");
   тзПроцедуры.НоваяКолонка("ФИО");
   тзПроцедуры.НоваяКолонка("Цена", "Число");
   СпрТарифы.ВыбратьЭлементы();
   Пока СпрТарифы.ПолучитьЭлемент() = 1 Цикл
       Колонка = "к" + СокрЛП(СпрТарифы.Код);
       тзПроцедуры.НоваяКолонка(Колонка, "Число");
   КонецЦикла;
   //тзПроцедуры.Выгрузить(ТТТ);

   Док = СоздатьОбъект("Документ.СтатКартаПациента");
   Если ПустоеЗначение(Контрагент) = 1 Тогда
       Док.ВыбратьДокументы(НачДата, КонДата);
       Пока Док.ПолучитьДокумент() = 1 Цикл
           //Сообщить(Док.НомерДок);
           Док.ВыбратьСтроки();
           Пока Док.ПолучитьСтроку() = 1 Цикл
               Если СокрЛП(Док.КодПроцедуры) = """" Тогда
                   Продолжить;
               КонецЕсли;
               тзПроцедуры.НоваяСтрока();
               тзПроцедуры.ФИО         = Док.Пациент;
               тзПроцедуры.Контрагент    = Док.Авиакомпания;
               тзПроцедуры.Цена        = Док.Цена;
               КодПроцедуры = СокрЛП(Док.КодПроцедуры.Код);
               //Сообщить(КодПроцедуры);
               тзПроцедуры.УстановитьЗначение(тзПроцедуры.НомерСтроки, "к" + СокрЛП(КодПроцедуры), 1);
           КонецЦикла;
       КонецЦикла;
   Иначе
       Док.ВыбратьДокументы(НачДата, КонДата);
       Пока Док.ПолучитьДокумент() = 1 Цикл
           Если Док.Авиакомпания <> Контрагент Тогда
               Продолжить;
           КонецЕсли;
           Док.ВыбратьСтроки();
           Пока Док.ПолучитьСтроку() = 1 Цикл
               Если СокрЛП(Док.КодПроцедуры) = """" Тогда
                   Продолжить;
               КонецЕсли;
               тзПроцедуры.НоваяСтрока();
               тзПроцедуры.ФИО         = Док.Пациент;
               тзПроцедуры.Контрагент    = Док.Авиакомпания;
               тзПроцедуры.Цена        = Док.Цена;
               КодПроцедуры = СокрЛП(Док.КодПроцедуры.Код);
               //Сообщить(КодПроцедуры);
               тзПроцедуры.УстановитьЗначение(тзПроцедуры.НомерСтроки, "к" + СокрЛП(КодПроцедуры), 1);
           КонецЦикла;
       КонецЦикла;
   КонецЕсли;

   //Сообщить(тзПроцедуры.КоличествоКолонок());

   // формируем список колонок для свертки *************************************************************
   //тзПроцедуры.Выгрузить(ТТТ);
   СписокКолонок = "Цена";
   Для а = 4 По тзПроцедуры.КоличествоКолонок() - 3 Цикл
       СписокКолонок = СписокКолонок + "," + СокрЛП(а);
   КонецЦикла;
   тзПроцедуры.Свернуть("ФИО,Контрагент", СписокКолонок);
   тзПроцедуры.Сортировать("Контрагент,ФИО");
   //тзПроцедуры.Выгрузить(ТТТ);

   // удаляем лишние колонки без итогов
   а=4;
   Пока а <= тзПроцедуры.КоличествоКолонок() Цикл
       Если тзПроцедуры.Итог(а) = 0 Тогда
           тзПроцедуры.УдалитьКолонку(а);        //удаляем строку, но "а" не увеличиваем, т.к. следующая строка у нас и есть "а"
       Иначе
           а = а + 1;                         //увеличиваем а (для перехода на след. строку)
       КонецЕсли;
   КонецЦикла;
   //тзПроцедуры.Выгрузить(ТТТ);

   // выводим на печать ********************************************************************************
   // шапка
   Т.ВывестиСекцию("Шапка|ФИО");
   Т.ПрисоединитьСекцию("Шапка|Контрагент");
   Для а = 4 По тзПроцедуры.КоличествоКолонок() Цикл
       КодПроцедуры = тзПроцедуры.ПолучитьПараметрыКолонки(а);
       КодПроцедуры = Прав(КодПроцедуры, 6);
       СпрТарифы.НайтиПоКоду(КодПроцедуры);
       КодПроцедуры = СпрТарифы.ТекущийЭлемент().ПолноеНаименование;
       
   
       СпрТарифы.НайтиПоКоду(КодПроцедуры);
       Цена = СпрТарифы.ТекущийЭлемент().Цена;
       //Итог = тзПроцедуры.Итог(а);
       //Если Итог <> 0 Тогда
           Т.ПрисоединитьСекцию("Шапка|Процедуры");
       //КонецЕсли;

   КонецЦикла;
   Т.ПрисоединитьСекцию("Шапка|Цена");
   Т.ПрисоединитьСекцию("Шапка|ИтогоПоПациенту");

   // строки
   тзПроцедуры.ВыбратьСтроки();
   Пока тзПроцедуры.ПолучитьСтроку() = 1 Цикл
       Т.ВывестиСекцию("Строка|ФИО");
       Т.ПрисоединитьСекцию("Строка|Контрагент");

       ИтогоПоПациенту = 0;
       Для а = 4 По тзПроцедуры.КоличествоКолонок() Цикл
           Посещения = тзПроцедуры.ПолучитьЗначение(тзПроцедуры.НомерСтроки, а);
           Т.ПрисоединитьСекцию("Строка|Процедуры");
           ИтогоПоПациенту = ИтогоПоПациенту + Посещения;
       КонецЦикла;

       Т.ПрисоединитьСекцию("Строка|Цена");
       Т.ПрисоединитьСекцию("Строка|ИтогоПоПациенту");
   КонецЦикла;

   
       

   // подвал
   Т.ВывестиСекцию("Подвал|ФИО");
   Т.ПрисоединитьСекцию("Подвал|Контрагент");
   //Т.ПрисоединитьСекцию("Шапка|Контрагент");
   Для а = 4 По тзПроцедуры.КоличествоКолонок() Цикл
       ИтогоПосещений = тзПроцедуры.Итог(а);
      СпрПрейскурант.НайтиПоКоду(КодПроцедуры);
       Цена = СпрПрейскурант.ТекущийЭлемент().Цена;
       Цена = СпрПрейскурант.Цена.Получить();
       Т.ПрисоединитьСекцию("Подвал|Процедуры");
   КонецЦикла;
   Т.ПрисоединитьСекцию("Подвал|Цена");
   Т.ПрисоединитьСекцию("Подвал|ИтогоПоПациенту");

   Т.Опции(0);
   Т.Показать();
КонецПроцедуры"
Проверьте значение ячейки с ценой в макете
там нет ошибки, ошибка в программе... да я заметила, там не определена переменная ЦенаПроцедуры, а в макете Цена... я меняла названия, скрины просто разные по дате, но я все исправила, и все равно строка Цена у меня пустует(( вы праверьте пожалуйста, правильно ли я написала в конфигурации программу... может забыла что то?
Я не вижу в Вашей программе ничего с ЦенаПроцедуры.
Сохраните. Закройте. Откройте и еще раз пройтитесь с отладчиком.
вместо ЦенаПроцедуры, у меня сейчас стоит Цена... и в макете таблицы я все исправила
Может быть в справочнике Тарифы у Вас все же ЦенаПроцедуры?
нет( в справочнике Тарифы у меня Цена
"По видимому, строки таблицы выводятся этим участком кода:

  // строки   тзПроцедуры.ВыбратьСтроки();   Пока тзПроцедуры.ПолучитьСтроку() = 1 Цикл       Т.ВывестиСекцию("Строка|ФИО");       Т.ПрисоединитьСекцию("Строка|Контрагент");       ИтогоПоПациенту = 0;       Для а = 4 По тзПроцедуры.КоличествоКолонок() Цикл           Посещения = тзПроцедуры.ПолучитьЗначение(тзПроцедуры.НомерСтроки, а);           Т.ПрисоединитьСекцию("Строка|Процедуры");           ИтогоПоПациенту = ИтогоПоПациенту + Посещения;       КонецЦикла;       Т.ПрисоединитьСекцию("Строка|Цена");       Т.ПрисоединитьСекцию("Строка|ИтогоПоПациенту");   КонецЦикла;


В нем не вижу, чтобы где-то была переменная "Цена", которая используется в макете. Видимо ее тут надо куда-то вставить."
спасибо большое за подсказку, с этим я уже разобралась и сдала этот отчет))) все равно спасибо что уделили время на просмотр кода!
"Для а = 4 По тзПроцедуры.КоличествоКолонок() Цикл
     ИтогоПосещений = тзПроцедуры.Итог(а);
     КодПроцедуры = тзПроцедуры.ПолучитьПараметрыКолонки(а);
     КодПрейскуранта = Сред(КодПроцедуры, 2, 1);
     КодПроцедуры = Прав(КодПроцедуры, 6);
     СпрПрейскурант.НайтиПоКоду(КодПрейскуранта);
     СпрТарифы.ИспользоватьВладельца(СпрПрейскурант.ТекущийЭлемент());

     СпрТарифы.НайтиПоКоду(КодПроцедуры);
      Цена =СпрТарифы.Цена.получить(НачДата);
     сумма = Цена*ИтогоПосещений;
     Т.ПрисоединитьСекцию("Подвал|Процедуры");
     ИтогоПосещений=0;
     Цена=0;
КонецЦикла;

мне помогли, и Цену и Стоимость добавили, все работает отлично! спасибо!"
Читают тему
(гостей: 1)

Быстрый переход