Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 08:46

Не производится расчет в документе

Автор ospov11789, 09 мар 2016, 16:01

0 Пользователей и 1 гость просматривают эту тему.

ospov11789

Добрый день! У меня такая проблема. Необходимо рассчитать долю финансирования науки по научным исследованиям
Я создал такой модуль
&НаКлиенте
Процедура НаучноПедагогическиеРаботникиКоличествоЧасовОтводимыхНаНаучныеИсследованияПриИзменении(Элемент)
СтрокаТабличнойЧасти=Элементы.НаучноПедагогическиеРаботники.ТекущиеДанные;
ФинансированиеНауки.РассчитатьСумму(СтрокаТабличнойЧасти)

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

А также общий модуль следующего содержания
Процедура РассчитатьСумму(СтрокаТабличнойЧасти)Экспорт
СтрокаТабличнойЧасти.ДоляЗаработнойПлатыЗаНауку=СтрокаТабличнойЧасти.ЗаработнаяПлата/СтрокаТабличнойЧасти.СуммарнаяПродолжительностьРабочегоВремени*СтрокаТабличнойЧасти.КоличествоЧасовОтводимыхНаНаучныеИсследования;
КонецПроцедуры
Отладчик ничего не показывает, но и расчет не производится. Хотелось бы узнать в чем ошибка

vitasw


IL2016

Цитата: ospov11789 от 09 мар 2016, 16:01
...
общий модуль следующего содержания
Процедура РассчитатьСумму(СтрокаТабличнойЧасти)Экспорт
СтрокаТабличнойЧасти.ДоляЗаработнойПлатыЗаНауку=СтрокаТабличнойЧасти.ЗаработнаяПлата/СтрокаТабличнойЧасти.СуммарнаяПродолжительностьРабочегоВремени*СтрокаТабличнойЧасти.КоличествоЧасовОтводимыхНаНаучныеИсследования;
КонецПроцедуры
Отладчик ничего не показывает, но и расчет не производится. Хотелось бы узнать в чем ошибка
конечно, в этом коде ничего и не должно произойти, чтобы повлияло на процедуру на Клиенте. В данном случае для логики работы программы системы 1С ошибки нет, но что тогда не так?
Ответ простой - общий модуль на Клиентскую процедуру результат расчета не отправляет.Процедура не умеет возвращать результат в другую процедуру. Полагаю что теперь ясно где недоработка.
Нужно просто что-то переименовать и добавить команду "Возврат  .... ;".
Также имеет смысл установить проверку на заполнение полей значениями в исходных справочниках и выводить сообщение пользователю о том , что поле такое не введено и надо заполнить.
Использую учебную платформу 1С:Предприятие 8.3

vitasw

Цитата: IL2016 от 09 мар 2016, 22:01конечно, в этом коде ничего и не должно произойти, чтобы повлияло на процедуру на Клиенте. В данном случае для логики работы программы системы 1С ошибки нет, но что тогда не так?
Ответ простой - общий модуль на Клиентскую процедуру результат расчета не отправляет.Процедура не умеет возвращать результат в другую процедуру. Полагаю что теперь ясно где недоработка.
Нужно просто что-то переименовать и добавить команду "Возврат  .... ;".
Также имеет смысл установить проверку на заполнение полей значениями в исходных справочниках и выводить сообщение пользователю о том , что поле такое не введено и надо заполнить.
бред бредовый. вы не в состоянии прочитать простейший код.

LexaK

ospov11789, даже не знаю как вам посоветовать воспользоваться отладчиком,
поставьте на своем коде точку останова, в документе измените количество часов, по шагам проверьте что и как рассчитывается!
может вы отладчиком не умеете пользоваться? <_<
если помогло нажмите: Спасибо!

IL2016

Если актуально,
вот решение.
для простоты и удобства себе назвал элементы по-своему.
Логика работы - в форме при изменении пользователем значения "ФЗП", либо "Время", либо "НормаВр"
автоматически интерактивно пересчитывается значение "ДоляЗП", т.е. результат расчета виден сразу также как в Экселе. У всех элементов тип "Число".
Нужно конечно усовершенствовать и добавить проверку на ноль значения "Время".
В этом автор, полагаю,сам справится.

&НаКлиенте
Процедура ПоказателиФЗППриИзменении(Элемент)
   Стр=Элементы.Показатели.ТекущиеДанные;
   РасчетДоляЗП.РасчетСтроки(Стр)
КонецПроцедуры


&НаКлиенте
Процедура ПоказателиВремяПриИзменении(Элемент)
   Стр=Элементы.Показатели.ТекущиеДанные;
   РасчетДоляЗП.РасчетСтроки(Стр)   
КонецПроцедуры

&НаКлиенте
Процедура ПоказателиНормаВрПриИзменении(Элемент)
   Стр=Элементы.Показатели.ТекущиеДанные;
   РасчетДоляЗП.РасчетСтроки(Стр)
КонецПроцедуры


//Общий модуль РасчетДоляЗП
Процедура РасчетСтроки(ТекСтр) Экспорт
ТекСтр.ДоляЗП = ТекСтр.ФЗП / ТекСтр.Время * ТекСтр.НормаВр;
КонецПроцедуры
Использую учебную платформу 1С:Предприятие 8.3

vitasw

Цитата: IL2016 от 11 мар 2016, 19:24ТекСтр.ДоляЗП = ТекСтр.ФЗП / ТекСтр.Время * ТекСтр.НормаВр;

сдается мне,что тут ошибка в формуле.

IL2016

абы да кабы , проверьте на практике.
воссоздать необходимый документ Вам не составит труда.
Использую учебную платформу 1С:Предприятие 8.3

ospov11789

Цитата: ospov11789 от 09 мар 2016, 16:01
Добрый день! У меня такая проблема. Необходимо рассчитать долю финансирования науки по научным исследованиям
Я создал такой модуль
&НаКлиенте
Процедура НаучноПедагогическиеРаботникиКоличествоЧасовОтводимыхНаНаучныеИсследованияПриИзменении(Элемент)
СтрокаТабличнойЧасти=Элементы.НаучноПедагогическиеРаботники.ТекущиеДанные;
ФинансированиеНауки.РассчитатьСумму(СтрокаТабличнойЧасти)

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



А также общий модуль следующего содержания
Процедура РассчитатьСумму(СтрокаТабличнойЧасти)Экспорт
СтрокаТабличнойЧасти.ДоляЗаработнойПлатыЗаНауку=СтрокаТабличнойЧасти.ЗаработнаяПлата/СтрокаТабличнойЧасти.СуммарнаяПродолжительностьРабочегоВремени*СтрокаТабличнойЧасти.КоличествоЧасовОтводимыхНаНаучныеИсследования;
КонецПроцедуры
Отладчик ничего не показывает, но и расчет не производится. Хотелось бы узнать в чем ошибка

Лучше всего сбойные модули отключать от системы убрав с них все флажки
Тогда система заработает нормально.
С уважением Осипов Михаил Юрьевич

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск