|
Обращение к элементу формы Документа из Общего Модуля.Управляемое приложение | ☑ | ||
---|---|---|---|---|
0
gabd_marat
19.05.16
✎
23:11
|
Народ, в 1с новичок. Помогите пожалуйста, нужно взять значение из элемента формы Документа из Общего Модуля
|
|||
1
Cyberhawk
19.05.16
✎
23:13
|
Я не против
|
|||
2
gabd_marat
19.05.16
✎
23:18
|
Как это сделать не знаешь?
|
|||
3
Cyberhawk
19.05.16
✎
23:19
|
Наверное, знаю. Непонятно, что "это".
|
|||
4
gabd_marat
19.05.16
✎
23:19
|
&НаСервере
Функция РассчитатьОстаток(ЭлементТовар,ЭлементКоличество) Экспорт Организация = Документы.ПеремещениеТоваровМеждуСкладами.Организация; Форма = Документы.ПеремещениеТоваровМеждуСкладами.ПолучитьФорму("ПеремещениеТоваров"); ЭлементФормыОрганизация = Форма.ЭлементФормы.Организация; СкладОтправитель = Документы.ПеремещениеТоваровМеждуСкладами.СкладОтправитель; ЭлементФормыСкладОтправитель = Форма.ЭлементФормы.СкладОтправитель; Остатки = РегистрыНакопления.ОстаткиТоваров; Количество = Остатки.Количество; Фильтр = Новый Структура; Фильтр.Вставить("Товар",ЭлементТовар); Фильтр.Вставить("Организация",ЭлементФормыОрганизация); Фильтр.Вставить("Склад",ЭлементФормыСкладОтправитель); ТабОстатков = Остатки.Остатки(,Фильтр,"Товар,Организация,Склад",Количество); АктуальныйОстаток = ТабОстатков.Итог("Количество"); ЗначенияРесурсов = АктуальныйОстаток - ЭлементКоличество; Возврат ЗначенияРесурсов.Остаток; КонецФункции Выдает ошибку : {ОбщийМодуль.РаботаСоСправочниками.Модуль(13)}: Поле объекта не обнаружено (Организация) Организация = Документы.ПеремещениеТоваровМеждуСкладами.Организация; |
|||
5
gabd_marat
19.05.16
✎
23:22
|
Нужно при изменении поля Количество ТЧ Документа выводить в поле Остаток Остаток Товара.
|
|||
6
gabd_marat
19.05.16
✎
23:23
|
Похоже я не правильно обращаюсь к элементу формы Документа. Подправте меня если знаете
|
|||
7
Cyberhawk
19.05.16
✎
23:25
|
У тебя не только эта ошибка в коде
|
|||
8
Cyberhawk
19.05.16
✎
23:25
|
(5) Кому нужно?
|
|||
9
gabd_marat
19.05.16
✎
23:32
|
Мне)) В в ТЧ Док.ПеремещениеТоваровМеждуСкладами при изменении Количества перемещаемого товара между складами, выводить текущий Остаток товара на складе отправителе.
|
|||
10
gabd_marat
19.05.16
✎
23:33
|
Изменил код :
&НаСервере Функция РассчитатьОстаток(ЭлементТовар,ЭлементКоличество) Экспорт Остатки = РегистрыНакопления.ОстаткиТоваров; Количество = Остатки.Количество; Фильтр = Новый Структура; Фильтр.Вставить("Товар",ЭлементТовар); Фильтр.Вставить("Организация",Документ.ПеремещениеТоваровМеждуСкладами.Организация); Фильтр.Вставить("Склад",Объект.Отправитель); ТабОстатков = Остатки.Остатки(,Фильтр,"Товар,Организация,Склад",Количество); АктуальныйОстаток = ТабОстатков.Итог("Количество"); ЗначенияРесурсов = АктуальныйОстаток - ЭлементКоличество; Возврат ЗначенияРесурсов.Остаток; КонецФункции Выводит ошибку : {ОбщийМодуль.РаботаСоСправочниками.Модуль(17,32)}: Переменная не определена (Документ) Фильтр.Вставить("Организация",<<?>>Документ.ПеремещениеТоваровМеждуСкладами.Организация); (Проверка: Сервер) {ОбщийМодуль.РаботаСоСправочниками.Модуль(18,26)}: Переменная не определена (Объект) Фильтр.Вставить("Склад",<<?>>Объект.Отправитель); (Проверка: Сервер) |
|||
11
gabd_marat
19.05.16
✎
23:34
|
Как можно обратиться к элементу формы документа из общего модуля , Народ кто-нибудь знает?
|
|||
12
Сергиус
19.05.16
✎
23:51
|
(0)У тебя что, элемент формы не связан с данными? Бери из базы то, что нужно.
|
|||
13
hhhh
20.05.16
✎
00:15
|
(11) вам надо наоборот как раз. Вы ведь меняете количество на форме. Поэтому вам надо как поменяете из этой формы вызвать общий модуль.
|
|||
14
gabd_marat
20.05.16
✎
00:29
|
Вот так я вызывал. Программный код изменил
Общий Модуль: &НаСервере Функция РассчитатьОстаток(Ссылка,ЭлементТовар,ЭлементКоличество) Экспорт Форма = Ссылка.ПолучитьФорму("ПеремещениеТоваров"); ЭлементФормыОрганизация = Форма.ЭлементыФормы.Организация; ЭлементФормыСкладОтправитель = Форма.ЭлементыФормы.СкладОтправитель; Остатки = РегистрыНакопления.ОстаткиТоваров; Количество = Остатки.Количество; Фильтр = Новый Структура; Фильтр.Вставить("Товар",ЭлементТовар); Фильтр.Вставить("Организация",ЭлементФормыОрганизация); Фильтр.Вставить("Склад",ЭлементФормыСкладОтправитель); ТабОстатков = Остатки.Остатки(,Фильтр,"Товар,Организация,Склад",Количество); АктуальныйОстаток = ТабОстатков.Итог("Количество"); ЗначенияРесурсов = АктуальныйОстаток - ЭлементКоличество; Возврат ЗначенияРесурсов; КонецФункции Модуль формы(ПриИзменении): &НаКлиенте Процедура ТоварыКоличествоПриИзменении(Элемент) СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные; СтрокаТабличнойЧасти.Остаток = РаботаСоСправочниками.РассчитатьОстаток(ЭтотОбъект,СтрокаТабличнойЧасти.Товар,СтрокаТабличнойЧасти.Количество); КонецПроцедуры Пишет ошибка: {Документ.ПеремещениеТоваровМеждуСкладами.Форма.ПеремещениеТоваров.Форма(4)}: Ошибка при вызове метода контекста (РассчитатьОстаток) СтрокаТабличнойЧасти.Остаток = РаботаСоСправочниками.РассчитатьОстаток(ЭтотОбъект,СтрокаТабличнойЧасти.Товар,СтрокаТабличнойЧасти.Количество); по причине: Ошибка при вызове серверного метода. по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'param': форма: Элемент имя: {http://v8.1c.ru/8.2/managed-application/modules}param по причине: Ошибка отображения типов: Отсутствует отображение для типа 'УправляемаяФорма' |
|||
15
gabd_marat
20.05.16
✎
00:32
|
При использовании точки останова в компиляции, указывает на
СтрокаТабличнойЧасти.Остаток = РаботаСоСправочниками.РассчитатьОстаток(ЭтотОбъект,СтрокаТабличнойЧасти.Товар,СтрокаТабличнойЧасти.Количество); |
|||
16
hhhh
20.05.16
✎
00:56
|
Вы неправильно понимаете слово ЭтотОбъект. ЭтотОбъект - это и есть форма. Зачем вы ее на сервер суете? Вот и ошибка поэтому.
так может Фильтр = Новый Структура; Фильтр.Вставить("Товар",Объект.Товар); Фильтр.Вставить("Организация",Объект.Организация); Фильтр.Вставить("Склад",Объект.СкладОтправитель); СтрокаТабличнойЧасти.Остаток = РаботаСоСправочниками.РассчитатьОстаток(Фильтр,СтрокаТабличнойЧасти.Товар,СтрокаТабличнойЧасти.Количество); |
|||
17
gabd_marat
20.05.16
✎
01:52
|
По условию задания все Запросы и вычисления должны быть в общем модуле, поэтому подумав данный выше код можно я отнес ни к тому ни к другому и поместил в модуль формы, как вы посоветовали, Теперь ругается на другую часть
{ОбщийМодуль.РаботаСоСправочниками.Модуль(17)}: Поле объекта не обнаружено (Количество) Количество = Остатки.Количество; Посоветуйте , как исправить |
|||
18
exiter1
20.05.16
✎
02:50
|
Что-то не совсем догоняю, что там в коде у тебя и в объектах документа.
Получается у документа есть реквизит "Организация" и табличная часть с реквизитами "Товар" и "Количество". Так? Тогда на клиенте из модуля документа передаем в функцию на сервере необходимые данные: Процедура ТоварыКоличествоПриИзменении(Элемент) СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные; СтрокаТабличнойЧасти.Остаток = РаботаСоСправочниками.РассчитатьОстаток(Объект.СкладОтправитель,Объект.Организация,СтрокаТабличнойЧасти.Товар,СтрокаТабличнойЧасти.Количество); А в общем модуле пишем так: Функция РассчитатьОстаток(СкладОтправитель, Организация,ЭлементТовар,ЭлементКоличество) Экспорт Форма = Ссылка.ПолучитьФорму("ПеремещениеТоваров"); ЭлементФормыОрганизация = Форма.ЭлементыФормы.Организация; ЭлементФормыСкладОтправитель = Форма.ЭлементыФормы.СкладОтправитель; Остатки = РегистрыНакопления.ОстаткиТоваров; Количество = Остатки.Количество; Фильтр = Новый Структура; Фильтр.Вставить("Товар",ЭлементТовар); Фильтр.Вставить("Организация",Организация); Фильтр.Вставить("Склад",СкладОтправитель); ТабОстатков = Остатки.Остатки(,Фильтр,"Товар,Организация,Склад",Количество); АктуальныйОстаток = ТабОстатков.Итог("Количество"); ЗначенияРесурсов = АктуальныйОстаток - ЭлементКоличество; Возврат ЗначенияРесурсов; КонецФункции КонецПроцедуры |
|||
19
exiter1
20.05.16
✎
03:05
|
Пару строк еще нужно в функции убрать:
Функция РассчитатьОстаток(СкладОтправитель, Организация,ЭлементТовар,ЭлементКоличество) Экспорт Остатки = РегистрыНакопления.ОстаткиТоваров; Количество = Остатки.Количество; Фильтр = Новый Структура; Фильтр.Вставить("Товар",ЭлементТовар); Фильтр.Вставить("Организация",Организация); Фильтр.Вставить("Склад",СкладОтправитель); ТабОстатков = Остатки.Остатки(,Фильтр,"Товар,Организация,Склад",Количество); АктуальныйОстаток = ТабОстатков.Итог("Количество"); ЗначенияРесурсов = АктуальныйОстаток - ЭлементКоличество; Возврат ЗначенияРесурсов; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |