В один прекрасный день, перестал работать обмен с сайтом на битриксе. Настроен обмен через план обменов "ОбменССайтом" Все механизмы обмена типовые и проходило все в штатном режиме до 03.10.2016г (если это важно). Во время первого сбоя, перезагружали несколько раз сервер и после этого ситуация не поправилась.
Выгрузка на сайт и в файл сопровождается ошибкой:
Невосстановимая ошибка
Ошибка при выполнении запроса POST к ресурсу /e1cib/cmi/command/0:ea3dcdce-5901-45de-babc-6f5e92826f86:
Базу тестировали на целостность, тестировали внутренним тестированием, проверяли все настройки сайта и прочего. Подскажите, что с этим делать или куда копать
Думаю отладка вам поможет. Как вариант частичная выгрузка, т.е. сначала только номенклатура, потом только клиенты и т.д.
Скорее всего вы столкнулись с выгрузкой данных, которые не совсем корректны, например в строке есть непечатные символы.
(2) GeRon, (3) cassper, так же подумал,что косяк в данных и прочее. Выгрузка ежедневно проходила , поэтому развернул бэкап двух недельной давности, ошибка та же самая.
(4) batsy66, Перенесите базу в другое место (можно, например, прописать еще раз базу в списке баз 1с), можно попробовать любые другие манипуляции, чтобы поменять положение базы (может КЭШ, может еще чего).
Плюс попробовать выгрузить базу и запустить в файловом варианте, чтобы отсечь всевозможные проблемы файловой подсистемы.
(5) cassper, базу переносили на копию, забирали на другой сервер. Без регламентных заданий тоже всё работало, проверялось до этого случая. Сейчас версия, что проблема в ms sql или сервера 1с
и желательно для начала выгрузку в каталог на диске настроить - так проще и быстрее по времени обмен происходит и можно отловить момент ошибки, по крайней мере если с отладкой запускаться, как предложили выше.
Может у вас какой проблемный файл прикрепленный к номенклатуре выгружается...
А если все же делать копии будете (на скуле) и есть регламентные задания, то не забудьте выключить использование регламентных заданий (случаи баывают разные, но рекомендация лишней не будет)
судя по ошибке вы выгружаете сразу на сервер?
а если выгрузить в локальный файл
выгрузка пройдет?
Почитал сообщения о подобных ошибках на сайте Битрикса. Как я понял источник таких ошибок - в основном это их косяк. Поэтому если в файл у вас выгрузится, а на сайт не уходит - смотрите обновлялся ли Битрикс.
Для чистоты эксперимента нужно было поднимать и копию сайта от той же даты, а потом уже методом исключения искать слабое звено.
Попробуйте полечить SQL базу Битрикса, после полностью перезапустите сервер.
Не знаю почему, но иногда я ловил глюки от Битрикса ни перезапуск движка ни перезапуск СКУЛа не помогали, только полный ребут.
Проверьте свободное место на хостинге где лежит Битрикс
(15) cassper, создавал группу. Ошибочно зациклился на номенклатуре, наверно, пора проверить и другие справочники причастные к выгружаемым данным. Остался вопрос как это сделать
(18) batsy66, Можно посмотреть состав плана обмена, чтобы понимать, с какими видами объектов дерева метаданных он работает, но здесь себя не ограничить, т.к. каждый объект может ссылаться на типы других объектов и заниматься перебором себе дороже.
Может конечно стоит начать с самых "нужных" типов - номенклатура и характеристика.
Сначала создать по этому ИД номенклатуру. Выполнить выгрузку в каталог на диске (чтобы сайт не дергать постоянно).
Если не проканает, то попробовать исключить из выгрузки эту созданную номенклатуру, затем повторить с характеристикой.
Но еще я бы все же порекомендовал выполнить выгрузку с пошаговой отладкой, чтобы точно понимать, на каком моменте валится ошибка, отсюда можно понимать, к какому объекту можно обратиться и восстановить объект по этому Ид...
(18) batsy66, для запуска выгрузки вставьте проверки на существование объекта в базе, если "объект не найден" пропускайте его с записью в журнал работы
потом анализируйте записи журнала, думаю найдете все битые ссылки
потом нужно найти первопричину возникновения битой ссылки
(24) batsy66, Можно сделать как...попытаться очистить регистрация изменений у плана обмена. Кстати, обмен с сайтом выполняется в режиме изменений или всегда полный? Скорее всего первое (в режиме изменений). Можно открыть обработку "Регистрация изменений для обмена" (обычно есть в составе конфигурации) и вычистить оттуда для вашего узла обмена некорректные ссылки как на номенклатуру, так и на другие объекты из зарегистрированных (если таковые найдутся) и затем выполнить обмен повторно.
Другая проблема - понять, откуда взялись эти битые ссылки? Может у вас есть обмен с другими конфигурациями? Или что больше похоже на правду - обмен с периферийными базами РИБ?
(25) cassper, ничего такого,насколько я знаю. Выгрузка осуществлялась каждый день и полностью (не знаю причину этого веселья). Самое интересное для этого узла обмена,который используется ошибок нет,а в итоговую выборку для выгрузки эти битые ссылки попадают. Ищу по какой причине и откуда они берутся
(29) GeRon, не имею ни малейшего понятия, как и зачем так было настроено. Мне дали со словами - не работает обмен с сайтом, пять дней уже разные люди пытаются его починить.
Поэтому пытаюсь разобраться в текущей ситуацией и починить, то что работало ранее
(32) cassper, исследовал вдоль и поперек весь обмен, отладкой прохожу по всем функциям. Проверяю каждую выгруженную выборку полученную не нахожу битых ссылок.
Есть одна бредовая идея, связанная с непонятным отображением одной из корневых папок справочника номенклатуры (при отборе, ввод по строке данного каталога ничего не даёт, то есть он не ищется. После перезаписи стал отображаться), сейчас тестирую выгрузку с ним, так он содержит большую часть справочника - жду сижу.
(33) batsy66, Видать, все-таки данные какие-то побились. Но и все равно, раз выполняется полный обмен, то советую в итоге все равно почистить таблицу изменений справочника номенклатура и не только его, чтобы исключить все те позиции, что были зарегистрированы. Правда регистрация все равно будет по новой осуществляться при каждой перезаписи существующих позиций номенклатуры, но на момент выгрузки стоит и очистить
(34) cassper, чистил, перепроверял на битые ссылки сразу после регистрации. Всё тоже самое.
Тоже грешу на битые данные, но до сих пор понять где не могу
(29) GeRon, Обмен с сайтом построен на основании плана обмена. Он используется для настройки ключевых параметров. Есть режимы выгрузки - полный обмен, режим изменений.
Если полный обмен, то изменения плана обмена не используются. Запросом получается вся номенклатура из справочника с учетом установленных отборов.
Если же включен режим изменений, то задействуется таблица изменений справочника номенклатура узла плана обмена.
(31) cassper, если опция полного обмена включена, тогда не должны регистрироваться изменения.
либо при выгрузке все зарегистрированные изменения должны удаляться
(37) с логикой согласен. Но чую, что регистрация проходит всегда вне зависимости от выбранного режима для всех найденных узлов обмена. Согласен, что регистрация должна удаляться в любом выбранном режиме, но что точно не должно происходить, так это для выгрузке брать изменения, их учитывать для выгрузки в режиме полного обмена. Я давно не анализировал типовой обмен. Все на практике кае-то в руки попадает доп.модуль
(19) cassper, объект не найден, при поиску по guid. но как я понял так будет с любой таблицей,если искать по данному guid.
(20) cassper, отладка на сервере клиента отключена, надо включать и перезагружать. на своём сервере не получается сделать выгрузку ни в файл, ни на сайт. вываливается ошибка с пустым содержанием.
Хочу прогнать поиск по всем реквизитам справочников нужных,может в каком объекте найдётся битая ссыль
но как я понял так будет с любой таблицей,если искать по данному guid
Совершенно верно, при условии, что точно в базе нет объекта с таким Ид.
отладка на сервере клиента отключена, надо включать и перезагружать.
Когда наступает надобность, то ребут сервера выполнить все же придется с включением режима отладки.
на своём сервере не получается сделать выгрузку ни в файл, ни на сайт. вываливается ошибка с пустым содержанием.
Не понял. Именно ошибка? А если в конфигураторе включить в отладке "останавливаться по ошибке..." и посмотреть, где отваливается? Если конечно это не критическая ошибка, которая не позволит остановиться и проанализировать ошибки.
Хочу прогнать поиск по всем реквизитам справочников нужных,может в каком объекте найдётся битая ссыль
Ну вариантов решения уже придумано и озвучено много. Осталось попробовать и сообщить результат - интересно)
В справочнике контрагентов был создана элемент "Покупатель" и помещен в группу "Покупатель".
Кто-то показал оператору обработку "Поиск и замена дублирующихся". Оператор благополучно "убрал все дубли"... в итоге все вроде работает, но при попытке входа в справочник выкидывало из программы....
(37) GeRon, План обмена хватает всё что находится в "номенклатура.изменения" в любом случае (будь то полный обмен или изменения) и потом удаляет регистрацию к обмену, весьма странная схема.
(38) batsy66,
Запросом все выбиралось без сбоя, написал обработку по поиску и исправлению зацикливания ссылки, все стало нормально
можно регистрацию делать не "автоматом" а в зависимости от некоторых условий
в случае когда регистрация уже происходит всегда - только очистка при выгрузке, чтобы не переписывать регистрацию в плане обмена
логика странная и корявая, но это лучше чем в ручную удалять
* ТиИ;
* Поиск объекта по GUID,создание объекта с этим GUID;
* Точки останова в коде и поиск где падает ошибка ( вываливается неисправимая ошибка и обязательный выход из системы);
* Запись в журнал регистрации и поиск ошибочной номенклатурной позиции (Сделал запись в журнал регистрации номенклатуры, которая выгружается. Выгрузил трижды, ни номенклатура не совпадает, количество элементов выгруженных тоже);
* Доп.таблицы изменения очищал, заново перерегистрировал;
Знаю в какой группе справочника возникает ошибка, если выбрать один из верхних уровней - ошибка, выбрать отдельно группы внутри - нет ошибки. Та же группа, которая не находилась поиском строки. Если группа не попадает в выгрузку - всё хорошо.
Можно попробовать создать воссоздать иерархию и перенести все элементы туда и выгрузить заново.
Пример: Группа1 содержит Группу2 и группу3. Выбирая Группу1 для выгрузки - ошибка, выбираем Группы2 и Группу3 - нет ошибки.
Т.е. если резюмировать, то получается, что не обмен явно валит ошибку, а структура данных, т.е. закрались ошибки в иерархии данных справочника номенклатуры?
Так, навскидку, вопрос задам: а попытки выгрузить базу в файловый вариант не было? Я так понимаю, что база и серверной перекочевала в тестовую серверную? Иногда подобные выгрузки/загрузки решают проблему, иногда...
У клиента mssql 2008, была пересоздана база на 2012 и из dt погружена - не помогло. Загрузки в локальную не было. Сейчас проверяю ещё один вариант со структурой справочника, если не сработает загружу в локальную
(43) cassper, спасибо за совет! Есть продвижения после загрузки на локальную. Надо изучить подробнее различия вариантов работы.
Есть в УТ 11.2.3.175 общий модуль "ОбменССайтом" в нём функция:
Функция ГруппыНоменклатурыXDTO(ДеревоГрупп, ПакетCML, ТекущийРодитель = Неопределено, КлассифицироватьПоВидамНоменклатуры = Неопределено)
Один из получаемых параметров "ДеревоГрупп".
Он обрабатывается начинает следующим образом:
Код
Для Каждого СтрокаДерева Из ДеревоГрупп Цикл
Если КлассифицироватьПоВидамНоменклатуры = Неопределено Или КлассифицироватьПоВидамНоменклатуры = Ложь Тогда
Если НЕ СтрокаДерева.Номенклатура.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
Показать полностью
и валится в ошибку:
[qoute] {ОбщийМодуль.ОбменССайтом.Модуль(2316)}: Значение не является значением объектного типа (ЭтоГруппа)
Если НЕ СтрокаДерева.Номенклатура.ЭтоГруппа Тогда
[\quote]
Блин, а в дереве групп вообще-то колонка "Номенклатура" должна иметь тип "СписокЗначений", если я ничего не путаю. Удивительно конечно откуда там взялся NULL, но здесь остается вариант только лишь через попытку или доп. проверку на null сделать, чтобы в итоге не на ошибку нарваться, а в итоге посмотреть, что с деревом групп. и дальше принимать решения, может как раз отсюда ноги-то и растут - в дереве засада с битыми ссылками и прочим.
ну собственно о чем я и говорил
битая ссылка
теперь, смотри сам запрос
включен ли RLS, если включен попробуй вырубить и сформируй выгрузку или если в запросе выбирается без учета RLS, только анализ текста и результата в консоле
(50) cassper, не получится просто номенклатуру. Там формируется иерархия групп и пишется в XDTO, как раз несколько вложенных каталогов и дают сбой.
Дерево формируется:
ВЫБРАТЬ РАЗЛИЧНЫЕ
ВременнаяТаблицаНоменклатура.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ втКаталог
ИЗ
&ВременнаяТаблицаНоменклатура КАК ВременнаяТаблицаНоменклатура
ИНДЕКСИРОВАТЬ ПО
Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
втКаталог.Номенклатура КАК Номенклатура
ИЗ
втКаталог КАК втКаталог
Показать
В &ВременнаяТаблицаНоменклатура передается результат другого запроса, где как раз список номенклатуры согласно отборов выставленным пользователем(пробежался по всем строчкам - битых ссылок нет)
Потом запрос выполняется:
Запрос.УстановитьПараметр("ВременнаяТаблицаНоменклатура", ДанныеДляВыгрузкиКаталога);
Результат = Запрос.Выполнить();
Классификатор = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией)
И вот в "Классификатор" попадают уже битая иерархия.Потом она обрабатывается циклом тем, как раз. (когда раскрываем само дерево перед ошибкой, видим там 21 строку, из них 3 пустые, как раз которые вызывают ошибки. А запрос в консоли возвращает всё корректно, а в конфигураторе с ошибками)
(52) cassper, нет они не отображаются никоим образом, либо я слеп уже. Сейчас получилось пройти следующий уровень иерархии просто создав новую группу и перебросить туда все элементы. Видимо придется шаг за шагом искать эти битые ссылки на группы
(53) batsy66, вот здесь вот http://prntscr.com/ctfym8 что-то выбрано? Может стоит очистить колонку групп номенклатуры, если заполнена или войти в список значений и посмотреть, есть ли среди них проблемные группы
(55) попробуйте выгрузку сделать на меньшем объеме данных. Если без ошибок будет, тогда картина проясняется, если нет, то либо недостаточно ресурсов той машины, на которой база локально расположена, либо все наблюдается какая-то еще ерунда в данных, из-за которой происходит утечка памяти. Можно попробовать вернуть на сервер и проверить выгрузку там. Может правда по памяти ограничения
(56) cassper, в файл выгрузилось хорошо с маленьким объёмом.
1. Решил поменять те же группы на серверной версии и выгрузить - ошибка.
2. На файловой версии провел ТиИ, новых ошибок не нашёл, исправил предыдущие.
3. Загрузил файловую на сервер - выгрузка успешно прошла в файл
4. Загружаю на сервер клиента, на тесте прогоню. Завтра напишу результат (ибо скорость загрузки очень медленная)
(57) batsy66, Ну вот, уже результат. Несколько дней боданий привели к нужной результирующей стадии.
А если для себя резюмировать, в чем, собственно, дело-то было? Вопрос останется открытым? Простыми словами конечно можно сказать, что побились данные, да еще наверное в таблицах sql, потом они перекочевали в файловую, там ТИИ решила остальные проблемы...видимо так
(58) cassper, пока что так, не берусь сказать, пока выгрузка на сайт не пройдёт. Надеюсь в выходные закончу и в понедельник будет работоспособный сайт.
Ну и да всё это результат битых данных, причем ни средствами SQl, ни 1с не обнаруживалось. Пока в файловый вариант не выгрузили
(61) cassper, все решили кардинально. Подняли новый сервер баз данных, поставили новую версию платформы и кластера и ТиИ. Видимо порушились системные таблицы SQL-сервера и потом следом база данных.
Такая же ошибка на УТ11.3
{ОбщийМодуль.ОбменССайтом.Модуль(2318)}: Значение не является значением объектного типа (ЭтоГруппа)
Пытался найти битый элемент не помогло. Помогло выполнять перед обменом перезапуск службы 1С.
Но вот в таблице изменений более 5000 записей и снова обмен не выполняется.
В файл все выгружается без проблем.
Как связать указанную ошибку с перезапуском сервера? Возможно это просто нехватка памяти?
(68).
Вроде разобрался.
Итак, как понял, ошибка
"Невосстановимая ошибка
Ошибка при выполнении запроса POST к ресурсу /e1cib/cmi/command/0:ea3dcdce-5901-45de-babc-6f5e92826f86:"
-- это любая ошибка, кот. не отлавливается конфигуратором. Так что искать элементы по ГУИД бесполезно.
Ошибка проявлялась при полной выгрузке в рабочее время. Вечером, как правило, выгрузка проходила нормально.
В моём случае оказалось, что в настройках локального кластера доступный объём памяти мал. При увеличении памяти, ошибка ушла.