Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Итоги по столбцу табличной части
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
Lexveritas
Доброго всем времени суток!
Никак не могу получить итоги по столбцу табличной части.
1С 8.3.6.2390 Тонкий клиент, клиент-серверная.

В справочнике несколько таблиц, по которым необходимо вывести итоги. С помощью нехитрых действий вытянул итоги по столбцам в подвале.

НО!
Данные итога по столбцу должны использоваться для расчета данных по следующему столбцу...

В зкселе это выглядит так:
Столбец1, ст.2, ст.3, ст.4

Ст2=сумма столбца1/данные строки1 столбца1.

Всё не сложно. Написал события при изменении данных в ст.1.

&НаКлиенте
Процедура ПриИзмененииМассоваяЧасть(Элемент)
    Стр = Элементы.СоставПластикатаПВХ.ТекущиеДанные;
    РасчитатьСуммуМЧ();
    //Объект.Итог1 = Элементы.СоставПластикатаПВХ.Итог("МассоваяЧастьПлПВХ");
    Стр.СоотношениеПроц = Стр.МассоваяЧастьПлПВХ;
    Стр.КоличествоТП = Объект.Итог1;
КонецПроцедуры
&НаСервере
Процедура РасчитатьСуммуМЧ()

     Объект.Итог1 = Элементы.СоставПластикатаПВХ.Итог("МассоваяЧастьПлПВХ");

КонецПроцедуры


Попытка хоть что то изменить в ст.1 приводит к выводу ошибки

"Метод объекта не обнаружен (Итог)"
Перековырял всё что можно было. Ничего не помагает.

Буду благодарен за любую помощь!
logist
Цитата(Lexveritas @ 09.12.16, 14:32) необходимо зарегистрироваться для просмотра ссылки
Элементы.

У элементов не может быть итога. Используйте сам объект (не знаю что там это у вас), попробуйте
Объект.Итог1 = СоставПластикатаПВХ.Итог("МассоваяЧастьПлПВХ");

сервер вызывать в данном случае не обязательно, это работает и на клиенте.
Lexveritas
logist @ Сегодня, 13:42 необходимо зарегистрироваться для просмотра ссылки ,
Пробовал и на клиенте и на сервере, и без контекста и как только не пробовал.
&НаКлиенте
Процедура ПриИзмененииМассоваяЧасть(Элемент)
    Стр = Элементы.СоставПластикатаПВХ.ТекущиеДанные;
    //РасчитатьСуммуМЧ();
    Объект.Итог1 = СоставПластикатаПВХ.Итог("МассоваяЧастьПлПВХ");
    Стр.СоотношениеПроц = Стр.МассоваяЧастьПлПВХ;
    Стр.КоличествоТП = Объект.Итог1;
КонецПроцедуры
//&НаСервере
//Процедура РасчитатьСуммуМЧ()

//     Объект.Итог1 = СоставПластикатаПВХ.Итог("МассоваяЧастьПлПВХ");

//КонецПроцедуры


Результат "Переменная не определена".
Объявил переменную
Перем СоставПластикатаПВХ;


Результат "Значение не является значением объектного типа (Итог)"
logist
Цитата(Lexveritas @ 09.12.16, 14:54) необходимо зарегистрироваться для просмотра ссылки
Объявил переменную

Зачем? Не занимайте тыканьем в никуда. Давайте скрин свойств этого поля, где видно путь к данным.
Lexveritas
logist @ Сегодня, 13:57 необходимо зарегистрироваться для просмотра ссылки ,
logist
Тогда так
Объект.Итог1 = Объект.СоставПластикатаПВХ.Итог("МассоваяЧастьПлПВХ");
Lexveritas
logist @ Сегодня, 14:17 необходимо зарегистрироваться для просмотра ссылки ,
Походу я туп как пробка!

Нашол фигню с ошибкой в просторах тырнета, и с пребольшим успехом её повторил!!!

Всё прекрасно! Заработало!

Премногоблагодарствую!
Lexveritas
logist @ Сегодня, 14:17 необходимо зарегистрироваться для просмотра ссылки ,

А как реализовать функцию пересчета результатов всех полей при изменении данных в каком либо поле.
При вводе данных в новую строку, результат в Итог1 изменяется и соответственно он должен измениться во всех строках.
Заранее благодарен!
logist
У табличного поля есть событие ПриИзменении, которое срабатывает при изменении любых данных в нем, опишите в этом событии свои расчеты. Ну или в каждой колонке которая влияет на расчет - сделайте вызов одной процедуры, которая будет выполнять полный перерасчет данных.
Lexveritas
logist @ Сегодня, 0:57 необходимо зарегистрироваться для просмотра ссылки ,
Ничего не вышло.
Пересчет происходит только в той строке, в которой произошли изменения вручную. Даже если цифры те же самые. Изменяется значение "Итог1", от которого пересчитываетсся следующий столбец. Пересчет происходит только в том случае, если я дал хоть какие то изменения "вручную".
logist
Цитата(Lexveritas @ 10.12.16, 12:49) необходимо зарегистрироваться для просмотра ссылки
Ничего не вышло.

Показывайте код. Исходя из предыдущей проблемы можно сделать вывод, что с пониманием разработки в 1С у вас плохо (без обид).
Lexveritas
logist @ Сегодня, 12:33 необходимо зарегистрироваться для просмотра ссылки ,
Зачем обижаться когда говорят то, как оно есть?
Никаких обид.

Попробовал всё запхать в цикл.

&НаКлиенте
Процедура ПриИзмененииМассоваяЧасть()
        Стр = Элементы.СоставПластикатаПВХ.ТекущиеДанные;
    Для Каждого МассоваяЧастьПлПВХ Из Объект.СоставПластикатаПВХ Цикл
    Объект.Итог1 = Объект.СоставПластикатаПВХ.Итог("МассоваяЧастьПлПВХ");
    Стр.СоотношениеПроц = (Стр.МассоваяЧастьПлПВХ / Объект.Итог1)*100;
    Стр.КоличествоТП = (Объект.ВесТехпорции * Стр.СоотношениеПроц)/100;
    Стр.КоличествоТонна = (1010 * Стр.СоотношениеПроц)/100;
    КонецЦикла
КонецПроцедуры

Главное без смеха...
logist
Цитата(Lexveritas @ 10.12.16, 13:52) необходимо зарегистрироваться для просмотра ссылки
Попробовал всё запхать в цикл.

Ваш цикл бессмысленный, т.к. вы получили текущую строку
Стр = Элементы.СоставПластикатаПВХ.ТекущиеДанные;

И дальше перебирая всю таблицу циклом, меняете данные только в той одной строке.
   Стр.СоотношениеПроц = (Стр.МассоваяЧастьПлПВХ / Объект.Итог1)*100;
    Стр.КоличествоТП = (Объект.ВесТехпорции * Стр.СоотношениеПроц)/100;
    Стр.КоличествоТонна = (1010 * Стр.СоотношениеПроц)/100;


Что бы данные менялись в каждой строке надо использовать само определение строки в цикле "МассоваяЧастьПлПВХ "

Т.е. должно быть примерно так:
&НаКлиенте
Процедура ПриИзмененииМассоваяЧасть()
    Объект.Итог1 = Объект.СоставПластикатаПВХ.Итог("МассоваяЧастьПлПВХ");
    Для Каждого МассоваяЧастьПлПВХ Из Объект.СоставПластикатаПВХ Цикл
    МассоваяЧастьПлПВХ.СоотношениеПроц = (МассоваяЧастьПлПВХ.МассоваяЧастьПлПВХ / Объект.Итог1)*100;
    МассоваяЧастьПлПВХ.КоличествоТП = (Объект.ВесТехпорции * МассоваяЧастьПлПВХ.СоотношениеПроц)/100;
    МассоваяЧастьПлПВХ.КоличествоТонна = (1010 * МассоваяЧастьПлПВХ.СоотношениеПроц)/100;
    КонецЦикла
КонецПроцедуры

Только не надо копипастить этот код, это лишь пример как работать с циклом и табличной частью,
Lexveritas
logist @ Сегодня, 12:58 необходимо зарегистрироваться для просмотра ссылки ,
Работает!
Да уж...

Учиться, учиться и долго учиться!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.