|
v7: Как выбрать дату последней операции? (бухгалтерия) | ☑ | ||
---|---|---|---|---|
0
tassman
02.10.12
✎
09:10
|
ВыбСч = СчетПоКоду("10");
ВыбКорСч = СчетПоКоду("60"); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = " |Период с '01.01.2011' по ВыбКонПериода; |ОбрабатыватьОперации Все; |Док = Операция.ТекущийДокумент; |Сч = Операция.Дебет.Счет; |КорСч = Операция.Кредит.Счет; |МХ = Операция.Дебет.МестаХранения; |НомНомер = Операция.Дебет.Материалы.Код; |СумСтор = Операция.Сумма; |Группировка День; |Группировка МХ упорядочить по МХ.Код; |Группировка НомНомер; |Условие (Сч в ВыбСч); |Условие (КорСч в ВыбКорСч); |Условие (СумСтор > 0);"; Заполняю в таблицу значений все операции (Д10 - К60) фильтрую по убыванию и беру (через цикл) первые записи (по МХ и НомНомер) соответственно. Время затраченное на всё это 5 минут. А нужно анализировать с 2005 года, что увеличит время выполнения до 25 минут! Это долго! Подскажите как можно ещё найти дату последней операции с минимальными временными затратами соответственно? спс! |
|||
1
PuhUfa
02.10.12
✎
09:19
|
(0) если тебе нужно просто дату последней операции то зачем вообще запрос?
|
|||
2
tassman
02.10.12
✎
09:26
|
Через запрос и смотрю дату последней операции! т.е. получаю все даты всех операций, а потом через цикл и условие сам нахожу дату последней!
Ну можно ещё так: би = СоздатьОбъект("БухгалтерскиеИтоги"); би.ИспользоватьСубконто(ВидыСубконто.МестаХранения,,1); би.ИспользоватьСубконто(ВидыСубконто.Материалы,,1); би.ВыполнитьЗапрос('01.01.2011', ВыбКонПериода, "10","6",,2,"День","СК"); и т.п. Но время обработки такое-же как и с Запросом! Можно ли найти каким другим способом дату последней операции? (с минимально затраченным временем). Какие ещё есть способы!? |
|||
3
tassman
02.10.12
✎
09:29
|
*не 6 а 60 сч. Опечатался!
у Документов есть метод: ОбратныйПорядок(<Режим>) Назначение: Установить порядок выборки документов во времени. Возвращает значение порядка выборки до вызова: 1 - выборка документов в порядке убывания даты и времени; 0 - в порядке возрастания. Можно ли что-то аналогичное с проводками сделать или нет?! |
|||
4
PuhUfa
02.10.12
✎
09:36
|
||||
5
tassman
02.10.12
✎
10:02
|
"Операция - тоже документ, только маленький сапсем!" - согласен.
а вот анализировать придется: видДокумента, Номенклатуру и МестаХранения! и всё это выливается в сложную (и скорее всего долгую) выборку по указанным параметрам, ничем не уступающую запросу... или? |
|||
6
BlackSeaCat
02.10.12
✎
10:11
|
По любому, выбирать запросом ВСЕ операции за период лишь для того, чтобы найти среди них ОДНУ - глупо.
Перебор прервется как только будет найдена нужная операция. По продолжительности это сработает ОДИНАКОВО с запросом лишь в одном случае - если искомая операция была ПЕРВОЙ в периоде, во всех остальных будет быстрее. Хотя, при способности 1Сников наворотить неоптимальный код лично я ни за что не поручусь. |
|||
7
zak555
02.10.12
✎
10:13
|
что ты из этой операции хочешь получить ?
|
|||
8
tassman
02.10.12
✎
10:18
|
Задача такая!
На склады приходят материалы. (Д10 - К60). Нужно выбрать дату последнего поступления КАЖДОГО материала с учетом Склада на который он поступил. (т.е. выборка по "ключам" Материал + МестоХранения. 1-ин и тотже материал может поступать в разные периоды на разные склады, а выводить нужно только последние поступления (а точнее их Даты) |
|||
9
zak555
02.10.12
✎
10:27
|
ну узнаешь ты дату последнего прихода материала
дальше что ? |
|||
10
Classic
02.10.12
✎
10:31
|
Забудь про черный запрос по счетам. Юзай бухитоги.
|
|||
11
tassman
02.10.12
✎
10:36
|
Это часть отчета! (небольшая часть) Где анализируется неликвидность материала.
Смысл такой, что есть Центральные склад на них приходит материала, эти склады передают материал в обычные склад(кладовки), а уже с этих "кладовок" анализируется расход и отпуск материала. Вот и нужно узнать когда была последняя поставка материала, для статистики, а то засем его закупать, если он заляживается и становится неликвидным в "кладовке". (п.с. может не совсем верно объяснил, но всё равно вопрос в силе) "Как выбрать дату последней операции?" Если возможно с использованием 1сpp тоже можно... (сам с запросами просто мало работал) Спасибо всем кто поможет!!! |
|||
12
BlackSeaCat
02.10.12
✎
10:39
|
Помогаю: если не можешь выстроить быстрый алгоритм - делай запросом. А на вопросы: "Почему так долго работает?" важно надувай щеки и закатывай глаза.
|
|||
13
Mikeware
02.10.12
✎
10:43
|
"заляживается в кладовке" - неплохо...
------- (11) "спасибо" - мало... |
|||
14
tassman
02.10.12
✎
10:46
|
"заляживается в кладовке" - неплохо...
:) можно ещё к пунктуации придраться ... Пробую пока через доки делать. |
|||
15
Mikeware
02.10.12
✎
10:47
|
(14) делай прямым запросом
|
|||
16
BlackSeaCat
02.10.12
✎
10:56
|
(13) "заляживается" - а перед этим "засем закупать", так и просится: "насяльника..."
|
|||
17
zak555
02.10.12
✎
15:21
|
(11) сделай забалансовый счёт с аналитикой датой
|
|||
18
tassman
02.10.12
✎
18:49
|
(11) сделай забалансовый счёт с аналитикой датой
Нет прав на такое! Нужен аналитический отчет по изложенной выше теме. Используя текущий счет 60. И ещё учитывая операции вводимые вручную. Т.Е. от операций тут не уйти. |
|||
19
Эльниньо
02.10.12
✎
19:13
|
(18) Нет прав на забалансовый - сделай на справочнике
|
|||
20
tassman
02.10.12
✎
19:18
|
(18) Нет прав на забалансовый - сделай на справочнике
Может в виду своего небольшого опыта, задам вопрос, а как мне это поможет анализировать множество проводок, начиная с 2005 года? Если создать забалансовый счет. это поможет только с новыми проводками? или я не прав. поправьте пожалуйста! |
|||
21
zak555
02.10.12
✎
19:43
|
(18) и что тут ?
при записи операции добавляй соответствующую проводку по забалансовому счёту |
|||
22
tassman
02.10.12
✎
19:48
|
(18) и что тут ?
при записи операции добавляй соответствующую проводку по забалансовому счёту Какой записи? мне не надо ничего записывать, мне нужно анализировать уже выполненные операции! Те которые накопились с 2005 года, а не новые. Вот ) |
|||
23
zak555
02.10.12
✎
19:56
|
(22) написать обработку, которая сама пройдёт по операциям и где нужно добавит нужные проводки
|
|||
24
Смотрящий от 1С
02.10.12
✎
20:15
|
что то типа этого прямым запросом попробуй
Перем тз; //:ТаблицаЗначений рс = СоздатьОбъект("ODBCRecordset"); //Данный фрагмент построен конструктором. //При повторном использовании конструктора внесенные вручную изменения будут потеряны!!! ТекстЗапроса = "-- qryMaker:Отчет1.2012.10.02.20.06.31 |SELECT TOP 1 Операции.DOCID [Документ $Документ] | , Операции.DATE_TIME_DOCID ДатаВремяИдДок |FROM _1SOPER AS Операции |ORDER BY Операции.DATE_TIME_DOCID |"; тз = рс.ВыполнитьИнструкцию(ТекстЗапроса); тз.ВыбратьСтроку(); |
|||
25
tassman
08.10.12
✎
14:13
|
(24) СПС! А как обратиться к реквизиту выбранного документа?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |