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

Как Присоединить() по вертикали

Автор green_forest, 04 июн 2014, 08:14

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

green_forest

Здравствуйте, как сделать так, чтобы метод Присоединить() присоединял по вертикали.

Использую метод Присоединить при окрашивании ячеек. По другому не работает.


&НаСервере
Процедура ФормироватьНаСервере()
  Отчет.ОтчетБуф.Очистить();
      Макет = Отчеты.ОтчетПоБуферам.ПолучитьМакет("Макет");
  ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); 
  ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
  ОбластьТаблицаНоменклатура = Макет.ПолучитьОбласть("ТаблицаБуфер|Номенклатура");
  ОбластьТаблицаНаличие = Макет.ПолучитьОбласть("ТаблицаБуфер|Наличие");
  ОбластьТаблицаОтклонение = Макет.ПолучитьОбласть("ТаблицаБуфер|Отклонение");
  ОбластьТаблицаРазмерБуфера = Макет.ПолучитьОбласть("ТаблицаБуфер|РазмерБуфера");

 
  //Область = Макет.ПолучитьОбласть("ТаблицаБуфер");
  ТабДок = Новый ТабличныйДокумент;

  ///////////////////Шапка//////////////////////

  ОбластьШапка.Параметры.Дата = Формат(Отчет.Дата, "ДФ=dd.MM.yyyy");
  ОбластьШапка.Параметры.Подразделение = Отчет.Подразделение;
   
  ТабДок.Вывести(ОбластьШапка);
 
  ///////////////ТаблицаБуфер/////////////////
  ТабДок.Вывести(ОбластьШапкаТаблицы);

  Запрос = Новый Запрос;
  Запрос.Текст = "ВЫБРАТЬ
                 | НоменклатураСправочник.Ссылка КАК Номенклатура,
                 | НоменклатураСправочник.РазмерБуфера КАК РазмерБуфера,
                 | ПриходРасходОстатки.КоличествоОстаток КАК Наличие
                 |ИЗ
                 | РегистрНакопления.ПриходРасход.Остатки(&Дата, ) КАК ПриходРасходОстатки
                 | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК НоменклатураСправочник
                 | ПО ПриходРасходОстатки.Номенклатура = НоменклатураСправочник.Ссылка
                 |ГДЕ
                 | НоменклатураСправочник.Ссылка В ИЕРАРХИИ
                 | (ВЫБРАТЬ
                 | ПодразделениеНоменклатура.Номенклатура
                 | ИЗ
                 | РегистрСведений.ПодразделениеНоменклатура КАК ПодразделениеНоменклатура
                 | ГДЕ
                 | ПодразделениеНоменклатура.Подразделение = &Подразделение)
                 | И НЕ НоменклатураСправочник.ЭтоГруппа
                 | И НоменклатураСправочник.РазмерБуфера <> 0";
Запрос.УстановитьПараметр("Подразделение",Отчет.Подразделение);
Запрос.УстановитьПараметр("Дата",Отчет.Дата);
Результат = Запрос.Выполнить().Выбрать();

Пока Результат.Следующий() Цикл
  Наличие = Результат.Наличие;
  РазмерБуфера = Результат.РазмерБуфера;
 
  ОбластьТаблицаНоменклатура.Параметры.Номенклатура=Результат.Номенклатура;
 
  ОбластьТаблицаНаличие.Параметры.Наличие=Наличие;
 
  ОбластьТаблицаОтклонение.Параметры.Отклонение=Формат(((Наличие/РазмерБуфера)-1)*100,"ЧДЦ=2");//*100 + %
 
  ОбластьТаблицаРазмерБуфера.Параметры.РазмерБуфера=РазмерБуфера;
 
  ТабДок.Присоединить(ОбластьТаблицаНоменклатура);
  ТабДок.Присоединить(ОбластьТаблицаНаличие);
  ТабДок.Присоединить(ОбластьТаблицаОтклонение);
  Область = ТабДок.Присоединить(ОбластьТаблицаРазмерБуфера);

  Если Наличие>=(РазмерБуфера+РазмерБуфера+0.25) Тогда
    Область.ЦветФона = Новый Цвет (98, 255, 146); 
    Иначе Если (Наличие>=РазмерБуфера) И (Наличие<=(РазмерБуфера+РазмерБуфера+0.25)) Тогда
    Область.ЦветФона = Новый Цвет (241, 255, 98);
    Иначе Если (Наличие<=РазмерБуфера) И(Наличие<=(РазмерБуфера+0.25)) Тогда
    Область.ЦветФона = Новый Цвет (255, 92, 92);
  КонецЕсли;
  КонецЕсли;
  КонецЕсли;
 
 
КонецЦикла;

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


wise

Присоеденить по горизонтали - это Вывести :)
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

green_forest

Цитата: wise от 04 июн 2014, 08:20
Присоеденить по горизонтали - это Вывести :)

К сожалению при использовании метода Вывести не получается настроить цвет фона. Цвет фона назначается области, а не ячейке. Или я неправильно это делаю.

wise

Цитата: green_forest от 04 июн 2014, 08:23Цвет фона назначается области

а именя области можно передавать пересечением двух горизонтальных и вертикальных областей = ИмяОбластиГоризонт|ИмяОбластиВертикаль.

p.s. в СП всё подробно написано.
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

green_forest

Цитата: wise от 04 июн 2014, 08:31
Цитата: green_forest от 04 июн 2014, 08:23Цвет фона назначается области

а именя области можно передавать пересечением двух горизонтальных и вертикальных областей = ИмяОбластиГоризонт|ИмяОбластиВертикаль.

p.s. в СП всё подробно написано.


&НаСервере
Процедура ФормироватьНаСервере()
  Отчет.ОтчетБуф.Очистить();
      Макет = Отчеты.ОтчетПоБуферам.ПолучитьМакет("Макет");
  ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); 
  ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
  ОбластьТаблицаНоменклатура = Макет.ПолучитьОбласть("ТаблицаБуфер|Номенклатура");
  ОбластьТаблицаНаличие = Макет.ПолучитьОбласть("ТаблицаБуфер|Наличие");
  ОбластьТаблицаОтклонение = Макет.ПолучитьОбласть("ТаблицаБуфер|Отклонение");
  ОбластьТаблицаРазмерБуфера = Макет.ПолучитьОбласть("ТаблицаБуфер|РазмерБуфера");

 
  //Область = Макет.ПолучитьОбласть("ТаблицаБуфер");
  ТабДок = Новый ТабличныйДокумент;

  ///////////////////Шапка//////////////////////

  ОбластьШапка.Параметры.Дата = Формат(Отчет.Дата, "ДФ=dd.MM.yyyy");
  ОбластьШапка.Параметры.Подразделение = Отчет.Подразделение;
   
  ТабДок.Вывести(ОбластьШапка);
 
  ///////////////ТаблицаБуфер/////////////////
  ТабДок.Вывести(ОбластьШапкаТаблицы);

  Запрос = Новый Запрос;
  Запрос.Текст = "ВЫБРАТЬ
                 | НоменклатураСправочник.Ссылка КАК Номенклатура,
                 | НоменклатураСправочник.РазмерБуфера КАК РазмерБуфера,
                 | ПриходРасходОстатки.КоличествоОстаток КАК Наличие
                 |ИЗ
                 | РегистрНакопления.ПриходРасход.Остатки(&Дата, ) КАК ПриходРасходОстатки
                 | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК НоменклатураСправочник
                 | ПО ПриходРасходОстатки.Номенклатура = НоменклатураСправочник.Ссылка
                 |ГДЕ
                 | НоменклатураСправочник.Ссылка В ИЕРАРХИИ
                 | (ВЫБРАТЬ
                 | ПодразделениеНоменклатура.Номенклатура
                 | ИЗ
                 | РегистрСведений.ПодразделениеНоменклатура КАК ПодразделениеНоменклатура
                 | ГДЕ
                 | ПодразделениеНоменклатура.Подразделение = &Подразделение)
                 | И НЕ НоменклатураСправочник.ЭтоГруппа
                 | И НоменклатураСправочник.РазмерБуфера <> 0";
Запрос.УстановитьПараметр("Подразделение",Отчет.Подразделение);
Запрос.УстановитьПараметр("Дата",Отчет.Дата);
Результат = Запрос.Выполнить().Выбрать();

Пока Результат.Следующий() Цикл
  Наличие = Результат.Наличие;
  РазмерБуфера = Результат.РазмерБуфера;
 
  ОбластьТаблицаНоменклатура.Параметры.Номенклатура=Результат.Номенклатура;
  ТабДок.Вывести(ОбластьТаблицаНоменклатура);
 
  ОбластьТаблицаНаличие.Параметры.Наличие=Наличие;
ТабДок.Вывести(ОбластьТаблицаНаличие);
 
  ОбластьТаблицаОтклонение.Параметры.Отклонение=Формат(((Наличие/РазмерБуфера)-1)*100,"ЧДЦ=2");//*100 + %
  ТабДок.Вывести(ОбластьТаблицаОтклонение);
 
  ОбластьТаблицаРазмерБуфера.Параметры.РазмерБуфера=РазмерБуфера;
ТабДок.Вывести(ОбластьТаблицаРазмерБуфера);
 
  //ТабДок.Присоединить(ОбластьТаблицаНоменклатура);
  //ТабДок.Присоединить(ОбластьТаблицаНаличие);
  //ТабДок.Присоединить(ОбластьТаблицаОтклонение);
  //Область = ТабДок.Присоединить(ОбластьТаблицаРазмерБуфера);

//   Если Наличие>=(РазмерБуфера+РазмерБуфера+0.25) Тогда
// ОбластьТаблицаНаличие.ЦветФона = Новый Цвет (98, 255, 146); 
// Иначе Если (Наличие>=РазмерБуфера) И (Наличие<=(РазмерБуфера+РазмерБуфера+0.25)) Тогда
// ОбластьТаблицаНаличие.ЦветФона = Новый Цвет (241, 255, 98);
// Иначе Если (Наличие<=РазмерБуфера) И(Наличие<=(РазмерБуфера+0.25)) Тогда
// ОбластьТаблицаНаличие.ЦветФона = Новый Цвет (255, 92, 92);
//   КонецЕсли;
//   КонецЕсли;
//   КонецЕсли;
 

КонецЦикла;

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


Почему выводит всё в одну строку...
А если добавляю ЦветФона, то пишет ошибку
{Отчет.ОтчетПоБуферам.Форма.ФормаОтчета.Форма(79)}: Поле объекта не обнаружено (ЦветФона)
ОбластьТаблицаНаличие.ЦветФона = Новый Цвет (241, 255, 98);

Добавлено: 05 июн 2014, 16:41


Решила проблему:

&НаСервере
Процедура ФормироватьНаСервере()
  Отчет.ОтчетБуф.Очистить();
      Макет = Отчеты.ОтчетПоБуферам.ПолучитьМакет("Макет");
  ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); 
  ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
  Область = Макет.ПолучитьОбласть("ТаблицаБуфер");
  ТабДок = Новый ТабличныйДокумент;

  ///////////////////Шапка//////////////////////

  ОбластьШапка.Параметры.Дата = Формат(Отчет.Дата, "ДФ=dd.MM.yyyy");
  ОбластьШапка.Параметры.Подразделение = Отчет.Подразделение;
   
  ТабДок.Вывести(ОбластьШапка);
 
  ///////////////ТаблицаБуфер/////////////////
  ТабДок.Вывести(ОбластьШапкаТаблицы);

  Запрос = Новый Запрос;
  Запрос.Текст = "ВЫБРАТЬ
                 | НоменклатураСправочник.Ссылка КАК Номенклатура,
                 | НоменклатураСправочник.РазмерБуфера КАК РазмерБуфера,
                 | ПриходРасходОстатки.КоличествоОстаток КАК Наличие
                 |ИЗ
                 | РегистрНакопления.ПриходРасход.Остатки(&Дата, ) КАК ПриходРасходОстатки
                 | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК НоменклатураСправочник
                 | ПО ПриходРасходОстатки.Номенклатура = НоменклатураСправочник.Ссылка
                 |ГДЕ
                 | НоменклатураСправочник.Ссылка В ИЕРАРХИИ
                 | (ВЫБРАТЬ
                 | ПодразделениеНоменклатура.Номенклатура
                 | ИЗ
                 | РегистрСведений.ПодразделениеНоменклатура КАК ПодразделениеНоменклатура
                 | ГДЕ
                 | ПодразделениеНоменклатура.Подразделение = &Подразделение)
                 | И НЕ НоменклатураСправочник.ЭтоГруппа
                 | И НоменклатураСправочник.РазмерБуфера <> 0";
Запрос.УстановитьПараметр("Подразделение",Отчет.Подразделение);
Запрос.УстановитьПараметр("Дата",Отчет.Дата);
Результат = Запрос.Выполнить().Выбрать();

Пока Результат.Следующий() Цикл
  Наличие = Результат.Наличие;
  РазмерБуфера = Результат.РазмерБуфера;

Область.Параметры.Номенклатура =Результат.Номенклатура;
Область.Параметры.Наличие=Наличие;
Область.Параметры.Отклонение=Формат(((Наличие/РазмерБуфера)-1)*100,"ЧДЦ=2");//*100 + %
Область.Параметры.РазмерБуфера=РазмерБуфера;

  Если (Наличие>=(РазмерБуфера+РазмерБуфера*2.5)) Тогда
Область.Область("НАЛ").ЦветФона = Новый Цвет (176, 91, 255);
  Иначе Если Наличие>=(РазмерБуфера+РазмерБуфера*0.75) Тогда
Область.Область("НАЛ").ЦветФона = Новый Цвет (98, 255, 146); 
Иначе Если (Наличие>=(РазмерБуфера+РазмерБуфера*0.25)) И (Наличие<=(РазмерБуфера+РазмерБуфера*0.75)) Тогда
Область.Область("НАЛ").ЦветФона = Новый Цвет (241, 255, 98);
Иначе Если (Наличие<=(РазмерБуфера+РазмерБуфера*0.25)) Тогда
Область.Область("НАЛ").ЦветФона = Новый Цвет (255, 92, 92);
              КонецЕсли;
                  КонецЕсли;
          КонецЕсли;
    КонецЕсли;

  ТабДок.Вывести(Область);
КонецЦикла;

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

Назвала ячейку, которую необходимо раскрасить "НАЛ", и её использовала в методе Область().

Теги:

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

Рейтинг@Mail.ru

Поиск