Имя: Пароль:
1C
1С v8
Удаление регистрации из плана обмена
0 Barabashka
 
26.07.11
08:08
В УТ 10.3 чистил регистр "Соответствие объектов для обмена" от старого плана (обмена с БП 1.6), в новом плане обмена зарегистрировались изменения по регистру сведений, причем ссылки на несуществующие наборы записей с узлом от старого плана. И их такое количество, что при штатном удалении регистрации вываливается после использования 2Гб памяти (системное ограничение). Может кто в курсе - возможно ли удалить регистрацию выборкой, т.е. по одному набору?

ПланыОбмена.УдалитьРегистрациюИзменений(Узел,Данные) не подойдет, т.к. загажено несуществующими наборами
1 Живой Ископаемый
 
26.07.11
08:13
может удалить регистрацию по всему регистру и потом зарегить только нужные?
2 Defender aka LINN
 
26.07.11
08:14
(0) "ПланыОбмена.УдалитьРегистрациюИзменений(Узел,Данные) не подойдет, т.к. загажено несуществующими наборами" - а не просвятишь - что тут с чем соединяется?
3 Barabashka
 
26.07.11
09:08
(1) это последний вариант, но рабочий
(2) фактически данных по регистру нет, а регистрация ссылается на записи. И указать параметр "Данные" не получится.

Проблема решена переделкой стандартной обработки "Регистрация изменений для обмена", вместо чтения изменений сделал удаление, с обработкой прерывания. Т.е. как только память доходит до 2Гб (слежу визуально) - прерываю. Извращение, но лучше пока ничего в голову не лезет :)
4 Defender aka LINN
 
26.07.11
10:12
(3) Почему не получится, зачем вы травите?
5 Barabashka
 
26.07.11
10:32
(4) А вы когда-нибудь пробовали удалить регистрацию программно у объекта <ОбъектНеНайден>? Что передавали в качестве ссылки?
6 Defender aka LINN
 
26.07.11
10:36
(5) Вы таки мне не поверите, но "<ОбъектНеНайден>" - вполне себе ссылка.
7 Barabashka
 
26.07.11
13:46
(6) И как найти объект <объектНеНайден>, чтобы передать его в качестве ссылки? Весь вопрос как раз в этом. Только относительно удаленной записи независимого регистра сведений.
8 Живой Ископаемый
 
26.07.11
13:49
2(7) ну... зачем его находить? вам ведь сам объект не нужен
9 Axel2009
 
26.07.11
13:53
(5) конечно пробовали
10 Hawk_1c
 
26.07.11
14:01
Как вариант, обойди системное ограничение. 64-разрядная ось.
11 Barabashka
 
26.07.11
14:02
(8) если не указывать объект (параметр "Данные") - ПланыОбмена.УдалитьРегистрациюИзменений(Узел,Данные) будет очищать всю регистрацию по узлу для этого типа объекта, но так как чтение не может быть выполнено (из-за системного ограничения 2 Гб на процесс) выходит "Недостаточно памяти".

Вот и хочется удалять регистрацию по одной записи, что то вроде выборки изменений с возможностью очистки в выборке.
12 Живой Ископаемый
 
26.07.11
14:03
2(11) у вас между утверждением нет объекта, есть только ссылка "ОбъектНеНайден" и "если не указывать объект (параметр "Данные") " есть пробел, который можно заполнить...
13 Широкий
 
26.07.11
14:09
(0) Че то я не пойму.. откуда у тебя ограничение вылезло.
Покажи как удаляешь регистрацию
14 Barabashka
 
26.07.11
14:10
(9) "правла такая фигня получается" (с)
(10) Будет вместо огранисение не 2, а 4Гб на процесс. Не сапсает при большом количестве записей. Обработкой удалось выяснить что в 2 Гб влазят только 50 тыс.записей. Рискну предположить, что на x64 будет порядка 100 тыс. А их около 700 тыс.
15 Barabashka
 
26.07.11
14:20
(13) стандартная обработка "Регистрация изменений для обмена", при нажатии "Удалить регистрацию изменений" на активном регистре сведений СоответсвиеОбъектовДляОбмена происходит чтение всех записей.

Сейчас в процедуру чтения этих записей добавил процедуру удаления, и прерывание после 40 тыс.записей. По другому обойти ограничение не получается.
16 Hawk_1c
 
26.07.11
14:30
(14) не будет 4, будет больше... 100% решит. Но это так... топорный метод.
17 Defender aka LINN
 
26.07.11
14:30
(7) Запросом из таблицы изменений, например.
18 Широкий
 
26.07.11
14:35
(14) Попробуй моей обработкой грохнуть.
http://infostart.ru/public/87506/

Данные можно попробовать произвольным запросом вытянуть из (таблицы ИЗМЕЕНЕНИЯ)
19 Hawk_1c
 
26.07.11
14:38
(16) будет доступно 8 TB в теории на приложение.
20 Живой Ископаемый
 
26.07.11
14:40
2(19) точно? с учетом того, что толстый клиент - это 32-битное приложение
21 Hawk_1c
 
26.07.11
14:43
(20) не... Для 64 разрядных.
А если выполнить все на сервере в таком случае...
22 Живой Ископаемый
 
26.07.11
14:44
и что будет быстрее - добиться таки отбора по ненанйденымобъектам или перенести код на сервер? :)
23 Axel2009
 
26.07.11
15:42
(14) если не знаючи то конечно фигня. а вообще все отлично получается.