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