ОООчень нужно! помогите пожалуйста с отчетом

Новая тема
Показывать по 10 20 40 сообщений
"Доброго дня всем! сразу перейду к вопросу... имеется Отчет по Авиакомпаниям, при сформировании которой, должна появляться таблица со списком лечебных процедур, ФИО... и тд. так вот, все это есть, вопрос в том что при формировании этого отчета выходит таблица с одним и тем же списком процедур, а он должен меняться в зависимости от пациента...

   СпрПрейскурант = СоздатьОбъект("Справочник.Прейскуранты");
   СпрПрейскурант.НайтиПоКоду(1);
   СпрТарифы = СоздатьОбъект("Справочник.Тарифы");
   СпрТарифы.ИспользоватьВладельца(СпрПрейскурант.ТекущийЭлемент());

он привязан к коду 1, поэтому выводит постоянно справочник кода 1, пробовала убрать вовсе эту строчку, выходит ошибка... помогите пожалуйста и не сильно ругайте прошу Вас..."
ФИО думаю, что в ряд ли хранится в справочниках прейскуранте или тарифе
не суть важна! нужно чтобы в процедурах выводились наименования процедур не только из первого справочника прейскуранта, а из всех, там их около 18 справочников, а он выводит наименования лишь из первого справочника
я не понимаю, что вы объясняете

нарисуйте и выложите скрин
я начинающий программист 1С, если я не правильно излагаю свою мысль, то не судите строго, заранее извиняюсь....
и так, первый скриншот, это как вы поняли таблица моего отчета в конфигураторе, второй скрин - так она выглядит в предприятии, третий - это и есть справочники прейскурантов... при формировании отчета, таблица выдает наименования только первого справочника, а должна выдавать всех 18, в зависимости от пациента... надеюсь вы меня понимаете((
1.JPG (58.08 КБ)
2.jpg (59.59 КБ)
3.JPG (60.38 КБ)
>  надеюсь вы меня понимаете((
Всё равно ничего не понятно, как должно правильно выводиться и строение структуры ваших справочников
напишите весь код формирования второго скрина
"Процедура Сформировать()

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

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

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

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

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

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