8.х Глюки при программном создании документов.

Тема в разделе "Установка платформы "1С:Предприятие 8"", создана пользователем BuhTorZar, 27 апр 2012.

  1. TopicStarter Overlay
    BuhTorZar
    Offline

    BuhTorZar

    Регистрация:
    27 апр 2012
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Конфигурация УПП 1.3.22.1 платформа 8.2.14.540 база серверная на MS SQL (сервера 1С и SQL на одной машине).

    Внезапно начало наблюдаться следующее поведение - при выполнении команды вида Док = Документ.ИмяДокумента1.СоздатьДокумент(), переменная Док получает тип ДокументОбъект.ИмяДокумента2. Например создаем ЗаказПокупателя, а получется ДокументРасчетовСКонтрагентом.

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

    Зависимость между Документ1 и Документ2 стабильная, т.е. если, например, вместо документа ЗаказПокупателя создается ДокументРасчетовСКонтрагентов, то это происходит в любом месте конфигурации и при любом запуске.

    С другими базами, расположенными на этом же сервере проблема не позникает.

    Не помогло: перезагрузка сервера, реиндексация базы, очистка локального кэша (на клиентских машинах).

    Прошу посоветовать что-нибудь дельное.
  2. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а если удалить базу из списка на конкретной машине и добавить заново и запустить?
  3. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Поскольку кэш чистили..

    Все-таки чудес не бывает.
    Покажите полностью код (если большой отдельным файлом прикрепите).
  4. TopicStarter Overlay
    BuhTorZar
    Offline

    BuhTorZar

    Регистрация:
    27 апр 2012
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Ошибка происходит при исполнении типового программного кода (в любом месте конфигурации - общий модуль, модуль формы и т.д.).
  5. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Ок. Если набросать внешнюю обработку и выполнить на ней
    Код:
    Док = Документ.ИмяДокумента1.СоздатьДокумент();
    Проблема воспроизводится? Какой тип будет иметь Док?

    З.Ы. так происходит только с одной парой документов или таких пар документов несколько?
  6. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Если все же происходит такая вот фонтастика, то попробуйте:
    1) Тестирвоание и исправление с "реструктуризация таблиц".
    2) Сбросить процедурный кэш MS SQLя
    3) Выгрузить конфигурацию в файл, и загрузить ее снова в БД (может занять продолжительное время)
    4) Попробовать перегрузить базу данны:
    * БД выгрузить в DTшник
    * развернуть ее в файловом варианте
    * Попробовать воспроизвести ошибку
    * Если в файловом варианте ошибка не воспроизводиться, то снова 1С -> DT -> 1C (SQL)

    К базе MS SQL никто кроме 1С случайно не лезит? (а то есть любители "напрямую" кацапки кривые в БД MS SQLя запускать...)
    С одной базой на MS SQL работает только один сервер (кластер) 1С?
    Динамические обновления делаете?
  7. TopicStarter Overlay
    BuhTorZar
    Offline

    BuhTorZar

    Регистрация:
    27 апр 2012
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Рекомедации понятны. Динамические обновления делаю, часто. Какой вывод?
  8. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Вывод - отказаться от динамического обновления. Принципиально и вообще.
    Можете погуглить. Ошибок связанных с динамическими обновлениями более чем достаточно чтобы отказаться от этой возможности.
  9. TopicStarter Overlay
    BuhTorZar
    Offline

    BuhTorZar

    Регистрация:
    27 апр 2012
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Когда я спрашивал: "Какой вывод?" Я имел ввиду: "Как знание того, что делаются динамические обновления может помочь решить проблему?"

    На ночь запустил ТИИ только с "Реструктуризация таблиц информационной базы". Несмотря на то что ТИИ не прошло полностью из-за переполнения Тransaction Log - ОШИБКА ИСЧЕЗЛА !!!.

    Написал вот такую обработку:

    Код:
     Для Каждого ЭлМ Из Метаданные.Документы Цикл
    ЭлО = Документы[ЭлМ.Имя].СоздатьДокумент();
    Если ЭлО.Метаданные().Имя <> ЭлМ.Имя Тогда
    Сообщить("Создается :"+ЭлМ.Имя+" --- Получается :"+ЭлО.Метаданные().Имя);
    КонецЕсли;
    КонецЦикла;
    
    Пока проблема была не решена - выдавала полный список документов из структуры метаданных конфигурации, после решения не выводит ничего.
  10. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Слово "диагностирование" слышали? Правильное диагностирование - первый шаг к успешному лечению.
    В данном случае Вам повезло, и не случилось реально страшного (тьфу-тьфу-тьфу, тук-тук-тук).
    Все же рекомендую озадачиться проведением ПОЛНОГО цикла реструктуризации (дабы мозжечок более точно прилип к остальному мозгу).

    P.S.
    На всякий случай - посмотрите какая модель восстановления БД стоит у вас MS SQLе? В 95% случаев умолчальная "полная" даром не нужна - только места база жрет неоправданно.
    Еще на всякий случай, файлы системной базы данных TempDB желательно разместить на ином винте, нежели "умолчально" в системном разделе.
    Да, свободного места на винте для данной операции должно быть минимум 2 размера текущей БД. Т.е. если БД допустим 100 Гб, то свободного места на диске где лежит БД должно быть 200 гигов
    + 150 гигов (150% от размера БД) на диске/разделе, где лежит база данных TempDB.

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