Требуется, чтобы запись XML-документа производилась не в файл, а в строку
Для вывода XML-документа в строку после создания объекта ЗаписьXML необходимо использовать метод УстановитьСтроку(). Только в этом случае метод Закрыть() вернет строку, которая будет содержать сформированный XML-документ.
Используется модель последовательного доступа (работа осуществляется только с одним текущим узлом):
В результате будет получен файл вида
Создание XML-документа с помощью объекта ЗаписьXML производится путем помещения в строгой последовательности (иначе будет нарушена структура) «частей» узлов.
Нужно документ РеализацияТоваровУслуг (ссылка на который выбирается в диалоге создаваемой обработки) перенести в другую базу данных. Структура конфигураций идентична. Справочники (и другие сопутствующие объекты) синхронизированы по значениям внутренних идентификаторов.
Для выгрузки потребуется выполнить следующий фрагмент кода:
При выгрузке создаем элемент Root исходя из соображений, что в XML-документе должен быть только один корневой узел, а в общем случае (но не в нашем) выгружаться может не один объект.
Для загрузки выгруженного значения используем следующий фрагмент кода:
В чем дело, программа пишет "Неудачная попытка создания объекта (AddIn.XMLParser)"?
Очевидно, что Вы запускаете обработку, которая использует внешнюю библиотеку v7plus.dll. В данном случае для работы с файлами формата XML. Но файл (библиотеку) v7plus.dll, обеспечивающий создание этого объекта (AddIn.XMLParser) программа не нашла...
Для нормальной работы этой библиотеки надо найти файл v7plus.dll (как правило находится в базе данных типовых после инсталяции) и скопировать его в Каталог Вашей информационной базы. А можно в каталог с исполняемыми файлами программы (C:\Program Files\1c77\bin\).
Первый вариант лучше для сетевой установки (не понадобится копировать эту библиотеку на каждый компьютер сети), второй для локальной, особенно, если у Вас установлено несколько баз (не понадобится копировать файл библиотеки во все базы).
Причины возникновения
Причины этой ошибки разняться по своей "природе", но их объединяето то, что уже существующее (т.е. ранее установленое) соединение с клиентом разрывает сервер.
1. С версии 8.1.11 включен циклический перезапуск процессов, по наступлению интервала происходит автоматический перезапуск рабочих процессов rphost.
2. В некоторых случаях причиной ошибки могут стать утечки памяти.
3. Действия администратора в консоли (команда удалить пользователя)
4. Процесс rphost на серверном компьютере завершился аварийно
5. Ошибочное принятие высокой интенсивности пользователей за атаку на протокол в некоторых случаях Windows
6. Устаревание данных в кэшах
7. Плохо отслеживаемые события в фоновых процессах
8. Нестандартные запросы могут приводить к падениям rphost
Способы устранения
1. с 8.1.11 включен циклический перезапуск процессов, для анализа этого события на компьютере сервера 1С:Предприятия необходимо включить запись в технологический журнал событий PROC (пример файла logcfg.xml).
Когда процесс выключается, будет выведено событие PROC со свойством Txt=Process become disable.
Когда процесс останавливается, будет выведено событие PROC со свойством Txt=Process terminated. Any clients finished with error. Если аварийные завершения работы пользователей совпадают по времени с выводом этого события, то причиной является принудительная остановка рабочего процесса либо администратором (через консоль кластера), либо вследствие автоматического перезапуска.
2. перезагрузить сервер
3. убедиться, что причиной являются/не являются действия администратора в консоли
4. создать на сервере приложения два или более рабочих процесса, чтобы иметь возможность переподключиться в случаи сбоя рабочего процесса
5. Запусти программу regedit.exe, добавь новое значение типа DWORD с именем SynAttackProtect в раздел реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\ и присвой ему значение 00000000
Имеет смысл делать для ОС Windows 2003 SP1 (http://msdn.microsoft.com/ru-ru/library/ms189083.aspx).
8. найти технологическим журналом запрос, приводящий к падению
p.s. Кроме того, 54 ошибку можно получить на релизах <= 8.1.12.98 при ри конвертации конвертором ИБ 77(DBF) -> 81(SQL) в типовой ТиС (демо, взятой с ИТС) релиз. 954 в клиент-серверном варианте.
обойти можно так:
- выполните конвертацию в файловый фариант информационной базы 1С:Предприятия 8.1,
- выгрузите полученную информационную базу в файл,
- загрузите в клиент-серверный вариант информационной базы 1С:Предприятия 8.1.
В XP или 2000 надо положить v7plus.dll в каталог, где установлена сама 1С (по умолчанию C:\Program Files\1cv77\BIN), удалить dll из каталогов баз и один раз запустить любую из баз под пользователем с правами администратора компьютера.
Все эти действия нужны, чтобы 1С зарегистрировала компоненту в реестре и для всех баз путь к компоненте был одинаковым и не требовалась перерегистрация компоненты для каждой базы при каждом запуске.
Регистрация вручную:
Пуск - Выполнить или в командной строке введите: regsvr32 C:\Program Files\1cv77\BIN\v7plus.dll
При работе в 1C:Предприятие 7.7 под операционнй системой Windows Vista при использованиии компоненты v7plus.dll (например, при выгрузке данных в формате XML) происходит ошибка: "Ошибка при создании объекта из компоненты v7plus.dll (отсутствует CLSID)"
Решение данной проблемы в Vista и 7:
Отключить UAC (Панель управления/Учетные записи пользователей/Включение или отключение контроля учетных записей (UAC).
Перезагрузить компьютер.
Запустить 1С.
Закрыть 1С.
Включить UAC.
Перезагрузить компьютер.
Больше при открытии ошибки не будет.
Данный метод позволяет решить проблему без нарушения безопасности.
После разнесение сервера 1С:Предприятия и SQL-сервера на разные машины при загрузке dt-файла в базу расположенную на SQL-сервере стали получать ошибку "Недостаточно свободной памяти на сервере 1С:Предприятия".
или (Ошибка СУБД: Microsoft OLE DB Provider for SQL Server: there is insufficient memory in resource pool ‘default’ to run this query. HRESULT=80040E14 )
Решение проблемы:
1. При возникновении ошибки перезапустить службу сервера 1С.
2. Использовать много процессов(В свойствах кластера поставить галочку "Много процессов"). Добавить рабочие процессы, оптимальное значение 4-5 процессов.
3. Использовать регламентный перезапуск рабочих процессов. Но это не снимет проблему. Просто сократит "утечку" памяти.
4. Для операций с базой данных, например копирование базы данных использовать средства ms sql, а не работу с файлами dt.
5. Включите запись событий DBMSSQL в Технологический журнал
(Смотрите текст файла "logcfg.xml" ниже или воспользуйтесь обработкой с ИТС НастройкаТехнологическогоЖурнала.epf) и определите, на загрузке какой таблицы происходит ошибка. Если config, то выполните загрузку в файловый вариант и очистку конфигурации поставщика:
5.1 Для этого надо проверить конфигурацию на наличие некорректной информации. Для этого следует выполнить команду меню Конфигурация - "Проверка конфигурации" (НЕ ТЕСТИРОВАНИЕ!) с ОДНИМ установленным флажком "Проверка логической целостности конфигурации". При выявлении проблем будет выдано сообщение. Некорректная информация при этом будет удалена автоматически
5.2 Если Ваша конфигурация находится на поддержке, следует подобным образом проверить конфигурацию поставщика. Для этого в настройке поддержки следует сохранить конфигурацию поставщика в cf файл, загрузить его в новую базу и выполнить описанную в пункте 1 процедуру. В случае, если было получено сообщение об исправлении ("Удалена некорректная информация о метаданных"), значит конфигурация поставщика содержит некорректную информацию. В этом случае следует снять Вашу конфигурацию с поддержки и заново поставить путем объединения со свежим релизом конфигурации поставщика.
Добавление рабочего процесса
Добавление рабочего процесса, в отличие от просмотра, возможно, только для конкретного сервера кластера.
Для добавления нового рабочего процесса сервера кластера следует выбрать в дереве центральных серверов требуемый сервер, выбрать требуемый кластер, выбрать требуемый сервер кластеров выбрать ветку «Процессы» и выполнить команду контекстного меню "Создать - Процесс", галочкой Включить процесс.
Если процесс НЕ добавляется, то проверьте и сделайте следующее:
1. В свойствах Кластера должна стоять галочка "Много процессов"
2. В свойствах Рабочего сервера Увеличьте Диапозон IP адресов
По поводу перезапуска рабочих процессов - с какого момента начинается отсчет указанный в настройке кластера?
С момента старта процесса. Например стартовал в 18:00:00. Период перезапуска 86400 секунд, т.е. 24 часа. Соответственно через сутки в 18:00:00 процесс остановится и будет создан новый процесс.
Оптимизация перезапуска рабочих процессов:
1. Интервал перезапуска: 86400 сек (24 часа). Момент перезапуска не регламентируется, видимо с момента установки параметров, либо запуска сервера приложений.
2. Также можно указать допустимый объем памяти: 3000000 Кб (3 Гб).
3. Интервал превышения допустимого объема памяти — это непрерывный интервал времени превышения допустимого объема памяти, после которого сервер перезапустит процесс. Если указано 0 сек — будет ждать вечно.