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

Автор Тема: Хотелось бы услышать одекватный ответ!  (Прочитано 1467 раз)

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

Оффлайн sergey123

  • *
  • Сообщений: 1
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-10-02
  • Сайт: 
Интересует ответ на такой ворос: Как выбрать дату последней операции? (бухгалтерия)
Для реализации след. задачи:
На склады приходят материалы. (Д10 - К60). Нужно выбрать дату последнего поступления каждого материала с учетом Склада на который он поступил. (т.е. выборка по "ключам" Материал + МестоХранения.
1-ин и тотже материал может поступать в разные периоды на разные склады, а выводить нужно только последние поступления (а точнее их Даты)

Делаю пока так!
ВыбСч = СчетПоКоду("10");
ВыбКорСч = СчетПоКоду("60");

Запрос = СоздатьОбъект("Запрос");   
    ТекстЗапроса = "
|Период с '01.01.2011' по ВыбКонПериода;
|ОбрабатыватьОперации Все;
|Док = Операция.ТекущийДокумент;
|Сч = Операция.Дебет.Счет;
|КорСч = Операция.Кредит.Счет;
|МХ = Операция.Дебет.МестаХранения;
|НомНомер = Операция.Дебет.Материалы.Код;
|СумСтор = Операция.Сумма;
|Группировка День;
|Группировка МХ упорядочить по МХ.Код;
|Группировка НомНомер;
|Условие (Сч в ВыбСч);
|Условие (КорСч в ВыбКорСч);
|Условие (СумСтор > 0);";

Заполняю в таблицу значений все операции (Д10 - К60) фильтрую по убыванию и беру (через цикл) первые записи (по МХ и НомНомер) соответственно.
Время затраченное на всё это 5 минут. А нужно анализировать с 2005 года, что увеличит время выполнения до 25 минут! Это долго!

Подскажите как можно ещё найти дату последней операции с минимальными временными затратами соответственно? спс!

Было ещё предложение анализировать документы. Материал поступает через док. ПоступлениеМатериала. Но нужно учитывать и операции введённые вручную!  :angry: Просьба не тролить, а только по существу! Спасибо ещё раз!


Оффлайн Herby

  • *****
  • Сообщений: 936
  • РЕПУТАЦИЯ: 164
  • КПД: 18%
  • Регистрация: 2010-08-31
  • Сайт: 
  • Профессия: Программист 7.7
|Группировка День;
|Группировка МХ упорядочить по МХ.Код;
|Группировка НомНомер;

Поменяй местами группировки день и материал, уже сэкономишь время на том, что не будешь по всем дням пробегать

и дальше

Пока Группировка(1) = 1 Цикл
    Пока Группировка(2) = 1 Цикл
        Пока Группировка(3,-1) = 1 Цикл  // выводишь по убыванию, чтобы последний день по товару в этой группировке был первым
            ДатаОперации = Запрос.День;
            прервать; // дальше обход группировки не имеет смысла


        КонецЦикла;
   КонецЦикла;
КонецЦикла;


За большой период может и будет этот запрос выполняться долго, но явно не 25 минут.
а какая БД? SQL? ДБФ возможно и будет. Но в любом случае этот вариант побыстрее



Теги:
 


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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
133 Сообщений
ilyay ilyay
63 Сообщений
AIFrame
62 Сообщений
alex0402
50 Сообщений
andron81_81
44 Сообщений
oleg-x
41 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
27 Сообщений
alexandr_ll
23 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal