Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
19 Янв 2018, 22:38
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Как Присоединить() по вертикали  (Прочитано 8142 раз)

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

Оффлайн green_forest

  • *
  • Сообщений: 5
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-04-27
  • Сайт: 
  • Профессия: Программист 1С
Здравствуйте, как сделать так, чтобы метод Присоединить() присоединял по вертикали.

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

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

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

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

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

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

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

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

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


Оффлайн wise

  • ****
  • Сообщений: 430
  • РЕПУТАЦИЯ: 58
  • КПД: 13%
  • Кто сгорел, того не подожжешь
  • Регистрация: 2013-03-21
  • Сайт: 
  • Профессия: Ученик 1С
Присоеденить по горизонтали - это Вывести :)
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Оффлайн green_forest

  • *
  • Сообщений: 5
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-04-27
  • Сайт: 
  • Профессия: Программист 1С
Присоеденить по горизонтали - это Вывести :)

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

Оффлайн wise

  • ****
  • Сообщений: 430
  • РЕПУТАЦИЯ: 58
  • КПД: 13%
  • Кто сгорел, того не подожжешь
  • Регистрация: 2013-03-21
  • Сайт: 
  • Профессия: Ученик 1С
Цвет фона назначается области

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

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

Оффлайн green_forest

  • *
  • Сообщений: 5
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-04-27
  • Сайт: 
  • Профессия: Программист 1С
Цвет фона назначается области

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

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);
              КонецЕсли;
                  КонецЕсли;
          КонецЕсли;
    КонецЕсли;

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

ТабДок.ТолькоПросмотр = Истина;
Отчет.ОтчетБуф.Вывести(ТабДок);
КонецПроцедуры
Назвала ячейку, которую необходимо раскрасить "НАЛ", и её использовала в методе Область().

Последний раз редактировалось: green_forest; 05 Июн 2014, 16:41. Причина: Объединение сообщений


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
101 Сообщений
AIFrame
78 Сообщений
alex0402
33 Сообщений
kiksi
30 Сообщений
pavl_vs
24 Сообщений
andron81_81
18 Сообщений
alexandr_ll
17 Сообщений
Norfolk
15 Сообщений
KOI8-R
14 Сообщений
MuI_I_Ika MuI_I_Ika
13 Сообщений

* Кто онлайн

  • Точка Гостей: 254
  • Точка Скрытых: 0
  • Точка Пользователей: 4
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal