Каталог решений - Решение проблемы при создании хранилища 1С:УПП

Решение проблемы при создании хранилища 1С:УПП

Решение проблемы при создании хранилища 1С:УПП

В наличии

Поиск причины ошибки Runtime Error платформы 8.2 при создании хранилища для конфигурации 1С:УПП начиная с версии 1.3.112.1 и варианты решения.

Категория:

Описание

На написание данной статьи меня сподвигла проблема невозможности создать хранилище для конфигурации 1С:УПП и полное отсутствие описания причин / решений  в интернете.

Отдельно спасибо хотел бы сказать пользователю на Инфостарте lupupa85, которая дала нужный вектор в поиске проблемы, и пользователю AKV77  за статью:  //sale.itcity.ru/public/251265/

 

ИССЛЕДОВАНИЕ.

Поняв, как все работает (даже в общих чертах), проще принимать решения и контролировать процесс.

Если посмотреть историю распухания конфигурации 1С:УПП, а именно, выгруженной в файл cf, то мы увидим следующую картину по версиям:

1.3.111.2 – чуть больше 300 мбайт;

1.3.112.1 – уже больше 500 мбайт;

1.3.115.2 – больше 550 мбайт.

Размеры конфигураций приведены с целью показать, какой произошел скачок размера конфигурации с версии 1.3.111.2 на версию 1.3.112.1 и дальнейшую динамику.

Казалось бы, причем тут размер самой конфигурации, тем более он не дотягивает даже до размера 1 Гб? Однако, мы не забываем, что если 1С:УПП работает на платформе 8.2, то она (платформа) является 32-битной со своими устаревшими ограничениями. И как ниже будет понятно, именно это, совместно с еще одним моментом и служит причиной вываливания платформы в ошибку при создании хранилища с ошибкой:

В результате поиска решения, было выявлено, что при создании хранилища платформа создает временный файл *.tmp в «C:\Users\…Пользователь…\AppData\Local\Temp» (для XP путь будет другим) и в случае достижения размера этого файла 2Гб, а если быть более точными по данным операционной системы Windows «2097мбайт» платформа как раз и валится в ошибку.

Видимо, какая-то компонента, которую использует платформа 8.2, являясь 32-битной, имеет ограничение на размер файла или на размер того, что хранится в tmp файле. Что хранится в tmp файле при создании хранилища мне выяснить не удалось, также не удалось выяснить и какая именно компонента виновата.

Хотя в логах Windows имеется запись об ошибке со ссылкой на компоненту, я не могу утверждать что виновата она. Замена этой компоненты на другие версии результата не принесло:

Путь сбойного приложения: C:\Program Files (x86)\1cv82\8.2.19.130\bin\1cv8.exe
Путь сбойного модуля: C:\WINDOWS\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.8387_none_5094ca96bcb6b2bb\MSVCR90.dll

Все попытки создания хранилища типовой 1С:УПП версии 1.3.115.2 были провальными и прерывались на 74% при достижении предельного размера tmp файла в 2Гб. На мысль натолкнула пользователь lupupa85, которая сказала, что в случае снятия конфигурации с поддержки, хранилище создается. Зная, что в обычном *.1CD (базе данных) при нахождении конфигурации на поддержке хранится сразу 2 конфигурации (текущая и конфигурация поставщика), а при снятии с поддержки конфигурация поставщика удаляется из базы, уменьшая общий объем таблиц в мбайтах, данное утверждение становится логичным. При проведении теста, из типовой конфигурации со снятой поддержкой действительно создалось хранилище, при этом предельный размер tmp файла достиг (второй файл):

Как видно, еще чуть-чуть (всего 100 мбайт) и хранилище не сможет создаться из типовой конфигурации даже при снятой поддержке.

Обрадовавшись, что, хотя бы так можно создать хранилище, я решил на своей конфигурации провести манипуляции, где меня постигло фиаско. Снятая с поддержки конфигурация при создании хранилища выдала ошибку на 99%. Тут нужно уточнить: что в нашей конфигурации объединены 1С:УПП + 1С:УАТ + свои доработки, соответственно общий размер таблиц в мбайтах превышает размер таблиц в типовой конфигурации.

Здесь я не буду описывать на скольких компьютерах, серверах с различными операционными системами (включая разрядность), объемами оперативной памяти и скоростями жестких дисков были попытки создать хранилище с отрицательным результатом, но можете поверить, за почти 7 дней – очень много. Можно сказать было испробовано почти все. Пожалуй, не было попыток только на Windows 10.

Также необходимо отметить, что для конфигурации "на поддержке" на платформе 8.3 (32-битной) хранилище создавалось без проблем.

Естественно о данной проблеме было сообщено в техническую поддержку 1С разработчикам и получен ожидаемый ответ: «Мы проверили, у нас все ОК». Поэтому не будем останавливаться на данном моменте, а пойдем дальше.

 

ВЫВОДЫ ИЗ ИССЛЕДОВАНИЯ.

Удалось выяснить:

1. Из-за какого файла, где расположенного и при каком объеме платформа 8.2 конфигурации 1С:УПП, начиная с 3.112.1 вываливается в ошибку:

— файл с расширением *.tmp;

— расположение «C:\Users\…Пользователь…\AppData\Local\Temp»;

— предельный размер «2097мбайт» (может в зависимости от операционной системы чуть-чуть отклоняться).

2. Замена компоненты «MSVCR90.dll» не дает никакого результата.

3. Оставшийся предельный размер *.tmp для создания хранилища из типовой конфигурации составляет в пределах 100 мбайт (если снята поддержка).

4. Если у Вас объединенная и доработанная конфигурация 1С:УПП, то даже со снятой поддержкой Ваш предел размера tmp файла может быть исчерпан.

5. Данная ошибка «неизвестна» / «известна, но не признается» технической поддержкой 1С.

6. На данную проблему не влияет версия или разрядность операционной системы, скорость и показатели железа. «Замедленная» проблема была заложена еще на этапе проектирования платформы, которая в версии 8.3 была устранена, а в 8.2 оставлена «как есть».

НЕ удалось выяснить:

1. Какая компонента 100% виновата в данной ошибке и причины ее поведения.

2. Что хранится в tmp файле.

 

РЕШЕНИЯ ПРОБЛЕМЫ.

1. Перевести работу сервера, клиентов и разработку на платформу версии 8.3 (с включенной / выключенной совместимостью).

Плюсы:

— Поскольку структура хранилища для платформы 8.3 переработана, то описанная ошибка исчезает сама по себе.

— Решена проблема платформы 8.2 с достижением одной таблицы в хранилище размера в 4Гб и невозможности подключения к хранилищу.

— По описаниям на форумах, скорость работы платформы 8.3 выше чем 8.2 (мною данное утверждение не проверено).

Минусы:

— На форумах имеется негативная информация о стабильности работы пользователей на ранних версиях платформы 8.3. О работе на последних версиях платформы (8.3.10 – 8.3.12) информация противоречивая, но более преобладает положительная, поэтому требуется проверка и тестирование.

— При наличии большого количества пользователей и особенно работы 24/7 требуется тщательная подготовка (установка платформы на клиентах, перевод на новую версию сервера и т.д.).

 

2. Постараться вынудить техническую поддержку 1С признать ошибку и исправить ее. Тут я не буду описывать минусы / плюсы, многие кто работает с 1С и так всё знают.

 

3. ВНИМАНИЕ!!!! НИЖЕОПИСАННОЕ РЕШЕНИЕ ПРОБЛЕМЫ ВЫПОЛНЯЕТСЯ ТОЛЬКО НА СВОЙ СТРАХ И РИСК И АВТОР НЕ НЕСЕТ НИКАКОЙ ОТВЕТСТВЕННОСТИ ЗА РЕЗУЛЬТАТ!!!

Данное решение необходимо применять только в случаях, когда Вам не подходит по каким-либо причинам 1 вариант.

Рекомендация: все манипуляции выполнить на копии, проверить, протестировать базу и только убедившись 100% в гарантированном результате применить на рабочей базе. Выполненные действия на рабочей базе НЕОБРАТИМЫ!!!

Предварительно, перед непосредственным выполнением всем операций необходимо:

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

— сделать файл cf из рабочей базы, сохранить в нескольких местах (вдруг по запарке затрете или удалите единственный);

— подготовить копию / копии рабочих баз для тестирования;

— подготовить «мощную тачку» с хорошим железом и обязательно на SSD (ОЗУ: 8 Гб, винт SSD SATA, а лучше M.2 от 250 Гб, процессор от 4 ядер, но с максимальной частотой на 1 ядро);

Для выполнения всех манипуляций у Вас должно быть достаточно времени, т.к. у меня в целом ушло на хорошем железе с учетом проверок и уже знания «как это делать» порядка 5 часов. Также все манипуляции по созданию хранилища рекомендую проводить на файловой чистой (без данных) конфигурации (это Вам сэкономит время на реструктуризации таблиц при обновлении конфигурации).

Третье решение разбивается на 2 подварианта. При этом желательно испробовать в начале вариант 3.1 и только в случае отрицательного результата перейти к варианту 3.2.

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

3.1.1. Снимаем конфигурацию с поддержки. Инструкция: //sale.itcity.ru/public/251265/

3.1.2. Нажимаем «Обновить конфигурацию».

3.1.2. Создаем хранилище.

3.1.3. Подключаемся к хранилищу и захватываем все объекты для изменения. При необходимости нажимаем «Обновить конфигурацию».

3.1.4. Ставим конфигурацию на поддержку. Инструкция: //sale.itcity.ru/public/251265/

3.1.5. Нажимаем «Обновить конфигурацию» и подливаем в хранилище (отпускаем объекты).

3.1.6. Подключаемся КОПИЕЙ к хранилищу, тестируем и проверяем на КОПИИ все ли в порядке с документами, движениями и т.д.

3.1.7. При необходимости повторяем на КОПИИ этапы 3.1.1-3.1.6 и только при 100% уверенности в результате подключаем к хранилищу РАБОЧУЮ БАЗУ и обновляем конфигурацию.

 

3.2. Если на этапе 3.1.2 платформа вывалилась в ошибку, то это говорит о том, что Ваша конфигурация слишком большая по объему и требуется что-то удалить. В моем случае, логично были выбраны общие модули, как имеющие огромный объем кода и при этом не имеющие критичных связей с другими элементами (за исключением подписок на события, но в этом случае мы просто оставляем модули в конфигурации). Итак, по этапам:

3.2.1. Снимаем конфигурацию с поддержки. Инструкция: //sale.itcity.ru/public/251265/

3.2.2. Удаляем по одному общие модули из конфигурации. В случае, если конфигурация не дает удалить модуль из-за связанной подписки на события, то его просто пропускаем и удаляем следующие.

3.2.3. Нажимаем «Обновить конфигурацию».

3.2.4. Создаем хранилище. В случае, если при создании хранилища платформа опять вываливается в ошибку, то исходя из того, на каких % это произошло, необходимо вернуться на этап 3.2.2, но в этом случае уже подумать / почитать в интернете какие ОБЪЕМНЫЕ в мбайтах объекты можно с минимальным риском удалить. Необходимо исключить справочники, документы и любые другие элементы, ссылающиеся на другие объекты или имеющие ссылки с других объектов конфигурации. Если мы понимаем, что такие объекты уже исчерпаны, а платформа все равно валится в ошибку, то Ваша конфигурация слишком большая и в этом случае лучше вернуться к 1 варианту с переходом на платформу 8.3.

3.2.5. Подключаемся к хранилищу и захватываем все объекты для изменения. При необходимости нажимаем «Обновить конфигурацию».

3.2.6. Вот здесь понадобиться наша рабочая конфигурация из файла cf. Через «Сравнить и объединить конфигурации» мы подгружаем ранее удаленные на этапе 3.2.2. объекты конфигурации.

3.2.7. Нажимаем «Обновить конфигурацию» и помещаем объекты в хранилище, при этом оставляем их захваченными.

3.2.8. Ставим конфигурацию на поддержку. Инструкция: //sale.itcity.ru/public/251265/

3.2.9. Нажимаем «Обновить конфигурацию» и подливаем в хранилище (отпускаем объекты).

3.2.10. Подключаемся КОПИЕЙ к хранилищу, тестируем и проверяем на КОПИИ все ли в порядке с документами, движениями и т.д.

3.2.11. При необходимости повторяем на КОПИИ этапы 3.2.1-3.2.10 и только при 100% уверенности в результате подключаем к хранилищу РАБОЧУЮ БАЗУ и обновляем конфигурацию.

 

Дальнейшее исследование данной проблемы я проводить не собираюсь, мне достаточно что работоспособность хранилища восстановлена.

В дальнейшем логичным вариантом видится подготовка и перевод работы на платформу 8.3 конфигурации 1С:УПП.

Если данная статья кому-то поможет и сократит Ваше драгоценное время, то я буду только рад.

has been added to your cart:
Оформление заказа