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

Вопрос по 1С(3)

Автор Partner, 07 июн 2010, 12:41

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

Partner

Как добавить текст в печатную форму если есть условие что этот текст появляется если стоит в табличной форме определённый отдел в строке служба? Помогите?

Myti

пипец,,,вы платформу вообще изучали...хоть книгу то открывали 1

Partner

По книге не получается! Не поможите?

Myti

давайте весь модуль формы документа суда,посмотрим

Partner

Вот код Печатной Формы Куда нужно ввести текст:

Функция Печать() Экспорт
   // шапка
   
   Запрос = Новый Запрос();
   Запрос.УстановитьПараметр("СсылкаНОбъект",СсылкаНаОбъект);
   Запрос.Текст =
   "ВЫБРАТЬ
   |   Софт_СпецификацииКДоговору.НомерСпецификации КАК Номер,
   |   Софт_СпецификацииКДоговору.ДатаНачала КАК Дата,
   |   Софт_СпецификацииКДоговору.Владелец КАК Договор,
   |   Софт_СпецификацииКДоговору.Владелец.Наименование КАК Договор_Наименование,
   |   Софт_СпецификацииКДоговору.Владелец.ВидДоговора КАК ВидДоговора,
   |   Софт_СпецификацииКДоговору.Владелец.Софт_ДатаНачалаДействия КАК ВладелецСофт_ДатаНачалаДействия1,
   |   Софт_СпецификацииКДоговору.Владелец.Владелец КАК Контрагент,
   |   Софт_СпецификацииКДоговору.Владелец.Владелец.НаименованиеПолное КАК Контрагент_НаименованиеПолное,
   |   Софт_СпецификацииКДоговору.Владелец.Организация КАК Организация,
   |   Софт_СпецификацииКДоговору.Владелец.Организация.НаименованиеПолное КАК Организация_Представление,
   |   Софт_СпецификацииКДоговору.ФормаОплаты,
   |   Софт_СпецификацииКДоговору.ДатаНачала,
   |   Софт_СпецификацииКДоговору.ДатаОкончания,
   |   Софт_СпецификацииКДоговору.Служба,
   |   Софт_СпецификацииКДоговору.Владелец.Софт_ДатаНачалаДействия КАК ДатаДоговора
   |ИЗ
   |   Справочник.Софт_СпецификацииКДоговору КАК Софт_СпецификацииКДоговору
   |ГДЕ
   |   Софт_СпецификацииКДоговору.Ссылка = &СсылкаНОбъект";
   
   Шапка = Запрос.Выполнить().Выбрать();
   Шапка.Следующий();
   
   //МатаданныеТЧ = СсылкаНаОбъект.Метаданные().ТабличныеЧасти["Товары"];
   //ЕстьКоэффициентПересчета = (МатаданныеТЧ.Реквизиты.Найти("Софт_КоэффициентПересчета") <> Неопределено);
   ЗапросПоТоварам = Новый Запрос();
   ЗапросПоТоварам.УстановитьПараметр("СсылкаНаОбъект", СсылкаНаОбъект);
   ЗапросПоТоварам.Текст =
   "ВЫБРАТЬ
   |   Софт_СпецификацииКДоговоруТовары.Номенклатура КАК Товар,
   |   Софт_СпецификацииКДоговоруТовары.Номенклатура.НаименованиеПолное КАК ТоварНаименование,
   |   Софт_СпецификацииКДоговоруТовары.ПериодПоставки,
   |   ВЫБОР
   |      КОГДА Софт_СпецификацииКДоговоруТовары.Софт_КоэффициентПересчета.ЕдиницаИзмерения ЕСТЬ NULL
   |         ТОГДА Софт_СпецификацииКДоговоруТовары.ЕдиницаИзмерения
   |      ИНАЧЕ Софт_СпецификацииКДоговоруТовары.Софт_КоэффициентПересчета.ЕдиницаИзмерения
   |   КОНЕЦ КАК ЕдиницаИзмерения,
   |   Софт_СпецификацииКДоговоруТовары.Количество,
   |   Софт_СпецификацииКДоговоруТовары.ЦенаБезНДС КАК Цена,
   |   (Софт_СпецификацииКДоговоруТовары.Сумма + Софт_СпецификацииКДоговоруТовары.СуммаНДС) КАК Сумма,
   |   Софт_СпецификацииКДоговоруТовары.Номенклатура.Код КАК ТоварКод,
   |   ВЫБОР
   |      КОГДА Софт_СпецификацииКДоговоруТовары.Количество = 0
   |         ТОГДА 0
   |      ИНАЧЕ (Софт_СпецификацииКДоговоруТовары.Сумма + Софт_СпецификацииКДоговоруТовары.СуммаНДС) / Софт_СпецификацииКДоговоруТовары.Количество
   |   КОНЕЦ КАК ЦенаСНДС
   |ИЗ
   |   Справочник.Софт_СпецификацииКДоговору.Товары КАК Софт_СпецификацииКДоговоруТовары
   |ГДЕ
   |   Софт_СпецификацииКДоговоруТовары.Ссылка = &СсылкаНаОбъект";
   
   
   ЗапросТовары = ЗапросПоТоварам.Выполнить().Выгрузить();
   
   ТабДокумент = Новый ТабличныйДокумент();
   Макет = ПолучитьМакет("Спецификация");
   
   ТабДокумент.ПолеСверху    = 10;
   ТабДокумент.ПолеСлева    = 10;
   ТабДокумент.ПолеСнизу    = 10;
   ТабДокумент.ПолеСправа    = 10;
   
   ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
   
   ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Спецификация_2";

   
   
   СведенияОХранителе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация,Шапка.Дата);
   СведенияОПоставщике = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Контрагент,Шапка.Дата);
   
   ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
   ТекстСпецификация = "";
   ОбластьМакета.Параметры.Заполнить(Шапка);
   
   Если ПустаяСтрока(Шапка.Номер) Тогда
      ТекстСпецификация = ТекстСпецификация+"    ";
   Иначе
      ТекстСпецификация = ТекстСпецификация+СокрЛП(Шапка.Номер)+" ";
   КонецЕсли;
   
   Если ЗначениеЗаполнено(Шапка.Дата) Тогда
      ТекстСпецификация = ТекстСпецификация + "от " + Формат(Шапка.Дата," ДФ='dd  MMMM  yyyy'")+" г.";
   Иначе   
      ТекстСпецификация = ТекстСпецификация+" от '____'  _____________________ 200 ";
   КонецЕсли;
   
      ОбластьМакета.Параметры.Спецификация = ТекстСпецификация;
   
   Поз = Найти(Шапка.Договор_Наименование, " от ");
   
   Если Поз > 0 тогда
      НомерДоговора = Лев(Шапка.Договор_Наименование, поз-1);
      ДатаДоговора  = Сред(Шапка.Договор_Наименование, поз+4);
   Иначе
      НомерДоговора = СокрЛП(Шапка.Договор_Наименование);
      ДатаДоговора  = Формат(Шапка.ДатаДоговора, "ДФ=dd.MM.yyyy" ) + " г.";
   КонецЕсли;
   
   ОбластьМакета.Параметры.КДоговору     = "к договору № " +  НомерДоговора + " от " + ДатаДоговора;
   ОбластьМакета.Параметры.МеждуСторонами = "между " + СокрЛП(Шапка.Контрагент_НаименованиеПолное) + " и " + СокрЛП(Шапка.Организация_Представление);
   
   ОбластьМакета.Параметры.Отдел       = СокрЛП(Шапка.Служба);
   ТабДокумент.Вывести(ОбластьМакета);
   
   Если Софт_СпецификацияКДоговору.Служба = "ОСМ(Отдел снабжения металлом"
      Тогда  ОбластьМакета.Параметры.Отступление = ТекстСпецификация + "Отступление от согласованного объема поставки допускается в пределах 3%"
   КонецЕсли;
   

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

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

   
   ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");
   
   
   СписокРеквизитов = "ПолноеНаименование,ИНН,Свидетельство,Телефоны,НомерСчета,Банк,БИК,КоррСчет";
   
   Если СсылкаНаОбъект.Владелец.ВидДоговора=Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком Тогда
   ОбластьМакетаПодвал.Параметры.Грузополучатель   =ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОХранителе, СписокРеквизитов);
   ОбластьМакетаПодвал.Параметры.Адрес             =СведенияОХранителе.ЮридическийАдрес;
   
   
   ОбластьМакетаПодвал.Параметры.Грузоотправитель   =ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, СписокРеквизитов);
   ОбластьМакетаПодвал.Параметры.АдресГрузоотправителя      =СведенияОПоставщике.ЮридическийАдрес;
   КонецЕсли;
   
   
Если СсылкаНаОбъект.Владелец.ВидДоговора=Перечисления.ВидыДоговоровКонтрагентов.СПокупателем Тогда
   ОбластьМакетаПодвал.Параметры.Грузополучатель   = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, СписокРеквизитов);
   ОбластьМакетаПодвал.Параметры.Адрес             = СведенияОПоставщике.ЮридическийАдрес;   
   
   ОбластьМакетаПодвал.Параметры.Грузоотправитель   =ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОХранителе, СписокРеквизитов);
   ОбластьМакетаПодвал.Параметры.АдресГрузоотправителя      = СведенияОХранителе.ЮридическийАдрес;

КонецЕсли;
   

   СписокРеквизитов = "ПолноеНаименование,ИНН,Свидетельство,Телефоны,НомерСчета,Банк,БИК,КоррСчет";
   ОбластьМакетаПодвал.Параметры.СтанцияНазначения ="";
   ОбластьМакетаПодвал.Параметры.СрокПоставки      =Формат(Шапка.ДатаНачала, "ДФ='MMMM yy'") +" - " +  Формат(Шапка.ДатаОкончания, "ДФ='MMMM yy'");
   ОбластьМакетаПодвал.Параметры.ФормаОплаты       =Шапка.ФормаОплаты;
   //ОбластьМакетаПодвал.Параметры.БазисПоставки     =СведенияОПоставщике.ПолноеНаименование;

   нн=0;
   // Инициализация итогов по странице
   ИтогоКоличествоНаСтранице = 0;
   ИтогоСуммаНаСтранице      = 0;

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

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

      КонецЕсли;

      ТабДокумент.Вывести(ОбластьМакета);

      // Увеличим итоги по странице
      ИтогоКоличествоНаСтранице = ИтогоКоличествоНаСтранице + Количество;
      ИтогоСуммаНаСтранице      = ИтогоСуммаНаСтранице      + СуммаСНДС;
      
      // Увеличим итоги по документу
      ИтогоКоличество = ИтогоКоличество + Количество;
      ИтогоСумма      = ИтогоСумма      + СуммаСНДС;

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

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

//   ТабДокумент.ОбластьПечати = ТабДокумент.Область(1,2,ТабДокумент.ВысотаТаблицы,ТабДокумент.ШиринаТаблицы + 1);
   ТабДокумент.ОтображатьСетку = Ложь;
   
   //УправлениеОтчетами.УстановитьКолонтитулыПоУмолчанию(ТабДокумент, "Спецификация", Строка(ПараметрыСеанса.ТекущийПользователь));

   Настройка = ПолучитьНастройкиКолонтитулов();
   НазваниеОтчета = "";
   ТабДокумент.НижнийКолонтитул.Выводить          = Настройка.НижнийКолонтитул.Выводить;
   ТабДокумент.НижнийКолонтитул.НачальнаяСтраница = Настройка.НижнийКолонтитул.НачальнаяСтраница;
   ТабДокумент.НижнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Верх;
   ТабДокумент.НижнийКолонтитул.ТекстСлева   = ЗаполнитьТекстКолонтитула(Настройка.НижнийКолонтитул.ТекстСлева, НазваниеОтчета, "");
   //ТабличныйДокумент.НижнийКолонтитул.ТекстВЦентре = ЗаполнитьТекстКолонтитула(Настройка.НижнийКолонтитул.ТекстВЦентре, НазваниеОтчета, Пользователь);
   ТабДокумент.НижнийКолонтитул.ТекстСправа  = ЗаполнитьТекстКолонтитула(Настройка.НижнийКолонтитул.ТекстСправа, НазваниеОтчета, "");

   Возврат ТабДокумент;
   

КонецФункции
// Проставление в тексте вместо шаблонов, значений
//
// Параметры
//  Текст           – Строка – Исходный текст шаблона
//  НазваниеОтчета  – Строка – Название отчета
//  Пользователь    – Строка – Имя пользователя
//
// Возвращаемое значение:
//   Строка   – результурующий текст для колонтитула
//
Функция ЗаполнитьТекстКолонтитула(Текст, НазваниеОтчета, Пользователь)

   Результат = Текст;
   
   Результат = СтрЗаменить(Результат, "[&НазваниеОтчета]", НазваниеОтчета);
   Результат = СтрЗаменить(Результат, "[&Пользователь]", Пользователь);
   
   Возврат Результат;

КонецФункции // ЗаполнитьТекстКолонтитула()

Функция ПолучитьНастройкиКолонтитулов()

   Настройка = Константы.НастройкиКолонтитуловПоУмолчанию.Получить().Получить();
   
   Если ТипЗнч(Настройка) <> Тип("Структура") Тогда
      // Если константа не заполнена, то заполним структуру настройками пустых колонтитулов
      
      Настройка = Новый Структура;
      
      Верхний = Новый Структура;
      Нижний = Новый Структура;
      
      Верхний.Вставить("Выводить", Ложь);
      Верхний.Вставить("НачальнаяСтраница", 1);
      Верхний.Вставить("ТекстСлева",   "");
      Верхний.Вставить("ТекстВЦентре", "");
      Верхний.Вставить("ТекстСправа",  "");
      
      Нижний.Вставить("Выводить", Ложь);
      Нижний.Вставить("НачальнаяСтраница", 1);
      Нижний.Вставить("ТекстСлева",   "");
      Нижний.Вставить("ТекстВЦентре", "");
      Нижний.Вставить("ТекстСправа",  "");
      
      Настройка.Вставить("ВерхнийКолонтитул", Верхний);
      Настройка.Вставить("НижнийКолонтитул",  Нижний);
      
   Иначе
      // Если константа заполнена, но нет нужных нам полей, то заполним структуру настройками пустых колонтитулов
   
      Если Не Настройка.Свойство("ВерхнийКолонтитул") Тогда
         
         Верхний = Новый Структура;
         
         Верхний.Вставить("Выводить", Ложь);
         Верхний.Вставить("НачальнаяСтраница", 1);
         Верхний.Вставить("ТекстСлева",   "");
         Верхний.Вставить("ТекстВЦентре", "");
         Верхний.Вставить("ТекстСправа",  "");
         
         Настройка.Вставить("ВерхнийКолонтитул", Верхний);
         
      КонецЕсли;
      
      Если Не Настройка.Свойство("НижнийКолонтитул") Тогда
         
         Нижний = Новый Структура;
         
         Нижний.Вставить("Выводить", Ложь);
         Нижний.Вставить("НачальнаяСтраница", 1);
         Нижний.Вставить("ТекстСлева",   "");
         Нижний.Вставить("ТекстВЦентре", "");
         Нижний.Вставить("ТекстСправа",  "");
         
         Настройка.Вставить("НижнийКолонтитул",  Нижний);
         
      КонецЕсли;
      
   КонецЕсли;
   
   Возврат Настройка;

КонецФункции // ПолучитьНастройкиКолонтитулов()


Myti

ну вот к примеру после этой строчки
"ОбластьМакета.Параметры.нн = нн;"
пишешь...........
Если СокрЛП(СтрокаТЗ.отдел) = "ИТ" Тогда
ОбластьМакета.Параметры."ЗдесьПараметрНаФорме" = "Тут значение присвоения";
КонецЕсли;
//***ПараметрНаФорме - соответственно должен быть в гориз-й области "Строчка"

Теги:

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

Рейтинг@Mail.ru

Поиск