Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[1С:Предприятие 7.7]

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

Nachinayush'aya
читатель
офлайн
Дата регистрации: 27.12.2011
Сообщений: 35
Пост №1
 
07.03.2012 07:28

"Имеется отчет, при его формировании выводится таблица с ФИО пациента, Процедурами которые он прошел, Количество процедур, Цена и Стоимость.<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>КонецПроцедуры"

wostroga
читатель
офлайн
Дата регистрации: 15.03.2011
Сообщений: 59
Пост №2
 
07.03.2012 09:39

Проверьте значение ячейки с ценой в макете

Nachinayush'aya
читатель
офлайн
Дата регистрации: 27.12.2011
Сообщений: 35
Пост №3
 
07.03.2012 09:44

там нет ошибки, ошибка в программе... да я заметила, там не определена переменная ЦенаПроцедуры, а в макете Цена... я меняла названия, скрины просто разные по дате, но я все исправила, и все равно строка Цена у меня пустует(( вы праверьте пожалуйста, правильно ли я написала в конфигурации программу... может забыла что то?

wostroga
читатель
офлайн
Дата регистрации: 15.03.2011
Сообщений: 59
Пост №4
 
07.03.2012 10:18

Я не вижу в Вашей программе ничего с ЦенаПроцедуры.<br>Сохраните. Закройте. Откройте и еще раз пройтитесь с отладчиком.

Nachinayush'aya
читатель
офлайн
Дата регистрации: 27.12.2011
Сообщений: 35
Пост №5
 
07.03.2012 10:20

вместо ЦенаПроцедуры, у меня сейчас стоит Цена... и в макете таблицы я все исправила

wostroga
читатель
офлайн
Дата регистрации: 15.03.2011
Сообщений: 59
Пост №6
 
07.03.2012 10:24

Может быть в справочнике Тарифы у Вас все же ЦенаПроцедуры?

Nachinayush'aya
читатель
офлайн
Дата регистрации: 27.12.2011
Сообщений: 35
Пост №7
 
07.03.2012 10:25

нет( в справочнике Тарифы у меня Цена

CheshirskyCat
читатель
офлайн
Дата регистрации: 09.01.2004
Сообщений: 326
Пост №8
 
16.03.2012 14:01

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

Nachinayush'aya
читатель
офлайн
Дата регистрации: 27.12.2011
Сообщений: 35
Пост №9
 
16.03.2012 14:06

спасибо большое за подсказку, с этим я уже разобралась и сдала этот отчет))) все равно спасибо что уделили время на просмотр кода!

Nachinayush'aya
читатель
офлайн
Дата регистрации: 27.12.2011
Сообщений: 35
Пост №10
 
16.03.2012 14:23

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

Показывать по 10 20 40 сообщений

Читают тему:

Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация