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

Расшифровка с параметром СписокЗначения

Автор Пустовалов Артем, 27 окт 2015, 13:37

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

Пустовалов Артем

Добрый день Всем.Изучаю 1с не так давно. Пытаюсь сделать расшифровку отчета по нескольким параметрам. Может есть какой нибудь простой пример как это сделать. Знаю что нужно параметры поместить в СписокЗначений. Но как это сделать? Помогите)

AIFrame

Цитата: Пустовалов Артем от 27 окт 2015, 13:37
Добрый день Всем.Изучаю 1с не так давно. Пытаюсь сделать расшифровку отчета по нескольким параметрам. Может есть какой нибудь простой пример как это сделать. Знаю что нужно параметры поместить в СписокЗначений. Но как это сделать? Помогите)
Выборка = Запрос.Выполнить.Выгрузить();
Пока Выборка.Следующий() Цикл
...
КонецЦикла;

Если речь об этом.

Пустовалов Артем

Цитата: AIFrame от 27 окт 2015, 13:55
Цитата: Пустовалов Артем от 27 окт 2015, 13:37
Добрый день Всем.Изучаю 1с не так давно. Пытаюсь сделать расшифровку отчета по нескольким параметрам. Может есть какой нибудь простой пример как это сделать. Знаю что нужно параметры поместить в СписокЗначений. Но как это сделать? Помогите)
Выборка = Запрос.Выполнить.Выгрузить();
Пока Выборка.Следующий() Цикл
...
КонецЦикла;

Если речь об этом.

Нет.Может я не так выразился. Нужно что бы при двойном клике ячейки в отчете появлялось окно с новым отчетом. В которое передавались параметры расшифровки (Номенклатура и склад) и именно по ним формируется расшифровка. Вопрос как передать эти параметры в параметр расшифровки ячеек.)

AIFrame

Цитата: Пустовалов Артем от 27 окт 2015, 14:01
Цитата: AIFrame от 27 окт 2015, 13:55
Цитата: Пустовалов Артем от 27 окт 2015, 13:37
Добрый день Всем.Изучаю 1с не так давно. Пытаюсь сделать расшифровку отчета по нескольким параметрам. Может есть какой нибудь простой пример как это сделать. Знаю что нужно параметры поместить в СписокЗначений. Но как это сделать? Помогите)
Выборка = Запрос.Выполнить.Выгрузить();
Пока Выборка.Следующий() Цикл
...
КонецЦикла;

Если речь об этом.

Нет.Может я не так выразился. Нужно что бы при двойном клике ячейки в отчете появлялось окно с новым отчетом. В которое передавались параметры расшифровки (Номенклатура и склад) и именно по ним формируется расшифровка. Вопрос как передать эти параметры в параметр расшифровки ячеек.)
Отчет внешний?

Пустовалов Артем

Цитата: AIFrame от 27 окт 2015, 14:11
Цитата: Пустовалов Артем от 27 окт 2015, 14:01
Цитата: AIFrame от 27 окт 2015, 13:55
Цитата: Пустовалов Артем от 27 окт 2015, 13:37
Добрый день Всем.Изучаю 1с не так давно. Пытаюсь сделать расшифровку отчета по нескольким параметрам. Может есть какой нибудь простой пример как это сделать. Знаю что нужно параметры поместить в СписокЗначений. Но как это сделать? Помогите)
Выборка = Запрос.Выполнить.Выгрузить();
Пока Выборка.Следующий() Цикл
...
КонецЦикла;

Если речь об этом.

Нет.Может я не так выразился. Нужно что бы при двойном клике ячейки в отчете появлялось окно с новым отчетом. В которое передавались параметры расшифровки (Номенклатура и склад) и именно по ним формируется расшифровка. Вопрос как передать эти параметры в параметр расшифровки ячеек.)
Отчет внешний?
Да. Типовая УПП 1,3

AIFrame

Цитата: Пустовалов Артем от 27 окт 2015, 14:15
Цитата: AIFrame от 27 окт 2015, 14:11
Цитата: Пустовалов Артем от 27 окт 2015, 14:01
Цитата: AIFrame от 27 окт 2015, 13:55
Цитата: Пустовалов Артем от 27 окт 2015, 13:37
Добрый день Всем.Изучаю 1с не так давно. Пытаюсь сделать расшифровку отчета по нескольким параметрам. Может есть какой нибудь простой пример как это сделать. Знаю что нужно параметры поместить в СписокЗначений. Но как это сделать? Помогите)
Выборка = Запрос.Выполнить.Выгрузить();
Пока Выборка.Следующий() Цикл
...
КонецЦикла;

Если речь об этом.

Нет.Может я не так выразился. Нужно что бы при двойном клике ячейки в отчете появлялось окно с новым отчетом. В которое передавались параметры расшифровки (Номенклатура и склад) и именно по ним формируется расшифровка. Вопрос как передать эти параметры в параметр расшифровки ячеек.)
Отчет внешний?
Да. Типовая УПП 1,3
Справочник.ВнешниеОбработки.Форма.ФормаСписка.Форма.Модуль
Обрати внимание на АДМ +
Процедура СправочникСписокВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)

Если Не ВыбраннаяСтрока.ЭтоГруппа Тогда

ЭтоОбработка = ?(ВыбраннаяСтрока.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.Обработка, Истина, Ложь);
ЭтоОтчет = ?(ВыбраннаяСтрока.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.Отчет, Истина, Ложь);

Если НЕ (ЭтоОбработка ИЛИ ЭтоОтчет) Тогда
Возврат;
КонецЕсли;


//И ВыбраннаяСтрока.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.Обработка Тогда

Попытка

ИмяФайла = ПолучитьИмяВременногоФайла();
ДвоичныеДанные = ВыбраннаяСтрока.ХранилищеВнешнейОбработки.Получить();
ДвоичныеДанные.Записать(ИмяФайла);

Если ЭтоОбработка Тогда

Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);

Иначе

Форма = ВнешниеОтчеты.ПолучитьФорму(ИмяФайла);

КонецЕсли;

Если Не Форма = Неопределено Тогда

Форма.Открыть();

Иначе

Если ЭтоОбработка Тогда
ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла);
Иначе
ВнешнийОтчет = ВнешниеОтчеты.Создать(ИмяФайла);
КонецЕсли;

КонецЕсли;

Если НЕ ЭтоОтчет Тогда  // АДМ+++
УдалитьФайлы(ИмяФайла);
КонецЕсли; // АДМ+++

Исключение

Если ЭтоОбработка Тогда

Предупреждение("Выбранный файл не является внешней обработкой.
   |Либо, данная обработка не предназначена для
   |запуска в этой конфигурации.");
Иначе
Предупреждение("Выбранный файл не является внешним отчетом.
   |Либо, данный отчет не предназначена для
   |запуска в этой конфигурации.");
КонецЕсли;

КонецПопытки;

СтандартнаяОбработка = Ложь;

КонецЕсли;

КонецПроцедуры

Пустовалов Артем

Что то но не то )
Добавлено: 29 окт 2015, 14:36


Как говорится посидел покапался пару дней и нашел решение.:zebzdr: Передаю данные в расшифровку через Структуру.
Вот код если кому то пригодится

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

   ОбластьПодвал = Макет.ПолучитьОбласть              ("Подвал");
   ОбластьШапкаТаблицы = Макет.ПолучитьОбласть           ("ШапкаТаблицы|Основа");
   ОбластьШапкаТаблицыСклады = Макет.ПолучитьОбласть    ("ШапкаТаблицы|СкладКолонки");
   ОбластьПодвалТаблицы = Макет.ПолучитьОбласть        ("ПодвалТаблицы");
   ОбластьОбщийИтог = Макет.ПолучитьОбласть           ("ОбщиеИтоги");
   ОбластьСкладОснова =  Макет.ПолучитьОбласть           ("Склад|Основа");
   ОбластьСклад = Макет.ПолучитьОбласть              ("Склад|СкладКолонки");
   ОбластьДетальныхЗаписейОснова = Макет.ПолучитьОбласть("Детали|Основа");
   ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть       ("Детали|СкладКолонки");
   ПустаяОбласть = Макет.ПолучитьОбласть             ("ПустаяОбласть | СкладКолонки");
   
   ТабДок.Очистить();
   ТабДок.Вывести(ОбластьЗаголовок);
   ТабДок.НачатьАвтогруппировкуСтрок();
      
   ВыборкаСклад = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   ТабДок.Вывести(ОбластьШапкаТаблицы);
   
   Пока ВыборкаСклад.Следующий() Цикл                                                  /// шапка
      ОбластьШапкаТаблицыСклады.Параметры.Заполнить(ВыборкаСклад);
      ТабДок.Присоединить(ОбластьШапкаТаблицыСклады,ВыборкаСклад.Уровень());
   КонецЦикла;
   
   ВыборкаСклад.Сбросить(); //= РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   
   Пока ВыборкаСклад.Следующий() Цикл
      ВыборкаДетальныеЗаписи = ВыборкаСклад.Выбрать();
         Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
         
         ОбластьДетальныхЗаписейОснова.Параметры.Заполнить(ВыборкаДетальныеЗаписи); //Детали основа
         
         Расшифровка = Новый Структура;
         Расшифровка.Вставить("Номенклатура",ВыборкаДетальныеЗаписи.Номенклатура);
         Расшифровка.Вставить("Склад",ВыборкаДетальныеЗаписи.Склад);                  //Расшифровка
         ОбластьДетальныхЗаписейОснова.Параметры.Расшифровка = Расшифровка;
         
         ТабДок.вывести(ОбластьДетальныхЗаписейОснова, ВыборкаДетальныеЗаписи.Уровень());
         
         ВыборкаСклад1 = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Склад");
         
         Пока ВыборкаСклад1.Следующий() Цикл
            Если  ВыборкаСклад1.Склад = ВыборкаСклад.Склад Тогда
            ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи); //ДеталиСклад
         //Расшифровка!!!В макете параметрРасшифровки      
         Расшифровка = Новый Структура;
         Расшифровка.Вставить("Номенклатура",ВыборкаДетальныеЗаписи.Номенклатура);
                   Расшифровка.Вставить("Склад",ВыборкаДетальныеЗаписи.Склад);                               
                   ОбластьДетальныхЗаписей.Параметры.Расшифровка = Расшифровка;

            ТабДок.Присоединить(ОбластьДетальныхЗаписей); Иначе
               ТабДок.Присоединить(ПустаяОбласть);
            КонецЕсли;
         КонецЦикла
      КонецЦикла;
      
   конецЦикла;
   
    ВыборкаСклад.Сбросить();
    ВыборкаДетальныеЗаписи.Сбросить();
   
   ТабДок.ЗакончитьАвтогруппировкуСтрок();
   ТабДок.Вывести(ОбластьПодвалТаблицы);
   ТабДок.Вывести(ОбластьПодвал);

Теги:

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

Рейтинг@Mail.ru

Поиск