Имя: Пароль:
1C
 
Почему сбрасыывается результат изменений внесенных вручную в поля ввода?
0 2pac
 
13.10.04
18:47
Интересно почему такой глюк: На форме поля ввода заполняются какими то значениями при открытии формы + заполняется таблица значений на этой же форме, далее я произвожу изменения в ручную в этих полях ввода. Если начать перемещение курсора в таблице значений на этой же форме скролом (нажать мышкой на стрелку скрола вниз), то измененные значения полей ввода сбрасываются на прежние при смене строки в таблице значений. А если сперва щелкнуть по любой строке таблицы значений мышкой, то при этом  событиии и последующем перемещении скролом по таблице вверх или вниз, поля ввода не сбрасывают внесенные в них ранее изменения. Кто знает в чем тут дело? Помогите!
1 GrayT
 
13.10.04
18:51
Ты все скрол отлавливаешь? :)
Имхо, надо модуль смотреть. Большой?
2 2pac
 
13.10.04
18:55
Весь модуль формы 700 строк, процедура при открытии 80 строк
3 NS
 
13.10.04
18:56
А при чем тут процдура приоткрытии() ?
4 2pac
 
13.10.04
19:01
в процедуре при открытии происходит заполнение полей ввода и таблицы значений. Остальные процедуры не принимают вроде бы участия в глюке, до них даже дело не доходит.
5 NS
 
13.10.04
19:02
Когда ты ползаешь по форме - у тебя приоткрытии() давно уже отработала.
Нужно искать функцию в тексте на форме
6 Шапокляк
 
13.10.04
19:04
А не может быть такой ситуации, когда на форме где-то текст болтается с формулой в которой вызывается функция, что-то типа КонтрольДействийФормы(), которая отслеживает изменения формы и при этом значения в полях ввода зависят от текущей строки ТЗ? Я так понимаю, если Вы не позиционировались на какой-либо строке ТЗ, а сразу скорлом ее листаете, то Текущая строка в ТЗ не определена. А при такой неопределенности программа выполняет изменение этих полей путем возврата их к исходному положению.
7 2pac
 
13.10.04
19:09
(5)
на форме есть 4 текста:
1. Имеет формулу РабочаяДата()
2. Имеет формулу РабочаяДата()
3. Имеет формулу НазваниеПеременной
4. Имеет формулу Обработка скрола, но в ней нет пока ничего кроме возврата КакойтоПеременной
Остальные тексты не имееют формул, просто подписи полей.
8 NS
 
13.10.04
19:11
А в формулах этих полей ввода что?
9 Последний Будда
 
13.10.04
19:12
Пора на форуме вводить возможность вставлять скриншоты :)
10 2pac
 
13.10.04
19:17
(8)
формулы у полей ввода отсутствуют
11 2pac
 
13.10.04
19:19
(6)
Таблица спозиционирована на первой строке, и после нажатия на скрол позиция курсора меняется, о чём любезно пищется в окне сообщений с помощью(Сообщить(...))
12 NS
 
13.10.04
19:19
Начинаю вспоминать... начинаю вспоминать....
13 NS
 
13.10.04
19:29
Вспомнил - это глюк 1С - в модуле можешь не копаться.
14 2pac
 
13.10.04
19:30
ах они сюки!
И че с ним делать теперь?...
15 NS
 
13.10.04
19:38
у тебя в приоткрытии ТЗ заполняется?
Установи Тз.Текущаястрока(1);
16 2pac
 
13.10.04
19:44
(15)
попробывал. Че то не помогает
17 2pac
 
13.10.04
19:47
А как сделать активным элементом на форме ТЗ?
18 NS
 
13.10.04
19:48
Процедуру приоткрытии() можешь выложить?
19 2pac
 
13.10.04
19:50
выложу, подожди пять сек
20 2pac
 
13.10.04
19:56
только комментарии тут не совсем корректные (потому что, в неё вырезались куски из других процедур)

Процедура ПриОткрытии()
ОчиститьОкноСообщений();
Сигнал();
Сообщить("При открытии");
Форма.Параметр.Форма.ТолькоПросмотр(1);
Форма.Параметр.Форма.КнопкаЛюдиОбъекта.Доступность(0);
Форма.Параметр.Форма.КнопкаЗакрытьЛюдиОбъекта.Доступность(0);    
// Заполнение полей ввода значениями глобальных переменных, значения которых
// были ранее присвоены в модуле формы списка Справочник.Объекты по значению
// текущего элемента
ПолеВводаНаименованиеОбъекта = НаименованиеОбъекта;
ПолеВводаN_inv_NewОбъекта = N_inv_NewОбъекта;
ПолеВводаN_OLDОбъекта = N_OLDОбъекта;
ПолеВводаN_inv_OLDОбъекта = N_inv_OLDОбъекта;
ПолеВводаTОбъекта = TОбъекта;
ПолеВводаКомментарийОбъекта = КомментарийОбъекта;
//Сообщить("Поля Объекта заполнены");
// Создаём необходимые для работы переменные со ссылками на объекты типа справочник
// Справочник.ОбъектыДетали для создания выоборки всех элементов по реквизиту "КлонНаименования"
// с участием текущего кода объекта (находим строки связей объекта и людей, (один ко многим))
// и Справочник.Люди для получения данных людей по их Кодам, которые содержатся в предыдущей
// выборке по текущему объекту из Справочник.ОбъектыДетали
СпрОбкДет = СоздатьОбъект ("Справочник.ОбъектыДетали");
СпрЛюди = СоздатьОбъект ("Справочник.Люди");
СпрЛюди.ИспользоватьДату(РабочаяДата());
СпрОбкДет.ВыбратьЭлементыПоРеквизиту("КлонНаименования",КодОбъекта,1,0);
// Форматируем Таблицу Значений (задаём колонки, их ширину и заголовки)
ТаблицаИсторияЛюдейОбъекта.НоваяКолонка("КолонкаФИО","Строка", , ,"Фамилия, Имя, Отчество",40, ,1);
ТаблицаИсторияЛюдейОбъекта.НоваяКолонка("КолонкаДатаНачалаСрокаДействия","Дата", , ,"Дата Начала Срока Действия",10, ,1);
ТаблицаИсторияЛюдейОбъекта.НоваяКолонка("КолонкаДатаОкончанияСрокаДействия","Дата", , ,"Дата Окончания Срока Действия",10, ,1);
ТаблицаИсторияЛюдейОбъекта.НоваяКолонка("КолонкаКод","Строка", , ,"Код",5, ,1);
//Перебераем все элементы выборки из справочника связей - Справочник.ОбъектыДетали
r=0;
Пока СпрОбкДет.ПолучитьЭлемент() > 0 Цикл
// Получаем значения атрибутов текущего элемента выборки и присваиваем их соотв глобал перемен  
КодЧеловекаДеталиОбъекта = СпрОбкДет.ПолучитьАтрибут ("КодЧеловека");
ДатаНачалаДеталиОбъекта = СпрОбкДет.ПолучитьАтрибут ("ДатаНачала");
ДатаОкончанияДеталиОбъекта = СпрОбкДет.ПолучитьАтрибут ("ДатаОкончания");
// Находим данные человека по его коду содержащемуся в текущем элементе выборки
СпрЛюди.НайтиПоКоду (КодЧеловекаДеталиОбъекта);
НаименованиеЛюди = СпрЛюди.ПолучитьАтрибут ("Наименование");
r=r+1;
// Создаём в таблице значений новую строку и заносим в неё ФИО из Справочник.Люди
// и дату начала, дату окончания и код человека из Справочник.ОбъектыДетали,
// и так в цикле пока не занесём все элементы выборки в таблицу значений
ТаблицаИсторияЛюдейОбъекта.НоваяСтрока(r);
ТаблицаИсторияЛюдейОбъекта.УстановитьЗначение(r,1,НаименованиеЛюди);
ТаблицаИсторияЛюдейОбъекта.УстановитьЗначение(r,2,ДатаНачалаДеталиОбъекта);
ТаблицаИсторияЛюдейОбъекта.УстановитьЗначение(r,3,ДатаОкончанияДеталиОбъекта);
ТаблицаИсторияЛюдейОбъекта.УстановитьЗначение(r,4,КодЧеловекаДеталиОбъекта);
КонецЦикла;
//Сообщить("Таблица заполнена");
// Заполняем поля ввода человека значением данных первого человека в таблице
// найдя данные в Справочник.Люди по наименованию взятому из первой строки таблицы

Если (ТаблицаИсторияЛюдейОбъекта.КоличествоСтрок()) <> 0 Тогда
КодЛюди = ТаблицаИсторияЛюдейОбъекта.ПолучитьЗначение(1,4);
СпрЛюди = СоздатьОбъект ("Справочник.Люди");
СпрЛюди.ИспользоватьДату(РабочаяДата());
СпрЛюди.НайтиПоКоду (КодЛюди);
// Получаем значения атрибутов и присваиваем их соответствующим глобальным переменным
КодЛюди =  СпрЛюди.ПолучитьАтрибут ("Код");
НаименованиеЛюди = СпрЛюди.ПолучитьАтрибут ("Наименование");
ДатаРожденияЛюди = СпрЛюди.ПолучитьАтрибут ("ДатаРождения");
ПаспортЛюди = СпрЛюди.ПолучитьАтрибут ("Паспорт");
АдресЛюди = СпрЛюди.ПолучитьАтрибут ("Адрес");
ТелефонЛюди = СпрЛюди.ПолучитьАтрибут ("Телефон");
КомментарийЛюди = СпрЛюди.ПолучитьАтрибут ("Комментарий");
// Присваиваем значения глобальны переменных полям ввода человека
ПолеВводаНаименованиеЛюди = НаименованиеЛюди;
ПолеВводаДатаРожденияЛюди = ДатаРожденияЛюди;
ПолеВводаПаспортЛюди = ПаспортЛюди;
ПолеВводаАдресЛюди = АдресЛюди;
ПолеВводаТелефонЛюди = ТелефонЛюди;
ПолеВводаКомментарийЛюди = КомментарийЛюди;
//Сообщить("Если (ТаблицаИсторияЛюдейОбъекта.КоличествоСтрок()) <> 0 Тогда");
Иначе
//КодЛюди = 0;
//СпрЛюди = СоздатьОбъект ("Справочник.Люди");
//СпрЛюди.ИспользоватьДату(РабочаяДата());
//СпрЛюди.НайтиПоКоду (КодЛюди);
// Получаем значения атрибутов и присваиваем их соответствующим глобальным переменным
//КодЛюди =  СпрЛюди.ПолучитьАтрибут ("Код");
//НаименованиеЛюди = СпрЛюди.ПолучитьАтрибут ("Наименование");
//ДатаРожденияЛюди = СпрЛюди.ПолучитьАтрибут ("ДатаРождения");
//ПаспортЛюди = СпрЛюди.ПолучитьАтрибут ("Паспорт");
//АдресЛюди = СпрЛюди.ПолучитьАтрибут ("Адрес");
//ТелефонЛюди = СпрЛюди.ПолучитьАтрибут ("Телефон");
//КомментарийЛюди = СпрЛюди.ПолучитьАтрибут ("Комментарий");

//ТаблицаИсторияЛюдейОбъекта.НоваяСтрока(1);
//ТаблицаИсторияЛюдейОбъекта.УстановитьЗначение(1,1,0);
//ТаблицаИсторияЛюдейОбъекта.УстановитьЗначение(1,2,0);
//ТаблицаИсторияЛюдейОбъекта.УстановитьЗначение(1,3,0);
//ТаблицаИсторияЛюдейОбъекта.УстановитьЗначение(1,4,0);
КонецЕсли;    
ТаблицаИсторияЛюдейОбъекта.ТекущаяСтрока(1);
КонецПроцедуры
21 2pac
 
13.10.04
20:25
А просто отдельно создал обработку имитирующую данную ситуацию, этого глюка нет!!!???
22 2pac
 
13.10.04
20:51
Нашёл!!! Только че делать не знаю. Глюк появляется как только на форму помещаешь текст с любой формулой.
23 2pac
 
13.10.04
20:53
А если текст без формулы, то глюка нет.
24 Рупор абсурда
 
13.10.04
21:01
Гы ... :))
25 2pac
 
13.10.04
21:09
Получается, что проблема неустранима???
26 2pac
 
13.10.04
21:22
Отсюда мораль, хренов скролл, отловив, толком не обработаешь, он глючит собака, то сбрасывает поля то не сбрасывает, вот и учти это все програмно.
27 GrayT
 
13.10.04
21:34
Проблема говоришь не устранима, а почему Рупор прикалываеться?
Не скролл хренов, он хороший. Прочто ты не смог его приготовить ;-)
Смотри что и как делает функция в формуле текста
28 2pac
 
13.10.04
21:39
Например формула РабочаяДата(), на что тут смотреть что и как она делает, а глюк уже появляется.
29 Рупор абсурда
 
13.10.04
22:18
Это не глюк ...
30 NS
 
13.10.04
22:51
Это глюк (обзывай его как хочешь), он обсуждался, и устраняется...
31 Рупор абсурда
 
13.10.04
22:56
(30) И вовсе не глюк ..., просто одна из прикольных особенностей ...
К тому же, иногда, весьма полезных ...
32 NS
 
13.10.04
23:00
(31) Хорошо, особенность...
33 2pac
 
14.10.04
11:41
Все перерыл, не могу найти где эта особенность ещё обсуждалась. Подскажите хоть как тема обзывалась.
34 2pac
 
14.10.04
14:49
(30)
Не могу найти где, не помнишь как тема называлась?
35 2pac
 
15.10.04
07:27
Есть тут кто живой?
36 2pac
 
15.10.04
07:33
А можно просто сказать как устранить эту особенность. Искать уже притомило.
37 F427
 
15.10.04
08:14
Прикольно...
38 2pac
 
15.10.04
12:30
to NS
Хоть ты отзовись, до рупора в рупор не доорешься.
39 2pac
 
15.10.04
12:36
Искать по этому форуму не зная ключевых слов той темы где это обсуждалось, все равно что иголку на сенозаготовительном заводе. Помогите. Плиз!
40 2pac
 
15.10.04
12:38
С кем тут нужно переспать, чтобы ответили на мой вопрос?
41 Пролд
 
15.10.04
12:41
(40) С кем тут нужно переспать, чтобы ответили на мой вопрос, про "с кем тут нужно переспать, чтобы ответили на мой вопрос, про "с кем тут нужно переспать, чтобы ответили на мой вопрос, про "с кем тут нужно переспать, чтобы ответили на мой вопрос"""?
42 2pac
 
15.10.04
12:51
А в описании встроенного языка, можно про эту прикольную особенность что-нибудь вычитать?
43 2pac
 
15.10.04
12:57
Похоже все забили, быстрее будет десять тысяч веток пересмотреть вручную, чем дождаться помощи.
44 2pac
 
15.10.04
18:36
Люди добрые!!! Ну помогите уже...
45 Оборотень
 
18.10.04
09:15
А что за движок то? Что-то я не помню, чтобы в 7.7 скролл отлавливался ...
Там у ТЗ одна всего лишь обработка клика по форме реализована ...
Посему если речь о 7.7, то смотреть что за процедура отрабатывает клик по ТЗ
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший