Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Прочее]

Помогите разобраться с модулем :'(

вопросик
читатель
офлайн
Дата регистрации: 21.10.2008
Сообщений: 75
Пост №1
 
15.12.2008 13:04

"Помогите пожалуйста!!!<br>Конфигурация 1С ХроноГраф Тарификация.<br>Справочник Тарифицирование сотрудников - Тарификационная карточка.<br>Если задана какая-то должность и Способ расчета оклада = Сумма (1000), то когда добавляем Начисление, к примеру "Доплата 10% от оклада" (способ расчета-"%от начисл") задаем в базе Должность,он считает правильно(100), а если добавить начисление допустим Северная надбавка 80%, где в базу уже помимо Должности добавляются и все остальные начисления, он считает такое...Берет оклад правильно=1000, Доплату 10% УЖЕ ставит = 1800, и в итоге получается Северн.надбавка = 2240 (вместо 1320)!!!<br><br>Тут кусок модуля:<br>лРезультат = СокрЛП(мРазмер_Текст);лНадбавкаЗаТетради = 0;<br> Если Начисление.СпособРасчета <> Перечисление.СпособыРасчета.ПроцентОтНачислений Тогда<br> Если(СпособРасчета<>Перечисление.СпособыРасчета.ПоТарифу)или(ПустоеЗначение(Примечание)=0)Тогда<br> лНачисленно = мБазоваяСумма();<br> КонецЕсли;<br> Иначе<br> мДеревоНадбавок.УдалитьСтроки();<br> лНачисленно = мРассчитатьСуммуНадбавки(Начисление);<br> лТекст = """";лДлина = 33;<br> Если(мДеревоНадбавок.КоличествоСтрок() > 0)Тогда<br> лНачислениеСотрудника = мДеревоНадбавок.ПолучитьЗначение(1, "НачислениеСотрудника");<br> лТаблицаНадбавок = мДеревоНадбавок.ПолучитьЗначение(1, "ТаблицаНадбавок");<br> лКоэффициент = мДеревоНадбавок.ПолучитьЗначение(1, "Коэффициент");<br> лБазоваяСумма = мДеревоНадбавок.ПолучитьЗначение(1, "БазоваяСумма");<br> БазаДляПроцентов.УдалитьСтроки();<br> Если лБазоваяСумма > 0 Тогда<br> Для Б = 1 По лТаблицаНадбавок.КоличествоСтрок() Цикл<br> лНачислениеСотрудникаДоп = лТаблицаНадбавок.ПолучитьЗначение(Б, "НачислениеСотрудника");<br> лБазоваяСуммаДоп = лТаблицаНадбавок.ПолучитьЗначение(Б, "БазоваяСумма");<br> лСумма = лТаблицаНадбавок.ПолучитьЗначение(Б, "Сумма");<br> лНомер = БазаДляПроцентов.НоваяСтрока();<br> БазаДляПроцентов.УстановитьЗначение(лНомер,"Начисление",СокрЛП(лНачислениеСотрудникаДоп.Начисление.Наименование));<br> БазаДляПроцентов.УстановитьЗначение(лНомер,"Сумма",лБазоваяСуммаДоп);<br> КонецЦикла;<br> лНомер = БазаДляПроцентов.НоваяСтрока();<br> БазаДляПроцентов.УстановитьЗначение(лНомер,"Начисление","Итого:");<br> БазаДляПроцентов.УстановитьЗначение(лНомер,"Сумма",лБазоваяСумма);<br> БазаДляПроцентов.ТекущаяСтрока(БазаДляПроцентов.КоличествоСтрок());<br> БазаДляПроцентов.ТекущаяКолонка(2);<br> КонецЕсли;<br> КонецЕсли;<br> КонецЕсли;"

Svetlana_E
читатель
офлайн
Дата регистрации: 30.08.2006
Сообщений: 2645
Пост №2
 
15.12.2008 14:20

Так вы в отладчике и пройдите по этому куску - увидите, откуда у программы такие суммы

вопросик
читатель
офлайн
Дата регистрации: 21.10.2008
Сообщений: 75
Пост №3
 
18.12.2008 11:10

Ничего не получается, может кто еще посмотрит???

вопросик
читатель
офлайн
Дата регистрации: 21.10.2008
Сообщений: 75
Пост №4
 
18.12.2008 11:12

"Вот еще кусочек может тут:<br><br>Функция РасчитатьСуммуСотрудника(Сотрудник)<br> //Функция производит подсчет суммы по тарификации сотрудника на текущую дату.<br> СпрНачисленияСотрудника.ИспользоватьВладельца(Сотрудник);<br> СпрНачисленияСотрудника.ВыбратьЭлементы();<br> Сумма = 0;<br> Пока СпрНачисленияСотрудника.ПолучитьЭлемент() <> 0 Цикл<br> Если (ДействуетНачислениеСотрудника(СпрНачисленияСотрудника.ТекущийЭлемент(),ТекДата) = 1) Тогда<br> лНачисленно = 0;<br> Если СпрНачисленияСотрудника.Начисление.СпособРасчета<>Перечисление.СпособыРасчета.ПроцентОтНачислений Тогда<br> бс=БазоваяСумма(СпрНачисленияСотрудника.ТекущийЭлемент(), ТекДата);<br> //бс=?(бс=-1,0,бс);<br> лНачисленно = бс;<br> Иначе<br> с=РассчитатьСуммуНадбавки(СпрНачисленияСотрудника.начисление, ПолучитьПустоеЗначение(), СпрНачисленияСотрудника.Владелец, ТекДата,0, СпрНачисленияСотрудника.ТекущийЭлемент());<br> лНачисленно = с;<br> КонецЕсли;<br> Сумма = Сумма + лНачисленно;<br> КонецЕсли;<br> КонецЦикла;<br> Возврат Сумма;<br>КонецФункции"

Ещё
читатель
офлайн
Дата регистрации: 16.06.2006
Сообщений: 129
Пост №5
 
18.12.2008 12:02

А что в функциях мБазоваяСумма() и мРассчитатьСуммуНадбавки()?

вопросик
читатель
офлайн
Дата регистрации: 21.10.2008
Сообщений: 75
Пост №6
 
26.12.2008 14:53

"Функция мБазоваяСумма(лНачисление = """",лТипНагрузки = """", лПроценты = """", лНадбавка_Руб = """", лНадбавка_Проц = """") Экспорт<br> Если(ПустоеЗначение(лНачисление) = 1)Тогда<br> лНачисление = Начисление;<br> КонецЕсли;<br> Если(ПустоеЗначение(лТипНагрузки) = 1)Тогда<br> лТипНагрузки = ТипНагрузки;<br> КонецЕсли;<br> Если(лПроценты = """")Тогда<br> лПроценты = Проценты;<br> КонецЕсли;<br> Если(лНадбавка_Руб = """")Тогда<br> лНадбавка_Руб = Надбавка_Руб;<br> КонецЕсли;<br> Если(лНадбавка_Проц = """")Тогда<br> лНадбавка_Проц = Надбавка_Проц;<br> КонецЕсли;<br> лВидТарифнойСетки = ВидТарифнойСетки;<br> Если СпособРасчетаЧасВНед(лНачисление.СпособРасчета) = 1 Тогда<br> Возврат мРасчитатьсяЗаЧасы(лНачисление.СпособРасчета);<br> ИначеЕсли лНачисление.СпособРасчета=Перечисление.СпособыРасчета.СтавкаПоРазряду Тогда<br> лСтавка = ПолучитьСуммуИзЕТС (Разряд, лВидТарифнойСетки, ТекДата,БезМестныхНадбавок,БезДоплат);<br> лСтавка = лСтавка + лНадбавка_Руб + лСтавка * лНадбавка_Проц/100;<br> лСтавка = размер * лСтавка;<br> Если Коэффициент <> 0 Тогда<br> лСтавка = лСтавка * Коэффициент;<br> КонецЕсли;<br> лСтавка = Окр(лСтавка,2);<br> Возврат лСтавка;<br> ИначеЕсли лНачисление.СпособРасчета=Перечисление.СпособыРасчета.ПроцентОтСтавки Тогда<br> лСтавка = ПолучитьСуммуИзЕТС (Разряд, лВидТарифнойСетки,ТекДата,БезМестныхНадбавок,БезДоплат);<br> лСтавка = лСтавка + лНадбавка_Руб + лСтавка * лНадбавка_Проц/100;<br> лСтавка = лСтавка * проценты/100;<br> Если Коэффициент <> 0 Тогда<br> лСтавка = лСтавка * Коэффициент;<br> КонецЕсли;<br> лСтавка = Окр(лСтавка,2);<br> Возврат лСтавка;<br> ИначеЕсли лНачисление.СпособРасчета=Перечисление.СпособыРасчета.СуммаФиксированная Тогда<br> лСтавка = размер;<br> Если Коэффициент <> 0 Тогда<br> лСтавка = лСтавка * Коэффициент;<br> КонецЕсли;<br> Возврат Окр(лСтавка,2);<br> ИначеЕсли лНачисление.СпособРасчета=Перечисление.СпособыРасчета.ПроцентОтНагрузки Тогда<br> Возврат мРасчитатьсяЗаЧасы(лТипНагрузки,лПроценты, лНадбавка_Руб, лНадбавка_Проц);<br> КонецЕсли;<br>КонецФункции<br><br><br>Функция мРассчитатьСуммуНадбавки (лНачисление, доб = 0) Экспорт<br><br> нач_сотр=СоздатьОбъект("Справочник.НачисленияСотрудника");<br> нач_сотр.ИспользоватьВладельца(Владелец);<br><br> коэф=проценты/100+доб;<br> лНайдено = 0;лНомерСтрокиДерева = 0;<br> Если(ТипЗначенияСтр(мДеревоНадбавок)="ТаблицаЗначений")Тогда<br> лНомер = """";<br> Если(мДеревоНадбавок.НайтиЗначение(ТекущийЭлемент(), лНомер, "НачислениеСотрудника")=1)Тогда<br> лТаблицаНадбавок = мДеревоНадбавок.ПолучитьЗначение(лНомер, "ТаблицаНадбавок");<br> лНайдено = 1;<br> КонецЕсли;<br> КонецЕсли;<br> Если(лНайдено = 0)Тогда<br> лТаблицаНадбавок = СоздатьОбъект("ТаблицаЗначений");<br> лТаблицаНадбавок.НоваяКолонка("НачислениеСотрудника");<br> лТаблицаНадбавок.НоваяКолонка("БазоваяСумма");<br> лТаблицаНадбавок.НоваяКолонка("Сумма");<br> Если(ТипЗначенияСтр(мДеревоНадбавок)="ТаблицаЗначений")Тогда<br> лНомерСтрокиДерева = мДеревоНадбавок.НоваяСтрока();<br> мДеревоНадбавок.УстановитьЗначение(лНомерСтрокиДерева, "НачислениеСотрудника", ТекущийЭлемент());<br> мДеревоНадбавок.УстановитьЗначение(лНомерСтрокиДерева, "ТаблицаНадбавок", лТаблицаНадбавок);<br> мДеревоНадбавок.УстановитьЗначение(лНомерСтрокиДерева, "Коэффициент", коэф);<br> КонецЕсли;<br> КонецЕсли;<br> база=СоздатьОбъект("Справочник.БазаНачисления");<br> база.ИспользоватьВладельца(Начисление);<br> база.ВыбратьЭлементы();<br> сум=0;лБазоваяСумма = 0;<br> Пока база.ПолучитьЭлемент()<>0 Цикл<br> нач_сотр.ВыбратьЭлементыПоРеквизиту("Начисление",база.начисление);<br> Пока нач_сотр.ПолучитьЭлемент()>0 Цикл<br> Если(нач_сотр.Должность = Должность)и(ТекущийЭлемент() <> нач_сотр.ТекущийЭлемент())Тогда<br> Если ДействуетНачислениеСотрудника (нач_сотр.ТекущийЭлемент(), ТекДата)=1 Тогда<br> //Если (ПустоеЗначение(Источник)=1) или (нач_сотр.Источник=Источник) Тогда<br> лНомер = """";<br> Если(лТаблицаНадбавок.НайтиЗначение(нач_сотр.ТекущийЭлемент(), лНомер, "НачислениеСотрудника")=0)Тогда<br> лНомер = лТаблицаНадбавок.НоваяСтрока();<br> лТаблицаНадбавок.УстановитьЗначение(лНомер, "НачислениеСотрудника", нач_сотр.ТекущийЭлемент());<br> Если база.Начисление.СпособРасчета=Перечисление.СпособыРасчета.ПроцентОтНачислений Тогда<br> бс = мРассчитатьСуммуНадбавки(база.Начисление,1);<br> Иначе<br> бс=БазоваяСумма(нач_сотр.ТекущийЭлемент(), ТекДата);<br> КонецЕсли;<br> лТаблицаНадбавок.УстановитьЗначение(лНомер, "БазоваяСумма", бс);<br> Иначе<br> бс = лТаблицаНадбавок.ПолучитьЗначение(лНомер, "БазоваяСумма");<br> КонецЕсли;<br> лБазоваяСумма = лБазоваяСумма + бс;<br> лНадбавка = коэф*бс;<br> сум=сум+лНадбавка;<br> лТаблицаНадбавок.УстановитьЗначение(лНомер, "Сумма", Число(лТаблицаНадбавок.ПолучитьЗначение(лНомер, "Сумма")) + лНадбавка);<br> //КонецЕсли;<br> КонецЕсли;<br> КонецЕсли;<br> КонецЦикла;<br> КонецЦикла;<br> Если(лНомерСтрокиДерева > 0)Тогда<br> мДеревоНадбавок.УстановитьЗначение(лНомерСтрокиДерева, "БазоваяСумма", лБазоваяСумма);<br> КонецЕсли;<br> Если Коэффициент <> 0 Тогда<br> Сум = Сум * Коэффициент;<br> КонецЕсли;<br> Возврат Окр(Сум,2);<br>КонецФункции"

Ещё
читатель
офлайн
Дата регистрации: 16.06.2006
Сообщений: 129
Пост №7
 
29.12.2008 22:00

Навскидку все нормально. Надо бы отладчиком погулять. md выложить реально куда-либо?

Показывать по 10 20 40 сообщений

Читают тему:

1 гостей
Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация