Добрый день.
Такая проблема. Есть обработка кнопки. В ней есть обращение к процедуре в общем модуле (на клиенте). В неё я передаю ЭтаФорму.
В процедуре обрабатывается ЭтаФорма.Объект.ТабличнаяЧасть. Добавляется строка. Но после обработки она не появляется на форме. Я отладчиком смотрю пока идет выполнение в модуле эта строка новая есть. А как только он возвращается в документ, строчка пропадает. В чем проблема может быть?
Спасибо.
Такая проблема. Есть обработка кнопки. В ней есть обращение к процедуре в общем модуле (на клиенте). В неё я передаю ЭтаФорму.
В процедуре обрабатывается ЭтаФорма.Объект.ТабличнаяЧасть. Добавляется строка. Но после обработки она не появляется на форме. Я отладчиком смотрю пока идет выполнение в модуле эта строка новая есть. А как только он возвращается в документ, строчка пропадает. В чем проблема может быть?
Спасибо.
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Насколько я понял это обычные формы, если так то после возвращения необходимо оповестить о изменении нашу форму, так как Вы записываете в объект
Форма.ДокументОбъект.Прочитать();
Форма.Обновить();
Форма.Модифицированность = Истина;
Форма.Активизировать();
Форма.ДокументОбъект.Прочитать();
Форма.Обновить();
Форма.Модифицированность = Истина;
Форма.Активизировать();
&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкодов, КоличествоДеталей=Неопределено)
Результат = ОбщиеПроцедурыКлиент.ОбработатьШтрихкоды(ЭтаФорма, ДанныеШтрихкодов);
КонецПроцедуры
Функция ОбработатьШтрихкоды(Форма, ДанныеШК) Экспорт
ДокументОбъект=Форма.Объект;
ДокументОбъект.Штрихкода.Добавить();
Возврат Истина;
КонецФункции
ПоказатьERP 2.2.4.93, УФ, Тонкий клиент
Добавление строки, это функция. Поэтому нужно так написать. И не забыть значения присвоить.
Функция ОбработатьШтрихкоды(Форма, ДанныеШК) Экспорт
ДокументОбъект=Форма.Объект;
СтрокаТаблицы = ДокументОбъект.Штрихкода.Добавить();
СтрокаТаблицы.Реквизит1 = "1";
СтрокаТаблицы.Реквизит2 = "2";
Возврат Истина;
КонецФункции
(8) Должно работать без всяких обновлений элементов формы. Иначе при обновлении, он считает данные из объекта БД и соответственно сотрёт, то что мы добавили на форме. Код написан правильно и если реквизиты табличной части на форме отображаются и общий модуль компилируется на клиент(управляемое приложение), тогда всё должно отображаться на форме.
Ничего не выйдет. Суть проблемы - на форме Объект - это не тип ОбъектДокумент, а данные формы больше похожие на структуру, что бы там не писал конструктор формы (ДокументОбъект.РеализацияТоваровУслуг, например). Поэтому при выполнении кода вида
происходит не создание указателя, а копирование структуры со всеми вытекающими...
Посему писать надо так:
ДокументОбъект=Форма.Объект;
происходит не создание указателя, а копирование структуры со всеми вытекающими...
Посему писать надо так:
Функция ОбработатьШтрихкоды(Форма, ДанныеШК) Экспорт
СтрокаТаблицы = Форма.Объект.Штрихкода.Добавить();
СтрокаТаблицы.Реквизит1 = "1";
СтрокаТаблицы.Реквизит2 = "2";
Возврат Истина;
КонецФункции
(11) Никто не говорит про объект и никто не хочет его получить. При выполнении кода ДокументОбъект=Форма.Объект;
мы получаем не объект, а просто присваиваем переменной ДокументОбъект объект формы, чтоб удобнее с ней работать дальше и не писать кучу точек. Поскольку ко всем переменным объекта формы, придется добавлять Форма.Объект..... Написание ДокументОбъект=Форма.Объект; ДокументОбъект.Штрихкода.Добавить(); и Форма.Объект.Штрихкода.Добавить(); однозначны.
мы получаем не объект, а просто присваиваем переменной ДокументОбъект объект формы, чтоб удобнее с ней работать дальше и не писать кучу точек. Поскольку ко всем переменным объекта формы, придется добавлять Форма.Объект..... Написание ДокументОбъект=Форма.Объект; ДокументОбъект.Штрихкода.Добавить(); и Форма.Объект.Штрихкода.Добавить(); однозначны.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот