На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! Этот раздел предназначен для заполнения/проверки/рехтования/* содержимого будущего FAQ и не более того.
Все вопросы касательно 1С следует задавать здесь: 1С: Проблемы и решения
Модераторы: evGenius
Страницы: (3) 1 2 [3]  все  ( Перейти к последнему сообщению )  
> Вопросы-ответы№4, format complete, осталось проверить
    Анализ данных
    Как получить данные о товарах продаваемых вместе?
    ExpandedWrap disabled
      Анализ = Новый АнализДанных;
      // Выбранный тип анализа как раз и указывает на то, что ищем
      // "совместно продаваемые" товары.
      Анализ.ТипАнализа = Тип("АнализДанныхПоискАссоциаций");
       
      Запрос = Новый Запрос;
      Запрос.Текст = "ВЫБРАТЬ
      |    ПродажиКомпанииОбороты.Регистратор Как ДокументПродажи,
      |    ПродажиКомпанииОбороты.Номенклатура
      |ИЗ
      |    РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода, &КонПериода, Регистратор) КАК ПродажиКомпанииОбороты
      |УПОРЯДОЧИТЬ ПО
      |    ДокументПродажи";
       
      Запрос.УстановитьПараметр("НачПериода", НачПериода);
      Запрос.УстановитьПараметр("КонПериода", КонПериода);
       
      // Получить продажи за указанный период.
      // Выбрана периодичность по Регистратору, т.к. необходимо получить
      // данные о совместных продажах в рамках одной покупки.
      Анализ.ИсточникДанных = Запрос.Выполнить();
       
      // Выполнить анализ в соответствии с указанным источником.
      РезультатАнализа = Анализ.Выполнить();
       
      // Для вывода результата анализа воспользуемся построителем
      // отчета анализа данных.
      Построитель = Новый ПостроительОтчетаАнализаДанных();
      Построитель.Макет = Неопределено;
      Построитель.ТипАнализа = Тип("АнализДанныхПоискАссоциаций");
      ТабДок = Новый ТабличныйДокумент;
       
      Построитель.Вывести(РезультатАнализа, ТабДок);
      ТабДок.Показать();
      Как порекомендовать сопутствующие товары?
      ExpandedWrap disabled
        Анализ = Новый АнализДанных;
         
        // Найти ассоциации.
        Анализ.ТипАнализа = Тип("АнализДанныхПоискАссоциаций");
         
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
        |    ПродажиКомпанииОбороты.Регистратор КАК ДокументПродажи,
        |    ПродажиКомпанииОбороты.Номенклатура
        |ИЗ
        |    РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода, &КонПериода, Регистратор) КАК ПродажиКомпанииОбороты
        |УПОРЯДОЧИТЬ ПО
        |    ДокументПродажи";
         
        // Ассоциации ищем подокументно, это определяется поведением
        // объекта "АнализДанных" "по умолчанию" при выборе
        // периодичности виртуальной таблицы Регистратор
        Запрос.УстановитьПараметр("НачПериода", НачПериода);
        Запрос.УстановитьПараметр("КонПериода", КонПериода);
         
        Анализ.ИсточникДанных = Запрос.Выполнить();
        РезультатАнализа = Анализ.Выполнить();
         
        // Исходя из полученного анализа создать прогноз.
        МодельПрогноза = РезультатАнализа.СоздатьМодельПрогноза();
         
        // ТЗ- таблица значений, содержащая данные о том,
        // какие номенклатурные позиции вошли в "текущую" покупку.
        МодельПрогноза.ИсточникДанных = ТЗ;
         
        // ТП - элемент управления "Табличное поле" связанный через
        // свойство "Данные" с реквизитом формы "ТП" (тип ТаблицаЗначений)
        ТП = МодельПрогноза.Выполнить();
        ЭлементыФормы.ТП.СоздатьКолонки();
        Как посмотреть, что будет покупаться в дальнейшем?
        ExpandedWrap disabled
          ТабДок = Новый ТабличныйДокумент;
          Анализ = Новый АнализДанных;
           
          // Нужно спрогнозировать цепочку событий, поэтому выбираем
          // тип анализа "Поиск последовательностей".
          Анализ.ТипАнализа = Тип("АнализДанныхПоискПоследовательностей");
           
          Запрос = Новый Запрос;
          Запрос.Текст = "ВЫБРАТЬ
          |    ПродажиКомпанииОбороты.ДоговорВзаиморасчетовПокупателя.Владелец КАК Контрагент,
          |    ПродажиКомпанииОбороты.Номенклатура,
          |    ПродажиКомпанииОбороты.Период
          |ИЗ
          |    РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода, &КонПериода, Регистратор) КАК ПродажиКомпанииОбороты";
           
          Запрос.УстановитьПараметр("НачПериода", НачПериода);
          Запрос.УстановитьПараметр("КонПериода", КонПериода);
           
          Анализ.ИсточникДанных = Запрос.Выполнить();
          Колонка = Анализ.НастройкаКолонок.Найти("Период");
           
          // Указать, что колонка "Период" имеет тип "Время",
          // что "позволит понять" хронологию событий
          Колонка.ТипКолонки = ТипКолонкиАнализаДанныхПоискПоследовательностей.Время;
           
          РезультатАнализа = Анализ.Выполнить();
          МодельПрогноза = РезультатАнализа.СоздатьМодельПрогноза();
           
          // ТЗ- таблица значений, содержащая исходные данные для прогноза
          // например, какой контрагент, какой товар закупил (исходя из чего
          // попытаемся узнать, что они еще закупят).
          МодельПрогноза.ИсточникДанных = ТЗ;
           
          // ТП - элемент управления "Табличное поле" связанный через
          // свойство "Данные" с реквизитом формы "ТП"
          //(тип ТаблицаЗначений)
          ТП = МодельПрогноза.Выполнить();
           
          ЭлементыФормы.ТП.СоздатьКолонки();
           
          // Построитель - реквизит формы, имеющий тип
          // ПостроительОтчетаАнализаДанных. Ряд табличных полей /
          / в диалоге могут быть связаны со свойствами-коллекциями
          // данного объекта
          Построитель.ТипАнализа = Тип("АнализДанныхПоискПоследовательностей");
          Построитель.Вывести(РезультатАнализа, ТабДок);
          ТабДок.Показать();
          Представление результатов отчетов
          Как вывести результат запроса в табличный документ?
          ExpandedWrap disabled
            Запрос = Новый Запрос;
            Запрос.Текст = "ВЫБРАТЬ
            |    ОстаткиТоваровКомпанииОстатки.СкладКомпании КАК СкладКомпанииСсылка,
            |    ОстаткиТоваровКомпанииОстатки.Номенклатура КАК НоменклатураСсылка,
            |    СУММА(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток) КАК Остаток,
            |    ОстаткиТоваровКомпанииОстатки.Номенклатура.Представление КАК Номенклатура,
            |    ОстаткиТоваровКомпанииОстатки.СкладКомпании.Представление КАК Склад
            |ИЗ
            |    РегистрНакопления.ОстаткиТоваровКомпании.Остатки(&Момент) КАК ОстаткиТоваровКомпанииОстатки
            |СГРУППИРОВАТЬ ПО
            |    ОстаткиТоваровКомпанииОстатки.СкладКомпанииСсылка,
            |    ОстаткиТоваровКомпанииОстатки.НоменклатураСсылка
            |ИТОГИ СУММА(Остаток) ПО
            |    Общие,
            |    Склад";
             
            Запрос.УстановитьПараметр("Момент", Неопределено);
             
            Результат = Запрос.Выполнить();
             
            // Получить поле табличного документа, в которое будем выводить результат.
            ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;
             
            // Очистить данные в табличном документе
            // (возможно данные уже выводились ранее).
            ТабДок.Очистить();
             
            Макет = ПолучитьМакет("Макет");
             
            // Получить именованные области из макета.
            ОбластьОбщийИтог = Макет.ПолучитьОбласть("ОбщийИтог");
            ОбластьСклад = Макет.ПолучитьОбласть("Склад");
            ОбластьНоменклатура = Макет.ПолучитьОбласть("Номенклатура");
             
            // Получить выборку по первой итоговой группировке (первый уровень).
            ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
             
            // Запись общего итога всегда одна, поэтому можно обойтись без организации цикла.
            ВыборкаОбщийИтог.Следующий();
             
            // Произвести запись данных из полей выборки в именованные
            // области с совпадающими именами.
            ОбластьОбщийИтог.Параметры.Заполнить(ВыборкаОбщийИтог);
             
            // Включить область с заполненными параметрами в табличный документ.
            ТабДок.Вывести(ОбластьОбщийИтог);
             
            // "От" записи первого уровня получить подчиненную выборку
            // записей второго уровня (по итоговой группировке "Склад").
            ВыборкаПоСкладу = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
             
            Пока ВыборкаПоСкладу.Следующий() Цикл
                ОбластьСклад.Параметры.Заполнить(ВыборкаПоСкладу);
                ТабДок.Вывести(ОбластьСклад);
             
                // Получить подчиненную выборку, содержащую детальные записи.
                ВыборкаПоНоменклатуре = ВыборкаПоСкладу.Выбрать();
             
                Пока ВыборкаПоНоменклатуре.Следующий() Цикл
                    ОбластьНоменклатура.Параметры.Заполнить(ВыборкаПоНоменклатуре);
                    ТабДок.Вывести(ОбластьНоменклатура);
                КонецЦикла;
            КонецЦикла;
            Как вывести данные в табличный документ с возможностью сворачивания и разворачивания данных по группировкам?
            ExpandedWrap disabled
              // Перед выводом данных в табличный документ используется метод:
              ТабДок.НачатьАвтогруппировкуСтрок();
               
              // Выести область с указанием уровня.
              ТабДок.Вывести(ОбластьОбщийИтог, ВыборкаОбщийИтог.Уровень());
               
              // В конце работы с табличным документом необходимо выполнить
              // следующий метод:
              ТабДок.ЗакончитьАвтогруппировкуСтрок();
              Как при выводе данных в табличный документ свернуть все выводимые группировки?
              ExpandedWrap disabled
                УровеньГруппировки = 1; //содержит индекс, с нуля
                ТабДок.ЗакончитьАвтогруппировкуСтрок();
                ТабДок.ПоказатьУровеньГруппировокСтрок(УровеньГруппировки);
                Как при выводе данных в табличный документ произвольно определить состав свернутых и развернутых группировок?
                ExpandedWrap disabled
                  ТабДок.Вывести(ОбластьНоменклатура, ВыборкаПоНоменклатуре.Уровень(), , Ложь);
                  Как выгрузить результат запроса с показом иерархии?
                  ExpandedWrap disabled
                    Запрос = Новый Запрос;
                    Запрос.Текст = "ВЫБРАТЬ
                    |       ПродажиКомпанииОбороты.Номенклатура КАК Номенклатура,
                    |       ПродажиКомпанииОбороты.КоличествоОборот КАК КоличествоОборот
                    |ИЗ
                    |       РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода, &КонПериода, , ) КАК ПродажиКомпанииОбороты
                    |ИТОГИ СУММА(КоличествоОборот) ПО
                    |       Номенклатура ИЕРАРХИЯ";
                     
                    Запрос.УстановитьПараметр("НачПериода", НачПериода);
                    Запрос.УстановитьПараметр("КонПериода", КонПериода);
                     
                    Результат = Запрос.Выполнить();
                     
                    // Осуществить выгрузку с сохранением иерархии.
                    ЭлементыФормы.ТП.Значение = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
                     
                    ЭлементыФормы.ТП.СоздатьКолонки();
                    Где и как можно увидеть макет, автоматически генерируемый построителем отчета?
                    ExpandedWrap disabled
                      ПостроительОтчета.Макет = Неопределено;
                      ПостроительОтчета.Макет.Показать()
                      Как из построителя отчета передать данные в сводную таблицу?
                      ExpandedWrap disabled
                        ЭлементыФормы.ДокументРезультат.ВстроенныеТаблицы.СводнаяТаблица.ИсточникДанных = ПостроительОтчетаОтчет;
                        ЭлементыФормы.ДокументРезультат.ВстроенныеТаблицы.СводнаяТаблица.ОтображатьПоля = Истина;
                        Отчет формируется построителем отчета. Как убрать одну из колонок, поместив ее данные в расшифровку другой?
                        ExpandedWrap disabled
                          Процедура АлфавитныйПереченьКандидатовСРасшифровкой()
                              ПостроительОтчета = Новый ПостроительОтчета;
                              ПостроительОтчета.Текст ="ВЫБРАТЬ
                              |    РегистрацияСобеседованияКандидата.ФизЛицо КАК Кандидат,
                              |    РегистрацияСобеседованияКандидата.РезультатСобеседования КАК Результат,
                              |    РегистрацияСобеседованияКандидата.Ссылка
                              |ИЗ
                              |    Документ.РегистрацияСобеседованияКандидата КАК РегистрацияСобеседованияКандидата
                              |УПОРЯДОЧИТЬ ПО
                              |    РегистрацияСобеседованияКандидата.ФизЛицо.Наименование";
                           
                              ПостроительОтчета.Выполнить();
                              Макет = ПостроительОтчета.Макет;
                              // Очистить области, связанные с ссылкой.
                              ТекущаяОбласть = Неопределено;
                              Пока Истина Цикл ТекущаяОбласть = Макет.НайтиТекст("Ссылка", ТекущаяОбласть, Макет.Область());
                                  Если ТекущаяОбласть = Неопределено Тогда
                                      Прервать;
                                  Иначе
                                      ТекущаяОбласть.Очистить(Истина, Истина, Истина);
                                  КонецЕсли;
                              КонецЦикла;
                           
                              // Заполнить параметр расшифровки для областей, где параметр = "Результат".
                              ТекущаяОбласть = Неопределено;
                              Пока Истина Цикл ТекущаяОбласть = Макет.НайтиТекст("Результат", ТекущаяОбласть, Макет.Область());
                                  Если ТекущаяОбласть = Неопределено Тогда
                                      Прервать;
                                  Иначе
                                      Если ТекущаяОбласть.Параметр = "Результат" Тогда
                                          ТекущаяОбласть.ПараметрРасшифровки = "Ссылка";
                                      КонецЕсли;
                                  КонецЕсли;
                              КонецЦикла;
                              ПостроительОтчета.Макет = Макет;
                              ПостроительОтчета.Вывести();
                          КонецПроцедуры
                          Как сохранить настройки построителя отчета до следующего открытия формы отчета?
                          ExpandedWrap disabled
                            СохранитьЗначение("НастройкаПостроителяДляОтчетаПродажи" + Метаданные().Имя, ПостроительОтчета.ПолучитьНастройки());
                             
                            // До установки настроек они ранее должны были быть заполнены
                            // по тексту запроса.
                            ПостроительОтчета.ЗаполнитьНастройки();
                             
                            // Установить настройки построителя отчета.
                            Настройка = ВосстановитьЗначение("НастройкаПостроителяДляОтчетаПродажи" + Метаданные().Имя);
                            Если Настройка <> Неопределено Тогда
                                    ПостроительОтчета.УстановитьНастройки(Настройка);
                            КонецЕсли;
                            Как организовать показ примечаний в формируемом табличном документе?
                            ExpandedWrap disabled
                              Процедура Отчет(ДатаНач, ДатаКон) Экспорт
                                  Запрос = Новый Запрос;
                               
                                  // Сбор данных.
                                  Запрос.Текст = "ВЫБРАТЬ
                                  |    Событие.Ответственный КАК Ответственный,
                                  |    Событие.Дата,
                                  |    Событие.ВидСобытия,
                                  |    Событие.Контрагент,
                                  |    Событие.СодержаниеСобытия,
                                  |    Событие.ОписаниеСобытия
                                  |ИЗ
                                  |    Документ.Событие КАК Событие
                                  |ГДЕ
                                  |    Событие.Дата МЕЖДУ &ДатаНач И &ДатаКон И (Событие.Проведен) И Событие.СостояниеСобытия = &Завершено
                                  |УПОРЯДОЧИТЬ ПО
                                  |    Ответственный";
                               
                                  Запрос.УстановитьПараметр("ДатаКон", ДатаКон);
                                  Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
                                  Запрос.УстановитьПараметр("Завершено", Перечисления.СостоянияСобытий.Завершено);
                               
                                  Результат = Запрос.Выполнить();
                               
                                  // Сформировать табличный документ.
                                  Макет = ПолучитьМакет("Отчет");
                                  ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
                                  ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
                                  ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
                                  ТабДок = Новый ТабличныйДокумент;
                                  ОбластьЗаголовок.Параметры.ДатаНач = ДатаНач;
                                  ОбластьЗаголовок.Параметры.ДатаКон = ДатаКон;
                                  ТабДок.Вывести(ОбластьЗаголовок);
                                  ТабДок.Вывести(ОбластьШапкаТаблицы);
                               
                                  ВыборкаДетали = Результат.Выбрать();
                                  Пока ВыборкаДетали.Следующий() Цикл
                                      ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали);
                                      ОбластьДетальныхЗаписей.Область("Описание").Примечание.Текст = ВыборкаДетали.СодержаниеСобытия;
                                      ТабДок.Вывести(ОбластьДетальныхЗаписей);
                                  КонецЦикла;
                                  ТабДок.Показать();
                              КонецПроцедуры
                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                            0 пользователей:
                            Страницы: (3) 1 2 [3]  все


                            Рейтинг@Mail.ru
                            [ Script Execution time: 0,1476 ]   [ 18 queries used ]   [ Generated: 23.07.19, 15:43 GMT ]