|
v7: 1С++ Хочу прямой запрос на удаление записей из регистров по условию Номенклатура | ☑ | ||
---|---|---|---|---|
0
Злопчинский
23.04.17
✎
16:46
|
ТиС, SQL
сам ламер. ..хочу прямой запрос удалить из регистра (например, остаткиТМЦ, и движения, и итоги) все записи по измерению "Номенклатура" где Номенклатура.ПометкаУдаления()=1 . кому не в лом, набросайте шаблончик, плиз, со строкой подключения хотя бы на вычерк из итогов спсб |
|||
1
vcv
23.04.17
✎
17:46
|
Тебе разово? Есть отличная обработка, пересчитывающая итоги по регистрам. А удалить записи из движений - запрос простой. Удалить движения и пересчитать обработкой итоги.
|
|||
2
vcv
23.04.17
✎
17:50
|
Запрос где-то такой, если ничего не путаю
DELETE FROM $Регистр.ОстаткиТМЦ AS ОстаткиТМЦ INNER JOIN $Справочник.Номенклатура AS Номенклатура ON $ОстаткиТМЦ.Номенклатура = Номенклатура.ID WHERE (Номенклатура.ISMARK = 1) |
|||
3
vcv
23.04.17
✎
17:55
|
не, запрос не такой. Вот такой, кажется, будет правильным. Но всё равно, пишу без проверки и за себя не отвечаю :)
DELETE FROM $Регистр.ОстаткиТМЦ AS ОстаткиТМЦ WHERE $ОстаткиТМЦ.Номенклатура IN ( SELECT Номенклатура.ID [Ссылка $Справочник.Номенклатура] FROM $Справочник.Номенклатура AS Номенклатура WHERE (Номенклатура.ISMARK = 1) ) |
|||
4
vcv
23.04.17
✎
17:57
|
И "AS ОстаткиТМЦ" убрать надо, для DELETE алиас без надобности
|
|||
5
Злопчинский
23.04.17
✎
18:02
|
ага, попробую
сначал Select'ом проверить? . запрос из (3) не будет молотить часами с учетом того, что помеченных на удаление порядка 50 тыс? |
|||
6
spock
23.04.17
✎
18:04
|
(5) нужно смотреть запрос из (2). После выполнения запроса, запустить ТиИ и итоги пересчитаются сами.
|
|||
7
vcv
23.04.17
✎
18:14
|
(5) А ты проверь на реальных данных сначала вложенный селект, время замерить. Но на мой взгляд, твои 50000 удалённых для нормального SQL-сервера так, на несколько секунд.
(6) ТИИ дело не быстрое. На моих 400+ гигах подобные вещи штатными средствами я стараюсь запустить в субботу, что бы гарантированно успеть к понедельнику. Обычно ночи хватает, но запас карман не тянет, так же? |
|||
8
trdm
23.04.17
✎
18:25
|
(7) Есть обработка пересчета итогов регистров.
|
|||
9
vcv
23.04.17
✎
18:32
|
Предложи еще обработку пересчета бухитогов, да всяческих отборов и я буду счастлив :)
|
|||
10
spock
23.04.17
✎
18:50
|
(7) Полностью согласен. Не думаю, что у (0) большие базы, иначе бы он t-sql и 1с++ изучил на изусть - значит ТиИ реально.
|
|||
11
Злопчинский
23.04.17
✎
19:24
|
при удалении прямыми запросами записей по номенклатуре - нафига ТИИ?
|
|||
12
vcv
23.04.17
✎
19:45
|
(11) ТИИ или пересчет итогов. Что бы не разбираться, что и как устроено в таблице итогов регистра. Удаляешь движения, потом пересчитываешь итоги штатно, или обработкой, написанной в древние времена каким-то забытым архимагом :) :) :)
|
|||
13
Злопчинский
23.04.17
✎
19:47
|
(12) не, это не наш путь.
буду удялять и движения и итоги. и ничего пересчитывать не нужно. ибо вычищается под ноль |
|||
14
vcv
23.04.17
✎
19:56
|
(13) Думаю, ты прав. Не вижу, почему бы при таком удалении могло что-то пойти не так. Но, всё равно, из принципа, я бы сделал пересчет итогов после чистки :)
|
|||
15
vcv
23.04.17
✎
20:02
|
+(14) У себя этот пересчет итогов в любом случае регулярно делаю. Хотя бы потому, что в своей базе внедрил самопальные "гибкие группировки", которые иногда косячат на массовых операциях типа обмена УРБД.
|
|||
16
Злопчинский
23.04.17
✎
20:25
|
ща попробую (2)
|
|||
17
Злопчинский
24.04.17
✎
15:33
|
потестил (2) на выборку в консоли скуля
выбрать из регистра.продажи (таблица итогов) SP2343 - это Регистр.Продажи.Номенклатура Select top 100 SP2343 FROM RG2351 AS ОстаткиТМЦ INNER JOIN SC84 AS Номенклатура ON ОстаткиТМЦ.SP2343 = Номенклатура.ID WHERE (Номенклатура.ISMARK = 1) вроде норм. как пристегнуть в вывод выборки наименование номенклатуры? |
|||
18
Ёпрст
24.04.17
✎
15:38
|
(17)
and Номенклатура.descr = 'Вася' |
|||
19
Злопчинский
24.04.17
✎
15:40
|
(18) не, не условие, а как это в 1С++ - типизировать вывод SP2343 (ссылка номенклатура) в виде номенклатура.наименование
|
|||
20
Ёпрст
24.04.17
✎
15:52
|
(19) хз, че тебе надо, если в QA, то тупо select Номенклатура.descr в запросе из (17)
|
|||
21
Злопчинский
24.04.17
✎
16:00
|
(20) непонятно (тупой я)
выбрать из таблицы итогов регистра продажи записи, в которых номенклатура из измерения "номенклатура" помечена на удаление. в качестве визуального представления записи вывести наименование номенклатуры, соответствующее измерению регистра продажи - типа так |
|||
22
Злопчинский
24.04.17
✎
16:06
|
вот так получилось ожидаемое вроде
Select top 100 Номенклатура.descr, SP2343 FROM RG2351 AS ОстаткиТМЦ INNER JOIN SC84 AS Номенклатура ON ОстаткиТМЦ.SP2343 = Номенклатура.ID WHERE (Номенклатура.ISMARK = 1) |
|||
23
Злопчинский
24.04.17
✎
16:07
|
даже вот так
Select top 100 Номенклатура.descr FROM RG2351 AS ОстаткиТМЦ INNER JOIN SC84 AS Номенклатура ON ОстаткиТМЦ.SP2343 = Номенклатура.ID WHERE (Номенклатура.ISMARK = 1) |
|||
24
Злопчинский
24.04.17
✎
16:07
|
ломает мозг конструкция
Select top 100 Номенклатура.descr FROM RG2351 AS ОстаткиТМЦ |
|||
25
Злопчинский
24.04.17
✎
16:21
|
ага, посмотрел, вроде то что надо получаю
3П/МТТ, елы-палы. |
|||
26
Злопчинский
24.04.17
✎
16:23
|
А какой правильной 1С-ной QA юзаться? их несколько с разными доработками/усовершенстования от авторов...?
|
|||
27
Ёпрст
24.04.17
✎
16:42
|
(26) да пофик какой, обычно, их под себя переписываю, я к примеру, переписывал под оледб провайдера для дбф
|
|||
28
Злопчинский
24.04.17
✎
16:45
|
(27) вот я поэтому тренировочно-одноразово через консоль скуля.
для меня оледб, одбц и прочее - китайская грамота |
|||
29
Ёпрст
24.04.17
✎
16:56
|
(28) консоль, то конечно, круто. Вот только в ней нет метапарсера имён, типизации и.. ну ты понял :)
|
|||
30
Ёпрст
24.04.17
✎
16:57
|
так что, делай запросы хотя бы в 1cqa и пользуй всё мощь 1cpp
|
|||
31
Злопчинский
24.04.17
✎
16:58
|
(30) ну так и я про это! какой 1cqa взять? их несколько
|
|||
32
Ёпрст
24.04.17
✎
17:18
|
бери тот, который заработает :)
|
|||
33
Ёпрст
24.04.17
✎
17:18
|
некоторые к форма.привязки пользует, где-то еще какие плюшки
|
|||
34
Ёпрст
24.04.17
✎
17:19
|
на вот, для разнообразия
http://www.1cpp.ru/forum/YaBB.pl?num=1157967835/all |
|||
35
Злопчинский
24.04.17
✎
17:41
|
(32) вот вам болванка и напильник, автомат калашникова сделаете сами ;-)
|
|||
36
vcv
24.04.17
✎
19:32
|
(35) Русский человек с помощью напильника и такой-то матери любую микросхему сделает. И самое главное - хочешь сделать хорошо, сделай это сам. Потому что 99% разработок под 1С обладают всеми основными недостатками opensource. И нормально работать без доработки напильником могут только у автора.
|
|||
37
spock
24.04.17
✎
19:47
|
(36) :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |