Имя: Пароль:
 
1C
1C 7.7
v7: Документ с ТЧ глючит
0 воробей
 
16.01.13
16:44
Подскажите, что может быть, пожалуйста. Ситуация такая: На форме документа есть множество реквизитов с педалькой. В ТЧ этого документа две колонки тоже педальные. В режиме исполнения, когда пользователь бегает по форме документа, заполняет значениями реквизиты происходит глюк в ТЧ документа. Т.е., при выборе в ТЧ строки эта строка может глючно заполнится, не теми данными, либо вообще не заполнится...
В модуле пользуюсь методами ПриНачалеВыбораЗначения() и ОбработкаВыбораЗначения(). В обеих обработках присутствуют одни и те же реквизиты...
1 thezos
 
16.01.13
16:47
(0) что за педальные колонки?)))
2 1Сергей
 
16.01.13
16:48
педальные реквизиты :)
3 воробей
 
16.01.13
16:49
Почему глючит? Как найти косяк? В отладчике уже третий день бьюсь  - не могу уловить эту глючную ситуацию. Т.е., один раз выбираю строку - она глчит, а потом 20 раз можно её перевыбирать, и будет все нормально просчитываться...
4 vinogradъ
 
16.01.13
16:49
(0) "при выборе в ТЧ строки" это какое действие?
5 воробей
 
16.01.13
16:49
Педальные? Это значит, имеют возможность выбора)))
6 1Сергей
 
16.01.13
16:49
(3) ошибка в 15-ой строке

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

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

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