v7: 1С++ Хочу прямой запрос на удаление записей из регистров по условию Номенклатура #795993


#0 by Злопчинский
сам ламер. ..хочу прямой запрос удалить из регистра (например, остаткиТМЦ, и движения, и итоги) все записи по измерению "Номенклатура" где Номенклатура.ПометкаУдаления=1 . кому не в лом, набросайте шаблончик, плиз, со строкой подключения хотя бы на вычерк из итогов спсб
#1 by vcv
Тебе разово? Есть отличная обработка, пересчитывающая итоги по регистрам. А удалить записи из движений - запрос простой. Удалить движения и пересчитать обработкой итоги.
#2 by vcv
Запрос где-то такой, если ничего не путаю DELETE FROM $Регистр.ОстаткиТМЦ AS ОстаткиТМЦ INNER JOIN $Справочник.Номенклатура AS Номенклатура ON $ОстаткиТМЦ.Номенклатура = Номенклатура.ID WHERE (Номенклатура.ISMARK = 1)
#3 by vcv
не, запрос не такой. Вот такой, кажется, будет правильным. Но всё  равно, пишу без проверки и за себя не отвечаю :) DELETE FROM $Регистр.ОстаткиТМЦ AS ОстаткиТМЦ    SELECT Номенклатура.ID [Ссылка $Справочник.Номенклатура]    FROM $Справочник.Номенклатура AS Номенклатура )
#4 by vcv
И "AS ОстаткиТМЦ" убрать надо, для DELETE алиас без надобности
#5 by Злопчинский
ага, попробую сначал Select'ом проверить? . запрос из не будет молотить часами с учетом того, что помеченных на удаление порядка 50 тыс?
#6 by spock
нужно смотреть запрос из . После выполнения запроса, запустить ТиИ и итоги пересчитаются сами.
#7 by vcv
А ты проверь на реальных данных сначала вложенный селект, время замерить. Но на мой взгляд, твои 50000 удалённых для нормального SQL-сервера так, на несколько секунд. ТИИ дело не быстрое. На моих 400+ гигах подобные вещи штатными средствами я стараюсь запустить в субботу, что бы гарантированно успеть к понедельнику. Обычно ночи хватает, но запас карман не тянет, так же?
#8 by trdm
Есть обработка пересчета итогов регистров.
#9 by vcv
Предложи еще обработку пересчета бухитогов, да всяческих отборов и я буду счастлив :)
#10 by spock
Полностью согласен. Не думаю, что у большие базы, иначе бы он t-sql и 1с++ изучил на изусть - значит ТиИ реально.
#11 by Злопчинский
при удалении прямыми запросами записей по номенклатуре - нафига ТИИ?
#12 by vcv
ТИИ или пересчет итогов. Что бы не разбираться, что и как устроено в таблице итогов регистра. Удаляешь движения, потом пересчитываешь итоги штатно, или обработкой, написанной в древние времена каким-то забытым архимагом :) :) :)
#13 by Злопчинский
не, это не наш путь. буду удялять и движения и итоги. и ничего пересчитывать не нужно. ибо вычищается под ноль
#14 by vcv
Думаю, ты прав. Не вижу, почему бы при таком удалении могло что-то пойти не так. Но, всё равно, из принципа, я бы сделал пересчет итогов после чистки :)
#15 by vcv
+ У себя этот пересчет итогов в любом случае регулярно делаю. Хотя бы потому, что в своей базе внедрил самопальные "гибкие группировки", которые иногда косячат на массовых операциях типа обмена УРБД.
#16 by Злопчинский
ща попробую
#17 by Злопчинский
потестил на выборку в консоли скуля выбрать из регистра.продажи (таблица итогов) SP2343 - это Регистр.Продажи.Номенклатура Select top 100 SP2343 FROM RG2351 AS ОстаткиТМЦ INNER JOIN SC84 AS Номенклатура ON ОстаткиТМЦ.SP2343 = Номенклатура.ID вроде норм. как пристегнуть в вывод выборки наименование номенклатуры?
#18 by Ёпрст
and Номенклатура.descr = 'Вася'
#19 by Злопчинский
не, не условие, а как это в 1С++ - типизировать вывод SP2343 (ссылка номенклатура) в виде номенклатура.наименование
#20 by Ёпрст
хз, че тебе надо, если в QA, то тупо select  Номенклатура.descr в запросе из
#21 by Злопчинский
непонятно (тупой я) выбрать из таблицы итогов регистра продажи записи, в которых номенклатура из измерения "номенклатура" помечена на удаление. в качестве визуального представления записи вывести наименование номенклатуры, соответствующее измерению регистра продажи - типа так
#22 by Злопчинский
вот так получилось ожидаемое вроде Select top 100 Номенклатура.descr, SP2343 FROM RG2351 AS ОстаткиТМЦ INNER JOIN SC84 AS Номенклатура ON ОстаткиТМЦ.SP2343 = Номенклатура.ID WHERE (Номенклатура.ISMARK = 1)
#23 by Злопчинский
даже вот так Select top 100 Номенклатура.descr FROM RG2351 AS ОстаткиТМЦ INNER JOIN SC84 AS Номенклатура ON ОстаткиТМЦ.SP2343 = Номенклатура.ID WHERE (Номенклатура.ISMARK = 1)
#24 by Злопчинский
ломает мозг конструкция Select top 100 Номенклатура.descr FROM RG2351 AS ОстаткиТМЦ
#25 by Злопчинский
ага, посмотрел, вроде то что надо получаю 3П/МТТ, елы-палы.
#26 by Злопчинский
А какой правильной 1С-ной QA юзаться? их несколько с разными доработками/усовершенстования от авторов...?
#27 by Ёпрст
да пофик какой, обычно, их под себя переписываю, я к примеру, переписывал под оледб провайдера для дбф
#28 by Злопчинский
вот я поэтому тренировочно-одноразово через консоль скуля. для меня оледб, одбц и прочее - китайская грамота
#29 by Ёпрст
консоль, то конечно, круто. Вот только в ней нет метапарсера имён, типизации и.. ну ты понял :)
#30 by Ёпрст
так что, делай запросы хотя бы в 1cqa и пользуй всё мощь 1cpp
#31 by Злопчинский
ну так и я про это! какой  1cqa взять? их несколько
#32 by Ёпрст
бери тот, который заработает :)
#33 by Ёпрст
некоторые к форма.привязки пользует, где-то еще какие плюшки
#34 by Ёпрст
на вот, для разнообразия
#35 by Злопчинский
вот вам болванка и напильник, автомат калашникова сделаете сами ;-)
#36 by vcv
Русский человек с помощью напильника и такой-то матери любую микросхему сделает. И самое главное - хочешь сделать хорошо, сделай это сам. Потому что 99% разработок под 1С обладают всеми основными недостатками opensource. И нормально работать без доработки напильником могут только у автора.
#37 by spock
:)
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С