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

Вгрузить данные в Анализ данных

Автор utkin295, 16 сен 2015, 14:23

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

utkin295

Да это работает, правда не фига не понятно :D
Я пока не был в Инете искал другой путь. Можно тоже второй вариант? Ну просто мне так проще. Все-таки моя цель понять и суметь воспроизвести, а не просто взять Ваше решение и получить оценку (это я там сам напою и запросто).
Итак, мой вариант - я удалил свой динамический список и создал ссылку на ПоступлениеКниг в реквизитах АнализаДанных (не в реквизитах формы, а на вкладке Данные). И в табличной части сделал ссылку на данный реквизит. Теперь если в табличную часть добавлять кнопкой Добавить идет переход на справочник и все там добавляется и потом обрабатываются данные. Но! Теперь возникает первоначальная проблема - я не могу вгрузить данные о книгах при открытии формы. То есть вручную я спокойно добавляю нужные мне данные и все получается, а вот автоматически вгрузить при открытии не могу. Я украл Вашу технологию и пытаюсь обратиться к Серверу для получения данных, запрос составил без проблем. Теперь не хватает знаний для того, чтобы передать и воспользоваться данными на клиенте.
Второй вариант: https://yadi.sk/d/PZVR-FUZj9fvz
(надо править код, там не работает).

Дмитрий@


utkin295

Да, работает спасибо большое! Главное Ваш код натолкнул меня на мысли о более простой реализации! Которая к тому же еще и более менее понятна. Спасибо, остальные типы Анализа Данных думаю справлюсь.

utkin295

Продолжение темы :lol:
Не стал создавать новую, поскольку речь идет о смежном вопросе на основании данной темы. Возникла проблема при использовании выработанного решения от Дмитрий@, при реализации Поиска последовательностей. Суть - скопировал обработку и заменил ОбщуюСтатистику на ПоискПоследовательностей. С другими анализами это работало (типа ДеревоРешений и т.д.). Но в данном случае возникает ошибка:
Цитировать{Обработка.ПоискПоследовательностей.Форма.Форма.Форма(42)}: Ошибка при вызове метода контекста (Выполнить)
   РезультатАнализаДанных = МойАнализДанных.Выполнить();
по причине:
Не задана колонка содержащая элемент
Вот что я наделал: https://yadi.sk/d/Xs7o4x_fjqw9D

Дмитрий@

В качестве примера
&НаКлиенте
Процедура ПоискПоследовательностей(Команда)
Результат = АнализПоискПоследовательностей();
КонецПроцедуры

&НаСервереБезКонтекста
Функция АнализПоискПоследовательностей()

Анализ = Новый АнализДанных;
Анализ.ТипАнализа = Тип("АнализДанныхПоискПоследовательностей");

Запрос = Новый Запрос;
Запрос.Текст =
"|ВЫБРАТЬ
| Продажи.Контрагент,
| Продажи.Номенклатура,
| Продажи.Период
|ИЗ
| РегистрНакопления.Продажи КАК Продажи";

АнализИсточникДанных = Запрос.Выполнить();

Анализ.НастройкаКолонок.Период.ТипКолонки =
ТипКолонкиАнализаДанныхПоискПоследовательностей.Время;
РезультатАнализа = Анализ.Выполнить();

Построитель = Новый ПостроительОтчетаАнализаДанных();
Построитель.Макет = Неопределено;
Построитель.ТипАнализа = Тип("АнализДанныхПоискПоследовательностей");

ТабДок = Новый ТабличныйДокумент;
ПостроительВывести(РезультатАнализа,ТабДок);
Возврат ТабДок;

КонецФункции

utkin295

Этот пример я видел и даже скачал его из какой-то книжки, пытаясь адаптировать его под себя. Там это работает потому что запрос напрямую передается в АнализДанных. А у меня-то сведения сначала вгружается в табличную часть, а уже после передаются в Анализ. Вот тут где-то сабака порылась. Я подозреваю, что проблема в типе данных - основная проблема языков без явного указания типа. 

utkin295

Апнул тему. Вбил запрос как сделано в примере и не работает. Ошибка та же. Что я сделал минуя свою табличную часть сделал прямой запрос к списку.
&НаСервере
Функция ПолучитьТабДок()
ТабДок = Новый ТабличныйДокумент;

МойАнализДанных = Новый АнализДанных;
МойАнализДанных.ТипАнализа=Тип ("АнализДанныхПоискПоследовательностей");
ДанныеОбъект = РеквизитФормыВЗначение("Объект");
Результат = ПолучитьСписокКниг();

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

Возврат ТабДок;

КонецФункции


Вот текст запроса:
&НаСервере
Функция ПолучитьСписокКниг()

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               | ПоступлениеКнигСписокКниг.Книга,
               | ПоступлениеКнигСписокКниг.Ссылка.Дата КАК Дата
               |ИЗ
               | Документ.ПоступлениеКниг.СписокКниг КАК ПоступлениеКнигСписокКниг";

Результат = Запрос.Выполнить();   
Возврат Результат;   

КонецФункции

Очевидно все по примеру, но не работает.

ЗЫ. Этот пример из книги
"Решение специальных прикладных задач в 1С:Предприятии 8.2", авторы Д.И. Гончаров и Е.Ю. Хрусталева
Добавлено: 26 окт 2015, 18:49


Я прошу извинить меня за то, что тема превращается в монолог, но только что пришло решение. Он просит колонку Элемент и я ее просто ему скормил:
МойАнализДанных.НастройкаКолонок.Книга.ТипКолонки = ТипКолонкиАнализаДанныхПоискПоследовательностей.Элемент;
Решение правда фиговенькое, но это уже от данных, а не от алгоритма. Короче так работает.

Теги:

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

Рейтинг@Mail.ru

Поиск