Вход | Регистрация

  1  2
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Оптимизация РегОстатки.СводныйОстаток

v7: Оптимизация РегОстатки.СводныйОстаток
Я
   Масянька
 
18.10.17 - 09:50
Доброе утро!
ТиС 7.7.
В справочнике "Номенклатура" (форма для подбора) реализовано следующее:
в колонке "Остаток" выводится остаток по фирме (в целом, без учета склада) и в правом нижнем углу окошко с остатками по складам, на форме функция, в которой получаются остатки по складам для текущей номенклатуры (используется РегОстатки.СводныйОстаток()).
Замечены тормоза (не критичны, но есть).
Вопрос: есть вариант оптимизировать?
Спасибо.
 
 
   Масянька
 
101 - 26.10.17 - 15:50
(99) ИМХО, дело не в запросе. Я же в запросе явно указываю дату. И в dbf (на эту дату) именно те цифры, которые в запросе.
   aka AMIGO
 
102 - 26.10.17 - 15:52
(101) я имел в виду GROUP BY
    Остатки.Номенклатура, Остатки.Склад
   Масянька
 
103 - 26.10.17 - 15:54
(102) Тоже самое (5).
   aka AMIGO
 
104 - 26.10.17 - 15:56
Ну, и последнее, поискал в ветке: Пересчет итогов никто вроде не советовал?
Бывало у меня такое.
   Масянька
 
105 - 26.10.17 - 15:57
(104) В конфигураторе - все галки - ничего не изменилось.
Это у меня поломатая БД?
   aka AMIGO
 
106 - 26.10.17 - 16:00
(105) Ну, необычно ведет себя - не значит, что поломатая.
Бывали глюки необъяснимые.
Извини, Масянька, не горазд я на идеи, все закончились..
   aka AMIGO
 
107 - 26.10.17 - 16:01
Оператор Сводного остатка скопипасть сюда, пожалуйста..
   Масянька
 
108 - 26.10.17 - 16:01
(106) Причем, по нескольким позициям посмотрела: на 01.10.2017 лежат тек. остатки.
   Масянька
 
109 - 26.10.17 - 16:01
(107) Чего? Переведи...
   aka AMIGO
 
110 - 26.10.17 - 16:04
Типа Ост = Регистры.ТвойРегистр.СводныйОстаток(ТвояНоменклатура,[Измерения, желательно пустые],"Остаток[илиКакойТамРеквизитВРегистре]);
 
 Рекламное место пустует
   aka AMIGO
 
111 - 26.10.17 - 16:05
* илиКакойТамРеквизитВРегистре = илиКакойТамРесурсВРегистре
   Масянька
 
112 - 26.10.17 - 16:07
(110) (111) Так я в консоли делаю.
   aka AMIGO
 
113 - 26.10.17 - 16:09
(112) Ммм.. понятно..
А то у меня в ФормеСписка есть колонка СвободныйОстаток с формулой
Функция ОстатокТовараНаСкладе()

    //*ВМ@MyCompany, 28-08-2014 14:21:58

    
    Возврат Формат(Регистр.ОстаткиТоваров.Остаток(ТекущийЭлемент(),Склад,"ОстатокТовара") - Регистр.ЧугунныйРезерв.СводныйОстаток(ТекущийЭлемент(),,Склад,"Количество"),"Ч15.3");
    ///ВМ@MyCompany, 28-08-2014 14:21:58


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

А внизу окна списка - маркер "Показывать остаток на складе"
   Масянька
 
114 - 26.10.17 - 16:10
(113) Я пока в консоли запросы пытаюсь делать.
   aka AMIGO
 
115 - 26.10.17 - 16:11
(114) Я понял уже.. Ладушки, не буду мешать.
   Масянька
 
116 - 26.10.17 - 16:26
А я правильно понимаю, что если надо остатки на ТА, то прямым запросом (1cqlite, dbf) достаточно взять остатки на начало тек. месяца? Или не правильно?
   Ёпрст
 
117 - 26.10.17 - 16:38
(116) на начало периодичности хранения останков.
   Ёпрст
 
118 - 26.10.17 - 16:39
Не у всех стоит месяц. У нас , к примеру 5 дней всегда было.
Это если че, самы быстрый способ для получения итогов и записи движений в регистры.
   Ёпрст
 
119 - 26.10.17 - 16:40
в (96) ты всего лишь берешь итоги на начало месяца.
Нужно к ним прибавить движения , будет тебе остаток
   Масянька
 
120 - 26.10.17 - 16:43
(119) Дык, почему: в стандартных отчетах на начало месяца - 15, а мне запрос выдает 5? Да, и в dbf лежит 5.
   Aleksey
 
121 - 26.10.17 - 16:47
(120) а начальные остатки по отчету + обороты совпадают с конечными?
   Aleksey
 
122 - 26.10.17 - 16:48
(116)
Запрос.Подставлять("ДатаТА", НачМесяца(ПолучитьДатуТА()));
   Масянька
 
123 - 26.10.17 - 16:49
(121) Обороты (другим запросом) один в один. А вот остатки (этим запросом) - дают конечный (сегодняшний) остаток.
Вот и думаю - на фига мне обороты?
   opus70
 
124 - 26.10.17 - 17:00
самый простой способ поменять порядок регистров в 1с очень эффективно помогает
   Масянька
 
125 - 26.10.17 - 17:05
(124) Хватит мне тут кидать! У меня и так голова прямоугольная уже :)
   Ёпрст
 
126 - 26.10.17 - 17:35
(123) больше кода. Отсюда не видно чего ты там проверяешь
   Ёпрст
 
127 - 26.10.17 - 17:35
и остаток на наччало<>остаток на конец
   Ёпрст
 
128 - 26.10.17 - 17:35
если че.
   Ёпрст
 
129 - 26.10.17 - 17:35
:)
   Ёпрст
 
130 - 26.10.17 - 17:36
(120) а на конец месяца сколько ? :)
   Масянька
 
131 - 26.10.17 - 17:40
(130) Вот этот запрос:
SELECT
    Остатки.Номенклатура As [Номенклатура :Справочник.Номенклатура],
    Остатки.Склад As [Склад :Справочник.Склады],
    Остатки.Количество As Количество
FROM
    [РегистрИтоги.ОстаткиТМЦ] As Остатки
WHERE
    Остатки.PERIOD = '20171001' And Остатки.Количество > 0
GROUP BY
    Остатки.Номенклатура, Остатки.Склад
--    Остатки.Номенклатура
ORDER BY
    Остатки.Номенклатура
в консоли показывает тек. остаток.
   Ёпрст
 
132 - 26.10.17 - 17:45
(131) And Остатки.Количество > 0 это лишнее
   Ёпрст
 
133 - 26.10.17 - 17:46
ну и 
SUM(Остатки.Количество) Количество
 
 
   Масянька
 
134 - 26.10.17 - 17:46
(132) А без этого пустые выводит.
Ну, дык, зачем обороты-то?
   Изучаю1С8
 
135 - 26.10.17 - 17:46
А чего 1cqlite по дефолту не на ТА остатки показывает если дату не указывать?
   Ёпрст
 
136 - 26.10.17 - 17:47
Жалко, что 1sqlite не ругается на неверный синтаксис, как t-sql или fox
   Ёпрст
 
137 - 26.10.17 - 17:47
(135) конечно нет
   Масянька
 
138 - 26.10.17 - 17:47
(133) Без разницы - тоже самое.
(136) А что неправильно?
   Изучаю1С8
 
139 - 26.10.17 - 17:47
Вообще прямойзапрос класс бы уже освоила там синтаксис что для дфб что для скуля один
   Ёпрст
 
140 - 26.10.17 - 17:48
(134) че ?
   Изучаю1С8
 
141 - 26.10.17 - 17:48
и мануал есть нормальный
   Масянька
 
142 - 26.10.17 - 17:50
(141) Кинь мануалом.
   Масянька
 
143 - 26.10.17 - 17:51
(140) То! Если убрать - выводит пустые кол-ва по складу (другому).
   Ёпрст
 
144 - 26.10.17 - 17:52
(138) нет агрегатной функции к числовым полям , которые есть в селект листе и которых нет в указании в group by
   Изучаю1С8
 
145 - 26.10.17 - 17:52
   Изучаю1С8
 
146 - 26.10.17 - 17:53
   Масянька
 
147 - 26.10.17 - 17:54
(145) Спасибо. С dbf будет работать?
   Изучаю1С8
 
148 - 26.10.17 - 17:54
(147) да также через лайт, но синтаксис одинаковый
   Ёпрст
 
149 - 26.10.17 - 17:54
Биомать, а  ?

SELECT
    Остатки.Номенклатура As [Номенклатура :Справочник.Номенклатура],
    Остатки.Склад As [Склад :Справочник.Склады],
    sum(Остатки.Количество) As Количество
FROM
    [РегистрИтоги.ОстаткиТМЦ] As Остатки
WHERE
    Остатки.PERIOD = :НачПериод
GROUP BY
    Остатки.Номенклатура, Остатки.Склад

.....

мд = СоздатьОбъект("MetaDataWork");
    НачПериод = мд.ПолучитьНачПериода(НачДата)//начало периода

    Запрос.Подставлять("НачПериод",НачПериод);
 
 Рекламное место пустует
   Ёпрст
 
150 - 26.10.17 - 17:55
Если че, класс тебе не поможет.
   Ёпрст
 
151 - 26.10.17 - 17:55
Всё равно, что доверить мотоцикл человеку, который на велосипеде не умеет ездить
   Изучаю1С8
 
152 - 26.10.17 - 17:56
Класс более универсальный, запросы почти как на 1С8.
   Изучаю1С8
 
153 - 26.10.17 - 17:56
Или базу на скуль потом перенесет, запросы переписывать придется? а так все будет работать за редким исключением.
   Масянька
 
154 - 26.10.17 - 17:56
(149) Я в консоли ковыряю.
(150) Почему?
(151) Ой, можно подумать, что ты ни разу с велика не падал.
   Изучаю1С8
 
155 - 26.10.17 - 17:57
Только поставщик поменяется.
   Масянька
 
156 - 26.10.17 - 17:57
(153) Скуль платный. Начальство не ведется.
   Ёпрст
 
157 - 26.10.17 - 17:57
Если че, в (149) - это останки на ТА, если НачДата в одной периодичности с ТА
   Изучаю1С8
 
158 - 26.10.17 - 17:58
(156) Есть бесплатные версии.
   Масянька
 
159 - 26.10.17 - 17:58
(158) Например...
   Изучаю1С8
 
160 - 26.10.17 - 17:59
(159) SQL Express ограничение 10 гигов
   Изучаю1С8
 
161 - 26.10.17 - 18:01
Хотя там вроде 1 гиг предел по памяти еще, может не вариант для тебя.
  1  2

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует