Имя: Пароль:
1C
1С v8
Ввод текста в текстовое поле как в аське
0 AnisaL
 
28.02.13
14:23
Добрый день! В документе 2 текстовых поля: одно большое - закрыто для пользователя, второе открыто. Юзер вводит текст в него, нажимает ентер и
текст попадает в 1-е поле. Т.е. как в аське получается. Подставляется дата, время и фио пользователя. Как сделать так, чтобы дата выводилась за одно открытие документа, а не с каждой строчкой?
1 AnisaL
 
28.02.13
14:24
Вот эта функция
Функция СформироватьКоммент()
   
   Если (Коментарий = "") Тогда
       ТекКоммент = Строка(ТекущаяДата()) + " " + Строка(глТекущийПользователь.Наименование) + " """+СокрЛП(ПолеВводаКомментарий)+"""";    
   Иначе    
       ТекКоммент = Коментарий + Символы.ПС + Строка(ТекущаяДата()) + " " + Строка(глТекущийПользователь.Наименование) + " """+СокрЛП(ПолеВводаКомментарий)+"""";
   КонецЕсли;
   
   Возврат ТекКоммент;
КонецФункции;
2 kosts
 
28.02.13
14:25
(0) Флаг какой нибудь используй, что уже вывел дату
3 AnisaL
 
28.02.13
14:25
(2) Только флаг? А какого-нибудь хитрого способа нету?
4 kosts
 
28.02.13
14:26
(3) Можно проанализировать полный коммент и смотреть есть там дата или нет...
5 andreymongol82
 
28.02.13
14:27
При открытии куда-нибудь запоминаем дату (датаоткрытия - текущаяДата())
и к примеру здесь
ТекКоммент = Строка(ТекущаяДата()) + " " + Строка(глТекущийПользователь.Наименование) + " """+СокрЛП(ПолеВводаКомментарий)+"""";  
заменяем ТекущаяДата() на ДатаОткрытия
6 MSII
 
28.02.13
14:27
(3) Флаг (переменная) самый хитрый. Все остальное затратнее. ИМХО.
7 AnisaL
 
28.02.13
14:30
(5) ну если заменим, то получится тоже самое
8 andreymongol82
 
28.02.13
14:31
(7) Как так?
9 AnisaL
 
28.02.13
14:32
(8) Ну что и было, я не поняла что этой заменой получим-то?
10 kosts
 
28.02.13
14:33
Может разрешить пользователю редактировать все новые добавленные строки комментария. А перед записью добавить к сохраняемому комментарию.
11 AnisaL
 
28.02.13
14:37
(10) Ну хотелось бы чтоб второе поле оставалось маленьким, комментарии бывают очень длинными
12 MSII
 
28.02.13
14:37
Да вы чего. Переменная модуля формы ПользовательУжеДобавилКомментарий при открытии формы выставляется в Ложь, при изменении ПолеВводаКомментарий в Истину, в функции СформироватьКоммент() проверяется. 3 строчки кода.
13 AnisaL
 
28.02.13
14:41
(12) Да, так проще всего )) Спасибо )
14 kosts
 
28.02.13
14:46
(13) Самое простое решение не всегда самое удобное
15 AnisaL
 
28.02.13
14:50
(14) Может быть) предложи другое))
16 AnisaL
 
28.02.13
15:07
Функция СформироватьКоммент()
   
   Если (ПользовательУжеДобавилКомментарий = Ложь)И(Коментарий = "") Тогда
       ТекКоммент = Строка(ТекущаяДата()) + " " + Строка(глТекущийПользователь.Наименование) + Символы.ПС +СокрЛП(ПолеВводаКомментарий);    
   ИначеЕсли (Коментарий <> "")И(ПользовательУжеДобавилКомментарий = Ложь) Тогда    
       ТекКоммент = Коментарий + Символы.ПС + Строка(ТекущаяДата())+ " " + Строка(глТекущийПользователь.Наименование) + Символы.ПС+СокрЛП(ПолеВводаКомментарий);
   Иначе
       ТекКоммент = Коментарий + Символы.ПС + " " + СокрЛП(ПолеВводаКомментарий);
   КонецЕсли;
   
   Возврат ТекКоммент;
КонецФункции;
Вот что получилось
17 kosts
 
28.02.13
15:07
(15) По крайней мере как нибудь сделал бы как в (10)
18 AnisaL
 
28.02.13
15:12
(17) а где их можно будет редактировать , в 1 или 2-м поле?
19 kosts
 
28.02.13
15:16
(16)
В 8-ке можно проще:

ИначеЕсли Коментарий <> "" И Не ПользовательУжеДобавилКомментарий Тогда


(18) Не в первом точно. Можно добавить кнопку "Редактировать" рядом первым полем где-то. По ней можно будет поменять открыть и поменять весь текст который еще не записан в БД. Возможно так. Может еще какие варианты есть.
20 AnisaL
 
28.02.13
15:34
(19) Да, точно) у меня после 7-ки привычка осталась (это к первому комменту)
21 AnisaL
 
28.02.13
15:36
(19) Ладно, пока на сегодня так оставлю) завтра поразбираюсь;)