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