8.х 1c вываливается в дамп при закрытии формы

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Ktyf, 3 ноя 2015.

  1. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Есть обработка, которая работает с dll через ВнешниеКомпоненты
    Код:
    НачатьУстановкуВнешнейКомпоненты(,"ОбщийМакет.Макет");
            Результат = ПодключитьВнешнююКомпоненту("C:\Controller\vk_rs232.dll","Весы",ТипВнешнейКомпоненты.COM);
            Если НЕ Результат Тогда
                Сообщить("Не получилось подключить компоненту!");
                Возврат;
            КонецЕсли;
            rs232_1 = Новый ("AddIn.Весы.vk_rs232");
            Попытка  
                rs232_1.ОткрытьПорт("COM1");  //Весы1
                rs232_1.СтоповыеБиты=1;
                rs232_1.Четность=0;
                ВесыПодключены = Истина;
                ПодключитьОбработчикОжидания("ПолучитьВес",5,ложь);
            Исключение
                ВесыПодключены = Ложь;
                Сообщить("Весы не получилось подключить....");
            КонецПопытки; 
    работает все нормально, но когда я закрываю форму на вин ХР - 1с выпадае в дамп. На вин 7 и 8 все нормально. Попробовал руками "обнулить"
    Код:
    rs232_1.ЗакрытьПорт();
    rs232_1 = Неопределено;
    
    так вот на "rs232_1=Неопределено" и вылетает. Это как нибудь можно обойти без переустановки винды?
  2. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Последнее редактирование: 3 ноя 2015
  3. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    проверила все варианты - не помогает
  4. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    тсылайте дамп в 1С - они скажут или платформу обновите
  5. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    так видимо платформа и так слишком новая для ХР - 8.3.6.2100. А где можно почитать тех.журнал по дампу?
  6. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    техжурнал - это тех журнал - дамп это дам.
    Как настраивать тех журнал у Гилева было и в инете есть.
  7. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Бред продолжается. Теперь начала вываливаться ошибкой и на моем компе.. 1с - молчат как партизаны...
  8. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Ktyf вероятно что-то не так напрограммировали.
    Что именно сказать не могу.
    Вероятно либо в итоге в коде не отчищается ссылка на ком объект, ну либо где-то в коде идет передача ком объекта между различными модулями, при чем это сделано у вас таким образом, что сбивает с толку GC. Что в итоге и приводит к порче памяти и крашу приложения.
  9. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Приведу почти дословно текст с использованием внешней компоненты

    Код:
    &НаКлиенте
    Перем rs232_1 Экспорт;
    
    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
       
        ЗаполнениеДанныхФормы (); //уходим на сервер и заполняем данные формы
       
        РучноеВзвешивание = ПолучитьКонстанту();
        Элементы.ВесФакт.ТолькоПросмотр = НЕ РучноеВзвешивание;
       
        Если НЕ РучноеВзвешивание Тогда
            НачатьУстановкуВнешнейКомпоненты(,"ОбщийМакет.Макет");
            Результат = ПодключитьВнешнююКомпоненту("C:\Controller\vk_rs232.dll","Весы",ТипВнешнейКомпоненты.COM);
            Если НЕ Результат Тогда
                Сообщить("Не получилось подключить компоненту!");
                Возврат;
            КонецЕсли;
            rs232_1 = Новый ("AddIn.Весы.vk_rs232"); 
            Попытка   
                rs232_1.ОткрытьПорт("COM1"); 
                rs232_1.СтоповыеБиты=1;
                rs232_1.Четность=0;
                ВесыПодключены = Истина;
                ПодключитьОбработчикОжидания("ПолучитьВес",1,ложь);
            Исключение
                ВесыПодключены = Ложь;
                Сообщить("Весы не получилось подключить....");
            КонецПопытки; 
        КонецЕсли;
       
    КонецПроцедуры
    
    &НаКлиенте
    Процедура ПолучитьВес()
                        
        Если НЕ ВесыПодключены Тогда
            Возврат;
        КонецЕсли;
        rs232_1.ЗаписатьСтроку(hex(КодСимвола("S"))+" "+hex(КодСимвола("I"))+" "+hex(13)+" "+hex(10));       
       
    КонецПроцедуры
    вот я и пытаюсь ее закрыть корректно
    Код:
    &НаКлиенте
    Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
        Если НЕ rs232_1 = Неопределено Тогда
            rs232_1.ЗакрытьПорт();
        КонецЕсли;
        rs232_1 = Неопределено;
        АДОДБКоннект = Неопределено;
    КонецПроцедуры
    
    и на строчке rs232_1 = Неопределено; программа вылетает.
    --- Объединение сообщений, 30 ноя 2015 ---
    понять бы еще что...
    --- Объединение сообщений, 30 ноя 2015 ---
    а что такое GC?
  10. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    сборщик мусора.
    В 1С вы не можете им управлять.
    --- Объединение сообщений, 30 ноя 2015 ---
    обработчик ожидания не отключаете.
    Последнее редактирование: 30 ноя 2015
  11. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Пришел ответ от 1С - "Компонента не сертифицированная - гуляйте вальсом"
  12. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    А если дословно?
  13. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    "Обращая внимание, что компонента не является сертифицированной, а это значит, что мы не можем расследовать данное обращение"
    --- Объединение сообщений, 1 дек 2015 ---
    Правда, предложили закрывать Com-соединение через rs232 = Ложь, но это ничего не изменило
    --- Объединение сообщений, 1 дек 2015 ---
    подозреваю что проблема на стыке винды и 1с. Компонента к которой я обращаюсь и правда довольно старая, видимо новая платформа не может корректно обработать ее закрытие. Я не вижу другой причины в ситуации вчера работало - а сегодня нет, при том, что эту обработку я уже месяц гоняю не меняя ни строчки.
    Последнее редактирование: 1 дек 2015
  14. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Напишите или закажите свою компоненту, по сути, это dll, которая работает с COM-портом.
  15. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Я так и не увидел, что говорит журнал регистрации Windows и 1С?
  16. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    в журнал регистрации ошибка даже не попадает.
    А Windows на это дело генерирует ошибку и событие: описание ошибки - файлы 1 и 2, описание события - 3 и 4.
    --- Объединение сообщений, 1 дек 2015 ---
    насчет напишите - спасибо за комплимент....
    А насчет заказать..... Вы знаете кто возьмется за это?

    Вложения:

    • 1.png
      1.png
      Размер файла:
      235,8 КБ
      Просмотров:
      5
    • 2.png
      2.png
      Размер файла:
      228,4 КБ
      Просмотров:
      5
    • 3.png
      3.png
      Размер файла:
      240,8 КБ
      Просмотров:
      5
    • 4.png
      4.png
      Размер файла:
      235,9 КБ
      Просмотров:
      6
  17. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Ktyf не увидел ответа:
  18. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    да, каюсь - просмотрела...
    Сейчас проверила - все то же.
  19. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Вы знаете, только сейчас сообразила, что у меня есть еще одно "тонкое" место (особенно в плане моего понимания): сама платформа у меня стоит на другом компьютере-сервере. Я запускаю ее через ярлык ссылающийся на 1cv8\common\1cestart.exe , база и компонента - на моей машине. Куда и как тянется информация при файловом режиме работы?
    Просто у меня сейчас еще один глюк вылез, связанный с обновлением формы - тут уж на компоненту не свалишь.
  20. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    "Маразм крепчал" - у меня других слов просто нет. Итак при открытии основной формы обработки, я по определенному условия решаю, что мне нужна другая форма этой же обработки и открываю ее.
    И во второй форме пишу код
    Код:
    &НаКлиенте
    Процедура Команда1(Команда)
        //Элементы.Группа1.Видимость = Истина;
        Элементы.Группа2.Видимость = Ложь;
    КонецПроцедуры
    
    &НаКлиенте
    Процедура тзПриАктивизацииСтроки(Элемент)
        Если НЕ ПризнакОткрытия Тогда
            ПризнакОткрытия = истина;
            Возврат;
        КонецЕсли;
        Элементы.Группа1.Видимость = Ложь;
        Элементы.Группа2.Видимость = Истина;
    КонецПроцедуры
    
    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
        Для инд=0 по 2 Цикл
            новСтр = тз.Добавить();
            новСтр.Реквизит1ТЗ = инд;
            новСтр.Реквизит2ТЗ = инд;
        КонецЦикла;
    КонецПроцедуры
    
    У меня изначально установлено Группа1.Видимость = Истина, Группа2.Видимость = Ложь. При открытии я просто заполняю реквизит формы ТЗ. Когда после открытия я выбираю строку ТЗ, срабатывает событие тзПриАктивизацииСтроки и просто меняет видимости этих двух групп. В группе2 есть кнопка (Команда1). Когда нажимаю ее видимость должна вернуться в изначальную. Конечно в реале есть еще алгоритмы и условия, но сейчас они не имею значения потому, что когда я возвращаю видимость Группе1 предприятие опять вываливается!!! Причем сама строка в отладчике проходит нормально, но при возвращении в интерфейс (т.е. как я понимаю при перерисовке формы) - дамп. Проверяла на 3-х компах - везде одинаково!!!!
    --- Объединение сообщений, 2 дек 2015 ---
    Вот как выглядит форма

    Вложения:

    • 1.png
      1.png
      Размер файла:
      6,9 КБ
      Просмотров:
      2
    Последнее редактирование: 2 дек 2015

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