Имя: Пароль:
1C
1С v8
Передача выбранных данных между НЕподчиненными формами
0 Azim_burkhanov
 
01.03.20
10:01
Доброе народ. помогите пожалуйста с задачей. есть конфигурация. в Обработке создан рабочий стол. в ней 2 таблицы. при выборе строки первой таблицы у меня открывается Форма подбора(подчиненная первой форме) с авто заполнением полей формы подбора из выбранной строки(наименование, общее количество, цена). теперь изменив нужнее количество мы должны вернуть эти данные(наименование, цену, выбранное количество, сумму) во вторую(неподчинненую) таблицу. заранее благодарю за всякую помошь
1 Конструктор1С
 
01.03.20
10:16
В процедуру ОткрытьФорму() можно передать описание оповещения, через которое можно будет пробросить значение из открываемой формы через Закрыть(ПередаваемоеЗначение)
2 Azim_burkhanov
 
01.03.20
10:46
ну так открыть и закрыть передает значения владельцу формы, так?? а мне нужно передать в таблицу значений который не является владельцем для формы подбора
3 acht
 
01.03.20
11:38
(2) Что написано в синтакс-помощнике про параметры метода ОткрытьФорму?
4 Azim_burkhanov
 
01.03.20
20:45
Синтаксис:

ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>, <ОписаниеОповещенияОЗакрытии>, <РежимОткрытияОкна>)
Параметры:

<ИмяФормы> (обязательный)



я посредством этого форму подбора открываю. при выборе строки у меня открывается форма которая подчинена этой таблице значений. с этим все хорошо. но вот измененные данные я должен передать уже второй таблице в виде динамического списка. она по сути не имеет отношения к этим таблицам-владельцу и форме подбора-подчиненному. вторая таблица должна собирать список наименований для дальнейшей обработки
5 acht
 
01.03.20
23:15
(4) Третий параметр?
6 strange2007
 
02.03.20
07:37
Оповестить? Долго, топорно, но вроде работает же
7 Azim_burkhanov
 
02.03.20
08:05
(4), Видимо я не уточнил?......а нет вроде написал что мне нужно передать НЕ ВЛАДЕЛЬЦУ формы подбора данные С ФОРМЫ ПОДБОРА. с третьим параметром я открываю эту форму открываю. мне как бы нужно передать данные при закрытии формы подбора.
8 catena
 
02.03.20
08:10
(7)Несовсем понятно, зачем делать вледельцем формы таблицу, которой это не нужно.
9 Сияющий в темноте
 
02.03.20
09:13
владелец формы должна быть форма из которой открыли форму подбора.
10 Azim_burkhanov
 
02.03.20
09:38
расклад такой. на Главной форме две таблицы. дна пустая, вторая выводит список остатков товаров. я выбираю товар, открывается форма подбора(эта форма подчинена таблице с остатками), в ней я указываю сколько товара мне надо. и при закрытии нужно вернуть наименование выбранное количество и цену на выбранное количество на вторую ПУСТУЮ таблицу. ну вот тут как не сделаешь первую таблицу и форму подбора владельцем-подчиненным. но проблемы со второй таблицей((
11 Фрэнки
 
02.03.20
09:50
В топике не указано в каких формах ведется разработка : это обычные формы или управляемые? Рецепты решения будут наверняка разные.
12 Azim_burkhanov
 
02.03.20
10:11
прошу прощения. УФ.
13 Фрэнки
 
02.03.20
10:22
(12) описанное поведение похоже на некоторые готовые инструменты в УТ11.4 или в КА2.4
14 Ёпрст
 
02.03.20
11:40
(10) забудь про "подчинение" , тупо делай через оповестить и обработкаОповещения и усё
15 Azim_burkhanov
 
02.03.20
12:42
так вроде малюсенький свет в конце тоннеля есть. я посредством структуры передал выбранные значения. и отладка тоже видит структуру со значениями.

Выбор = Новый Структура;
        Выбор.Вставить("Товар", Элементы.Товар.Заголовок);
        Выбор.Вставить("Количество", ВыбКоличество);
        Выбор.Вставить("КоличествоВнеУпаковок", ВыбКОличествоВнеУпаковок);
        Выбор.Вставить("Цена", Цена);
        Выбор.Вставить("ЦенаВнеУпаковки", ЦенаВнеУпаковки);
    //ОповеститьОВыборе(Выбор);
    Закрыть(Выбор);

а вот принимать их же нужно в форме владельца, так? в процедуре обработкаВыбора??
16 Azim_burkhanov
 
02.03.20
12:44
ПРоцедура при закрытии формы подбора

&НаКлиенте
Процедура КнЗакрыть(Команда)
    Выбор = Новый Структура;
        Выбор.Вставить("Товар", Элементы.Товар.Заголовок);
        Выбор.Вставить("Количество", ВыбКоличество);
        Выбор.Вставить("КоличествоВнеУпаковок", ВыбКОличествоВнеУпаковок);
        Выбор.Вставить("Цена", Цена);
        Выбор.Вставить("ЦенаВнеУпаковки", ЦенаВнеУпаковки);
    //ОповеститьОВыборе(Выбор);
    Закрыть(Выбор);
    
КонецПроцедуры
17 DexterMorgan
 
02.03.20
12:44
(15) Тебе же написали (6) (14)
18 Azim_burkhanov
 
02.03.20
14:14
Спасибо большое за ваше время. вот я в оповещении возвращаю данные. но в процедуре ОБРАБОТКАВЫБОРА() точка останова не останавливается. процедура в основной форме.
19 Ёпрст
 
02.03.20
15:07
(18) дык ОбработкаОповещения используй в принимаемой форме
20 Сияющий в темноте
 
02.03.20
19:07
обе формы на клиенте,если в одну из форм передать указатель другой формы,то можно вызывать экспортные методы каки у любого другогг объекта и передача клиент-клиент не требует сериализации и передает любые обьекты.
21 Жан Пердежон
 
02.03.20
21:10
(18)

в форме откуда данные хочешь передать: Оповестить("СобытиеВека", ПередаваемыеДанные);
в форме, куда данные передать в ОбработкаОповещения (это такое событие у формы):

Если ИмяСобытия = "СобытиеВека" Тогда
// что угодно
КонецЕсли;
22 Azim_burkhanov
 
03.03.20
10:26
Так народ. вопросЫ
1.Владельцем формы(которая открывается и которая должна передать данные выбора) указать таблицу значений которая будет принимать или всю форму обработки(ЭтаФорма)
2.При указывании владельцем формы выбора Таблицу значений, в свойствах этой таблицы не появляется события ОБРАБОТКА ОПОВЕЩЕНИЯ.
3. А если указываю владельцем Саму форму(ЭтаФорма) то Обработка оповещения есть, но точка останова до этой процедуры не доходит. (не помогает закрытие формы выбора посредством ОПОВЕСТИТЬ О ВЫБОРЕ или ОПОВЕСТИТЬ() И ЗАКРЫТЬ.

мне уже эта задача снится(((.
23 Azim_burkhanov
 
03.03.20
10:28
&НаКлиенте  //Кнопка закрыть формы выбора
Процедура КнЗакрыть(Команда)
    Выбор = Новый Структура;
        Выбор.Вставить("Товар", Элементы.Товар.Заголовок);
        Выбор.Вставить("Количество", ВыбКоличество);
        Выбор.Вставить("КоличествоВнеУпаковок", ВыбКОличествоВнеУпаковок);
        Выбор.Вставить("Цена", Цена);
        Выбор.Вставить("ЦенаВнеУпаковки", ЦенаВнеУпаковки);
    Оповестить("Что-Нибудь",Выбор);
    Закрыть();
    //ОповеститьОВыборе(Выбор);
КонецПроцедуры





&НаКлиенте // выбор строки в табличной части
Процедура СписокПодбораВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    ПараметрыФормы = Новый Структура("Товар, Количество, КоличествоВнеУпаковки, Цена, КоличествоВУпаковке",
        Элемент.ТекущиеДанные.Товар, Элемент.ТекущиеДанные.КоличествоОстаток,
        Элемент.ТекущиеДанные.КоличествоВнеУпаковкиОстаток, Элемент.ТекущиеДанные.Цена, Элемент.ТекущиеДанные.ТоварВУпаковке);
    //ПараметрыФормы1 = Новый Структура("ЗначениеЗаполнения", ПараметрыФормы);
    ОткрытьФорму("Обработка.РабочийСтолКассира.Форма.ФормаВыбора", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
24 catena
 
03.03.20
10:36
(22)обработкаОповещения - это событие формы, а не таблицы.
25 Azim_burkhanov
 
03.03.20
11:18
Все народ. поймал. отправил ОповеститьОВыборе() и поймал Обработкойвыбора. Спасибо вам огромное за ваше терпение.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.