Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Документ с ТЧ глючит

v7: Документ с ТЧ глючит
Я
   воробей
 
16.01.13 - 16:44
Подскажите, что может быть, пожалуйста. Ситуация такая: На форме документа есть множество реквизитов с педалькой. В ТЧ этого документа две колонки тоже педальные. В режиме исполнения, когда пользователь бегает по форме документа, заполняет значениями реквизиты происходит глюк в ТЧ документа. Т.е., при выборе в ТЧ строки эта строка может глючно заполнится, не теми данными, либо вообще не заполнится...
В модуле пользуюсь методами ПриНачалеВыбораЗначения() и ОбработкаВыбораЗначения(). В обеих обработках присутствуют одни и те же реквизиты...
 
 
   thezos
 
1 - 16.01.13 - 16:47
(0) что за педальные колонки?)))
   1Сергей
 
2 - 16.01.13 - 16:48
педальные реквизиты :)
   воробей
 
3 - 16.01.13 - 16:49
Почему глючит? Как найти косяк? В отладчике уже третий день бьюсь  - не могу уловить эту глючную ситуацию. Т.е., один раз выбираю строку - она глчит, а потом 20 раз можно её перевыбирать, и будет все нормально просчитываться...
   vinogradъ
 
4 - 16.01.13 - 16:49
(0) "при выборе в ТЧ строки" это какое действие?
   воробей
 
5 - 16.01.13 - 16:49
Педальные? Это значит, имеют возможность выбора)))
   1Сергей
 
6 - 16.01.13 - 16:49
(3) ошибка в 15-ой строке
ЗЫ Фото - зачёт
   воробей
 
7 - 16.01.13 - 16:51
(4) Это когда можно воспользоваться insert, либо выбрать в самой ТЧ ревизит (это у меня ДокОсн, тип документ) двойным щелчком по мышке...
   thezos
 
8 - 16.01.13 - 16:52
непонятно, высылайте видео ошибки
   vinogradъ
 
9 - 16.01.13 - 16:52
(7) это 2 разных события
   воробей
 
10 - 16.01.13 - 16:54
Может код выслать? Обеих обработок? Явно, что-то в них не так...
 
 Рекламное место пустует
   воробей
 
11 - 16.01.13 - 16:54
ПриНачалеВыбораЗначения() и ОбработкаВыбораЗначения()
   Ёпрст
 
12 - 16.01.13 - 16:54
(0) ошибка в 147 строке
   Cthulhu
 
13 - 16.01.13 - 17:03
Глюк(и) в ПрНачалеВыбораЗначения() и/или в ОбработкаВыбораЗначения(). Возможно - в процедурах/функциях, вызываемых из формул реквизитов.
скорее всего из-за того, что в них не учитывается тот факт, что вводдимая по Ins новая стрка - ещё не существует и отличяется от строки с НомерСтроки. ну или из-за слета фокуса. например.
   vinogradъ
 
14 - 16.01.13 - 17:05
(13) нет, (12)
   воробей
 
15 - 16.01.13 - 17:09
Там, знаете, что происходит? Если пользователь "бегает" по форме, выбирая то один реквизит, то другой, то в какой-то момент форма будто блокируется и инсерт, и энтер становятся неактивными действиями. После этого если все же добится возможности выбора нового документа (в ТЧ это колонка ДокОсн), то строка на основании выбранного документа заполнятся глючно...
   viktor_vv
 
16 - 16.01.13 - 17:09
Может некорректно обрабатывается из какого реквизита инициализирован (слово-то какое трудное :)) выбор значения.
   воробей
 
17 - 16.01.13 - 17:11
Там, знаете, что происходит? Если пользователь "бегает" по форме, выбирая то один реквизит, то другой, то в какой-то момент форма будто блокируется и инсерт, и энтер становятся неактивными действиями. После этого если все же добится возможности выбора НОВОЙ СТРОЧКИ (в ТЧ это колонка ДокОсн), то строка на основании выбранного документа заполнятся глючно...
   viktor_vv
 
18 - 16.01.13 - 17:11
(15) Не мешало бы немного кода подкинуть.
   воробей
 
19 - 16.01.13 - 17:12
Вы смеетесь надо мной?
   viktor_vv
 
20 - 16.01.13 - 17:15
(19) Нет.
Вежливо намекают на то, что маловато исходных данных, для того, чтобы помочь вразумительным советом.
   воробей
 
21 - 16.01.13 - 17:19
Тогда высылаю код:
   oslokot
 
22 - 16.01.13 - 17:20
странный код...
   воробей
 
23 - 16.01.13 - 17:21
Процедура ОбработкаВыбораЗначения(ВыбЗнач,ИдентЭлемДиалога,ФлагСтандОбр)
        ЗапретВводаСтроки = 0;
        
        
        НомСтроки = НомерСтроки;
        Если  ИдентЭлемДиалога = "ДокОснование"  Тогда
            ВыбратьСтроки();
            Пока ПолучитьСтроку() = 1 Цикл
                Если  ВыбЗнач = ДокОснование Тогда
                    Предупреждение("Документ ПН " +ВыбЗнач+" уже выбран в текущем документе. Выберите другой документ!"); 
                    Сообщить("Документ ПН " +ВыбЗнач+" уже выбран в текущем документе. Выберите другой документ!");
                    ФлагСтандОбр = 0;            
                    Возврат;
                КонецЕсли;
            КонецЦикла;  
           //НомСтроки = НомерСтроки;
 
            ЗаполнитьСтроку(ВыбЗнач,НомСтроки); 
            Если ЗапретВводаСтроки = 1 Тогда
                ЗапретВводаСтроки = 0;
                ВыбЗнач = "";
                Возврат;
            КонецЕсли;
        КонецЕсли;
        СпКом1 = "";
        Для в = 1 по ТЗКомм.РазмерСписка() Цикл
            СпКом1 = СпКом1 + ТЗКомм.ПолучитьЗначение(в) + РазделительСтрок;
        КонецЦикла;    
       //ЭтаСтрокаЗаполнена = 0;    
 
    КонецПроцедуры //ОбработкаВыбораЗначения(ВыбЗнач,ИдентЭлемДиалога,ФлагСтандОбр)
   воробей
 
24 - 16.01.13 - 17:21
Процедура ПриНачалеВыбораЗначения(ИдентЭлемДиалога, ФлагСтандОбр)
        
        Перем Действие,Д;
        Если ИдентЭлемДиалога = "НомДоговора" Тогда
            Если ПустоеЗначение(Поставщик) = 1 Тогда
                Предупреждение("Укажите поставщика!");
                Возврат;
            КонецЕсли;
            
            Поставщик1 = Поставщик;
            ОткрытьПодбор("Справочник.ДоговораПоставщиков","ФормаСписка",Поставщик1);  //171717
 
        КонецЕсли;
        
        Если  ИдентЭлемДиалога = "РСчет"  Тогда
            БИК      = "";
            Банк     = "";
            КоррСчет = "";
            РСчет    = "";
            РСчет1   = "";
        КонецЕсли; 
        
        Если  ИдентЭлемДиалога = "Орг"  Тогда
            Если ПустоеЗначение(Поставщик) = 1 Тогда
                Предупреждение("Укажите поставщика!");
                Орг = "";СтатусВозврата(0);    
            КонецЕсли;
        КонецЕсли;
        Если  ИдентЭлемДиалога = "ДокОснование"  Тогда
            ФлагСтандОбр   = 0;
            Если ПустоеЗначение(Поставщик) = 1 Тогда Предупреждение("Выберите поставщика!"); Возврат; КонецЕсли;
            Поставщик1 = Поставщик;    
            ОткрытьПодбор("Журнал.ПрихНаклДляЗаявок","ФормаСписка",Поставщик1,0);    
        КонецЕсли;
        
    КонецПроцедуры   //Конец процедуры ПриНачалеВыбораЗначения(ИдентЭлемДиалога, ФлагСтандОбр)
   Dolly_EV
 
25 - 16.01.13 - 17:26
что происходит в ЗаполнитьСтроку(ВыбЗнач,НомСтроки);?
ЗапретВводаСтроки - описана в Перем?
   воробей
 
26 - 16.01.13 - 17:32
в Заполнитьстроку() происходят вычисления при разных условиях, затем там я прописываю ПолучитьСтрокуПоНомеру(НомСтроки); Затем прописываю строку ДокОсн =...., НомДог = ...., и.т. т.е. заполняю строку вычисленными значениями , которые есть в ТЧ
   воробей
 
27 - 16.01.13 - 17:33
ЗапретВводаСтроки = 0 в начале процедуры
   воробей
 
28 - 16.01.13 - 17:34
В Перем не описана...
   viktor_vv
 
29 - 16.01.13 - 17:36
Таки ПолучитьСтрокуПоНомеру(НомСтроки) дял новой строки может некорректно работать.
Попробуй убрать ПолучитьСтрокуПоНомеру, все равно в контексте документа для текущей строки должно выполнятся.
Правда Выборка может сбивать.
   Cthulhu
 
30 - 16.01.13 - 17:38
(23): то, о чем я говорил.
при выборе значения в новую строку - строго--насрого запрещается сбивать с неё фокус. ты же своим перебором строк (сменой активной строки) сама все глюки и делаешь.
   viktor_vv
 
31 - 16.01.13 - 17:41
Лучше таки выгрузить в СписокЗначений колонку и проверять Принадлежит().
   Ёпрст
 
32 - 16.01.13 - 17:41
+ делать ОткрытьПодбор лишено смысла в ПриНачалеВыбораЗначения
Это равносильно ОткрытьФорму..
+ОбработкаПодбора не будет работать, все события прилетят в
ОбработкаВыбораЗначения
   Dolly_EV
 
33 - 16.01.13 - 17:42
После выбора ДокОснование - пихай его во временный СписокЗначений,

вместо
            ВыбратьСтроки();
            Пока ПолучитьСтроку() = 1 Цикл
                Если  ВыбЗнач = ДокОснование Тогда
                    Предупреждение("Документ ПН " +ВыбЗнач+" уже выбран в текущем документе. Выберите другой документ!"); 
                    Сообщить("Документ ПН " +ВыбЗнач+" уже выбран в текущем документе. Выберите другой документ!");
                    ФлагСтандОбр = 0;            
                    Возврат;
                КонецЕсли;
            КонецЦикла;  

Проверяй
Если ВремСписок.Принадлежит(ВыбЗнач)=1 Тогда
  ФСО=0; Возврат
КонецЕсли
 
 
   воробей
 
34 - 16.01.13 - 17:45
Поняла! Спасибо!!!!)))))
   воробей
 
35 - 16.01.13 - 17:46
И отказаться от ПолучитьСтрокуПоНомеру(НомСтроки) ???
   Cthulhu
 
36 - 16.01.13 - 17:47
(35): да!
выводи в окно сообщений - пусть читают и идут сами куда надо.
   viktor_vv
 
37 - 16.01.13 - 17:48
(35) Она не нужна будет, так как перебора строк не будет.
   PALESIA
 
38 - 16.01.13 - 17:50
(0) выгрузи ТЧ в ТЗ в своих обработках и работай с ними
   Mikeware
 
39 - 16.01.13 - 18:07
(6) только г.р. подкачал....
   PALESIA
 
40 - 16.01.13 - 18:08
(39) нифига не подкачал - мне, так за счастье)))
   Mikeware
 
41 - 16.01.13 - 18:16
(40) ну, думать они не умеют. а использовать по назначению - да, г.р. не мешает...


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует