Имя: Пароль:
1C
1C 7.7
v7: Оптимизация РегОстатки.СводныйОстаток
0 Масянька
 
18.10.17
09:50
Доброе утро!
ТиС 7.7.
В справочнике "Номенклатура" (форма для подбора) реализовано следующее:
в колонке "Остаток" выводится остаток по фирме (в целом, без учета склада) и в правом нижнем углу окошко с остатками по складам, на форме функция, в которой получаются остатки по складам для текущей номенклатуры (используется РегОстатки.СводныйОстаток()).
Замечены тормоза (не критичны, но есть).
Вопрос: есть вариант оптимизировать?
Спасибо.
1 пипец
 
18.10.17
10:49
прямой запрос )))
2 Масянька
 
18.10.17
10:54
(1) А ты уверен (на 200%), что тормоза уйдут?
3 aka AMIGO
 
18.10.17
10:55
(1) Припарка.. не поможет. Проверено.
Только смириться с тормозами. Я приручил клиента, употребляет нормально :)
4 aka AMIGO
 
18.10.17
10:56
+3 правда, сделал доп.колонку "Остатки"
5 Ёпрст
 
18.10.17
10:56
(0) можно, даже штатно.
Покажи скриншот
6 Ёпрст
 
18.10.17
10:57
(2) я- да, на 300%
7 Масянька
 
18.10.17
11:01
(5) http://pastenow.ru/bf75af89c41089f595b3d1ee2ae16015
(6) Да, не освоила я их :(
8 Масянька
 
18.10.17
11:01
(3) (4) Предложила убрать (табличку с остатками) - возмутились. А сама - задумалась :(
9 Ёпрст
 
18.10.17
11:02
(7)
штатно,так, например:
при открытии формы, выгрузитьИтоги в ТЗ (лучше в ИТЗ)
далше, в форме списка - поиск в этой тз и показ.
10 Ёпрст
 
18.10.17
11:02
по кнопке, можешь обновлять останки.
11 Ёпрст
 
18.10.17
11:03
Тормозов не будет, от слова совсем.
12 aka AMIGO
 
18.10.17
11:04
(0) сколько позиций в Номенклатуре?
У меня ок.15тысяч, добавлены колонки "Свободно, Остаток, Резерв", более того, вычисляется наличие аналогов Артикулов - это желтый треугольник во второй колонке:
https://i.paste.pics/64563e1621fff6fdc96ac2d669e5b5c4.png
И тормозов особых не заметно
13 Масянька
 
18.10.17
11:04
(9) О! Попробую. Спасибо.
14 Масянька
 
18.10.17
11:10
(12) Я уже проверила - если убрать функцию на форме - летает. А так подтормаживает. Не критично, но интересно ведь :)
15 Масянька
 
18.10.17
14:09
(11) Ты сильно указкой не лупи, но - не ищет по двум:

ИндексТабОстатков.ДобавитьИндекс("Поиск", "Номенклатура, Склад");
СписокДляПоиска = СоздатьОбъект("СписокЗначений");
СписокДляПоиска.ДобавитьЗначение(ТекНоменклатура);
СписокДляПоиска.ДобавитьЗначение(СкладОсновной);
        Ост = ИндексТабОстатков.НайтиСтроку("Поиск", СписокДляПоиска, , 1);
Сообщить("№ - " + Ост + ", основной - " + ИндексТабОстатков.Количество);
СписокДляПоиска = СоздатьОбъект("СписокЗначений");
СписокДляПоиска.ДобавитьЗначение(ТекНоменклатура);
СписокДляПоиска.ДобавитьЗначение(СкладСписание);
        Ост = ИндексТабОстатков.НайтиСтроку("Поиск", СписокДляПоиска, , 1);
Сообщить("№ - " + Ост + ", списание - " + ИндексТабОстатков.Количество);

А по одному - ищет...
16 Масянька
 
18.10.17
14:10
+ (15) ТекНоменклатура - строка справ.
СкладОсновной - ссылка на справ. склады.
17 Джинн
 
18.10.17
14:14
(9) Тогда форма будет очень долго открываться. Это не панацея.
18 Смотрящий
 
18.10.17
14:21
(0) Получение остатков по складам для текущей номенклатуры убрать как отдельную функцию; вставить ее код в получение остатво без учета складов
19 Масянька
 
18.10.17
15:15
(11) Я тебя обожаю!!!!!!!!!!
20 Ёпрст
 
18.10.17
16:16
(19) это хорошо. Получилось ?
21 Ёпрст
 
18.10.17
16:17
(15) для итз нужно * пихать в индекс
22 Ёпрст
 
18.10.17
16:18
(17) выгрузитьИтоги с фильтрами, почти мгновенно. ПриОткрытии будет незаметно
23 Масянька
 
18.10.17
16:28
(20) Да.
Я довольна. Пользователи - пищат.
Спасибо!
24 Злопчинский
 
18.10.17
21:04
(23) это ровно до того времени пок аво время открытой формы подбора не произойжет случая сильного изменения остатков. манагер ориентируется на устаревшей цифры, по факту - часть товара уже забрал другой манагер. Это принципиально с высоколиквидным товаром с малыми запасами, например. Но, имхо, вполне нормальная плата за простоту решения.
25 АЛьФ
 
19.10.17
10:34
2(24) Такие случаи всяко на этапе проведения разруливаются. Т.к. два менеджера даже с обновленными остатками могут одновременно подобрать один и тот же остаток. А вот в момент проведения один из них получит отлуп. Так что с кэшем в тз нормальное решение.
26 Злопчинский
 
19.10.17
11:35
(25) Это понятно. Но частенько - раз идет ручной подбор - манагер в это время еще и с клиентом на телефоне висит. и вроде все, утрясли 100 штук товара, а тут раз во время проведения - отлуп... ну нехорошо это... ;-)
27 Ёпрст
 
19.10.17
12:08
(26) там кнопка обновить есть
28 Масянька
 
19.10.17
12:11
(26) Ой. Да хватит уже.
29 VladZ
 
19.10.17
12:14
(28) Нужно говорить: "Ой, всё!" :)
30 Ёпрст
 
19.10.17
12:18
(28) если у тя типовая тис (или на основе её) переделай открытие документов, ышо быстрее будет
31 Масянька
 
19.10.17
12:26
(30) В данном случае, у меня все замечательно. :)
А что касается остатков - се ля ви.
32 Ёпрст
 
19.10.17
12:35
(31) подбора партий, случаем, не ведёте ?
Там тоже нужно штатный механизм выкинуть к едрени фени, ну это так, на всякий
33 Злопчинский
 
19.10.17
13:17
(32) а что сиподбором партий принципиально не так?
34 Ёпрст
 
19.10.17
13:48
(33)дык всё не так. Если б пользовался, не спрашивал бы, а переделал. А у тя по-ходу автоподбор партий стоит , ты и не паришься
35 Масянька
 
19.10.17
13:51
(32) Коню понятно :)
Еще бы и единицы выкинуть - никак руки/ноги не дойдут.
36 Ёпрст
 
19.10.17
14:16
(35) А че с единицами ?
На счет подбора партий, открывается не форма списка справочника с отбором, а своя форма обработки для подбора с ТЗ/ТП на форме. Это в разы быстрее, чем форма списка справочника с отбором.
37 Ёпрст
 
19.10.17
14:16
туда и останки показать можно, при желании
38 Масянька
 
19.10.17
14:36
(36) Тут есть задумка: при приходе/расходе пересчет (из упаковок в штуки и пр.), хранение и показ (в отчетах)...
Пока - варится...
39 Злопчинский
 
19.10.17
19:07
(34) ну там я помню, что вроде показываются все партии - используется форма списка справочника. у меня юзали это когда фармацевтика была - там работали строго по партиям с полу-ручным подбором - неудобно было весь список нафиг не нужен.
типа так?
40 Ёпрст
 
19.10.17
19:08
(39) да.
41 Злопчинский
 
19.10.17
19:08
(36) во, ты и написал
в самописной WMS для ОХ у меня так и делается при необходимости ручного подбора
42 Ёпрст
 
19.10.17
19:08
если партий много, установка отбора тормозит безбожно
43 Злопчинский
 
19.10.17
19:18
(38) если я правильно вангую, то скорее всего это либо нафиг не нужно, либо нужно ну в очень спец.случаях.
у меня все учитывается в штуках (базовые). хранится все в заводских коробах и упаковках. Вопросов типа "а сколько мы можем отгрузить коробок" или "а скольо коробок на остатке" - не возникает, если у меня 5487 штук, а размер коробки = 24 шт, то составляет 5487/24 = 228.625, это значит что в реале на складе будет 225 коробок, вскрыто единовременно не более 2 заводских коробок...
и так - по иерархи упаковок - оценивается при необходимости запас.
сборщикам на складе - нужное количество для отбора выдается разложенное по иерархии упаковок - надо собрать клиенту 275 штук, это значит надо взять (коробка = 24 штуки, в коробке 4 блока по 6 штук) = 11кор (11*24=264) + 1блок (6 шт)+5шт.
Этого вполне хватает для нормальной беспроблемной работы. сборщик может вообще все количество набрать блоками/штуками - главное - нужное количество штук4 чтобы было.
.
вымороченным клиентам (сетям и пр) = заказы приходят в количестве кратном упаковкам. И на отборе стоит флаг на соотв.отбо "строго кратно упаковками" - то есть тут сборщик штуками не может набрать, только именно упаковками.
.
такой организации работы со штуками/упаковками - вполне хватает, без всяких дополнительных заморочек усложнения учета единиц.
.
вот как-то так.
44 Злопчинский
 
19.10.17
19:20
(42) я с отборами в штатных формах вообще стараюсь не работать. если нужен отбор - фильтрую и вываливаю списком-тз/сз
45 Масянька
 
24.10.17
15:31
(42) Прямые запросы, прямые запросы...
Почему:
    ТекстЗапроса = "
    |SELECT
    |    $Рег.Фирма as [Фирма $Справочник.Фирмы],
    |    $Рег.Номенклатура as [Номенклатура $Справочник.Номенклатура],
    |    $Рег.Количество as Количество
    |FROM
    |    $РегистрИтоги.ОстаткиТоваров as Рег
    |WHERE
    |    $Рег.Фирма = ? AND
    |    $Рег.Номенклатура = ? AND
    |    $Рег.Склад = ? ";

    RS.Подготовить(ТекстЗапроса);
    RS.ПостроитьПараметры();

    RS.УстПараметр(1, глПользователь.ОсновнаяФирма);
    RS.УстПараметр(2, ТекущийЭлемент());
    RS.УстПараметр(3, СкладОсновной);
    Возврат RS.ВыполнитьСкалярный();

ругается:
RS.УстПараметр(1, глПользователь.ОсновнаяФирма);
{Справочник.Номенклатура.ФормаСписка.ДляПодбора.Модуль(334)}: Недопустимое значение индекса параметра
46 Ёпрст
 
24.10.17
15:33
(45) у тя скуль ?
47 Масянька
 
24.10.17
15:34
(46) 7.7 для Sql, базы dbf.
48 Ёпрст
 
24.10.17
15:35
ну и выполнитьСкалярный тут нельзя применять. У тя же запрос возвратит не одно значение
49 Масянька
 
24.10.17
15:35
(46) Ты только линейку убери подальше :(
50 Ёпрст
 
24.10.17
15:35
(47) :))
Для дбф тем более этот синтаксис не применим
51 Масянька
 
24.10.17
15:36
(50) А какой применим?
52 Масянька
 
24.10.17
15:36
(48) Так он не доходит до выполнить.
53 Ёпрст
 
24.10.17
15:36
ну и запрос, в корне не верен.
54 Масянька
 
24.10.17
15:37
(53) Давай по очереди.
Какой применим?
55 Ёпрст
 
24.10.17
15:37
(51) нужно использовать или оледб или 1sqlite
56 Масянька
 
24.10.17
15:40
(55) А можно подробнее...
57 Ёпрст
 
24.10.17
15:45
На вот, примерчик, мот поможет
https://cloud.mail.ru/public/AeJK/71o1vuzd1
58 Ёпрст
 
24.10.17
15:45
Хотя, если тебе так уж нужон параметизированный запрос, то тут токма скульлайт
59 Масянька
 
24.10.17
16:11
(58) У меня есть 1sqlite.dll.
А как с ним работать?
60 Ёпрст
 
24.10.17
16:19
(59) к этой вк есть als и chm
61 Ёпрст
 
24.10.17
16:19
+
на форуме 1cpp куча веток с примерами
62 Ёпрст
 
24.10.17
16:19
и обсуждением
63 Масянька
 
24.10.17
17:57
(62) Извини, задергали.
А что лучше будет в данном контексте (остатки по номенклатуре по складу) для dbf?
64 ManyakRus
 
24.10.17
22:53
надо использовать дополнительный класс "ПоставщикДанных.Справочник"
тогда можно все данные получать одним запросом,
он получает только видимые на экране данные.
65 Масянька
 
25.10.17
11:49
(62) А как дату задать?
Select
   Рег.Номенклатура [Номенклатура :Справочник.Номенклатура],
   Рег.Склад [Склад :Справочник.Склады],
   Рег.Количество

From
[РегистрИтоги.ОстаткиТМЦ] as Рег
WHERE
Рег.period = ('01.10.2017')
Group by Рег.Номенклатура,Рег.Склад
В dbf стоит "01.10.2017".
66 Ёпрст
 
25.10.17
11:53
(65) я ж тебе пример дал :)
Там универсально, независимо от того, какая выставлена периодичность хранения останков.
67 Масянька
 
25.10.17
11:54
(66) Твой пример для меня силён...
Сижу, ковыряю консоль...
68 Ёпрст
 
25.10.17
11:55
+
тебе нужно понимать, какие останки ты хочешь видеть, на ТА или на произвольный момент времени.
Если на ТА, то просто берются останки с таблички RG по последней дате периодичности итогов.
Если на любую дату, то берется предыдущая дата хранения останков и прибавляется оборот с RA с даты пердыдущей периодичности до нужной тебе даты.
69 Ёпрст
 
25.10.17
11:56
+68 берутся итоги с предудыщей даты + оборот с RA
70 Масянька
 
25.10.17
11:56
(68) Останки хочу на дату подбора. В перспективе.
В консоли без даты - хрень полная получается.
71 Ёпрст
 
25.10.17
11:59
72 Масянька
 
25.10.17
16:00
(71) С остатками на начало получилось.
С движениями - нет. Причем, не ругается собака... Молча пусто.
SELECT
    Движения.Номенклатура As [Номенклатура :Справочник.Номенклатура],
    Движения.Склад As [Склад :Справочник.Склады],
    Движения.Количество As Количество
--    Движения.Количество * (1 - Движения.debkred * 2) As Количество
FROM
    [Регистр.ОстаткиТМЦ] As Движения
WHERE
    Движения.IDDOC >= '20171001' And  Движения.IDDOC <= '20171023'
  -- and Движения.Количество > 0
GROUP BY
    Движения.Номенклатура, Движения.Склад
ORDER BY
    Движения.Номенклатура
73 Ёпрст
 
25.10.17
16:19
(72) iddoc - это внутренний идентификатор документа.
Нужно date фильтровать
:)
74 Масянька
 
25.10.17
16:26
(73) Уже разобралась... Тебя пока дождешься - родишь :))))
Но - тебе ОГРОМНОЕ спасибо!
75 Масянька
 
25.10.17
16:29
(73) Кстати, первая строка после select - там будет просто строка с наименованием или полноценная ссылка (со всеми вытекающими последствиями)?
76 Ёпрст
 
25.10.17
16:52
(75) ссылка, ты же метапарсеру задаешь тип вот тут:
[Номенклатура :Справочник.Номенклатура]
77 Масянька
 
25.10.17
16:55
(76) А почему квадратные скобки используются?
78 Ёпрст
 
25.10.17
16:56
(77) просто указание метапарсеру
79 Ёпрст
 
25.10.17
16:56
что нужно полю присвоить определенный алияс (псевдоним) и привести к такому-то типу
80 Масянька
 
25.10.17
16:56
(78) Я тебя обожаю!!! Спасибо!!!
81 Масянька
 
25.10.17
16:57
(79) Про алиас - и коню понятно. Вот про метапарсер была мысль, но лучше уточнить.
82 Злопчинский
 
25.10.17
20:54
(76) а нафига там приводить к типу в последнем масянькином примере?
Ведь
Движения.Номенклатура и без приведения уже будет ссылкой
????
Или я не прав?
83 Aleksey
 
25.10.17
21:01
(82) Нет это будет строка, т.е. по сути id объекта в виде строки
84 Злопчинский
 
25.10.17
21:07
(83) а что из себя представляет ссылка тогда?
85 Aleksey
 
25.10.17
21:20
(84) ссылка содержит вид. Т.е. по строке 248 нельзя однозначно сказать, что это ссылка на "веник" или ссылка на контрагента Иванова
86 Злопчинский
 
25.10.17
21:24
(85) а в регистре ОстаткиТМЦ.Номенклатура - в измерении ссылка или ид?
87 Aleksey
 
25.10.17
21:46
(86) да кто же его помнит как оно в типовой. У меня конкретный ID (указан конкретный тип и вид Справочник.Номенклатура).
Если в конфигураторе в типе значения указать просто "справочник" то будет храниться вид + ID
88 Злопчинский
 
25.10.17
23:11
(87) если в типовой тип измерения Номенклатура есть Справочник.Номенклатура
?
89 Aleksey
 
26.10.17
00:05
(88) ну ты как маленький
http://www.script-coding.com/v77tables.html
90 Aleksey
 
26.10.17
00:06
1.1.1. Хранение ID объекта

ID может иметь 3 представления (уровня) в зависимости от длины (количества значащих символов):

    9 символов – определен тип и вид объекта (например «Справочник.Клиенты»), в ID включается только порядковый номер в 36-ричной системе исчисления. Под порядковый номер отводятся первые 6 символов, последние 3 символа зарезервированы под код базы УРБД.
    13 символов – определен только тип объекта, вид не задан (например «Справочник»). Первые 4 символа – идентификатор вида (как он задан в метаданных), последующие 9 символов – по аналогии с предыдущим пунктом.
    23 символа – не определен тип и вид объекта. В таком случае в первых 2 символах хранится тип объекта (будет рассмотрен ниже), следующие 13 символов формируются аналогично предыдущему пункту.

В некоторых случаях, при указании неопределенного типа объекта (длина ID кода 23 символа) создается дополнительное поле с символом «T» вначале (например, если в справочнике задан реквизит SP235 как неопределенный, то в таблице справочника будет создано еще одно поле TSP235).
91 Aleksey
 
26.10.17
00:17
Соответственно если задан конкретный справочник (Справочник.Номенклатура), то данные хранятся как 9 символов (6 под сам ID объект в 36-ричном формате + 3 символа по УРБД как оно задано в конфигураторе)

Т.е. прямой запрос вернет строку "   248   " (ну или "   248FIL" если создан в урбд копии у которой код FIL)

Если там просто справочник/документ, то будет что то типа " N57 5BTJC   ", где N57 это ID вида, а 5BTJC - 9-ти значный ID объекта
92 Ёпрст
 
26.10.17
08:00
(82) ну ты это, попробуй, что вернёт без типизации и вопрос, сам собой отпадёт
93 tgu82
 
26.10.17
09:16
(12) У меня тоже так сделано. Но если хотят, флагом переключают показывать это или нет. Малость тормозит но не всегда
94 Масянька
 
26.10.17
13:58
(92) Почем расхода нет:
SELECT
    Движения.Номенклатура As [Номенклатура :Справочник.Номенклатура],
    Движения.Склад As [Склад :Справочник.Склады],
   CASE
       WHEN (DEBKRED   = 1) THEN Движения.Количество
       ELSE 0
   END As Расход,
   CASE
       WHEN (DEBKRED   = 0) THEN Движения.Количество
       ELSE 0
   END As Приход
FROM
    [Регистр.ОстаткиТМЦ] As Движения
INNER Join [Журнал] Жур ON Жур.iddoc = Движения.iddoc and Жур.date BETWEEN '20171001'  And '20171025'
GROUP BY
    Движения.Номенклатура, Движения.Склад
ORDER BY
    Движения.Номенклатура

А приход есть.
95 Масянька
 
26.10.17
14:20
+(94) Получилось! :)))
96 Масянька
 
26.10.17
14:55
Вопрос по регистрам (dbf):
стандартный отчет "Ведомость по остаткам" показывает:
нач. ост   приход   расход   кон. ост
   15        11        21       5
запрос:
SELECT
    Остатки.Номенклатура As [Номенклатура :Справочник.Номенклатура],
    Остатки.Склад As [Склад :Справочник.Склады],
    Остатки.Количество As Количество
FROM
    [РегистрИтоги.ОстаткиТМЦ] As Остатки
WHERE
    Остатки.PERIOD = '20171001' And Остатки.Количество > 0
GROUP BY
    Остатки.Номенклатура, Остатки.Склад
ORDER BY
    Остатки.Номенклатура
выдает  - Количество - 5.
Лезу в dbf и вижу 01.10.17 - 5, 01.09.17 - 15.
Вопрос: так как же получить остатки на нач. периода?
Стандартный "Остатки ТМЦ" показывает тоже 15.
97 Масянька
 
26.10.17
15:37
Проверила - за сентябрь движений нет.
Переиндексила БД.
Результат - тот же: в отчете - 15, в запросе - 5.
98 aka AMIGO
 
26.10.17
15:46
(97) Склады совпадают?
99 aka AMIGO
 
26.10.17
15:48
Может, попробовать из запроса убрать склад?
100 Масянька
 
26.10.17
15:48
(98) Хороший вопрос...
Не знаю, как сказать...
2 записи (в dbf). По одному - 0, по другому - 5 (это если смотреть 01.10.2017). Если на 01.09.2017: 15 и 1.
101 Масянька
 
26.10.17
15:50
(99) ИМХО, дело не в запросе. Я же в запросе явно указываю дату. И в dbf (на эту дату) именно те цифры, которые в запросе.
102 aka AMIGO
 
26.10.17
15:52
(101) я имел в виду GROUP BY
    Остатки.Номенклатура, Остатки.Склад
103 Масянька
 
26.10.17
15:54
(102) Тоже самое (5).
104 aka AMIGO
 
26.10.17
15:56
Ну, и последнее, поискал в ветке: Пересчет итогов никто вроде не советовал?
Бывало у меня такое.
105 Масянька
 
26.10.17
15:57
(104) В конфигураторе - все галки - ничего не изменилось.
Это у меня поломатая БД?
106 aka AMIGO
 
26.10.17
16:00
(105) Ну, необычно ведет себя - не значит, что поломатая.
Бывали глюки необъяснимые.
Извини, Масянька, не горазд я на идеи, все закончились..
107 aka AMIGO
 
26.10.17
16:01
Оператор Сводного остатка скопипасть сюда, пожалуйста..
108 Масянька
 
26.10.17
16:01
(106) Причем, по нескольким позициям посмотрела: на 01.10.2017 лежат тек. остатки.
109 Масянька
 
26.10.17
16:01
(107) Чего? Переведи...
110 aka AMIGO
 
26.10.17
16:04
Типа Ост = Регистры.ТвойРегистр.СводныйОстаток(ТвояНоменклатура,[Измерения, желательно пустые],"Остаток[илиКакойТамРеквизитВРегистре]);
111 aka AMIGO
 
26.10.17
16:05
* илиКакойТамРеквизитВРегистре = илиКакойТамРесурсВРегистре
112 Масянька
 
26.10.17
16:07
(110) (111) Так я в консоли делаю.
113 aka AMIGO
 
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) Я пока в консоли запросы пытаюсь делать.
115 aka AMIGO
 
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.
121 Aleksey
 
26.10.17
16:47
(120) а начальные остатки по отчету + обороты совпадают с конечными?
122 Aleksey
 
26.10.17
16:48
(116)
Запрос.Подставлять("ДатаТА", НачМесяца(ПолучитьДатуТА()));
123 Масянька
 
26.10.17
16:49
(121) Обороты (другим запросом) один в один. А вот остатки (этим запросом) - дают конечный (сегодняшний) остаток.
Вот и думаю - на фига мне обороты?
124 opus70
 
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) А без этого пустые выводит.
Ну, дык, зачем обороты-то?
135 Изучаю1С8
 
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) А что неправильно?
139 Изучаю1С8
 
26.10.17
17:47
Вообще прямойзапрос класс бы уже освоила там синтаксис что для дфб что для скуля один
140 Ёпрст
 
26.10.17
17:48
(134) че ?
141 Изучаю1С8
 
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
145 Изучаю1С8
 
26.10.17
17:52
146 Изучаю1С8
 
26.10.17
17:53
147 Масянька
 
26.10.17
17:54
(145) Спасибо. С dbf будет работать?
148 Изучаю1С8
 
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
Всё равно, что доверить мотоцикл человеку, который на велосипеде не умеет ездить
152 Изучаю1С8
 
26.10.17
17:56
Класс более универсальный, запросы почти как на 1С8.
153 Изучаю1С8
 
26.10.17
17:56
Или базу на скуль потом перенесет, запросы переписывать придется? а так все будет работать за редким исключением.
154 Масянька
 
26.10.17
17:56
(149) Я в консоли ковыряю.
(150) Почему?
(151) Ой, можно подумать, что ты ни разу с велика не падал.
155 Изучаю1С8
 
26.10.17
17:57
Только поставщик поменяется.
156 Масянька
 
26.10.17
17:57
(153) Скуль платный. Начальство не ведется.
157 Ёпрст
 
26.10.17
17:57
Если че, в (149) - это останки на ТА, если НачДата в одной периодичности с ТА
158 Изучаю1С8
 
26.10.17
17:58
(156) Есть бесплатные версии.
159 Масянька
 
26.10.17
17:58
(158) Например...
160 Изучаю1С8
 
26.10.17
17:59
(159) SQL Express ограничение 10 гигов
161 Изучаю1С8
 
26.10.17
18:01
Хотя там вроде 1 гиг предел по памяти еще, может не вариант для тебя.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс