Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 04:00

Вывести на печать комментарии из табличной части

Автор pixel, 21 сен 2015, 18:32

0 Пользователей и 1 гость просматривают эту тему.

pixel

Здравствуйте,
сразу скажу что я бухгалтер ,но какие то элементарные вещи пытаюсь делать сама.
проблема такая: есть документ в котором заполняется табличная часть  с материалами и я завела еще одну колонку(Примечание) ,которое будет печататься мной к каждому материалу. что я сделала:завела реквизит  табличной части Примечание(тип строка),добавила его в табличную часть.Сделала колонку в печатной форме.  добавила в код программы
ОбластьСтрока.Параметры.Прим= СтрокаТзСписание.Примечание
а комментарий так и не печатается,говорит :Поле объекта не обнаружено (Примечание). Что я делаю не так?
Спасибо заранее,не судите строго)))

Kironten

Цитата: pixel от 21 сен 2015, 18:32
Здравствуйте,
сразу скажу что я бухгалтер ,но какие то элементарные вещи пытаюсь делать сама.
проблема такая: есть документ в котором заполняется табличная часть  с материалами и я завела еще одну колонку(Примечание) ,которое будет печататься мной к каждому материалу. что я сделала:завела реквизит  табличной части Примечание(тип строка),добавила его в табличную часть.Сделала колонку в печатной форме.  добавила в код программы
ОбластьСтрока.Параметры.Прим= СтрокаТзСписание.Примечание
а комментарий так и не печатается,говорит :Поле объекта не обнаружено (Примечание). Что я делаю не так?
Спасибо заранее,не судите строго)))
Попробуйте в печатной форме обозвать параметр "Прим" как "Примечание".
Если заполнение идет через ЗаполнитьЗначенияСвойств, то возможно этого будет достаточно.
Если же нет, то ищите где в коде заполнение. Одной, вашей строки кода недостаточно, чтобы можно было что-то посоветовать - выкладывайте весь код заполнения.

pixel


Попробуйте в печатной форме обозвать параметр "Прим" как "Примечание".
Если заполнение идет через ЗаполнитьЗначенияСвойств, то возможно этого будет достаточно.
Если же нет, то ищите где в коде заполнение. Одной, вашей строки кода недостаточно, чтобы можно было что-то посоветовать - выкладывайте весь код заполнения.
[/quote]

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

И дальше по тексту))
                           

Kironten

Хрень какая то.
Цикл завершается КонецЕсли.

По идее должно быть что то вроде:

Если тзСписание.Количество() > 0 Тогда
ОбластьШапка.Параметры.ЗаголовокТаблицы = "Списание материалов";
Область = Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(ОбластьШапка);
НомСтроки = 1;
Для Каждого СтрокаТзСписание Из тзСписание Цикл
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьСтрока.Параметры.Заполнить(СтрокаТзСписание);
ОбластьСтрока.Параметры.НомСтроки = НомСтроки;
ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
//ОбластьСтрока.Параметры.Примечание= СтрокаТзСписание.Примечание;
КонецЕсли;


Хотя... там еще есть какая то таблица значений поступления.
В общем показывайте код до заполнения подвала. Так понятнее будет.

pixel

я просто хотела как лучше,чтоб покороче:)

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


Kironten

Цитата: pixel от 22 сен 2015, 10:49
я просто хотела как лучше,чтоб покороче:)

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

На будущее. Обрамляйте код который выкладываете тегами (значок шарп на панели сообщения). Ваш код и так читать тяжело, а без выделения - вообще нереально. Посмотрите, как у меня выложен код, и у вас.
В общем, по идее, этот кусок кода должен выглядеть как то так:
ОбластьЗаголовок   = Макет.ПолучитьОбласть("Заголовок");
ОбластьШапка       = Макет.ПолучитьОбласть("Шапка");
ОбластьСтрока      = Макет.ПолучитьОбласть("Строка");

Если ФлагПечать Тогда
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
КонецЕсли;

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

Если тзСписание.Количество() > 0 Тогда

ОбластьШапка.Параметры.ЗаголовокТаблицы = "Списание материалов";
Область = Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(ОбластьШапка);
НомСтроки = 1;

Для Каждого СтрокаТзСписание Из тзСписание Цикл

ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьСтрока.Параметры.Заполнить(СтрокаТзСписание);
ОбластьСтрока.Параметры.НомСтроки = НомСтроки;

Если ТипЗнч(СтрокаТзСписание.ТМЦ) = Тип("СправочникСсылка.КлассификаторТМЦ") Тогда
ОбластьСтрока.Параметры.НаименованиеТМЦ = СтрокаТзСписание.ТМЦ.Наименование;
Иначе   
лТМЦ = "" + ?(обПустоеЗначение(СтрокаТзСписание.ТМЦ.ПолноеНаименование),СтрокаТзСписание.ТМЦ.Наименование,СтрокаТзСписание.ТМЦ.ПолноеНаименование) + ?(обПустоеЗначение(СтрокаТзСписание.ХарактеристикаТМЦ),""," "+СтрокаТзСписание.ХарактеристикаТМЦ);
ОбластьСтрока.Параметры.НаименованиеТМЦ = лТМЦ;
КонецЕсли;

ТабДок.Вывести(ОбластьСтрока);
НомСтроки = НомСтроки + 1;

КонецЦикла;

ОбластьПодвал.Параметры.ДолжностьСотрудник1 = обПолучитьПериодическиеСведенияОСотруднике(Подпись1).Должность;
ОбластьПодвал.Параметры.ФИОСотрудник1 = обФИО(Подпись1);
ОбластьПодвал.Параметры.ДолжностьСотрудник2 = обПолучитьПериодическиеСведенияОСотруднике(Подпись2).Должность;
ОбластьПодвал.Параметры.ФИОСотрудник2 = обФИО(Подпись2);
ТабДок.Вывести(ОбластьПодвал);
КонецЕсли;

KrivosheevEV

тзСписание.Свернуть("ВидНормы,ВидТМЦ,ТМЦ,ХарактеристикаТМЦ,ЕдиницаИзмерения","Количество");
заменить на
тзСписание.Свернуть("ВидНормы,ВидТМЦ,ТМЦ,ХарактеристикаТМЦ,ЕдиницаИзмерения,Примечание","Количество");

pixel

Извиняйте.на будущее буду знать
Добавлено: 22 сен 2015, 11:27


Цитата: KrivosheevEV от 22 сен 2015, 11:21
тзСписание.Свернуть("ВидНормы,ВидТМЦ,ТМЦ,ХарактеристикаТМЦ,ЕдиницаИзмерения","Количество");
заменить на
тзСписание.Свернуть("ВидНормы,ВидТМЦ,ТМЦ,ХарактеристикаТМЦ,ЕдиницаИзмерения,Примечание","Количество");


СПАСИБО Вам огромное!:)
Добавлено: 22 сен 2015, 11:30


И Вам Спасибо, Kironten!
       

Kironten

Цитата: KrivosheevEV от 22 сен 2015, 11:21
тзСписание.Свернуть("ВидНормы,ВидТМЦ,ТМЦ,ХарактеристикаТМЦ,ЕдиницаИзмерения,Примечание","Количество");

Ах да. Свертка по добавленной колонке. Забыл дописать. Помнил, пока переделывал код, но в итоге забыл. Ну да ладно. Главное работает.

pixel

А можно я еще обнаглела и спросила:)?
Я решила закрепить шапку документа чтоб она печаталась на каждой странице.сделала так
Если тзСписание.Количество() > 0 Тогда

ОбластьШапка.Параметры.ЗаголовокТаблицы = "Списание материалов";
Область = Макет.ПолучитьОбласть("Шапка");
ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область(32,,33,);
ТабДок.Вывести(ОбластьШапка);


А как мне можно прервать ее повторение,когда будет обнаружена область подвал?потому что бывает что одна пподпись подвала попадает на след лист и над ней опять выводится эта шапка.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск