Имя: Пароль:
1C
1С v8
Не работает выбор через ОткрытьФорму()
0 trympyrym
 
11.02.24
17:17
Есть на форме таблица, на одно из ее полей навешан обработчик , который открывает форму для выбора, берет результат и записывает его в это самое поле

&НаКлиенте
Процедура МоеПолеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

  СтрокаТаблицы = Элементы.МояТаблица.ТекущиеДанные;

  СтандартнаяОбработка = Ложь;
  ДанныеВыбора = Неопределено;
 
  СтруктураПараметры = Новый Структура("РежимВыбора,Отбор", Истина,<какой-то отбор>);

  Результат = ОткрытьФормуМодально("<Форма>", СтруктураПараметры, Элемент);

  СтрокаТаблицы.МоеПоле = ВытащитьЗначениеНаСервере(Результат);
КонецПроцедуры


Такое успешно работает, но ОткрытьФормуМодально как-то неоч. Попросил я стандартный рефакторинг в конфигураторе сделать из этого асинхронный вызов. Получилось так:

&НаКлиенте
Процедура МоеПолеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

  СтрокаТаблицы = Элементы.МояТаблица.ТекущиеДанные;

  СтандартнаяОбработка = Ложь;
  ДанныеВыбора = Неопределено;
 
  СтруктураПараметры = Новый Структура("РежимВыбора,Отбор", Истина,<какой-то отбор>);

  ОткрытьФорму("<Форма>", СтруктураПараметры, Элемент,,,,Новый ОписаниеОповещения("МоеПолеНачалоВыбораЗавершение", ЭтотОбъект, Новый Структура("СтрокаТаблицы", СтрокаТаблицы)), РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);

  СтрокаТаблицы.МоеПоле = ВытащитьЗначениеНаСервере(Результат);
КонецПроцедуры

&НаКлиенте
Процедура МоеПолеНачалоВыбораЗавершение(Результат, ДополнительныеПараметры) Экспорт
  СтрокаТаблицы = ДополнительныеПараметры.СтрокаТаблицы;
  СтрокаТаблицы.МоеПоле = ВытащитьЗначениеНаСервере(Результат);
КонецПроцедуры


И вот оно не работает. В дебаге видно, что нужное поле в "СтрокаТаблицы" устанавливается, но на форме это не появляется. Пустое значение там висит.

Как такое лечить?
1 Волшебник
 
11.02.24
17:14
Перестаньте, пожалуйста, подменять настоящий исходный код на тот, который публикуете. Так мы проблему будем долго решать...
2 DrZombi
 
12.02.24
09:44
(0) При открытии формы, параметры через структуру.
И заканчивайте с модальными окнами, люди уже Асинхронность юзают :)

Параметра.Вставить("ТекущаяСтрока", <Ваша ссылка>)


Примеры:
https://infostart.ru/1c/articles/1233756/

И еще, с текущей строкой
&НаКлиенте
Процедура ТоварыНоменклатураНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
    Если ЗначениеЗаполнено(ТекущиеДанные.Номенклатура) Тогда
        СтандартнаяОбработка = Ложь;    
        Парам = Новый Структура("ТекущаяСтрока", ТекущиеДанные.Номенклатура);
        ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", Парам, Элемент);
    КонецЕсли;
КонецПроцедуры
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.