|
Как получить обработку выбора другой формы? | ☑ | ||
---|---|---|---|---|
0
Miss1C
14.09.12
✎
15:54
|
Уважаемые знатоки, с вами играет Татьяна с Украины. В табличной части документа по кнопке, открывается обработка в которой выбирается контрагент, вопрос - как отловить выбранное значение и передать его в форму своего документа, для последующих действий?
|
|||
1
Maxus43
14.09.12
✎
15:56
|
зависит от формы обработки
|
|||
2
Maxus43
14.09.12
✎
15:56
|
лучше взять музыкальную паузу
|
|||
3
Miss1C
14.09.12
✎
15:56
|
В каком смысле?
|
|||
4
mikecool
14.09.12
✎
15:57
|
(3) на танец тебя приглашает
|
|||
5
Maxus43
14.09.12
✎
15:57
|
(3) например обработка по записи адреса - она сама возвращает значения в виде структуры в документ, это в ней прописано. в этой - хз что прописано
|
|||
6
mikecool
14.09.12
✎
15:58
|
(0) обработать событие передначаломвыбора по своему
|
|||
7
Maxus43
14.09.12
✎
15:58
|
(4) её бойфренд меня не поймёт(
|
|||
8
Miss1C
14.09.12
✎
16:02
|
Чтобы было понятно излагаемое, приведу подробный пример. Внизу выложу старые процедуры которые работали по старому механизму.
Процедура СписокРегионовВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ОбработатьВыбор(ВыбраннаяСтрока.Ссылка); Закрыть(); КонецПроцедуры ---------- Процедура модуля формы, больше ничего нет. Далее идут процедуры модуля обработки: Перем Объект; Перем ИмяТабличнойЧасти; Перем ТабличноеПолеОбъекта; Процедура Инициализировать(_Объект,_ИмяТабличнойЧасти,_ТабличноеПолеОбъекта) Экспорт Объект = _Объект; ИмяТабличнойЧасти = _ИмяТабличнойЧасти; ТабличноеПолеОбъекта = _ТабличноеПолеОбъекта; // выберем регион ФормаВыбора = ПолучитьФорму(); ФормаВыбора.РежимВыбора = Истина; ФормаВыбора.МножественныйВыбор = Ложь; ФормаВыбора.Открыть(); КонецПроцедуры Процедура ОбработатьВыбор(ЭлементВыбора) Экспорт // определим точки по региону ТекстЗапроса = "ВЫБРАТЬ | ТорговыеТочки.Владелец КАК Контрагент, | ТорговыеТочки.Ссылка КАК ТорговаяТочка |ИЗ | Справочник.ТорговыеТочки КАК ТорговыеТочки |ГДЕ | ТорговыеТочки.Регион В ИЕРАРХИИ (&Регион)"; Запрос = Новый Запрос(ТекстЗапроса); Запрос.УстановитьПараметр("Регион",ЭлементВыбора); ТаблицаТочек = Запрос.Выполнить().Выгрузить(); Если ТипЗнч(Объект) = Тип("СправочникОбъект.МаршрутыЭкспедиторов") Тогда Если ДоговорКонтрагента.КонтролироватьСрокДействияДоговора И ДатаОтгрузки > ДоговорКонтрагента.СрокДействия Тогда тглОбщегоНазначения.СообщитьПользователю("Срок действия договора истек : "+Формат(ДоговорКонтрагента.СрокДействия,"ДФ=dd.MM.yyyy")+". Заказы по этому контрагенту заблокированы!", , ТаблицаСообщений, Заказ.Контрагент, Заказ.ТорговаяТочка, Заказ.Ссылка); Если ИмяТабличнойЧасти = "Посещения" Тогда КоличествоТочек = Объект.Посещения.Количество(); Если КоличествоТочек > 0 Тогда Режим = РежимДиалогаВопрос.ДаНетОтмена; Ответ = Вопрос("Есть заполненные точки маршрута! Очистить эти точки перед заполнением?",Режим,0); Если Ответ = КодВозвратаДиалога.Отмена Тогда Возврат; КонецЕсли; Если Ответ = КодВозвратаДиалога.Да Тогда Объект.Посещения.Очистить(); КонецЕсли; КонецЕсли; Для каждого СтрокаТаблицы из ТаблицаТочек Цикл ТочкаВМаршруте = Объект.Посещения.Найти(СтрокаТаблицы.ТорговаяТочка,"ТорговаяТочка"); Если ТочкаВМаршруте = Неопределено Тогда НоваяСтрока = Объект.Посещения.Добавить(); НоваяСтрока.Контрагент = СтрокаТаблицы.Контрагент; НоваяСтрока.ТорговаяТочка = СтрокаТаблицы.ТорговаяТочка; КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры Я хочу последнюю процедуру переписать в своем документе |
|||
9
Miss1C
14.09.12
✎
16:03
|
Но чтобы ее переписать я должна получить выбранное значение с этой обработки, не знаю как это сделать
|
|||
10
vmv
14.09.12
✎
16:04
|
у нее 8.1 - динозавриха, а так можно было посоветовать модуль менеджера объекта
|
|||
11
Miss1C
14.09.12
✎
16:05
|
(10)Предлагала перейти на 8.2, ответили "Все в твоих руках")
|
|||
12
73
14.09.12
✎
16:06
|
(10) Смотри ОповеститьОВыборе
|
|||
13
Segate
14.09.12
✎
16:06
|
Предполжу, что тебя спасет процедура ОбработкаВыбора =)
|
|||
14
Aprobator
14.09.12
✎
16:07
|
лениво копаться - в типовых подбор посмотри в табличные части документов к примеру. Принцип тот же самый.
|
|||
15
Aprobator
14.09.12
✎
16:08
|
(13) при стандартная обработка = Ложь, как то слабовато верится.
|
|||
16
vmv
14.09.12
✎
16:09
|
(9) в 8.1 для описанной ситуации нужно открывать форму модально
возвращаемое модальной формой в режиме выбора значение - это и есть выбранное значение или массив строк при множественном выборе 2-0й вариант МояФорма.ОткурытьМодально(); // тут форма закрыта и можно читать ее контекст // если при закрытии формы прописать в реквизит формы // значение выбора, то его можно получить ВыбраноЗначение = МояФорма.РеквизитЗначенияВыбора; |
|||
17
Miss1C
14.09.12
✎
16:12
|
Я помню делала раньше как предложили в посте (10), но забыла уже
|
|||
18
Miss1C
14.09.12
✎
16:13
|
В посте (12)
|
|||
19
vmv
14.09.12
✎
16:14
|
(17) память девичья, мдя - вот так и доверяй юбкам)
|
|||
20
Stim
14.09.12
✎
16:14
|
Хорошее фото, спасибо
|
|||
21
Miss1C
14.09.12
✎
16:15
|
(20)Стареем)
|
|||
22
73
14.09.12
✎
16:16
|
Покажи код, как обработку открываешь
|
|||
23
vmv
14.09.12
✎
16:16
|
ВыбранныйКонтрагант = ФормаВыбора.ОткрытьМодально();
Если НЕ ЗначениеЗаполнено(ВыбранныйКонтрагант) Тогда Возврат; КонецЕсли; // Обрабатываем значение выбора //... // чево-нибудь еще |
|||
24
Miss1C
14.09.12
✎
16:17
|
(22)Обработка находится во внешних обработках заполнения табличных частей
|
|||
25
Segate
14.09.12
✎
16:17
|
(0) Послушай меня. ТАк проще! )))
Процедура КоманднаяПанель1Подбор(Кнопка) ФормаВыбора = Справочники.Контрагенты.ПолучитьФормуВыбора(,ЭтаФорма); ФормаВыбора.РежимВыбора = Истина; ФормаВыбора.ЗакрыватьПриВыборе = Ложь; ФормаВыбора.Открыть(); КонецПроцедуры Процедура ОбработкаВыбора(ЗначениеВыбора, Источник) //Здесь делаешь все че хочешь, и ничего тебе за это не будет КонецПроцедуры |
|||
26
mikecool
14.09.12
✎
16:18
|
(7) а какая тебе разница до ее бойфренда? )))
|
|||
27
vmv
14.09.12
✎
16:18
|
(21) да уж, скоро повят ярлык "старая дева" и замуж давай до сведания)
|
|||
28
Aprobator
14.09.12
✎
16:18
|
(25) во я же грил, подбор в типовых смотреть надо.
|
|||
29
Aprobator
14.09.12
✎
16:19
|
+(25)Небольшое уточнение - Процедура ОбработкаВыбора цепляется к событиям формы в целом.
|
|||
30
73
14.09.12
✎
16:19
|
Щас скажет, что на поддержке...
|
|||
31
Miss1C
14.09.12
✎
16:19
|
(25)Не ту форму открываешь)
|
|||
32
Aprobator
14.09.12
✎
16:20
|
неа.
|
|||
33
Miss1C
14.09.12
✎
16:20
|
Если бы я знала как обратится к форме моей обработки
|
|||
34
Miss1C
14.09.12
✎
16:21
|
Я ее загрузила во внешние обработки, указала для какого документа и для какой таб части
|
|||
35
vmv
14.09.12
✎
16:21
|
вобщем и целом все варианты предствлены и любая умная девица уже все поняла, а теперь "Маша - о главном"(с) Дубровский
|
|||
36
Aprobator
14.09.12
✎
16:22
|
пфф так там итак все типовым способом возвращается. В хелпе справочника внешние обработки и отчеты все описано.
|
|||
37
vmv
14.09.12
✎
16:22
|
(34) попахивает извращениями, уточняй
|
|||
38
73
14.09.12
✎
16:22
|
В форме обработки:
Процедура СписокРегионовВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ОповеститьОВыборе(ВыбраннаяСтрока.Ссылка); Закрыть(); КонецПроцедуры ---------- Процедура модуля формы, больше ничего нет. В форме дока : Процедура ОбработкаВыбора(ЗначениеВыбора, Источник) //Здесь делаешь все че хочешь, и ничего тебе за это не будет КонецПроцедуры |
|||
39
Miss1C
14.09.12
✎
16:22
|
(35)Я поняла как получить выбранное значение, как можно обратится к обработке?
|
|||
40
Segate
14.09.12
✎
16:23
|
(31) Объясни толком, что за форма твоей обработки? Тем более, что за бред, из конфы обращаться к внешним обработкам. Этож моветон =))
+ Если тебе надо не форму выбора, а какую то левую, то юзай вариант с модальным открытием, и передавай родителю |
|||
41
Aprobator
14.09.12
✎
16:23
|
(33) ВладелецФормы. Если при открытии формы обработки проскакивала ЭтаФорма.
|
|||
42
Aprobator
14.09.12
✎
16:26
|
(40) да ладно - обработки заполнения ТЧ.
|
|||
43
Aprobator
14.09.12
✎
16:27
|
+(41) и если ты находишься модуле формы обработки.
|
|||
44
Miss1C
14.09.12
✎
16:27
|
(40) Обычная обработка с обычной формой, чтобы не нарушать типовый объект я загрузила внешнюю обработку в внешние обработки по заполнению табличных частей - это справочник, как обратится к этой обработке чтобы открыть ее форму?
|
|||
45
vmv
14.09.12
✎
16:28
|
(41) наконец озвучено главное, ну конечно при выборе контрагента в формы выбора нужно передавать родительскую форму откуда производят выбор в форму выбора.
ну теперь все или мне клещи еще не прятать? |
|||
46
Aprobator
14.09.12
✎
16:29
|
(44) так кнопка сама появится в нужном месте. Там должна быть кнопка с надписью Заполнить с ниспадающим меню. Вот там она и появится.
|
|||
47
Miss1C
14.09.12
✎
16:30
|
запутали, я к ней обращаюсь но при нажатии кнопки, которая появилась в табличной части, кнопка появляется только в режиме предприятия, не знаю как отследить ее нажатие в конфигураторе
|
|||
48
Aprobator
14.09.12
✎
16:30
|
(45) судя по (44), ты явно поторопился )
|
|||
49
Aprobator
14.09.12
✎
16:30
|
(87) в конфигураторе никак.
|
|||
50
vmv
14.09.12
✎
16:30
|
(44) а
получить ссылку на элемент справочника "ВнешниеОтчетыИОбработки" с вашей обработкой из нее(ссылки) получить обработку, которая там зашита вроде в хранилище или бинарник - это просто щас пажи все расскажут, я пока коня почищу |
|||
51
Aprobator
14.09.12
✎
16:30
|
(49) к (47).
|
|||
52
Aprobator
14.09.12
✎
16:32
|
ты бы сказала сразу, что тебе надо отладить внешнюю обработку заполнения табличной части, а то сидим тут ребус разгадываем, а что надо в конечном счете то.
|
|||
53
Aprobator
14.09.12
✎
16:33
|
можно конечно извратиться, типа добавить к обработке форму, в нее вкатать нужные реквизиты и немного поколдовав организовать вызов из модуля процедуры заполнения.
|
|||
54
vmv
14.09.12
✎
16:35
|
(47)
ТекущаяОбработка = СсылкаСправочникаВнешниеОбработки.ХранилищеЗначения.Получить(); Если ТекущаяОбработка = Неопределено Тогда Возврат; КонецЕсли; ТекущаяОбработка.Открыть(); ЗапуститьПроцедуруХватитьКушатьМозг(); |
|||
55
Segate
14.09.12
✎
16:36
|
(47) НИКАК!!!111 Не делай этого! Молю! =))) Это кощунство! Точно так же, как из конфигуратора обращаться напрямую к элементам справочника(не предопределенным)
Забудь эту идею как страшный сон. Лучше попробуй так: а) выгружать тч документа в обработку и там с ней работать, после этого пихать обратно.(если нельзя вносить изменения в конфигратор) б) Внести обработку в структуру конфигурации в) Юзать уже готовые формы выбора г) изменить механизм подбора. |
|||
56
Miss1C
14.09.12
✎
16:36
|
(54)Интересная процедура)
|
|||
57
Aprobator
14.09.12
✎
16:38
|
Т.е. обработка в конфигурацию не ложится (в сам справочник), а делается ее форма (она потом ничему не мешает). На форму выводится реквизит типа ДокументСсылка.НужныйТип. На форме рисуется кнопка к ней прикручивается процедура типа
вот тогда ты сможешь отладить обработку заполнения ТЧ. И потом спокойно загрузишь ее в справочник Внешние обработки и отчеты. Все отладочные доработки можно не убирать. |
|||
58
Miss1C
14.09.12
✎
16:38
|
Спасибо за помощь, буду пробовать, вариантов масса)
|
|||
59
Aprobator
14.09.12
✎
16:39
|
в (57) твой, если я правильно понял твою задачу )
|
|||
60
vmv
14.09.12
✎
16:39
|
кароче Татьяна из Черкасс
перто из ЗУПа для Укранины 8.1, ваш случай Если ТипЗНЧ(СсылкаНаВнешнююОбработку) = Тип("СправочникСсылка.ВнешниеОбработки") Тогда ИмяФайла = КаталогВременныхФайлов()+"PrnForm.tmp"; ОбъектВнешнейФормы = СсылкаНаВнешнююОбработку.ПолучитьОбъект(); Если ОбъектВнешнейФормы = Неопределено Тогда Сообщить("Ошибка получения внешней обработки заполнения табличной части документа. Возможно обработка была удалена", СтатусСообщения.Важное); Возврат; КонецЕсли; ДвоичныеДанные = ОбъектВнешнейФормы.ХранилищеВнешнейОбработки.Получить(); ДвоичныеДанные.Записать(ИмяФайла); Попытка Обработка = ВнешниеОбработки.Создать(ИмяФайла); // Передать внешней обработке дополнительные параметры Если ДополнительныеПараметры <> Неопределено Тогда // Если у внешней обработки есть реквизит для дополнительных параметров, присвоить ему значение Если НЕ Обработка.Метаданные().Реквизиты.Найти("ДополнительныеПараметры") = Неопределено Тогда Обработка.ДополнительныеПараметры = ДополнительныеПараметры; КонецЕсли; КонецЕсли; Исключение Сообщить("Ошибка исполнения внешней обработки табличной части документа."+Символы.ПС+ОписаниеОшибки(), СтатусСообщения.Важное); Возврат; КонецПопытки; Попытка Обработка.Инициализировать(ЭтотОбъект, СтрокаКнопки.Родитель.Имя, СтрокаКнопки.Родитель.Расшифровка); Исключение ОбщегоНазначения.СообщитьОбОшибке(ОписаниеОшибки(),, "Заполнение ТЧ не произведено!"); КонецПопытки; КонецЕсли; ех |
|||
61
Aprobator
14.09.12
✎
16:42
|
(60) да - этот код очень сильно поможет Татьяне отладить ее обработку заполнения ТЧ.
|
|||
62
Aprobator
14.09.12
✎
16:44
|
хотя имя процедуры Заполнения ТЧ и е параметры из нее можно взять.
Инициализировать(Объект, ИмяПоляТЧ, ИмяТЧ) |
|||
63
vmv
14.09.12
✎
16:44
|
(61) это именно то, что ей нужно - поможет или нет решу я сам
|
|||
64
Segate
14.09.12
✎
16:44
|
(61) он содержит ответ. ))) Это процедура вызываемая по кнопке ее. В доп параметры можно передать все что угодно, а значит оттуда можно все что угодно вытащить... Если уж совсем попа чешется писать "костыль для костыля" То можно в этой процедуре описать вызов интересующей обрабтки отдельно
|
|||
65
73
14.09.12
✎
16:45
|
Типовой механизм вообще-то туда весь объект передаёт... И делай с ним что хошь.
|
|||
66
Segate
14.09.12
✎
16:47
|
Не ну а фигли, "чтобы не нарушать типовый объект я загрузила внешнюю обработку в внешние обработки по заполнению табличных частей", а потом переписала нахрен пол конфы, чтоб обратится к форме этой обработки. Все по нашему )))
|
|||
67
Stim
14.09.12
✎
16:48
|
СЧЕТ 1:0 В ПОЛЬЗУ ЗНАТОКОВ!
<удар гонга> тра-ра-рарам(музыкальное сопровождение) |
|||
68
Segate
14.09.12
✎
16:49
|
(67) погоди-погоди, мы берем дополнительную минуту
|
|||
69
Aprobator
14.09.12
✎
16:56
|
все замерли в ожидании. Кто же возьмет СОВУ?
|
|||
70
vmv
14.09.12
✎
16:58
|
(67) гран-приз убежала - уже не первый раз, только обещает
|
|||
71
vmv
14.09.12
✎
16:59
|
вывод программиста: если взять сову она будет высиживать яйца
|
|||
72
Aprobator
14.09.12
✎
17:00
|
(71) извращенец.
|
|||
73
Stim
14.09.12
✎
17:01
|
Отвечает ДРУЗЬ:
|
|||
74
vmv
14.09.12
✎
17:02
|
(66) все правильно, я тьоток тоже так приучил
- ой мы хотим такое извращение, ну такое смотри как нящно - ок, ноу проблем, ваще извращения я помещу в справочник ВнешниеОбрабработки - ну там же нудобно - не ври мне, в машине тоже неудобно, но вполне приемлемо - я согласна |
|||
75
Miss1C
14.09.12
✎
18:32
|
Чтобы не играться, добавила свою обработку в обработки, добавила в командную панель табличного поля кнопку при нажатии
Процедура КоманднаяПанель1Моя(Кнопка) Форма = Обработки.ЗаполнениеПоРегионам.ПолучитьФорму(); Форма.Открыть(); КонецПроцедуры Процедура формы обработки: Процедура СписокТочекВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ОповеститьОВыборе(ВыбраннаяСтрока.Ссылка); //Закрыть(); КонецПроцедуры Но при выборе значения в форме обработки, отладчик не заходит в процедуру обработки выбора формы моего документа ( |
|||
76
vmv
14.09.12
✎
18:34
|
(75) хватит уже - все уже бухие, сходи в кабак, цепани мальчугана, расслабся от души.
В понедельник поговорим о серьезном и вечном, ок?) |
|||
77
Miss1C
14.09.12
✎
18:35
|
(76)Не указала владельца формы(
|
|||
78
Miss1C
14.09.12
✎
18:35
|
(76)Какой отдохни, работать еще завтра нужно
|
|||
79
vmv
14.09.12
✎
18:37
|
(78) замуж выходи, по субботам нужно валяться в постели после бурной ночи, а не ищачить на дядю, ех ты)
|
|||
80
73
14.09.12
✎
18:42
|
(77) Так укажи.
|
|||
81
vmv
14.09.12
✎
18:46
|
(80) не пристовай к тьолке - она трудиться)
|
|||
82
Miss1C
14.09.12
✎
19:34
|
Если ОтгрузкаРазрешена Тогда
// // ИначеЕсли ДоговорКонтрагента.КонтролироватьСрокДействияДоговора И ДатаОтгрузки > ДоговорКонтрагента.СрокДействия Тогда // тглОбщегоНазначения.СообщитьПользователю("Срок действия договора истек : "+Формат(ДоговорКонтрагента.СрокДействия,"ДФ=dd.MM.yyyy")+". Заказы по этому контрагенту заблокированы!", , ТаблицаСообщений, Заказ.Контрагент, Заказ.ТорговаяТочка, Заказ.Ссылка); // Продолжить; |
|||
83
Aprobator
14.09.12
✎
19:50
|
Дурдом, а не код. Режим выбора не включён, владелец формы не указан
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |