Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Итоги по столбцу табличной части , Никак не могу получить итоги по табличной части.          
Lexveritas Подменю пользователя
сообщение 09.12.16, 13:32
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

Доброго всем времени суток!
Никак не могу получить итоги по столбцу табличной части.
1С 8.3.6.2390 Тонкий клиент, клиент-серверная.

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

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

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

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

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

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

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

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


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

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

Буду благодарен за любую помощь!

logist Подменю пользователя
сообщение 09.12.16, 13:42
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Lexveritas @ 09.12.16, 14:32) *
Элементы.

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

сервер вызывать в данном случае не обязательно, это работает и на клиенте.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Lexveritas Подменю пользователя
сообщение 09.12.16, 13:54
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

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

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

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


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


Результат "Значение не является значением объектного типа (Итог)"

logist Подменю пользователя
сообщение 09.12.16, 13:57
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Lexveritas @ 09.12.16, 14:54) *
Объявил переменную

Зачем? Не занимайте тыканьем в никуда. Давайте скрин свойств этого поля, где видно путь к данным.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Lexveritas Подменю пользователя
сообщение 09.12.16, 14:13
Сообщение #5

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

logist @ Сегодня, 13:57 * ,

logist Подменю пользователя
сообщение 09.12.16, 14:17
Сообщение #6

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

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


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: Lexveritas,

Lexveritas Подменю пользователя
сообщение 09.12.16, 14:23
Сообщение #7

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

logist @ Сегодня, 14:17 * ,
Походу я туп как пробка!

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

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

Премногоблагодарствую!

Lexveritas Подменю пользователя
сообщение 09.12.16, 20:27
Сообщение #8

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

logist @ Сегодня, 14:17 * ,

А как реализовать функцию пересчета результатов всех полей при изменении данных в каком либо поле.
При вводе данных в новую строку, результат в Итог1 изменяется и соответственно он должен измениться во всех строках.
Заранее благодарен!

logist Подменю пользователя
сообщение 10.12.16, 0:57
Сообщение #9

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

У табличного поля есть событие ПриИзменении, которое срабатывает при изменении любых данных в нем, опишите в этом событии свои расчеты. Ну или в каждой колонке которая влияет на расчет - сделайте вызов одной процедуры, которая будет выполнять полный перерасчет данных.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: Lexveritas,

Lexveritas Подменю пользователя
сообщение 10.12.16, 11:49
Сообщение #10

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

logist @ Сегодня, 0:57 * ,
Ничего не вышло.
Пересчет происходит только в той строке, в которой произошли изменения вручную. Даже если цифры те же самые. Изменяется значение "Итог1", от которого пересчитываетсся следующий столбец. Пересчет происходит только в том случае, если я дал хоть какие то изменения "вручную".

logist Подменю пользователя
сообщение 10.12.16, 12:33
Сообщение #11

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Lexveritas @ 10.12.16, 12:49) *
Ничего не вышло.

Показывайте код. Исходя из предыдущей проблемы можно сделать вывод, что с пониманием разработки в 1С у вас плохо (без обид).


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Lexveritas Подменю пользователя
сообщение 10.12.16, 12:52
Сообщение #12

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

logist @ Сегодня, 12:33 * ,
Зачем обижаться когда говорят то, как оно есть?
Никаких обид.

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

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

Главное без смеха...

logist Подменю пользователя
сообщение 10.12.16, 12:58
Сообщение #13

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Lexveritas @ 10.12.16, 13:52) *
Попробовал всё запхать в цикл.

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

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


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

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

Только не надо копипастить этот код, это лишь пример как работать с циклом и табличной частью,


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: Lexveritas,

Lexveritas Подменю пользователя
сообщение 10.12.16, 13:09
Сообщение #14

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

logist @ Сегодня, 12:58 * ,
Работает!
Да уж...

Учиться, учиться и долго учиться!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 23.04.24, 17:32
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!