Имя: Пароль:
1C
1C 7.7
v7: Загадочный вылет 1С 7.7 с табличным полем
0 ildary
 
29.04.15
22:54
Уважаемые специалисты, посоветуйте пожалуйста, как исправить следующую проблему: сделал обработку с табличным полем, она работает, все довольны, на том же самом компьютере скопировал ее в другую конфигурацию (со всеми требуемыми функциями и вызовами ВК) - и в новой конфигурации начались странные вылеты - если открыть обработку и попробовать открыть какой-нибудь документ дабл-кликом по нему. Проверил все, включая классы и ВК - обновил все до версий, рекомендуемых сайтом 1С++ - но вылеты не исчезли. Куда лучше посмотреть в данном случае?
1 FN
 
29.04.15
22:58
в отладчик посмотри. после какой строки кода вылетает...

обычно такое происходит когда дергаешь форму до ее создания. ну или конфликт ВК
2 Garykom
 
гуру
29.04.15
23:26
(0) "downgrade" спасет отца русской демократии...
3 EvgeniuXP
 
29.04.15
23:29
(2) +100500
4 ADirks
 
30.04.15
08:04
Если поставщик данных ODBC, то проверь ключ порядка на предмет уникальности. Это основной источник загадочных падений ТП.

Версию 1С++ лучше взять самую последнюю, 3.2.4.2
http://www.1cpp.ru/forum/YaBB.pl?num=1332077808/5#5
http://www.1cpp.ru/forum/YaBB.pl?num=1390467243
5 ildary
 
30.04.15
14:26
(4) поставщик данных - документ. Версия 1с++: 3.2.4.1, менять пока боюсь - в Вашей версии внесены изменения, которые касаются классов, я пока не готов их менять.

(1) спасибо за совет, я с горя не догадался так поступить. Заремливание помогло, вылетает вот такой код (валится последняя процедура:

Функция   глТП_ПолучитьТекКолТП( ТабПоле, ТекКол = "" ) Экспорт
    
    Если ПустоеЗначение( ТекКол ) = 1 Тогда
        
        ТекКол = ТабПоле.ТекущаяКолонка.Имя;
        
    КонецЕсли;
    
    Если Прав( ТекКол, 3 ) = "Вид" Тогда
        
        ТекКол = Лев( ТекКол, СтрДлина(ТекКол) - 3 );
        
    КонецЕсли;
    
    Возврат ТекКол;
    
КонецФункции

Функция   ПередНачаломИзмененияТП( ТабПоле, ТекКол, ФСО )
    
    Если Найти( "/Пометка/", "/" + ТекКол + "/" ) <> 0 Тогда //Возврат 0 - т.к. отработает ПриВыбореФлажка
        
        Возврат 0;
        
    КонецЕсли;
    
    ТекКол = глТП_ПолучитьТекКолТП( ТабПоле );

    Возврат 1;
    
КонецФункции //ПередНачаломИзмененияТП

Процедура тпДокументПередНачаломИзменения( ТабПоле, ФСО )
    
    ТекКол = "";
    
    Если ПередНачаломИзмененияТП( ТабПоле, ТекКол, ФСО ) = 0 Тогда //Возврат
        
        Возврат;
        
    КонецЕсли;
    
    ФСО = 0;
    
    ТекТаб  = ТабПоле.ТекущиеДанные;
    ТекЗнач = ТекТаб.Получить( ТекКол );
    
    ОткрытьФорму( ТекТаб.Получить( "ТекущийДокумент" ),, -1 );
    
КонецПроцедуры //ПередНачаломИзменения
6 trad
 
30.04.15
14:44
тпДокументПередНачаломИзменения откуда вызывается эта процедура? У базового ТП такого события нет.
Класс "ПоставщикДанных"? http://www.1cpp.ru/forum/YaBB.pl?num=1273512019
1. Если он сравни версии этого класса в обеих конфах.
2. Установи крайнюю версию этого класса
3. Напиши так
ТекТаб  = ТабПоле.ТекущиеДанные;
Если ПустоеЗначение(ТекТаб)=0 Тогда
    ТекЗнач = ТекТаб.Получить( ТекКол );
    
    ОткрытьФорму( ТекТаб.Получить( "ТекущийДокумент" ),, -1 );
КонецЕсли;
7 ildary
 
30.04.15
15:23
На форме создано табличное поле тпДокумент, процедура тпДокументПередНачаломИзменения() - является унаследованной от ПередНачаломИзменения(). Ну по крайней меря я так думал.
8 sapphire
 
30.04.15
15:28
(0) 1С++
загружаешь дважды
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший