Имя: Пароль:
1C
1C 7.7
v7: Дедупликация регистра остатков
0 devnull
 
06.01.23
11:32
Добрый день.
Стал смотреть размеры таблиц 1cv7 базы, которая работает уже 15+ лет. Есть регистр остатков ПродажиБух RGxxxx, в котором может быть хоть 9, хоть 90 одинаковых записей, но с разным значением PERIOD. Разумно ли удалить все дубликаты кроме последнего актуального периода изложенным ниже образом? Будет ли корректно работать 1cv7?

delete T from
(select Row_Number() Over(Partition By SP6604,SP6592,SP6593,SP6594,SP6614,SP6595,SP6596,SP6616,SP6605,SP6617 order by PERIOD desc ) As RowNumber, * From rg5555_2) T Where T.RowNumber > 1
за 44 сек из 3.5 млн строк скопированной табл осталось всего 80 тыс

И, если буду чистить _1SJOURN до 2020, можно ли удалять все записи из таких регистров с PERIOD<'2020-01-01' ? Таких 20 тыс из оставшихся 80 тыс. На фоне оптимизации 3500->80 в принципе роли не играет, но мне для понимания бизнес-логики 1cv7. Я в ней не особо разбираюсь

Описание регистров в DDS конфиге:

T=RG5555  |Регистр ПродажиБух            |RG5555     |          
#-----Fields-------
# Name                  |Descr               |Type|Length|Precision
F=PERIOD                |Period Registr      |D   |0     |0        
F=SP6604                |(P)Фирма            |C   |9     |0        
F=SP6592                |(P)Номенклатура     |C   |9     |0        
F=SP6593                |(P)Статус           |C   |9     |0        
F=SP6594                |(P)Документ         |C   |13    |0        
F=SP6614                |(P)Партия           |C   |9     |0        
F=SP6595                |(P)Количество       |N   |11    |3        
F=SP6596                |(P)Стоимость        |N   |18    |2        
F=SP6616                |(P)СтоимостьБезНДС  |N   |18    |2        
F=SP6605                |(P)ПродСтоимость    |N   |17    |2        
F=SP6617                |(P)ПродСтоимостьБезН|N   |18    |2  

T=RA5555  |Регистр (Дв.) ПродажиБух      |RA5555     |          
#-----Fields-------
# Name                  |Descr               |Type|Length|Precision
F=IDDOC                 |ID Document's       |C   |9     |0        
F=LINENO_               |LineNo              |S   |0     |0        
F=ACTNO                 |Action No           |I   |0     |0        
F=DEBKRED               |Flag Debet/Kredit   |L   |0     |0        
F=SP6604                |(P)Фирма            |C   |9     |0        
F=SP6592                |(P)Номенклатура     |C   |9     |0        
F=SP6593                |(P)Статус           |C   |9     |0        
F=SP6594                |(P)Документ         |C   |13    |0        
F=SP6614                |(P)Партия           |C   |9     |0        
F=SP6595                |(P)Количество       |N   |11    |3        
F=SP6596                |(P)Стоимость        |N   |18    |2        
F=SP6616                |(P)СтоимостьБезНДС  |N   |18    |2        
F=SP6605                |(P)ПродСтоимость    |N   |17    |2        
F=SP6617                |(P)ПродСтоимостьБезН|N   |18    |2        
F=SP6606                |(P)КодОперации      |C   |9     |0        
F=SP6609                |(P)СтатусДвижения   |C   |9     |0
1 Масянька
 
06.01.23
11:45
(0) А свернуть базу не вариант?
2 JeHer
 
06.01.23
12:21
Остатки полетят к хyям. Надо сворачивать.
3 devnull
 
06.01.23
13:36
Текущие остатки слетят или 3 летней давности (наверное они не важны)? Может есть вариант посчитать актуальные остатки?

Где-то давным давно я видел встроенный функционал сверток, но сейчас не могу найти. Или это платная внешняя обработка? Я тогда вместо свертки просто чистил _1sjourn и _1scrdoc от старых документов и вычищал эти iddoc в DH% таблицах. Сейчас понял, что еще куча старого мусора осталась в RG%, RA% и _1SCONST.
4 Остап Ибрагимович
 
06.01.23
13:56
(0): Не разумно (если конечно интересует корректность работы 1с).
Не будет (точнее - если и будет то далеко не всегда).
Нельзя (если конечно интересует корректность работы 1с).
Ну и вообще, с учетом того, что (судя по всему) речь о клиент-серверном варианте (ms sql).

1) з.а.ч.е.м.??? (учитывая тот факт, что именно скл-версия обеспечисает стабильность и независимостьб скорости работы от объемов данных)

2) "позовите специалиста" (с) - пусть свернет вам базу грамотно раз уж припекло.

ну и вообще: "работает - не трогай!" (с)
5 АгентБезопасной Нацио
 
06.01.23
14:16
(0)а какая цель у задуманного деяния?
И какой смысл у остаточного регистра "ПродажиБух"?
(3) "позовите специалиста"©
6 devnull
 
06.01.23
14:26
Спасибо за комментарии! Спеца позовем. "работает - не трогай" - правильный подход, поэтому проясняю все заранее.

Зачем? Чтобы уменьшить объем ежедневной выгрузки (бекап), длительнось самого РК и длительность потенциального восстановления. И есть подозрение, что работа SQL с таблицей из 80k строк капельку быстрее чем с 3500к строк, тем более что эти строки по сути избыточны либо orphan.
7 Остап Ибрагимович
 
06.01.23
14:31
(6): Это решается правильным выбором модели бэкапа и ее настройкой, а также грамотной разработкой регламента резервного копирования.
Ваше подозрение (особенно в обсуждаемом контексте) беспочвенно. и безграмотно.
Нет, эти строки (упоминаемые в (0)) - НЕ "избыточны" (опять таки - если интересует корректность работы 1с)
Ещё раз. По слогам. П.о.з.о.в.и.т.е. с.п.е.ц.и.а.л.и.с.т.а! (с)
8 NorthWind
 
06.01.23
14:35
(3) я ТиС семерку чистил таким образом. Сохранял все нужные остатки на начало периода, с которого планировалось вести чистую базу. Подготавливал новую чистую базу со справочниками, но без документов и регистров (это сделать довольно просто). Заводил сохраненные ранее остатки путем разных документов ввода остатков. При необходимости перекидывал также некоторый массив документов по вкусу и проводил их, чтобы работа была не с полного "нуля", в частности, заказы покупателей - понятное дело, если делать так, нужно остатки перекинуть тоже соответствующим образом, чтобы они "достроилсь" проведением буферных документов. И все. Люди работали в чистой базе, при необходимости "посмотреть" - заходили в старую. Через какое-то время старая становилась не нужна.
9 devnull
 
06.01.23
15:29
"Сохранять все нужные остатки на начало периода" - это нужно 1с код писать или SQL запрос?

По изначальному вопросу. Лазил по таблицам RG%, RA%, в конфиг DDS смотрел, искал по конфигурации (поиск во всех текстах) - так и не понял, где применяются поля PERIOD регистров. Поэтому и спросил здесь.

Шефу порекомендую позвать профильного спеца. Он ранее кого-то привлекал, но был не в восторге. Либо не попадались грамотные, либо ценообразование было несовместимо с выхлопом от оптимизации. Малый бизнес же..
10 АгентБезопасной Нацио
 
06.01.23
17:25
(6) "объем" нынче дешев (дешевле работы человека), длительность восстановления решается выбором модели и планов, "подозрения на скорость работы" беспочвенны, ибо происходят от безграмотности.
(7) Ну, "избыточны" или нет - зависит от того, делают они отчеты за задний период, или нет.
(9)
1. хошь кодом, хошь запросом. можно и так и сяк, лишь бы соотношение радиусов было хорошее.
2. в конфигурации этого, естественно, нет.
3. тогда зови спеца "свернуть/обрезать базу" - это будет и дешевле, и проще - ибо аналитика за 15 лет "малому бизнесу" нафиг не нужна, да и оптимизация тоже.
(3) свои обработки по обрезке даже искать не буду, ибо они для вас - "заготовки", а для допиливания нужны знания. а давать обезьянам гранату - не в моих принципах.
11 devnull
 
06.01.23
17:33
Спасибо.

Последний вопрос: Если за отчетами/остатками за задние периоды готовы ходить в архивную базу, можно усекать регистры по PERIOD до самого последнего?

Ради интереса проверил Остатки ТМЦ за 30.12.2022 между оригиналом и усеченной копией - сошлись. А за 30.12.2021 не сошлись
12 АгентБезопасной Нацио
 
06.01.23
18:05
(11)
1.тогда нужно не "усекать регистры", а просто "обрезать базу".
2. "остатки за" - само по себе забавно. примерно как "военная мысль".
13 NorthWind
 
06.01.23
19:54
(10) не так уж они и беспочвенны, особенно на семерке и особенно если она работает на штатных запросах, а не переписана вхлам.
14 NorthWind
 
06.01.23
19:55
... про файловый вариант вообще молчу, там это не подозрения, а крайне жестокая реальность
15 NorthWind
 
06.01.23
20:02
(9) > "Сохранять все нужные остатки на начало периода" - это нужно 1с код писать или SQL запрос?

я на 1С обработку делал, которая собирала все, что нужно, в XML-файлики в старой базе и создавала требуемые документы в новой.
16 AAA
 
06.01.23
20:14
Для того, чтобы хоть что-то делать с регистрами на низком уровне надо, как минимум, изучить как эти регистры организованы, что и как в них хранится. Иначе получится очень не смешно. Со сверткой думаю здесь будут проблемы, так как судя по названию регистра в (0) конфигурация нетиповая, поэтому обработку свертки и документы начальных остатков возможно надо будет "пилить"
17 AAA
 
06.01.23
20:20
(9)Вы почитайте про процедуру свертки, на эту тему масса материалов. Посмотрите типовые конфигурации (ТИС, Бухгалтерия). В них есть штатные обработки свертки. Основной недостаток штатных обработок - низкая скорость удаления документов до даты свертки. В нетиповых конфигурациях бывает масса своих нюансов
18 devnull
 
06.01.23
22:18
Читал по диагонали разные статьи про свертки, серьезно не погружался. Естественно бесплатных универсальных готовых вариантов не нашел ) Не совсем мой профиль, да и задача скорее на исследовательский интерес.

Добился чтоб остатки (отчет/ведомость по остаткам ТМЦ, Контрагентам, Кассе) совпадали в оригинале и усеченной копии, если выбирать интервалы в пределах 2022.
mdf уменьшился 3.8->1.4 ГБ. Время РК уменьшилось вдвое, размер РК втрое. Ускорится или нет обычная работа будет видно после праздников.


DECLARE @TRUNCATEDATE VARCHAR(10) = '20211201'
DECLARE @TABNAME VARCHAR(100)
DECLARE @SQL NVARCHAR(300)
DECLARE CUR1 CURSOR FOR
  SELECT table_name
  FROM   information_schema.tables
  WHERE  table_name like 'RG%'
OPEN CUR1
FETCH NEXT FROM CUR1 INTO @TABNAME
WHILE @@FETCH_STATUS = 0
  BEGIN
DECLARE @COLS VARCHAR(300) = NULL
SELECT @COLS= COALESCE(@COLS + ',', '') + c.column_name FROM INFORMATION_SCHEMA.COLUMNS c WHERE TABLE_NAME = @TABNAME AND column_name!='PERIOD'
      SET @SQL = 'DELETE T FROM (SELECT Row_Number() Over(Partition By ' + @COLS + ' ORDER BY period DESC ) AS RowNumber, * From ' + @TABNAME + ') T WHERE T.RowNumber > 1 AND PERIOD<cast(' + @TRUNCATEDATE + ' as varchar)'
      PRINT @SQL
      EXEC Sp_executesql
        @SQL
      FETCH NEXT FROM CUR1 INTO @TABNAME
  END
CLOSE CUR1
DEALLOCATE CUR1

DECLARE @TRUNCATEDATE VARCHAR(10) = '20200101'
UPDATE _1sjourn SET ismark=1,closed=4 WHERE date_time_iddoc<@TRUNCATEDATE
DECLARE @TABNAME VARCHAR(100)
DECLARE @SQL NVARCHAR(300)
DECLARE CUR1 CURSOR FOR
  SELECT table_name
  FROM   information_schema.tables
  WHERE  table_name like 'RA%' OR table_name like 'DH%' OR table_name like 'DT%'
OPEN CUR1
FETCH NEXT FROM CUR1 INTO @TABNAME
WHILE @@FETCH_STATUS = 0
  BEGIN
      SET @SQL = 'DELETE FROM d FROM ' + @TABNAME + ' d INNER JOIN _1sjourn j ON d.iddoc=j.iddoc AND j.ismark=1 WHERE j.date_time_iddoc<cast(' + @TRUNCATEDATE + ' as varchar)'
      PRINT @SQL
      EXEC Sp_executesql
        @SQL
      FETCH NEXT FROM CUR1 INTO @TABNAME
  END
CLOSE CUR1
DEALLOCATE CUR1
DELETE FROM _1scrdoc WHERE child_date_time_iddoc<@TRUNCATEDATE
DELETE FROM _1sjourn WHERE ismark=1 AND closed=4 AND date_time_iddoc<@TRUNCATEDATE
19 АгентБезопасной Нацио
 
07.01.23
13:06
(18)
mdf был меньше 4Г?? нафига тут вообще ради этого клопа огород городить? ну и как-то не вяжется с миллионами записей только в итогах только одного регистра.
да и "задача на исследовательский интерес" как правило подразумевает исследование "как это работает" (зачем нужны движения, зачем итоги, какие бывают, как данные пишутся и как извлекаются и все такое), а не написание одного-единственного запроса на удаление...
20 AAA
 
07.01.23
13:28
(19)Каждый идет своим путем. Автор свертку изучал по диагонали, а пистон получит очень прямо-направленный и акцентированный.
21 АгентБезопасной Нацио
 
07.01.23
13:52
(20) ну я вниматочно® его запрос не читал.  Вполне допускаю, что если юзвери не полезут в большой зад, то никто ничего и не заметит, и обойдется без пистонов.
Но, блин, тратить время из-за 4Г. Причем оно еще и бесполезно.
22 AAA
 
07.01.23
13:57
(22)а кто ж будет читать запрос. Разве что в Рождество можно базу свернуть запросом, пусть даже и прямым )  Без начальных остатков. Революция
23 АгентБезопасной Нацио
 
07.01.23
14:20
(22) ну, у меня "в клюшечные времена" регулярно (ежемесячно) подрезалась база (до 3 лет+1 месяц) именно запросами, причем именно прямыми - чтоб не останавливать работу 24/7. Так что "ничего невозможного нет"©.
24 AAA
 
07.01.23
15:27
я же не против прямых запросов, сам их использую. Но начальные остатки то наверное создавали?)
25 АгентБезопасной Нацио
 
08.01.23
10:34
(24) записи в RG на -37 месяц - они сами по себе начальные остатки, этого достаточно. Но для корректного отображения был один документ, к которому привязывались формируемые запросом движения за -37 месяцем. Т.е. я по сути "раскладывал остаток в движения", и привязывал их к пустому служебному  документу.
Но если не лазить отчетами за -36 месяц, достаточно записей в RG.
26 Остап Ибрагимович
 
08.01.23
13:52
(25): Ннууу, вообще-то движения - это RA. а RG - это итоги, которые при очередной реструктуризации с пересчетом итогов... ну после тебя такого "умного" пришел кто-то и "тупо" (шататно!) доработал что-то по хотелке заказчика - и "алё".
Правильнее было бы именно а RA прописывать движения, формирующие нач.итоги.
27 Злопчинский
 
08.01.23
17:10
Я вообще ничего не понял, развели здесь игру престолов. Внедряешь документ типа "универсальный двигатель регистров". В него считываются остатки на дату документа. Записываешь. Удаляешь все доки (пометкой) до этого документа (со сдвигом та на начало базы). Проводишь документ-двигатель. Удаляешь все доки помеченный доки. Сдвигаешь та на сейчас. Всë.
28 Остап Ибрагимович
 
08.01.23
17:55
(27): Ха! Штатно - не кошерно!
Надо скл-запросом в "кишках" (да и для самооценки пользительно)
29 АгентБезопасной Нацио
 
08.01.23
18:12
(26)
1. Ну я ж сказал, что "раскатывал итоги в движения". Т.е. пересчет прошел бы нормально. Только ждать его задолбались бы.
2. Хотя я там был практически единственным клюшечником (постепенно переползали на снеговика), тем не менее "после меня" база успешно проработала еще почти 2 года.
3. база была большенькая, порядка 160, работа 24/7, даунтайм допускался час в неделю, по факту был чеверть часа в месяц. делать на ней "реструктуризацию с пересчетом итогов" или  манипуляции, описываемые Злопом - было не комильфо.
30 AAA
 
08.01.23
20:46
(27)Пришел, увидел, победил
Внедрить универсальный документ, но его надо где-то взять
В него считываются все остатки - кем считываются? Предположу, что обработкой свертки, которую тоже надо где то взять
Не приходило в голову, что автор ни разу не 1С-ник ? Он умеет запросы писать. И они реально помогут в реальной свертке, в сотни раз быстрее пометить на удаление, чем со сдвигои ТА на начало базы

(28)Нет ничего плохого в "нештатно". Просто делать надо грамотно. Чтобы, например, простая выгрузка-загрузка базы не приводила к обрушению результата
31 AAA
 
08.01.23
20:54
Как минимум (бывает и сложнее)
1 - должны быть созданы документы начальных остатков регистров и бухитогов на дату свертки (конец дня сворачиваемого периода).
2 - помечены на удаление все документы сворачиваемого периода, кроме документов начальных остаткоа
3 - удалены все документы сворачиваемого периода, на которые нет ссылок в оставляемом периоде
Вот грубая схема, а как делать каждый этап, это уже нюансы. Запросы, сдвиги ТА и тд
Ну потом еще по желанию всякие выгрузки-закгрузки, пересчеты итогов, упаковка
32 ADirks
 
09.01.23
07:34
Описание структуры хранения данных в 1С 7.7:  http://www.script-coding.com/v77tables.html

Если хочется сократить время бэкапа, то надо делать бэкап с онлайн-сжатием (не помню с какой версии SQL появился, вроде с 2008). Ну и размер значительно сократится.
А удалять данные из таблиц регистров - не надо.
33 АгентБезопасной Нацио
 
09.01.23
14:39
(30) Да "универсальный документ" валялся на всех помойках, от инфостарта до проклаба. Просто о нем надо еще и знать.
(31) 3.ну там ссылки еще в CRDoc и периодике. Ну это уже нюансы, конечно.
34 АгентБезопасной Нацио
 
09.01.23
14:40
(32) Смысл онлайн-сжатия при md в 4Г ?
35 Злопчинский
 
09.01.23
14:40
(30) в "универсальном двигателе регистров" всë уже есть. И заполнение остатками (я ещё и фильтры простые по измерениям прикрутил шоб було, например,если надо по одной фирме свернуть), авто разбиение документа на части и прочее. Имхо у любого оставшегося в живых клюшечника подобный документ есть (это вам не восьмерочники-гаокорасстааляиели).
.
Тут конечно ещё посмотреть перед сверткой надо - может там регистры всё кривыеинапрочь и свертка/обрезка не особо поможет.
.
Смо реть придётся глазками через универсальный отчёт по регистрам (штатно типовой с итс) или тупо выгрузкой остатков в таблицу https://infostart.ru/public/14794/
36 trad
 
09.01.23
14:55
(35) гаокорасстааляиели
а я расшифровал этот йцукен )
37 devnull
 
06.02.23
11:26
Можете пояснить?

В итоге остатки действительно разъехались, но очень хитро. Отчеты в почищенной базе показывали все ок (я их проверял и поначалу обрадовался). НО если БД выгрузить и загрузить снова - в отчете ТМЦ красные минуса.

Для чистки применял запросы (18). Разъехалось из-за свертки RG* по идентичным полям или (скорее всего?) из-за чистки RA* по старым документам?
38 Злопчинский
 
06.02.23
12:37
При выгрузке/загрузке заново пересчитываются регистры.
Если лезет кривая краснота - значит порезал криво.
Бери по проблемному регистру ведомость движений в детализацией по всем измерениям и смотри.
Возможно полечить удастся малой кровью.
А что именно разъехалось/криво - нам отсюда не видно...
39 devnull
 
06.02.23
13:26
На крайняк могу подлить удаленные строки из забекапленной базы рядом.

Я просто принципиально не понимаю, почему удаление сказалось на пересчете итогов. Мой запрос удалял в реестрах строки, у которых period<'2019-12-01' и все остальные поля идентичны(!), КРОМЕ(!) самой актуальной. Тем не менее в отчете остатков краснеют некоторые строки даже если запрашивать за последний месяц (2023) и не лезть глубже 2022. Может надо было оставлять не одну, а как минимум 2 идентичных строки регистра: с минимальным и максимальным period или последний и предпоследний..?
40 Злопчинский
 
06.02.23
13:48
(39) мы не знаем вашей схемы учета, поэтому что либо отвечать по частностям - бессмысленно.
В общем - писал выше - порезали криво.
.
также написал, но ты, видимо на это забил. Сделай ведомость движения по проблемному регистру где у тебя краснота с детализацией по всем измерениям и с группировокой по всем измерениям (пример такого отчета - типовая ТиС "Ведомость по остаткам ТМЦ"). Будет сразу видно откуда у тебя идет краснота. Тогда же возможно можно будет понять и причину красноты, где что не учел при порезке.
41 devnull
 
06.02.23
15:35
Еще 1 глупый вопрос. Когда разлил новую БД из бекапа и 1й раз ее открываешь, вылезает окно "открыть период?". Если согласиться, какое-то время идет "перенос остатков на ..." (какую-то дату, отображается в статусной строке внизу). Результат моего кривого усечения и последующей выгрузки+загрузки зависит от нажатия на "открыть период" или не зависит?
42 АгентБезопасной Нацио
 
06.02.23
16:38
(41) ну кто ж знает, что ты там "наусекал"
Но вообще, если ты не трогал итоги последних периодов, то не зависит.
Еще раз повторю: сделать можно всё, что угодно, несколькими способами.
Но чтобы что-то правильно сделать - нужно хорошо представлять себе то, что ты хочешь сделать.
43 Злопчинский
 
06.02.23
19:57
"Открыть период" - это просто формирование записей итогов при переходе точки актуальности на новый период (обычно месяц). Если до открытия периода кривые данные были, то и после открытия они на ноавй период перенсутся с той же самой кривизной.
.
Еще раз: для определения кривизны - ведомость по движениям. Ты этого так и не сделал видимо. Штатным универсальным отчетом по регистру делается тыканием мышкой. Не умеешь сделать сам - стучись предметно за бакшиш.
44 tesei
 
07.02.23
17:51
(0) Делам на копии базы. Удаляем все файлы RG*. Заходим в программу монопольно. Управление итогами - ТА на самое начало. Далее ТА на сегодня, документы не перепроводить. Ждём, смотрим на результат. Если результат нравится - проводим операцию на рабочей базе.
45 АгентБезопасной Нацио
 
07.02.23
17:56
(44) эммммм... и чего вы хотите достичь этими действиями?
46 Злопчинский
 
07.02.23
19:43
(45) приведение в "штатную норму", того что покоцали руками.
может получиться норм (если подчистили RA), а может заново все чистить..
47 Остап Ибрагимович
 
07.02.23
19:56
(45) "пересчет итогов"
48 devnull
 
08.02.23
00:24
(44) управление бух итогами было не доступно даже в монопольном режиме, даже для роли Админ_1с. Попробовал трюк с оперативными итогами - не проканало, краснота не ушла. Копия базы была на 13/01, на нее во 2й раз и ставил ТА. Когда ставил ТА на начало (не по усеченке 1 дек 2019, а решил на начало года 1 янв 2020), документы перепроводить не предложила. Наверное это норм..?
49 Злопчинский
 
08.02.23
00:31
(48) то есть настойчиво игнорируем, млин, рекомендацию посмотреть откуда рождается краснота простейшим отчетом "ведомость движения остатков"...? или я непонятно изьясняюсь - и все что непонятное - ну его нахрен....
.
если в базе движения дают типа  0+2-3=-1 - краснота в виде -1 никогда не уйдет, сколько бы ты итоги не пересчитывал и базу выгружал/загружал...
50 Злопчинский
 
08.02.23
00:34
(48) ну если ты ТА сдвигал назад - то ничего перепроводится не будет.
а вперед ТА можно двигать по разному - с перепроведением документов (переформировываюьмя движения и пересчитываются итоги на основе движений) и без (доки не перепроводятся и тупо только итоги пересчитываются по существующим движенимя)
51 Остап Ибрагимович
 
08.02.23
01:09
Не(!) перепроводи - иначе получишь тормоза, ошибки проведения и изменение движений(!).

До-удалялся ты, дружище. Хотя тебе советовали настоятельно - но не в коня корм.

Выпиливание "лишних" записей из RG* (остатки по-периодно) в принципе ничего не испортили (если выпилил только "старые") - потому что итоги все равно пере-рассчитываются (при двигании ТА совсемназад-вперед, или ТИИ с галкой "расчет итогов") по движениям RA*.

Выпиливание "лишних" записей RA* допустимо только при добавлении вместо кучи выпиленных записей мЕньшей кучи записей, которые суммарно по всем полям ресурсов в разрезе всех полей измерений эквивалентны выпиленным (это как раз и делает документ "Двигатель регистров" - который в более продвинутых версиях может сам "по кнопке" и обороты посчитать "до себя" - т.е. собрать в свою таб.часть (и при проведении - двинуть) регистры так, как их двигали все предыдущие документы (он возьмет эти суммы из итогов, но это технологические мелочи - в том смысле что сепраильно, возьмет самые-итоговые-обороты которые и есть те самые итоги)).

На текущий момент - диагноз прост и многократно повторен: ты криво порезал движения.

А также на текущий момент и рецепт многократно повторен: розовите специалиста (с).

Удач.
52 Остап Ибрагимович
 
08.02.23
01:10
* позовите
53 NorthWind
 
08.02.23
07:20
(37) НО если БД выгрузить и загрузить снова - в отчете ТМЦ красные минуса.
А чего тут пояснять, итоги пересчитались.
В семерочном регистре есть таблица движений и таблица итогов. Итоги рассчитываются по движениям, но не постоянно, а время от времени.
Вы движения грохнули и ничем их не заменили, то есть тех записей, которые составляли итог, теперь нет.
Пока итоги не пересчитаны, все типа хорошо.
Пересчитали - получили кашу.
54 АгентБезопасной Нацио
 
08.02.23
08:17
(53) "Итоги рассчитываются по движениям, но не постоянно, а время от времени." - эта пять!
55 АгентБезопасной Нацио
 
08.02.23
08:19
(44) (47)
а в (18) вы не заметили этого:
DECLARE CUR1 CURSOR FOR
  SELECT table_name
  FROM   information_schema.tables
  WHERE  table_name like 'RA%' OR table_name like 'DH%' OR table_name like 'DT%'
OPEN CUR1
FETCH NEXT FROM CUR1 INTO @TABNAME
WHILE @@FETCH_STATUS = 0
  BEGIN
      SET @SQL = 'DELETE FROM d FROM ' + @TABNAME + ' d INNER JOIN _1sjourn j ON d.iddoc=j.iddoc AND j.ismark=1 WHERE j.date_time_iddoc<cast(' + @TRUNCATEDATE + ' as varchar)'

????
ну какой нахрен "пересчет итогов", если оно по*ерило и движения, и документы?
56 АгентБезопасной Нацио
 
08.02.23
08:27
(39) все написанное можно сократить до "Я просто принципиально не понимаю". Восстанавливайте базу из бэкапа и зовите специалиста. Того, кто хотя бы теоретически способен "принципиально понять"
57 devnull
 
08.02.23
08:33
(49) Уважаемый Злоп, я не понимаю, как делать "ведомость движения по проблемному регистру" ( В винде, скуле немного соображаю, но 1с не мое.

(55) Могу из копии доналить удаленные строки и усечь по другому
58 АгентБезопасной Нацио
 
08.02.23
08:40
(57) вам именно об этом и говорят - найдите того, кто "соображает".
(55) "доналейте", покормите собак, и больше руками ничего не трогайте®.
59 tesei
 
08.02.23
09:27
(0) Не надо лезть в таблицы напрямую. Надо аккуратно подрезать базу данных средствами 1С. Иногда сразу не получится обрезать, скажем, год, приходится резать кусками, помесячно. Долго, но легально и без ошибок.
60 tesei
 
08.02.23
09:29
+ (59) если регистр оборотный, то после обрезки он сократится сам собой.
61 АгентБезопасной Нацио
 
08.02.23
09:36
(59) надо просто понимать, что делаешь. а "напрямую" или "средствами 1с" - это уже вторично.  Главное - это правильное отношение радиусов.
(60) а если остаточный - то удлиннится, чтоль? Открою вам страшную тайну: той таЙинственной "дупликации остатков", с которой боролся ТС, у оборотного регистра просто нет.
62 tesei
 
08.02.23
09:56
(62) Оно и понятно. Продажи одного и того же товара, в разные месяцы - и опа, пошли дубли! :)))))))
63 tesei
 
08.02.23
09:56
(62) -> (61)
64 АгентБезопасной Нацио
 
08.02.23
10:08
(62) ну, если продажи будут в одинаковом количестве, из одной и той же партии и по одной цене - то дубли в оборотном будут.  Если хоть что-то отличается - это будут уже не дубли
65 Злопчинский
 
08.02.23
11:27
(57) стукайся в скайп Zlop
Но предметно
66 Злопчинский
 
08.02.23
12:34
(0) "хоть 9, хоть 90 одинаковых записей, но с разным значением PERIOD."
- вполне обычная ситуация может быть, когда итоги не закрываются в ноль. и при каждом открытии периода система генерить еще один итог на текущий период, тупо "копируя" его с предыдущего периода без изменений т.к. нет движений по этим реквизитам.
67 Злопчинский
 
08.02.23
12:37
"регистр остатков ПродажиБух"
- запросто может иметь 99% "мусора". Ибо продажи - обычно это ОБОРОТНЫЙ регистр, а не регистр остатков который заявлен у ТС
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой