"Процедура Сформировать()<br><br> СпрПрейскурант = СоздатьОбъект("Справочник.Прейскуранты"); <br> СпрТарифы = СоздатьОбъект("Справочник.Тарифы"); <br> ДокСтатКарты = СоздатьОбъект("Документ.СтатКартаПациента");<br> СпрПрейскурант.НайтиПоКоду(1);<br> СпрПрейскурант.НайтиПоКоду(2); <br> СпрПрейскурант.НайтиПоКоду(3);<br> СпрПрейскурант.НайтиПоКоду(4);<br> СпрПрейскурант.НайтиПоКоду(5);;<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> //Если Итог <> 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> Для а = 4 По тзПроцедуры.КоличествоКолонок() Цикл<br> ИтогоПосещений = тзПроцедуры.Итог(а);<br> КодПроцедуры = тзПроцедуры.ПолучитьПараметрыКолонки(а);<br> КодПроцедуры = Прав(КодПроцедуры, 6);<br> СпрТарифы.НайтиПоКоду(КодПроцедуры);<br> Цена =СпрТарифы.Цена.получить(НачДата); <br> сумма = Цена*ИтогоПосещений;<br> Т.ПрисоединитьСекцию("Подвал|Процедуры");<br> ИтогоПосещений=0;<br> Цена=0;<br>КонецЦикла; <br> Т.ПрисоединитьСекцию("Подвал|Цена");<br> Т.ПрисоединитьСекцию("Подвал|ИтогоПоПациенту");<br><br> Т.Опции(0);<br> Т.Показать();<br> Т.Напечатать(0); <br>КонецПроцедуры"