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

Автор Тема: Динамическое добавление Столбцов  (Прочитано 1608 раз)

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

Оффлайн Пустовалов Артем

  • **
  • Сообщений: 97
  • РЕПУТАЦИЯ: 2
  • КПД: 2%
  • Регистрация: 2015-10-14
  • Сайт: 
  • Профессия: Ученик 1С
Всем доброго времени суток. У меня есть Макет (Вложение). Вопрос как сделать так что бы последняя колонка добавлялась динамически с учетом Склада. Т.Е. на пример для главного склада  количество соответствующей номенклатуры выводилось в отделном столбце, для след склада в следующем столбце и тд.
вот код котрый делаю но получается чуть не то) помогите пожалуйста)

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


Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Делайте через отчет на СКД. Там проще сделать группировку колонок.

Оффлайн Пустовалов Артем

  • **
  • Сообщений: 97
  • РЕПУТАЦИЯ: 2
  • КПД: 2%
  • Регистрация: 2015-10-14
  • Сайт: 
  • Профессия: Ученик 1С
Через СКД не подойдет) нужно рукописный код) Но все равно спасибо попробую)

Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
У вас вроде все есть для результата. В чем именно вопрос? Покажите скрин результата.

Оффлайн Пустовалов Артем

  • **
  • Сообщений: 97
  • РЕПУТАЦИЯ: 2
  • КПД: 2%
  • Регистрация: 2015-10-14
  • Сайт: 
  • Профессия: Ученик 1С
У вас вроде все есть для результата. В чем именно вопрос? Покажите скрин результата.

Сейчас изменил чуть чуть код)   
   Пока ВыборкаСклад.Следующий() Цикл
      ОбластьШапкаТаблицыСклады.Параметры.Заполнить(ВыборкаСклад);
      ТабДок.Присоединить(ОбластьШапкаТаблицыСклады);
   КонецЦикла;
   
ВыборкаСклад = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаСклад.Следующий() Цикл
   
      ВыборкаДетальныеЗаписи = ВыборкаСклад.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
      Пока ВыборкаДетальныеЗаписи.Следующий() Цикл 
         ОбластьДетальныхЗаписейОснова.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
         ТабДок.вывести(ОбластьДетальныхЗаписейОснова, ВыборкаДетальныеЗаписи.Уровень());
         ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
         ТабДок.Присоединить(ОбластьДетальныхЗаписей);
      КонецЦикла ;
   
   КонецЦикла;

 но все равно получаю вот такой результат

Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Вы с логикой запутались. Не хочу давать готовый результат, чтобы не лишать вас удовольствия от самостоятельно решенной проблемы.
Попробуйте на словах описать последовательность выборки данных и вывода в макет.

Оффлайн Пустовалов Артем

  • **
  • Сообщений: 97
  • РЕПУТАЦИЯ: 2
  • КПД: 2%
  • Регистрация: 2015-10-14
  • Сайт: 
  • Профессия: Ученик 1С
Вы с логикой запутались. Не хочу давать готовый результат, чтобы не лишать вас удовольствия от самостоятельно решенной проблемы.
Попробуйте на словах описать последовательность выборки данных и вывода в макет.
Удовольствие я получу в любом случае) потому что кручу этот отчет уже третий день) и каждый раз все ни как) помогите уж мне)Буду признателен)

Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Еще раз повторю, проблема с логикой понмания, а не с кодом. Пока вы для себя не поймете как должен происходить вывод - толку не будет.
Области в макет выводятся с лева на право, сверху вниз.

Оффлайн Пустовалов Артем

  • **
  • Сообщений: 97
  • РЕПУТАЦИЯ: 2
  • КПД: 2%
  • Регистрация: 2015-10-14
  • Сайт: 
  • Профессия: Ученик 1С
Еще раз повторю, проблема с логикой понмания, а не с кодом. Пока вы для себя не поймете как должен происходить вывод - толку не будет.
Области в макет выводятся с лева на право, сверху вниз.
Ну тогда помогите мне с логическим решением) Направьте в нужное русло) ни как не получается у меня этот отчет)
Каак работает Присоеденить я понял е могу понять к чему присоеденять его)

Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Чтобы вывести шапку отчета нужно вывести секцию "Основа". Затем перебирать выборку запроса по группировке "Склад" и присоединять секцию "СкладКолонки".
Начинаем выводить строки.
Теперь нужно перебирать номенклатуру без учета складов и выводим секцию "Детали|Основа". Внутри перебора по номенклатуре нужен цикл перебора по складам. И уже внутри цикла по складам присоединяем секцию "Детали|СкладКолонки".


Теги:
 

Добавление сведений в графу "основание" документа "ТОРГ-12"

Автор Ярослав1984Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 6996
Последний ответ 20 Авг 2013, 18:45
от Ярослав1984
Добавление столбца "РРЦ" в отчёт "Валовая прибыли по поставщикам"

Автор kuzmich110Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 1405
Последний ответ 17 Мар 2016, 15:23
от kuzmich110
Добавление пункта в меню "печать"

Автор FlamencoРаздел Пользователям "1С - Предприятие 8"

Ответов: 2
Просмотров: 565
Последний ответ 30 Авг 2016, 07:46
от alex0402
Добавление выбора аналитики в отчет "Закупки"

Автор ValentusРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 14
Просмотров: 5040
Последний ответ 31 Май 2010, 15:55
от Valentus
Добавление колонки в документ " Инвентаризация по складу"

Автор ФрунзовкаРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 1674
Последний ответ 10 Окт 2010, 21:47
от progmikon

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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
95 Сообщений
Dethmontt Dethmontt
67 Сообщений
alex0402
65 Сообщений
wise wise
63 Сообщений
MuI_I_Ika MuI_I_Ika
60 Сообщений
ilyay ilyay
39 Сообщений
Сергей Федоров Сергей Федоров
34 Сообщений
magnifico61
24 Сообщений
ilnur75
22 Сообщений
BuhRust
21 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal