Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Превышен максимальный размер файла 1сv8.1cd 2 страниц V   1 2 >          
Meest Подменю пользователя
сообщение 20.12.12, 10:35
Сообщение #1

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 170
Из: Украина
Спасибо сказали: 32 раз
Рейтинг: 0

Добрый день!


Столкнулся с такой проблемой как "Превышен максимальный размер файла 1сv8.1cd", размер файла на данный момент 39 201 968 КВ, проблема возникла в процессе удаления документов.
Конфигурация не типовая, удаляется больше 8 миллионов документов, удаляю их обработкой с таким кодом


    // Удаляем справочники
    Для ид=0 По СписокСпр.Количество()-1 Цикл
        Если СписокСпр.Получить(ид).Пометка = Истина Тогда
            Спр = Справочники[СписокСпр.Получить(ид).Значение.Имя].Выбрать();
            Пока Спр.Следующий() Цикл
                Объект = Спр.ПолучитьОбъект();
                Объект.Удалить();
                Сообщить(Спр);
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;
    //Удаляем документы
    Для ид=0 По СписокДок.Количество()-1 Цикл
        Если СписокДок.Получить(ид).Пометка = Истина Тогда
            Док = Документы[СписокДок.Получить(ид).Значение.Имя].Выбрать();
            Пока Док.Следующий() Цикл
                Объект = Док.ПолучитьОбъект();
                 Дата = Док.Дата;
                 Если Дата>НачалоДня(ДатаС) тогда
                     Если Дата<КонецДня(ДатаПо) тогда
                         Сообщить(Док);
                         Объект.Удалить();
                     КонецЕсли;    
                    КонецЕсли;
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;
    //Удаляем регистр сведений
    Для ид=0 По СписокРег.Количество()-1 Цикл
        Если СписокРег.Получить(ид).Пометка = Истина Тогда
            Рег = РегистрыСведений[СписокРег.Получить(ид).Значение.Имя].СоздатьНаборЗаписей();
            Рег.Записать();
        КонецЕсли;
    КонецЦикла;



Поставил базу на чек еще вчера утром но он еще идет, не смотря на то что железо не слабое Intel® Xeon® CPU E5420 @ 2.50GHz 16GB of RAM.

Помогите советом, может я что-то не так делаю, или есть другой вариант быстрой очистки базы?

Pepe Подменю пользователя
сообщение 20.12.12, 12:58
Сообщение #2

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1434
Из: Ужгород
Спасибо сказали: 761 раз
Рейтинг: 230

Попробуйте через конфигуратор уплотнить базу, может уменьшиться размер. На диске необходимо наличие свободного места. Возможно придется сделать за несколько этапов. Почистить, например, справочники, упаковать базу. Потом регистры, документы (возможно не все сразу, а по частям). Может не надо удалять сразу все, а частями по интервалу дат с последующей упаковкой...

Altair777 Подменю пользователя
сообщение 20.12.12, 13:52
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 30
Из: Харьков
Спасибо сказали: 3 раз
Рейтинг: 0

Мне кажется что так делать нехорошо - выборка может нарушиться в процессе удаления.
Имхо, лучше было бы сначала запросом получить ссылки, а потом уже обрабатывать его результат.

А что замер производительности показывает?


Объект = Док.ПолучитьОбъект();

Насколько я помню, это длительная операция. Лучше сначала проверить условия даты а потом уже получать объект.

Вот есть у меня такой кусок кода.

ТекстЗапроса = "";
Запрос = Новый Запрос;
Запрос.Параметры.Вставить("ДатаНач", НачалоПериода);
Запрос.Параметры.Вставить("ДатаКон", КонецПериода);
Для каждого Строка Из ВидыДокументов Цикл
    Если Строка.Пометка Тогда
        ТекстЗапроса = ТекстЗапроса + "
            |ОБЪЕДИНИТЬ ВСЕ
            |ВЫБРАТЬ Ссылка ИЗ Документ." + Строка.ВидДокумента + " ГДЕ Дата > &ДатаНач И Дата < &ДатаКон";
    КонецЕсли;
КонецЦикла;
Найдено = Найти(ТекстЗапроса, "Ссылка");
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ " + Сред(ТекстЗапроса, Найдено);
Запрос.Текст = ТекстЗапроса;
ТабличнаяЧастьСсылки.Загрузить(Запрос.Выполнить().Выгрузить());


ВидыДокументов = ТабличнаяЧасть с реквизитами: Пометка (булево), ВидДокумента(Строка)
Заполняется так:
Процедура ПриОткрытии()
    ВидыДокументов.Очистить();
    Для каждого Док Из Метаданные.Документы Цикл
        НоваяСтрока = ВидыДокументов.Добавить();
        НоваяСтрока.ВидДокумента = Док.Имя;
    КонецЦикла;
КонецПроцедуры


AnryMc Подменю пользователя
сообщение 20.12.12, 14:11
Сообщение #4

Оратор
Иконка группы
Группа: Местный
Сообщений: 314
Спасибо сказали: 95 раз
Рейтинг: 96.6

Цитата(Altair777 @ 20.12.12, 13:52) *


На Инфостарте скучно....


Цитата(Meest @ 20.12.12, 10:35) *


А при такой "глобальной чистке", не проще ли перенести нужное в чистую базу?

Цитата(Meest @ 20.12.12, 10:35) *


Вы этот код выполняете в транзакции? (лично я бы без транзакции не рискнул). Может стоит "побить" транзакцию на "пачки"...

Сообщение отредактировал MATEVI - 20.12.12, 21:15

Meest Подменю пользователя
сообщение 20.12.12, 14:23
Сообщение #5

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 170
Из: Украина
Спасибо сказали: 32 раз
Рейтинг: 0

Цитата(AnryMc @ 20.12.12, 14:11) *
Цитата(Meest @ 20.12.12, 10:35)


А при такой "глобальной чистке", не проще ли перенести нужное в чистую базу?.




База должна быть чистой от документов, справочники и регистры нужны.

Цитата(AnryMc @ 20.12.12, 14:11) *
Цитата(Meest @ 20.12.12, 10:35)


Вы этот код выполняете в транзакции? (лично я бы без транзакции не рескнул). Может стоит "побить" транзакцию на "пачки"...

С транзакцией обязательно попробую

Сообщение отредактировал Meest - 20.12.12, 14:24

Altair777 Подменю пользователя
сообщение 20.12.12, 14:33
Сообщение #6

Общительный
**
Группа: Пользователи
Сообщений: 30
Из: Харьков
Спасибо сказали: 3 раз
Рейтинг: 0

Цитата(AnryMc @ 20.12.12, 14:11) *
На Инфостарте скучно....

Мне он уже надоел. Тут веселее. Чего стоит только тема http://pro1c.org.ua/index.php?showtopic=10296
Почитал, прослезился haha.gif

И смайлики тут веселее.

Zaval Подменю пользователя
сообщение 20.12.12, 14:52
Сообщение #7

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

1. Если база растет при удалении объектов, то, скорее всего, включено версионирование объектов или какое-то логирование их судьбы.
2. Отключите на время чистки(только потом включить не забудьте) подписки на события, которые могут срабатывать.
3. Уберите нафиг "Сообщить()" или перестаньте жаловаться на "тормоза".
4. Удалите вначале документы. Нафига нарываться на ситуацию с туевой кучей битых ссылок?




Сообщение отредактировал Zaval - 20.12.12, 14:57

Спасибо сказали: Meest,

Meest Подменю пользователя
сообщение 20.12.12, 15:17
Сообщение #8

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 170
Из: Украина
Спасибо сказали: 32 раз
Рейтинг: 0

Цитата(Zaval @ 20.12.12, 14:52) *
1. Если база растет при удалении объектов, то, скорее всего, включено версионирование объектов или какое-то логирование их судьбы.
2. Отключите на время чистки(только потом включить не забудьте) подписки на события, которые могут срабатывать.
3. Уберите нафиг "Сообщить()" или перестаньте жаловаться на "тормоза".
4. Удалите вначале документы. Нафига нарываться на ситуацию с туевой кучей битых ссылок?



1. "Версионирование объектов или какое-то логирование их судьбы." Такого нет.
2. Подписок тоже нет.
3. Тормозов процессе нет, все удаляется очень быстро.
4. Я сначала и удаляю документы.

Altair777 Подменю пользователя
сообщение 20.12.12, 16:36
Сообщение #9

Общительный
**
Группа: Пользователи
Сообщений: 30
Из: Харьков
Спасибо сказали: 3 раз
Рейтинг: 0

Документы каждого вида нужно удалять за период?
Если бы полностью, можно было бы попробовать удалять их на уровне объектов конфигурации, а потом снова сделать объединение с заранее сохраненной конфигурацией.

Я когда-то давно-давно так семерочные базы "свертывал"

Zaval Подменю пользователя
сообщение 20.12.12, 16:38
Сообщение #10

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

В приведенном фрагменте кода вначале чистятся какие-то справочники.

А в ПланахОбмена ничего не регистрируется?

Meest Подменю пользователя
сообщение 20.12.12, 17:06
Сообщение #11

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 170
Из: Украина
Спасибо сказали: 32 раз
Рейтинг: 0

Цитата(Zaval @ 20.12.12, 16:38) *
В приведенном фрагменте кода вначале чистятся какие-то справочники.

А в ПланахОбмена ничего не регистрируется?




На форме выбираю документы сначала

// Вставить содержимое обработчика.
    Для Каждого Объект из Метаданные.Справочники  Цикл
        СписокСпр.Добавить(Объект, Объект.Представление(),Ложь);
    КонецЦикла;
    Для Каждого Объект из Метаданные.Документы Цикл
        СписокДок.Добавить(Объект, Объект.Представление(),Ложь);
    КонецЦикла;
    Для Каждого Объект из Метаданные.РегистрыСведений Цикл
        СписокРег.Добавить(Объект, Объект.Представление(),Ложь);
    КонецЦикла;


В планах обмена идет регистрация объектов при получении данных и отправки подчиненному узлу, не думаю что это как-то может повлиять на рост базы.

Ardi Подменю пользователя
сообщение 20.12.12, 17:19
Сообщение #12

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

!!! Есть программы которые показывают размер таблиц в базе.


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

Meest Подменю пользователя
сообщение 20.12.12, 17:22
Сообщение #13

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 170
Из: Украина
Спасибо сказали: 32 раз
Рейтинг: 0

Цитата(Altair777 @ 20.12.12, 16:36) *
Документы каждого вида нужно удалять за период?
Если бы полностью, можно было бы попробовать удалять их на уровне объектов конфигурации, а потом снова сделать объединение с заранее сохраненной конфигурацией.

Я когда-то давно-давно так семерочные базы "свертывал"


Документы все нужно удалить, думаю не правильно будет удалить объекты конфигурации а потом восстановить их.

Ardi Подменю пользователя
сообщение 20.12.12, 17:31
Сообщение #14

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Цитата(Meest @ 20.12.12, 18:22) *
думаю не правильно будет удалить объекты конфигурации

Скорее это очень сложно в 8-ке.


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

Meest Подменю пользователя
сообщение 20.12.12, 17:52
Сообщение #15

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 170
Из: Украина
Спасибо сказали: 32 раз
Рейтинг: 0

Цитата(Ardi @ 20.12.12, 17:31) *
Скорее это очень сложно в 8-ке.


Нет, не сложно. Просто много движений делать нужно, и какая целесообразность такого "удаления"?

Zaval Подменю пользователя
сообщение 20.12.12, 18:04
Сообщение #16

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Цитата(Meest @ 20.12.12, 17:06) *
На форме выбираю документы сначала

Перечитайте оба выложенных Вами фрагмента кода. Обратите внимание на взаимное расположение "Справочники" и "Документы".
ЗЫ. Код выполняется сверху вниз.

Цитата(Meest @ 20.12.12, 17:06) *
В планах обмена идет регистрация объектов при получении данных и отправки подчиненному узлу, не думаю что это как-то может повлиять на рост базы.


Там регистрируются измененные объекты(в момент изменения!) для передачи этих изменений в другие узлы, причем, запись не одна, а по одной на каждый узел, в который должны быть переданы изменения.

Altair777 Подменю пользователя
сообщение 20.12.12, 18:16
Сообщение #17

Общительный
**
Группа: Пользователи
Сообщений: 30
Из: Харьков
Спасибо сказали: 3 раз
Рейтинг: 0

Цитата(Meest @ 20.12.12, 17:52) *
Нет, не сложно. Просто много движений делать нужно, и какая целесообразность такого "удаления"?


По идее, это должно происходить в разы быстрее. Удаление всей таблицы, а не каждой записи по отдельности.

Кстати, сразу и регистры нужно. Вообще, все удаляемые объекты одним махом, чтобы не было визгов о том, что объект используется.

Ardi Подменю пользователя
сообщение 20.12.12, 18:26
Сообщение #18

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Цитата(Altair777 @ 20.12.12, 19:16) *
Кстати, сразу и регистры нужно

Данные бух регистра по документу вроде автоматом почистились.


Сообщение отредактировал Ardi - 20.12.12, 18:28


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

Meest Подменю пользователя
сообщение 20.12.12, 19:22
Сообщение #19

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 170
Из: Украина
Спасибо сказали: 32 раз
Рейтинг: 0

Цитата(Zaval @ 20.12.12, 18:04) *
Перечитайте оба выложенных Вами фрагмента кода. Обратите внимание на взаимное расположение "Справочники" и "Документы".
ЗЫ. Код выполняется сверху вниз.


Перед открытие получаем список метаданных справочников, документов, регистров. На форме кроме списка наименования есть реквизит типа булева.

Я понимаю что с фрагмента кода видно что сначала берет справочник и по каждому "ид" проверяет, но так как признака истина нет справочники пропускаются.

Цитата(Zaval @ 20.12.12, 18:04) *
Там регистрируются измененные объекты(в момент изменения!) для передачи этих изменений в другие узлы, причем, запись не одна, а по одной на каждый узел, в который должны быть переданы изменения.




Попробую отключить регистрацию объектов.

Сообщение отредактировал Meest - 20.12.12, 19:23

MATEVI Подменю пользователя
сообщение 20.12.12, 22:44
Сообщение #20

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 956 раз
Рейтинг: 0

Цитата(Meest @ 20.12.12, 14:23) *
База должна быть чистой от документов, справочники и регистры нужны

Сделать свой план обмена - распределенный, в составе указать справочники и регистры сведений (я так понимаю нужны) с учетом ссылок на подчиненные документы. Создать начальный образ.
Отключить главный узел.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


2 страниц V   1 2 >
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 13:17
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!