8.х ОБМЕН Отладка обработчиков правил обмена

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем Lis2007, 16 сен 2014.

  1. TopicStarter Overlay
    Lis2007
    Offline

    Lis2007 Опытный в 1С

    Регистрация:
    1 окт 2009
    Сообщения:
    93
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте!
    Есть 2 базы: УТ 11 и БП 3.0 под упр SQL .Платформа и релизы последние. В части функционала обмена данными и правил обмена все типовое. Из УТ я настраивал выгрузку в чистую БП.
    При настройке обмена начали выскакивать ошибки типа "не инициализирован параметр сеанса". Я (в тестовой копии) находил эти места в Бухгалтерии и вносил туда инициализацию параметра сеанса вручную, тогда возникала ошибка "неинициализирован другой параметр сеанса", и так длилось до бесконечности.
    В конце концов я выгрузил бухгалтерию из SQL, сделал ее файловой, все эти проблемы прекратились, выгрузка заработала. Я выгрузил в бухгалтерию январь и половину февраля.На этот момент бухгалтерия весила 3Гб. После выгрузки второй половины февраля файловая бухгалтерия по размеру стала 9Гб и вообще перестала работать (что удивительно, т.к. в феврале данных было даже меньше чем в январе!).
    Я взял бэкап бухгалтерии при размере 3 ГБ. Загрузил его в SQL и пытаюсь делать обмен.. Документ "реализация" выгружается, а вот "Перемещение" при попытке выгрузить выдает ошибку:

    {Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(3320)}: ВНЕШНЕЕ СОЕДИНЕНИЕ:
    {Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(9593)}:
    Ошибка при записи документа: Перемещение товаров №ХХХ ОТ YYY
    Описание ошибки: {Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(1573)}: Ошибка записи объекта
    ТипОбъекта = Перемещение товаров
    Объект = Перемещение товаров №ХХХ ОТ YYY
    ОписаниеОшибки = Ошибка при вызове метода контекста (Записать)
    Объект.Записать();
    по причине:
    Ошибка при выполнении обработчика - 'ПередЗаписью'
    по причине:
    Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода ПеремещениеТоваровПередЗаписью ().
    ПозицияМодуля = Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(1551)
    КСообщенияОбОшибках = 26
    ВызватьИсключение СтрокаСообщения;
    ВызватьИсключение СтрокаСообщения;

    Тестирование обоих баз и средствами 1С и средствами SQL ничего не дало. Замена правил обмена на другие типовые ничего не дала.
    Пытаюсь отладить процесс выгрузки, для этого бухгалтерию оставил в SQL, торговлю перевел в файл. Как пример использовал обсуждение: http://1c-pro.ru/threads/otladka-obrabotchikov-pravil-obmena.45315/
    Все делаю как там написано, создал новую обработку, В обработке "Универсальный обмен данными" жму "Сформировать модуль отладки выгрузки" вставляю в модуль новой пустой обработки полученный текст..
    При проверке полученного текста модуля лезет масса ошибок "Процедура или функция с указанным именем не определена (ВыгрузитьРегистр)" и аналогичных.
    Я все равно сохранил обработку "как есть", поставил "Режим отладки" и нажал кнопку выгрузки.
    Выгрузка идет через файл обмена.
    В результате выскакивают те самые ошибки
    {ВнешняяОбработка.ОбработкаОбменаДанными.МодульОбъекта(256,7)}: Процедура или функция с указанным именем не определена (ВыгрузитьРегистр)

    Вопрос, что я делаю неправильно при отладке выгрузки?
    Можно ли отлаживать обмен при прямом подключении (через COM-соединение), когда источник файловый, а приемник под SQL, или можно отлаживать только при обмене через файл?
    Последнее редактирование: 16 сен 2014
  2. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.991
    Симпатии:
    399
    Баллы:
    104
    Ща пожру и по гляжу )))


    Отправлено из моего iPhone используя Tapatalk
  3. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.991
    Симпатии:
    399
    Баллы:
    104
  4. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.400
    Симпатии:
    40
    Баллы:
    54
    Я те за статью плюсик жмакнул, сам шут знает когда бы написал :)
  5. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.991
    Симпатии:
    399
    Баллы:
    104
    :)
  6. TopicStarter Overlay
    Lis2007
    Offline

    Lis2007 Опытный в 1С

    Регистрация:
    1 окт 2009
    Сообщения:
    93
    Симпатии:
    0
    Баллы:
    26
    nbIpKuH_BaH9I Спасибо, но я все именно так и делал.
    Создаю модуль с обработчиками, вставляю в модуль обработки. При проверке текста модуля выскакивает масса ошибок типа:
    "Процедура или функция с указанным именем не определена (ВыгрузитьРегистр)" и аналогичных. - Это нормально?
    При попытке отладки все останавливается на той же ошибке: "Процедура или функция с указанным именем не определена (ВыгрузитьРегистр)"
    Что я делаю не так?
  7. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.991
    Симпатии:
    399
    Баллы:
    104
    Ну значит не так блин. Может они в алгоритмах находятся. Как выгружаете модуль отладки? Скрины
  8. TopicStarter Overlay
    Lis2007
    Offline

    Lis2007 Опытный в 1С

    Регистрация:
    1 окт 2009
    Сообщения:
    93
    Симпатии:
    0
    Баллы:
    26
    Вот прикладываю файл ворд со всей последовательностью действий и со скринами, подскажите, что я не так делал?

    Вложения:

  9. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.991
    Симпатии:
    399
    Баллы:
    104
    А эти процедуры реально есть? В алгоритмах? Или глобальным поиском попробуйте. Не удивлюсь, что сама универсальный обмен данными не правильно выгружает обработчики.
  10. TopicStarter Overlay
    Lis2007
    Offline

    Lis2007 Опытный в 1С

    Регистрация:
    1 окт 2009
    Сообщения:
    93
    Симпатии:
    0
    Баллы:
    26
    Если создавать обработчики с помощью КД, ошибок нет.
    Однако проблема в том, что при выгрузке из файлового источника в файловый приемник, или из SQL источника в файловый приемник выгрузка идет без проблем.
    Проблемы возникают только в случае обмена данными между этими же базами под SQL (ошибка указана в первом посте)
    Помощь нужна срочно, возможно платно.
    Предложения просьба писать на ubond2005@mail.ru
  11. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.991
    Симпатии:
    399
    Баллы:
    104
    У меня 11 УТ под рукой. Глобальным поиском по конфе ищите эти процедуры. Может инструкции препроцессору указаны не верно. Может вообще не указаны. Может общие модули, если используются, компилируются не там где надо. Причин масса. Киньте ка ваши правила сюда. Я к обеду попробую тестовые базы у себя развернуть.
  12. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.991
    Симпатии:
    399
    Баллы:
    104
    Не, с моими админами на работе и инетом я буду неделю качать эти конфы. Я могу удаленно зайти к Вам поглядеть? Интересно очень стало.
  13. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    /telepathist mode on/в модуле документа "ПеремещениеТоваровУслуг", в предопределенной процедуре "ПередЗаписью" или есть подписка на событие "ПередЗаписью", в нем есть какой-то код, в котором фигурирует объект вместо ссылки. Этот код должен отрабатывать на какой-то одной стороне: сервере или клиенте. В процессе обмена случается так, что вызов происходит с одной стороны(скорее всего с клиента), а в процессе выполнения кода переключаемся на сервер и код перестает нормально работать.

    Предлагаю, поставить точку останова в начале "ПередЗаписью" и вместе со стеком вызовов отследить стороны вызова кода, а так же дойти до "проблемного" момента двигаясь по шагам.
    /telepathist mode off/
  14. TopicStarter Overlay
    Lis2007
    Offline

    Lis2007 Опытный в 1С

    Регистрация:
    1 окт 2009
    Сообщения:
    93
    Симпатии:
    0
    Баллы:
    26
    nbIpKuH_BaH9I
    Тут же еще фишка в том, что ошибка возникает только когда бухгалтерия и тороговля в SQL, надо проверить, возникнет ли она если торговляю вытащить в файл а бухгалтерию оставить в SQL, как чтото выясню напишу
  15. TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    А не пробовал новые базы на SQL создать в них загрузить из файловой и попробовать провести обмен?
    У меня было раз так. SQL что то лаганул. И обмен между БП и ЗУПом работал не правильно. В файловом варианте нормально. Создал новые базы на SQL туда перегрузил.
  16. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    ну дык все верно: писали код, не думая о том, что может возникнуть ошибка при передаче мутабельного значения с сервера на клиент(или в противоположном направлении и отлаживали скорее всего в файловом варианте работы.
  17. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    в дополнение к телепатам - загрузка данных тонким или толстым клиентом делается? если толстым - УТ и так на нем падать будет, потому как обработчики модуля объекта будут на клиенте исполняться, а там много вызовов серверных модулей с передачей мутабельных значений.
  18. TopicStarter Overlay
    Lis2007
    Offline

    Lis2007 Опытный в 1С

    Регистрация:
    1 окт 2009
    Сообщения:
    93
    Симпатии:
    0
    Баллы:
    26
    nbIpKuH_BaH9I, nomad_irk, nickpugachev - всем откликнувшимся огромное спасибо, проблема решена.
    Причина была в том, что в бухгалтерии для документа "Перемещение" была подписка на событие.
    Обработчик стоял в общем модуле, сам общий модуль был без галочки "Внешнее соединение".
    В общем, мой косяк.
    --- Объединение сообщений, 18 сен 2014 ---
    nickpugachev - Обмен был настроен через прямое подключение COM, обе базы запускаются из под тонкого клиента на SQL
    Последнее редактирование: 18 сен 2014

Поделиться этой страницей