|
v7: Присвоить значение строке в ТЗ | ☑ | ||
---|---|---|---|---|
0
Patrio_
O_Muerte 03.07.12
✎
09:08
|
Здарова други.
Треба помощь. На форме есть ТЗ, с колонкой типа справочник.контрагент, при двойном нажатии на колонку открывается справочник контрагенты. Необходимо, чтобы при выборе контрагента (элемент) форма справочника закрывалась и в текущую строку ТЗ в тыкнутую колонку устанавливалось выбранное значение. |
34 |
||
1
Pro-tone
модератор
03.07.12
✎
09:10
|
Если ТЗ.ТекущаяКолонка()="Контрагент" Тогда
ОткрытьПодбор, затем ОбработкаПодбора |
|||
2
1Сергей
03.07.12
✎
09:16
|
Процедура ОбработкаТаблицыЗначенийНаФорме()
ТекСтрока = ТЗ.ТекущаяСтрока(); ТекКолонка = ТЗ.ТекущаяКолонка(); Если (ТекСтрока=0) Тогда Возврат; КонецЕсли; ТЗ.ПолучитьСтрокуПоНомеру(ТС); Если (ТекКолонка = "Контрагент") Тогда СпрКонтрагенты = СоздатьОбъект("Справочник.Контрагенты"); СпрКонтрагенты.НайтиЭлемент(ТЗ.Контрагент); Если СпрКонтрагенты.Выбрать("Выберите контрика", "")<>1 Тогда Возврат; КонецЕсли; ТЗ.Контрагент = СпрКонтрагенты.ТекущийЭлемент(); КонецЕсли; КонецПроцедуры |
40 43 |
||
3
1Сергей
03.07.12
✎
09:16
|
* ТЗ.ПолучитьСтрокуПоНомеру(ТекСтрока);
|
|||
4
dk
03.07.12
✎
09:16
|
или еще проще
|
|||
5
Patrio_
O_Muerte 03.07.12
✎
09:16
|
Процедура ОбработатьНажатие()
Если ТЗ.ТекущаяКолонка() = "Контрагент" Тогда ОткрытьПодбор("Справочник.Контрагенты","ДляВыбора",КонтФ,,); ИначеЕсли ТЗ.ТекущаяКолонка() = "Агент" Тогда ИначеЕсли ТЗ.ТекущаяКолонка() = "Статус" Тогда КонецЕсли; КонецПроцедуры Процедура ОбработкаПодбора(Эл,Конт) ТЗ.Контрагент = Эл.ТекущийЭлемент(); КонецПроцедуры В ОбработкаПодбора() заходит, а значение неприсваивает. |
10 21 |
||
6
Patrio_
O_Muerte 03.07.12
✎
09:17
|
Эл.ТекущийЭлемент() в отладчике равен контрагенту, а ТЗ.Контрагент и после строки присваивания пустое.
|
7 8 9 |
||
7
Mikeware
03.07.12
✎
09:17
|
(6) Значит, соотношение радиусов стремится к нулю...
|
|||
8
dk
03.07.12
✎
09:18
|
(6) проверь типизацию колонок ТЗ
|
|||
9
Pro-tone
модератор
03.07.12
✎
09:18
|
(6) тип колонки смотри )
|
|||
10
1Сергей
03.07.12
✎
09:19
|
(5) на строке спозиционироваться надо
|
11 14 |
||
11
viktor_vv
03.07.12
✎
09:19
|
(10)+ Либо ТЗ.УстановитьЗначение().
|
|||
12
Patrio_
O_Muerte 03.07.12
✎
09:20
|
ТЗ.НоваяКолонка("Контрагент","Справочник.Контрагенты");
ТЗ.НоваяКолонка("Агент","Справочник.КПКАгенты"); ТЗ.НоваяКолонка("Статус"); |
|||
13
Patrio_
O_Muerte 03.07.12
✎
09:20
|
При открытии
|
|||
14
Patrio_
O_Muerte 03.07.12
✎
09:21
|
(10)Ок, попробую
|
|||
15
Pro-tone
модератор
03.07.12
✎
09:21
|
Перем ТекСтрокаТЗ;
|
27 37 |
||
16
Patrio_
O_Muerte 03.07.12
✎
09:32
|
Благодарю, заработало.
Тока там еще строку новую добавлять надо. |
22 23 |
||
17
Mikeware
03.07.12
✎
09:33
|
Я ж говорю, соотношение радиусов...
|
18 |
||
18
Patrio_
O_Muerte 03.07.12
✎
09:33
|
(17)Евгений Ваганович, покиньте зал :)
|
19 |
||
19
Mikeware
03.07.12
✎
09:35
|
(18) клоун тут один - топикстартер...
|
20 |
||
20
Андрей_Андреич
naïve
03.07.12
✎
09:37
|
(19) Клоун клоуном, а сколько умники ему кода уже на халяву написали з а несколько лет?
|
21 |
||
21
Patrio_
O_Muerte 03.07.12
✎
09:40
|
||||
22
Pro-tone
модератор
03.07.12
✎
09:40
|
(16) то, как ты сформулировал добавлять ничего не надо
|
23 25 |
||
23
1Сергей
03.07.12
✎
09:41
|
25 |
|||
24
Patrio_
O_Muerte 03.07.12
✎
09:41
|
А вот "умникам" можно только благодарность выразить, поскольку они относятся без нездорового снобизма к просьбам о помощи.
|
|||
25
Patrio_
O_Muerte 03.07.12
✎
09:45
|
(22) (23)Хм, возможно, я где то неправ, но при такой конструкции:
Процедура ПриОткрытии() ТЗ.НоваяКолонка("Контрагент","Справочник.Контрагенты"); ТЗ.НоваяКолонка("Агент","Справочник.КПКАгенты"); ТЗ.НоваяКолонка("Статус"); КонецПроцедуры Процедура ОбработкаПодбора(Эл,Конт) ТЗ.ПолучитьСтрокуПоНомеру(ТекСтрокаТЗ); ТЗ.Контрагент = Эл.ТекущийЭлемент(); КонецПроцедуры Процедура ОбработатьНажатие() ТекСтрокаТЗ = ТЗ.ТекущаяСтрока(); Если ТЗ.ТекущаяКолонка() = "Контрагент" Тогда ОткрытьПодбор("Справочник.Контрагенты","ДляВыбора",КонтФ,,); ИначеЕсли ТЗ.ТекущаяКолонка() = "Агент" Тогда ИначеЕсли ТЗ.ТекущаяКолонка() = "Статус" Тогда КонецЕсли; КонецПроцедуры Вот на этой строке: ТЗ.ПолучитьСтрокуПоНомеру(ТекСтрокаТЗ); ошибка "Номер за пределами значения", Отладчик дает ТекСтрокаТЗ = 0. Пришлось при открытии НоваяСтрока() и кнопку прикрутить НоваяСтрока(). |
27 33 |
||
26
1Сергей
03.07.12
✎
09:48
|
лучше бы сделал как у меня
|
|||
27
Pro-tone
модератор
03.07.12
✎
09:48
|
||||
28
Pro-tone
модератор
03.07.12
✎
09:49
|
переменную кто объявлять будет "ТекСтрокаТЗ" ?
|
|||
29
Patrio_
O_Muerte 03.07.12
✎
09:49
|
Перем КонтФ, ТекСтрокаТЗ;
Она у меня объявлена. |
31 |
||
30
Patrio_
O_Muerte 03.07.12
✎
09:50
|
Перем КонтФ, ТекСтрокаТЗ;
//******************************************* Процедура Сформировать() ТЗ.НоваяСтрока() КонецПроцедуры Процедура ПриОткрытии() ТЗ.НоваяКолонка("Контрагент","Справочник.Контрагенты"); ТЗ.НоваяКолонка("Агент","Справочник.КПКАгенты"); ТЗ.НоваяКолонка("Статус"); ТЗ.НоваяСтрока(); КонецПроцедуры Процедура ОбработкаПодбора(Эл,Конт) ТЗ.ПолучитьСтрокуПоНомеру(ТекСтрокаТЗ); ТЗ.Контрагент = Эл.ТекущийЭлемент(); КонецПроцедуры Процедура ОбработатьНажатие() ТекСтрокаТЗ = ТЗ.ТекущаяСтрока(); Если ТЗ.ТекущаяКолонка() = "Контрагент" Тогда ОткрытьПодбор("Справочник.Контрагенты","ДляВыбора",КонтФ,,); ИначеЕсли ТЗ.ТекущаяКолонка() = "Агент" Тогда ИначеЕсли ТЗ.ТекущаяКолонка() = "Статус" Тогда КонецЕсли; КонецПроцедуры |
|||
31
1Сергей
03.07.12
✎
09:51
|
(29) смотри где она обнуляется
|
38 |
||
32
Patrio_
O_Muerte 03.07.12
✎
09:52
|
Если я из этой конструкции убираю НоваяСтрока()
Получается ошибка. |
|||
33
Patrio_
O_Muerte 03.07.12
✎
09:52
|
ТЗ.ПолучитьСтрокуПоНомеру(ТекСтрокаТЗ);
{D:\УСТАНОВИТЬ СТАТУСЫ КОНТРАГЕНТОВ.ERT(25)}: Номер за пределами значения! |
36 |
||
34
Pro-tone
модератор
03.07.12
✎
09:52
|
читаем (0)
>На форме есть ТЗ, с колонкой типа справочник.контрагент, при двойном нажатии на колонку открывается справочник контрагенты. Необходимо, чтобы при выборе контрагента (элемент) форма справочника закрывалась и в текущую строку ТЗ в тыкнутую колонку устанавливалось выбранное значение. все тут поняли, что есть ТЗ заполненная строками, и ты хочешь щелкая по строке менять ее значение. Реализацию данного техзадания тебе тут написали ) |
38 |
||
35
Patrio_
O_Muerte 03.07.12
✎
09:52
|
Это при двойном нажатии на контрагента.
|
|||
36
1Сергей
03.07.12
✎
09:53
|
(33) Получается, у тебя пустая ТЗ? ппц...
|
39 |
||
37
Pro-tone
модератор
03.07.12
✎
09:54
|
ясное дело, если строк нет в ТЗ, то и обрабатывать нечего, я бы нарисовал кнопку на форме "+" и "-" - для добавления и удаления строк в ТЗ, и после того как ТЗ будет заполнена строками уже выполнять тот код, что в (15)
|
|||
38
Patrio_
O_Muerte 03.07.12
✎
09:54
|
40 |
|||
39
Patrio_
O_Muerte 03.07.12
✎
09:55
|
||||
40
1Сергей
03.07.12
✎
09:55
|
41 43 |
|||
41
Patrio_
O_Muerte 03.07.12
✎
09:58
|
(40)Да, тоже вариант, сразу не посмотрел.
|
|||
42
Pro-tone
модератор
03.07.12
✎
09:59
|
Процедура ОбработкаТаблицыЗначенийНаФорме()
ТекСтрока = ТЗ.ТекущаяСтрока(); ТекКолонка = ТЗ.ТекущаяКолонка(); Если (ТекСтрока=0) Тогда Предупреждение("Добавь строки-то сперва в ТЗ ё-мое!!!"); Возврат; КонецЕсли; ТЗ.ПолучитьСтрокуПоНомеру(ТС); Если (ТекКолонка = "Контрагент") Тогда СпрКонтрагенты = СоздатьОбъект("Справочник.Контрагенты"); СпрКонтрагенты.НайтиЭлемент(ТЗ.Контрагент); Если СпрКонтрагенты.Выбрать("Выберите контрика", "")<>1 Тогда Возврат; КонецЕсли; ТЗ.Контрагент = СпрКонтрагенты.ТекущийЭлемент(); КонецЕсли; КонецПроцедуры |
|||
43
Pro-tone
модератор
03.07.12
✎
10:00
|
44 |
|||
44
1Сергей
03.07.12
✎
10:10
|
(43) спс
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |