ОООчень нужно! помогите пожалуйста с отчетом
Показывать по
10
20
40
сообщений
- 1
- 2
29.02.2012
07:58
#1
"Доброго дня всем! сразу перейду к вопросу... имеется Отчет по Авиакомпаниям, при сформировании которой, должна появляться таблица со списком лечебных процедур, ФИО... и тд. так вот, все это есть, вопрос в том что при формировании этого отчета выходит таблица с одним и тем же списком процедур, а он должен меняться в зависимости от пациента...
СпрПрейскурант = СоздатьОбъект("Справочник.Прейскуранты");
СпрПрейскурант.НайтиПоКоду(1);
СпрТарифы = СоздатьОбъект("Справочник.Тарифы");
СпрТарифы.ИспользоватьВладельца(СпрПрейскурант.ТекущийЭлемент());
он привязан к коду 1, поэтому выводит постоянно справочник кода 1, пробовала убрать вовсе эту строчку, выходит ошибка... помогите пожалуйста и не сильно ругайте прошу Вас..."
СпрПрейскурант = СоздатьОбъект("Справочник.Прейскуранты");
СпрПрейскурант.НайтиПоКоду(1);
СпрТарифы = СоздатьОбъект("Справочник.Тарифы");
СпрТарифы.ИспользоватьВладельца(СпрПрейскурант.ТекущийЭлемент());
он привязан к коду 1, поэтому выводит постоянно справочник кода 1, пробовала убрать вовсе эту строчку, выходит ошибка... помогите пожалуйста и не сильно ругайте прошу Вас..."
29.02.2012
08:30
#3
не суть важна! нужно чтобы в процедурах выводились наименования процедур не только из первого справочника прейскуранта, а из всех, там их около 18 справочников, а он выводит наименования лишь из первого справочника
29.02.2012
08:56
#5
я начинающий программист 1С, если я не правильно излагаю свою мысль, то не судите строго, заранее извиняюсь....
и так, первый скриншот, это как вы поняли таблица моего отчета в конфигураторе, второй скрин - так она выглядит в предприятии, третий - это и есть справочники прейскурантов... при формировании отчета, таблица выдает наименования только первого справочника, а должна выдавать всех 18, в зависимости от пациента... надеюсь вы меня понимаете((
и так, первый скриншот, это как вы поняли таблица моего отчета в конфигураторе, второй скрин - так она выглядит в предприятии, третий - это и есть справочники прейскурантов... при формировании отчета, таблица выдает наименования только первого справочника, а должна выдавать всех 18, в зависимости от пациента... надеюсь вы меня понимаете((
29.02.2012
10:11
#6
> надеюсь вы меня понимаете((
Всё равно ничего не понятно, как должно правильно выводиться и строение структуры ваших справочников
Всё равно ничего не понятно, как должно правильно выводиться и строение структуры ваших справочников
29.02.2012
15:31
#8
"Процедура Сформировать()
СпрПрейскурант = СоздатьОбъект("Справочник.Прейскуранты");
СпрПрейскурант.НайтиПоКоду(1); - это меня озадачивает, он и выводит только первый справочник, а если вместо 1 я напишу 18, таблица будет выводить 18ый справочник прейскурантов
СпрТарифы = СоздатьОбъект("Справочник.Тарифы");
СпрТарифы.ИспользоватьВладельца(СпрПрейскурант.ТекущийЭлемент());
Т = СоздатьОбъект("Таблица");
тзПроцедуры = СоздатьОбъект("ТаблицаЗначений");
тзПроцедуры.НоваяКолонка("Контрагент");
тзПроцедуры.НоваяКолонка("ФИО");
тзПроцедуры.НоваяКолонка("Цена", "Число");
СпрТарифы.ВыбратьЭлементы();
Пока СпрТарифы.ПолучитьЭлемент() = 1 Цикл
Колонка = "к" + СокрЛП(СпрТарифы.Код);
тзПроцедуры.НоваяКолонка(Колонка, "Число");
КонецЦикла;
//тзПроцедуры.Выгрузить(ТТТ);
Док = СоздатьОбъект("Документ.СтатКартаПациента");
Если ПустоеЗначение(Контрагент) = 1 Тогда
Док.ВыбратьДокументы(НачДата, КонДата);
Пока Док.ПолучитьДокумент() = 1 Цикл
//Сообщить(Док.НомерДок);
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
Если СокрЛП(Док.КодПроцедуры) = """" Тогда
Продолжить;
КонецЕсли;
тзПроцедуры.НоваяСтрока();
тзПроцедуры.ФИО = СокрЛП(Док.Фамилия) + " " + СокрЛП(Док.Имя) + " " + СокрЛП(Док.Отчество);
тзПроцедуры.Контрагент = Док.Авиакомпания;
тзПроцедуры.Цена = Док.Цена;
КодПроцедуры = СокрЛП(Док.КодПроцедуры.Код);
//Сообщить(КодПроцедуры);
тзПроцедуры.УстановитьЗначение(тзПроцедуры.НомерСтроки, "к" + СокрЛП(КодПроцедуры), 1);
КонецЦикла;
КонецЦикла;
Иначе
Док.ВыбратьДокументы(НачДата, КонДата);
Пока Док.ПолучитьДокумент() = 1 Цикл
Если Док.Авиакомпания <> Контрагент Тогда
Продолжить;
КонецЕсли;
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
Если СокрЛП(Док.КодПроцедуры) = """" Тогда
Продолжить;
КонецЕсли;
тзПроцедуры.НоваяСтрока();
тзПроцедуры.ФИО = СокрЛП(Док.Фамилия) + " " + СокрЛП(Док.Имя) + " " + СокрЛП(Док.Отчество);
тзПроцедуры.Контрагент = Док.Авиакомпания;
тзПроцедуры.Цена = Док.Цена;
КодПроцедуры = СокрЛП(Док.КодПроцедуры.Код);
//Сообщить(КодПроцедуры);
тзПроцедуры.УстановитьЗначение(тзПроцедуры.НомерСтроки, "к" + СокрЛП(КодПроцедуры), 1);
КонецЦикла;
КонецЦикла;
КонецЕсли;
//Сообщить(тзПроцедуры.КоличествоКолонок());
// формируем список колонок для свертки *************************************************************
СписокКолонок = "Цена";
Для а = 4 По тзПроцедуры.КоличествоКолонок() - 3 Цикл
СписокКолонок = СписокКолонок + "," + СокрЛП(а);
КонецЦикла;
тзПроцедуры.Свернуть("ФИО,Контрагент", СписокКолонок);
тзПроцедуры.Сортировать("Контрагент,ФИО");
//тзПроцедуры.Выгрузить(ТТТ);
// удаляем лишние колонки без итогов
а=4;
Пока а <= тзПроцедуры.КоличествоКолонок() Цикл
Если тзПроцедуры.Итог(а) = 0 Тогда
тзПроцедуры.УдалитьКолонку(а); //удаляем строку, но "а" не увеличиваем, т.к. следующая строка у нас и есть "а"
Иначе
а = а + 1; //увеличиваем а (для перехода на след. строку)
КонецЕсли;
КонецЦикла;
тзПроцедуры.Выгрузить(ТТТ);"
СпрПрейскурант = СоздатьОбъект("Справочник.Прейскуранты");
СпрПрейскурант.НайтиПоКоду(1); - это меня озадачивает, он и выводит только первый справочник, а если вместо 1 я напишу 18, таблица будет выводить 18ый справочник прейскурантов
СпрТарифы = СоздатьОбъект("Справочник.Тарифы");
СпрТарифы.ИспользоватьВладельца(СпрПрейскурант.ТекущийЭлемент());
Т = СоздатьОбъект("Таблица");
тзПроцедуры = СоздатьОбъект("ТаблицаЗначений");
тзПроцедуры.НоваяКолонка("Контрагент");
тзПроцедуры.НоваяКолонка("ФИО");
тзПроцедуры.НоваяКолонка("Цена", "Число");
СпрТарифы.ВыбратьЭлементы();
Пока СпрТарифы.ПолучитьЭлемент() = 1 Цикл
Колонка = "к" + СокрЛП(СпрТарифы.Код);
тзПроцедуры.НоваяКолонка(Колонка, "Число");
КонецЦикла;
//тзПроцедуры.Выгрузить(ТТТ);
Док = СоздатьОбъект("Документ.СтатКартаПациента");
Если ПустоеЗначение(Контрагент) = 1 Тогда
Док.ВыбратьДокументы(НачДата, КонДата);
Пока Док.ПолучитьДокумент() = 1 Цикл
//Сообщить(Док.НомерДок);
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
Если СокрЛП(Док.КодПроцедуры) = """" Тогда
Продолжить;
КонецЕсли;
тзПроцедуры.НоваяСтрока();
тзПроцедуры.ФИО = СокрЛП(Док.Фамилия) + " " + СокрЛП(Док.Имя) + " " + СокрЛП(Док.Отчество);
тзПроцедуры.Контрагент = Док.Авиакомпания;
тзПроцедуры.Цена = Док.Цена;
КодПроцедуры = СокрЛП(Док.КодПроцедуры.Код);
//Сообщить(КодПроцедуры);
тзПроцедуры.УстановитьЗначение(тзПроцедуры.НомерСтроки, "к" + СокрЛП(КодПроцедуры), 1);
КонецЦикла;
КонецЦикла;
Иначе
Док.ВыбратьДокументы(НачДата, КонДата);
Пока Док.ПолучитьДокумент() = 1 Цикл
Если Док.Авиакомпания <> Контрагент Тогда
Продолжить;
КонецЕсли;
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
Если СокрЛП(Док.КодПроцедуры) = """" Тогда
Продолжить;
КонецЕсли;
тзПроцедуры.НоваяСтрока();
тзПроцедуры.ФИО = СокрЛП(Док.Фамилия) + " " + СокрЛП(Док.Имя) + " " + СокрЛП(Док.Отчество);
тзПроцедуры.Контрагент = Док.Авиакомпания;
тзПроцедуры.Цена = Док.Цена;
КодПроцедуры = СокрЛП(Док.КодПроцедуры.Код);
//Сообщить(КодПроцедуры);
тзПроцедуры.УстановитьЗначение(тзПроцедуры.НомерСтроки, "к" + СокрЛП(КодПроцедуры), 1);
КонецЦикла;
КонецЦикла;
КонецЕсли;
//Сообщить(тзПроцедуры.КоличествоКолонок());
// формируем список колонок для свертки *************************************************************
СписокКолонок = "Цена";
Для а = 4 По тзПроцедуры.КоличествоКолонок() - 3 Цикл
СписокКолонок = СписокКолонок + "," + СокрЛП(а);
КонецЦикла;
тзПроцедуры.Свернуть("ФИО,Контрагент", СписокКолонок);
тзПроцедуры.Сортировать("Контрагент,ФИО");
//тзПроцедуры.Выгрузить(ТТТ);
// удаляем лишние колонки без итогов
а=4;
Пока а <= тзПроцедуры.КоличествоКолонок() Цикл
Если тзПроцедуры.Итог(а) = 0 Тогда
тзПроцедуры.УдалитьКолонку(а); //удаляем строку, но "а" не увеличиваем, т.к. следующая строка у нас и есть "а"
Иначе
а = а + 1; //увеличиваем а (для перехода на след. строку)
КонецЕсли;
КонецЦикла;
тзПроцедуры.Выгрузить(ТТТ);"
- 1
- 2
Читают тему
(гостей: 1)