При заполнении ТЧ документа через форму внешней обработки не могу получить значение объекта
При заполнении ТЧ документа через форму внешней обработки не могу получить значение объекта "КоличествоЖивотных" всегда пишет 0
Перем ОбъектЗаполнения Экспорт;
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
Если ВладелецФормы.Объект.Ссылка.ОС.Количество() > 0 Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеОтветаНаВопрос", ЭтаФорма);
ПоказатьВопрос(ОписаниеОповещения, "Табличная часть будет перезаполнена. Продолжить?", РежимДиалогаВопрос.ДаНет,,,);
Иначе
Если НЕ ЗначениеЗаполнено(Объект.Документ) Тогда
Объект.Документ = ВладелецФормы.Объект.Ссылка;
КонецЕсли;
ОбъектЗаполнения=Объект.Документ;
П = Новый Структура;
П.Вставить("НашПараметр", ВладелецФормы.Объект.Ссылка);
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеОтветаНаВопрос", ЭтаФорма);
ЗакрытиеФормы = Новый ОписаниеОповещения
("ЗаполнениеПоВыбраннымПараметрам", ЭтаФорма); // Название процедуры, которая будет выполняться после закрытия формы "ЗапросПараметров"
ЗапросПараметров = ОткрытьФорму("ВнешняяОбработка.ЗаполнениеТЧОС.Форма.Форма", П,ОбъектЗаполнения,,,,ЗакрытиеФормы,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеОтветаНаВопрос(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
Если НЕ ЗначениеЗаполнено(Объект.Документ) Тогда
Объект.Документ = ВладелецФормы.Объект.Ссылка;
КонецЕсли;
ОбъектЗаполнения=Объект.Документ;
П = Новый Структура;
П.Вставить("НашПараметр", ВладелецФормы.Объект.Ссылка);
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеОтветаНаВопрос", ЭтаФорма);
ЗакрытиеФормы = Новый ОписаниеОповещения
("ЗаполнениеПоВыбраннымПараметрам", ЭтаФорма); // Название процедуры, которая будет выполняться после закрытия формы "ЗапросПараметров"
ЗапросПараметров = ОткрытьФорму("ВнешняяОбработка.ЗаполнениеТЧОС.Форма.Форма", П,ОбъектЗаполнения,,,,ЗакрытиеФормы,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры // ()
&НаКлиенте
Процедура ЗаполнениеПоВыбраннымПараметрам(Результат, Параметры) Экспорт
Если НЕ ЗначениеЗаполнено(Результат) Тогда
Возврат; // Пользователь не стал указывать параметры, останавливаем работу
КонецЕсли;
//Всегда 0 выходит
Сообщить(Объект.КоличествоЖивотных);
//
ОбъектЗаполнения = ЗаполнениеНаСервере(ОбъектЗаполнения, Результат); // Результат содержит структуру, полученную из формы "ЗапросПараметров"
Если НЕ ВладелецФормы=Неопределено Тогда
ВладелецФормы.Прочитать(); // Если обработка вызывалась из документа, то нужно перечитать изменения, чтобы пользователь видел результат обработки
КонецЕсли;
КонецПроцедуры
ПоказатьПрикрепленные файлы:
По теме из базы знаний
- Вывод остатка товаров на складе в документ Реализация товаров и услуг (для конфигурации Управление Торговлей 11.2 / 11.3 / 11.4)
- Разные хм... неожиданности при работе с УТ 11 и платформой
- Нестандартное использование СКД
- Интеграция Честный Знак и 1C: обмен и синхронизация для УТ11, УНФ, КА2, ERP, Розница: Расширение для работы с СУЗ, ГИС МТ, ЦРПТ
- Отчеты с общей формой отчета. Типовые сценарии
Найденные решения
(3)ФормаКлиентскогоПриложения (ClientApplicationForm)
Закрыть (Close)
Синтаксис:
Закрыть(<ПараметрЗакрытия>)
Параметры:
<ПараметрЗакрытия> (необязательный)
Тип: Произвольный.
Параметр закрытия формы, открытой в модальном режиме. Это значение будет возвращено как результат метода, открывающего форму модально.
В режиме отказа от модальности параметр передается в процедуру, описанную параметром ОписаниеОповещенияОЗакрытии метода ОткрытьФорму или свойством формы ОписаниеОповещенияОЗакрытии.
Значение по умолчанию: Неопределено.
Как понимаю выполнить Вы вызываете метод закрыть, в котором надо передать параметром результат работы формы. Банально:
Закрыть(КоличествоЖивотных);
А в функции обработки оповещения "ЗаполнениеПоВыбраннымПараметрам" в таком случае:
Если НЕ ЗначениеЗаполнено(Результат) Тогда
КоличествоЖивотных = Результат;
Возврат; // Пользователь не стал указывать параметры, останавливаем работу
КонецЕсли;
Переменные, объявленные внутри функций/процедур существуют только внутри этих функций/процедур. Реквизиты формы, существуют только в пределах самой формы, даже если Вы создадите в другой форме-потомке такой же реквизит, то это будет новый реквизит и если Вы явно не будете прописывать и передавать значения, то само собой у Вас ничего заполняться не будет. Всё остальное это ньюансы. 1С ничего нового не изобретала, правила программирования идентичны другим языкам программирования.
Закрыть (Close)
Синтаксис:
Закрыть(<ПараметрЗакрытия>)
Параметры:
<ПараметрЗакрытия> (необязательный)
Тип: Произвольный.
Параметр закрытия формы, открытой в модальном режиме. Это значение будет возвращено как результат метода, открывающего форму модально.
В режиме отказа от модальности параметр передается в процедуру, описанную параметром ОписаниеОповещенияОЗакрытии метода ОткрытьФорму или свойством формы ОписаниеОповещенияОЗакрытии.
Значение по умолчанию: Неопределено.
Как понимаю выполнить Вы вызываете метод закрыть, в котором надо передать параметром результат работы формы. Банально:
Закрыть(КоличествоЖивотных);
А в функции обработки оповещения "ЗаполнениеПоВыбраннымПараметрам" в таком случае:
Если НЕ ЗначениеЗаполнено(Результат) Тогда
КоличествоЖивотных = Результат;
Возврат; // Пользователь не стал указывать параметры, останавливаем работу
КонецЕсли;
Переменные, объявленные внутри функций/процедур существуют только внутри этих функций/процедур. Реквизиты формы, существуют только в пределах самой формы, даже если Вы создадите в другой форме-потомке такой же реквизит, то это будет новый реквизит и если Вы явно не будете прописывать и передавать значения, то само собой у Вас ничего заполняться не будет. Всё остальное это ньюансы. 1С ничего нового не изобретала, правила программирования идентичны другим языкам программирования.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)ФормаКлиентскогоПриложения (ClientApplicationForm)
Закрыть (Close)
Синтаксис:
Закрыть(<ПараметрЗакрытия>)
Параметры:
<ПараметрЗакрытия> (необязательный)
Тип: Произвольный.
Параметр закрытия формы, открытой в модальном режиме. Это значение будет возвращено как результат метода, открывающего форму модально.
В режиме отказа от модальности параметр передается в процедуру, описанную параметром ОписаниеОповещенияОЗакрытии метода ОткрытьФорму или свойством формы ОписаниеОповещенияОЗакрытии.
Значение по умолчанию: Неопределено.
Как понимаю выполнить Вы вызываете метод закрыть, в котором надо передать параметром результат работы формы. Банально:
Закрыть(КоличествоЖивотных);
А в функции обработки оповещения "ЗаполнениеПоВыбраннымПараметрам" в таком случае:
Если НЕ ЗначениеЗаполнено(Результат) Тогда
КоличествоЖивотных = Результат;
Возврат; // Пользователь не стал указывать параметры, останавливаем работу
КонецЕсли;
Переменные, объявленные внутри функций/процедур существуют только внутри этих функций/процедур. Реквизиты формы, существуют только в пределах самой формы, даже если Вы создадите в другой форме-потомке такой же реквизит, то это будет новый реквизит и если Вы явно не будете прописывать и передавать значения, то само собой у Вас ничего заполняться не будет. Всё остальное это ньюансы. 1С ничего нового не изобретала, правила программирования идентичны другим языкам программирования.
Закрыть (Close)
Синтаксис:
Закрыть(<ПараметрЗакрытия>)
Параметры:
<ПараметрЗакрытия> (необязательный)
Тип: Произвольный.
Параметр закрытия формы, открытой в модальном режиме. Это значение будет возвращено как результат метода, открывающего форму модально.
В режиме отказа от модальности параметр передается в процедуру, описанную параметром ОписаниеОповещенияОЗакрытии метода ОткрытьФорму или свойством формы ОписаниеОповещенияОЗакрытии.
Значение по умолчанию: Неопределено.
Как понимаю выполнить Вы вызываете метод закрыть, в котором надо передать параметром результат работы формы. Банально:
Закрыть(КоличествоЖивотных);
А в функции обработки оповещения "ЗаполнениеПоВыбраннымПараметрам" в таком случае:
Если НЕ ЗначениеЗаполнено(Результат) Тогда
КоличествоЖивотных = Результат;
Возврат; // Пользователь не стал указывать параметры, останавливаем работу
КонецЕсли;
Переменные, объявленные внутри функций/процедур существуют только внутри этих функций/процедур. Реквизиты формы, существуют только в пределах самой формы, даже если Вы создадите в другой форме-потомке такой же реквизит, то это будет новый реквизит и если Вы явно не будете прописывать и передавать значения, то само собой у Вас ничего заполняться не будет. Всё остальное это ньюансы. 1С ничего нового не изобретала, правила программирования идентичны другим языкам программирования.
(4)
На самом деле, возможно такое, что один и тот же объект является реквизитом разных форм, при чем не копия, а именно один экземпляр в памяти.
Реквизиты формы, существуют только в пределах самой формы, даже если Вы создадите в другой форме-потомке такой же реквизит, то это будет новый реквизит и если Вы явно не будете прописывать и передавать значения
На самом деле, возможно такое, что один и тот же объект является реквизитом разных форм, при чем не копия, а именно один экземпляр в памяти.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот