Имя: Пароль:
1C
1C 7.7
v7: УРБД, обрезка ЦБ и ПБ - как..?
0 Злопчинский
 
25.08.16
23:21
По УРБД не спец.
- Есть ЦБ, есть штук 10-12 точек ПБ.
- сейчас типа все норм, за исключением кривой схемы обмена с незакрывающимися регистрами (что доставляет при открытии периода, но в целом терпимо ибо изредка подрезаю лишнее);
- история ив ЦБ и В ПБ - длинная, много лишнего старого/ненужного.
- вывели ассортимент (порядка 80% номенклатуры и столько же по объему базы)
- задача избавиться от устаревшего ассортимента
- штатно порезать/поудалять - не получится, на точках будет долго грузится и долго пересчитываться.
- думаю сделать так
1) !!ВАЖНО!! заканчиваем все циклы обмена "в ноль"
2) в ЦБ по выбранной группе/группам ассортимента (который нафиг не нужен) тупо помечаю на удаление ассортимент и всякое ему сопутствующее (цены, свойства, единицы, аналоги и прочее всякое - тут владею что и как);
3) в ЦБ тупо шарашу по всем документам, удаляю строки с неактивной номенклатурой по п.2; если док получился пустым - удаляю его нафиг.
4) штатно удаляю все помеченное
5) в обход штатных механизмов зануляю в ЦБ признаки модифицированности и данные по выгрузкам на точки.
6) думаю за ночь управлюсь
7) далее утром идет штатная работа ЦБ+ПБ все как обычно
8) получается в ЦБ порезанная нормальная база, на ПБ - непорезанная, но на ПБ назад никто не лазит, действий с неактивной номенклатурой/документами не производится
9) постпенно по аналогичному процессу режу данные на точках по пунктам  1-7, но только объектом обрезки будет ПБ, на одну точку- 1ночь.

Вот примерно так я себе представляю.
Вопросы:
?1. правильно я себе представляю?
?2. как правильно закончить цикл обменов "в ноль"..?

Спасибо
1 Тихий омут
 
26.08.16
02:54
Урибовский обмен будет завершен, когда во всех базах в таблицах 1SUPDTS будет пусто. С ЦБ чуть хитрее будет, т.к. из неё данные у тебя мигрируют по разным периферийкам, но если ты её первой резать будешь - то имхо норм, именно такое условие должно быть.
2 varelchik
 
26.08.16
08:25
+2
delete _1supdts
в ЦБ
3 varelchik
 
26.08.16
08:25
тоже делаешь и в перефtрийках, в смысле обрезку и обнуление _1supdts
4 big
 
26.08.16
08:45
по пункту 9.

ИМХО лучше сделать инициацию ПБ с выгрузкой в неё всех нужных документов.

У нас ЦБ скуль, ПБ - дбф. За 4-5 часов с "нуля" обрезал таким образом по 2 ПБ.  ПБ - супермаркет, переносились документы за год, примерно 120 тыс. штук
5 Злопчинский
 
26.08.16
09:01
(1) "Урибовский обмен будет завершен, когда во всех базах в таблицах 1SUPDTS будет пусто."
на ЦБ:
1. принял все пакеты от ПБ
2. выгрузил в ПБ
3. загрузил в ПБ

- этого достаточно чтобы вывести "в ноль"?
6 arsik
 
гуру
26.08.16
09:02
Я тоже за новую переинициализацию периферийных баз. Может можно сделать так. Переинициализировать одну периферийных развернуть локально и поменять внутри идентификаторы. Скопировать.
7 Зая Бусечка
 
26.08.16
09:03
Новое создание всех ПБ после чистки ЦБ. И никаких гитик. Не надо извращаться.
8 arsik
 
гуру
26.08.16
09:06
(7) 20 пб долго будут создаваться.
9 Зая Бусечка
 
26.08.16
09:09
(8) Хм. Если там полная копия, то это делается ровно столько, сколько 20 раз копируется база + 3 минуты на каждую. С перекурами.
10 Тихий омут
 
26.08.16
09:09
(5) Да. Само собой, если между обменами нет изменений мигрирующих данных.
(7) а если объём данных такой, что в доступное временное окно не уложиться на инициализацию перифериек? Тут даже с одной ПБ могут быть траблы при объеме, большем чем некоторый. И почему-то мне кажется, что у Злопа именно такая ситуация, хотя могу и ошибаться.
Эхх, нет в нашей деревне контор с клюшками, на прямых бы запросах всё сделал...
11 big
 
26.08.16
09:13
(5) в (0) написано "- задача избавиться от устаревшего ассортимента".   Но потом в описании уже фигурируют какие-то документы.

Так что надо сделать - просто справочники порезать или же документы-остатки и т.д. ?
12 Злопчинский
 
26.08.16
09:16
(11) если я порежу справочнгик ассортимента на 80% - этот ассортимент ходил же документами
13 Злопчинский
 
26.08.16
09:17
А как заново переинициализировать ПБ?
ПБ небольшие
14 big
 
26.08.16
09:20
(13)
В ЦБ в таблице _1SBSET убирается флаг признака, что в ПБ выгружена первичная инициализация. Т.е. в списке периферийных баз данная база должна быть серого цвета.
    Для этого в колонке DBSTATUS необходимо установить значение “N”.


Другой вопрос то, что инициализация это только справочники с миграцией "Все информационные базы". Вдогонку надо будет выгружать все документы этой ПБ
15 big
 
26.08.16
09:24
(13) Вдобавок. Если есть справочники с миграцией "Место создания", надо сделать или их копии, или выгрузить нужные данные. Я потом просто подсовывал сохраненные дбф
16 Злопчинский
 
26.08.16
09:29
Понял, спсб
не, проще ПБ порезать аналогично будет мне.
17 Злопчинский
 
26.08.16
15:57
"Обрезку" запрограммил, тупо, медленно, но рабоче - устроит.

После того как порежу ЦБ - то в ЦБ надо удалить все записи из таблицы миграции - так?

База скульная.

delete _1supdts

- так?
а как указать в какой именно базе (их же в скуле может быть несколько) ?
18 Это_mike
 
26.08.16
16:00
Проще сделать совершенно одинаковую обработку обрезки, разослать в филиалы и запускать там по планировщику.
19 Злопчинский
 
26.08.16
16:00
Опять же - со сведением цикла обмена "в ноль"...

штатная работа, сводим цикл обмена в ноль
1. отправили все изменения из ЦБ в ПБ
2. загрузили в ПБ (приняли изменения из ЦБ)
3. выгрузили из ПБ для ЦБ (изменения в ПБ)
4. загрузили в ЦБ (изменения из ПБ)
5. выгрузили ЦБ для ПБ (подтверждение приема из ПБ)
6. загрузили в ПБ..

- так достаточно? или какие-то пункты - лишние?
20 Злопчинский
 
26.08.16
16:01
(18) вопрос не в этом. этим пока не морочимся.
21 Это_mike
 
26.08.16
16:01
(17) из своей базы (соединения) ты обращаешься только к таблицам своей базы. Если спецом не указать другую базу
22 Это_mike
 
26.08.16
16:02
(19) прогони после окночания работы два раза цикл обмена, и не трахай мозг
23 Это_mike
 
26.08.16
16:02
ТП глянул?
24 Злопчинский
 
26.08.16
16:19
(23) не, работаю пока
25 Злопчинский
 
26.08.16
16:23
(21) "из своей базы (соединения) ты обращаешься только к таблицам своей базы"
- стал на таблицу апдейтса, пкм, сгенерить сценарий

DELETE FROM [MAIN_BASE].[dbo].[_1SUPDTS]
GO

так потянет? - думаю да...
26 Злопчинский
 
27.08.16
15:48
такс, справочники, хоть и не шустро, но пометили на удаление.
из документов - вычеркиваем строки с удаленной номенклатурой, тоже вообщем по скорости номально... Но вот проведение модифицированных документов - полная (_._)

Откатывать ТА назад и првродить в ТА - сильно не хочется...
есть мысль: доки ненужные строки удаляем. записываем. Не проводим. Прямыми запросами чистим движения и итоги регистров по ненужной номенклатуре...
27 Это_mike
 
27.08.16
17:34
А зачем тебе неправильные документы?
28 vcv
 
27.08.16
19:09
Если есть время сворачивать каждую базу отдельно штатными средствами, можно воспользоваться РегистрацияИзменений

РегистрацияИзменений
Синтаксис:
РегистрацияИзменений(парам)
Параметры:
  Парам (число) 1 - регистрировать изменения, 0 - не регистрировать изменения. Если параметр не указан, то регистрация не изменяется.
Назначение:
  Включить или выключить регистрацию изменений для конкретного объекта.
Замечание1
  Особенность вызова данного метода - он действует с момента своего вызова и до перепозиционирования объекта. Его нужно вызывать после позизионирования объекта, но до записи изменений. После следующего позиционирования объекта режим снова будет установлен в соответствии с режимом, выбранном в метаданных (т.е. установленный для предыдущего позиционирования режим сбрасывается).
Замечание2
  Метод РегистрацияИзменений доступен только для объектов типа "Справочник" и "Документ", созданных функцией "СоздатьОбъект".
Возврат:
Число - 1 - да, регистрация производится. 0 - нет. Возвращается установленный до ее вызова режим.
Пример:
Док = СоздатьОбъект("Документ.НазваниеДока");
Док.ВыбратьДокументы("'01.01.2002'/'01.07.2002'");
Пока Док.ПолучитьДокумент()=1 Цикл

  // запрещаем регистрацию изменений
  // т.е. внесенные нами изменения останутся только в одной базе

  Док.РегистрацияИзменений(0);
  // изменяем чего надо
  Док.Записать();
КонецЦикла;
29 Злопчинский
 
27.08.16
19:23
(27)  в результате в доках и врегистрах останутся только нужная номенклатура
30 Злопчинский
 
27.08.16
19:24
(28) о, точно
Спасибо
31 Злопчинский
 
28.08.16
15:15
так-с, пока получающееся не укладывается в приемлемые временные рамки... борю потихоньку дальше...
32 Злопчинский
 
28.08.16
15:16
Вопрос по УРБД:
еслия в конфигурацию добавлю новый вид документа (универсальный двигатель регистров - на случай если все-таки придется сверку сделать чего очень не хочется) - то на точках после обмена правленной конфигурации - будет пересчет регистров или нет?
33 FN
 
28.08.16
16:19
32 будет перестройка журнала, регистры не тронет.
34 Злопчинский
 
28.08.16
16:25
(33) понял. спсб.
35 FN
 
28.08.16
16:32
Лучше всего сделай обработку,  которая вычистить все на прямых запросах. Потом просто запустить её на каждой базе + пересчитать итоги.
Если на удаляемом справочнике были построены отборы документов, то придётся ещё и crcdoc пересчитать или почистить.
это никак не отразится на обменах.
36 FN
 
28.08.16
16:36
По аналогии с этим http://catalog.mista.ru/public/66865/
Только вместо update поставить delete
37 Злопчинский
 
28.08.16
17:14
(35)  на прямых запросах хочу просто тупо из регистров удалить все записи где измерение номенклатура имеет пометку удаления
Так как в прямых я слаб то хватило только в цикле прямым запросом по одной номенклатуре - получается очен долго вдобавок отлаживаюсь дома на файловой
Коллеги помогают по мелочи с прямым запросом чтобы сразу по списку, вдобавок попробию на скульной копии
Чертов ски не хочется пересчет регистров делать, вдобавок если из них тупо вычеркнуть ненужные записи то и пересчитывапть ничего не надо - таково мое вИдение

На основной работе потребность в прямых запросах практически отсутствует - я их и не освоил, вот когда возникает редкая потребность или на стороне гденить - то и мучаюсь
38 Злопчинский
 
28.08.16
17:17
(36)  ага, спасибо
Посмотрю как по коду сделано в части оперирования списком - как раз то что мне надо
39 Злопчинский
 
28.08.16
17:18
(36)  допустим поставлю я делит
Допустим все нормально отработает
Пересчет итогов нужен? И если нужен - то почему?
Ведь и замену и делит делать можно не только в таблицах движений, но и в таблицах итогов
???
40 FN
 
28.08.16
17:23
39 теоретически, если почистить и итоги,  то пересчет не нужен.
41 FN
 
28.08.16
17:24
Только в той поделке итоги не чистятся - надо добавить по аналогии.
42 Злопчинский
 
28.08.16
18:29
(41) понял. Спсб.
43 Это_mike
 
28.08.16
18:31
(42) удаляй и в итогах тоже -  и будет щастие.