Имя: Пароль:
1C
1C 7.7
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) :)