|
v7: Помощник расчетов выдает ошибку Неверный идентификатор колонки! | ☑ | ||
---|---|---|---|---|
0
ValleySilence
07.09.12
✎
10:32
|
Уважаемые форумчане !
Столкнулся с ошибкой "Неверный идентификатор колонки!" в Помощнике расчетов для КАМИН Расчет зарплаты. Причем ошибка выдается без номера строки! Где в коде ошибка ? Подскажите, пожалуйста! Перем м_КонтекстДокумента,м_ДатаДок,м_НомерДок,м_ВидДок,м_ДокументЗаписан,м_ВидДокумента; Перем м_СписокДанных,м_СписокРеквизитов,м_ПараметрыПомощника,м_Версия; Перем м_ДатаБазы; Перем м_БИ; Перем м_фл_ДобавитьНадбавку; Процедура ВидимостьРеквизитовНастройки(п_Флаг) Форма.кнДобавить.Видимость(п_Флаг); Форма.кнУдалить.Видимость(п_Флаг); Форма.ТекстВыслуги.Видимость(1-п_Флаг); Форма.ТекстС0.Видимость(1-п_Флаг); Форма.ТекстС1.Видимость(1-п_Флаг); Форма.ТекстС2.Видимость(1-п_Флаг); Форма.ТекстС3.Видимость(1-п_Флаг); Форма.ТекстПо0.Видимость(1-п_Флаг); Форма.ТекстПо1.Видимость(1-п_Флаг); Форма.ТекстПо2.Видимость(1-п_Флаг); Форма.ТекстПо3.Видимость(1-п_Флаг); Форма.ТекстПо3.Видимость(1-п_Флаг); Форма.рд_С_Лет.Видимость(1-п_Флаг); Форма.рд_С_Месяцев.Видимость(1-п_Флаг); Форма.рд_С_Дней.Видимость(1-п_Флаг); Форма.рд_По_Лет.Видимость(1-п_Флаг); Форма.рд_По_Месяцев.Видимость(1-п_Флаг); Форма.рд_По_Дней.Видимость(1-п_Флаг); Форма.ТекстНадбавки.Видимость(1-п_Флаг); Форма.рд_ПроцентНадбавки.Видимость(1-п_Флаг); Форма.кнЗаписать.Видимость(1-п_Флаг); Форма.кнЗакрыть.Видимость(1-п_Флаг); КонецПроцедуры Процедура кнДобавить() рд_с_Лет=0; рд_с_Месяцев=0; рд_с_Дней=0; рд_по_Лет=0; рд_по_Месяцев=0; рд_по_Дней=0; рд_ПроцентНадбавки=0; м_фл_ДобавитьНадбавку=1; ВидимостьРеквизитовНастройки(0); КонецПроцедуры Процедура кнУдалить() Если рд_ТаблицаНадбавок.ТекущаяСтрока()>0 Тогда рд_ТаблицаНадбавок.УдалитьСтроку(рд_ТаблицаНадбавок.ТекущаяСтрока()); КонецЕсли; КонецПроцедуры Процедура кнРедактировать() Если рд_ТаблицаНадбавок.ТекущаяСтрока()>0 Тогда рд_С_лет=рд_ТаблицаНадбавок.С_Лет; рд_С_Месяцев=рд_ТаблицаНадбавок.С_Месяцев; рд_С_Дней=рд_ТаблицаНадбавок.С_Дней; рд_По_лет=рд_ТаблицаНадбавок.По_Лет; рд_По_Месяцев=рд_ТаблицаНадбавок.По_Месяцев; рд_По_Дней=рд_ТаблицаНадбавок.По_Дней; рд_ПроцентНадбавки=рд_ТаблицаНадбавок.ПроцентНадбавки; ВидимостьРеквизитовНастройки(0); КонецЕсли; КонецПроцедуры Процедура кнЗакрыть() ВидимостьРеквизитовНастройки(1); КонецПроцедуры Процедура кнЗаписать() Если (рд_С_Месяцев>11)или(рд_По_Месяцев>11)или(рд_С_Дней>31)или(рд_По_Дней>31) Тогда Сообщить("Неверные форматы дат."); СтатусВозврата(0); Возврат; КонецЕсли; Если м_фл_ДобавитьНадбавку=1 Тогда //добавляем новую надбавку рд_ТаблицаНадбавок.НоваяСтрока(); КонецЕсли; рд_ТаблицаНадбавок.Текст="С "+рд_С_Лет+ФормаМЧ(" год "," года "," лет ",рд_С_Лет)+рд_С_Месяцев+ФормаМЧ(" месяц "," месяца "," месяцев ",рд_С_Месяцев)+рд_С_Дней+ФормаМЧ(" день"," дня"," дней",рд_С_Дней)+" по "+рд_По_Лет+ФормаМЧ(" год "," года "," лет ",рд_По_Лет)+рд_По_Месяцев+ФормаМЧ(" месяц "," месяца "," месяцев ",рд_По_Месяцев)+рд_По_Дней+ФормаМЧ(" день"," дня"," дней",рд_По_Дней); рд_ТаблицаНадбавок.ПроцентНадбавки=рд_ПроцентНадбавки; рд_ТаблицаНадбавок.С_Лет=рд_С_Лет; рд_ТаблицаНадбавок.С_Месяцев=рд_С_Месяцев; рд_ТаблицаНадбавок.С_Дней=рд_С_Дней; рд_ТаблицаНадбавок.По_Лет=рд_По_Лет; рд_ТаблицаНадбавок.По_Месяцев=рд_По_Месяцев; рд_ТаблицаНадбавок.По_Дней=рд_По_Дней; м_фл_ДобавитьНадбавку=0; ВидимостьРеквизитовНастройки(1); КонецПроцедуры //******************************************* Процедура УстановитьЗначенияПоУмолчанию() // установка реквизитов диалога помощника при вызове из вновь // создаваемого документа рд_Выбрать=ВосстановитьЗначение("НачПроц_Выбрать"); Если (рд_Выбрать<>1) и (рд_Выбрать<>2) Тогда рд_Выбрать=1; Конецесли; рд_Заданный=ВосстановитьЗначение("НачПроц_Заданный"); Если (рд_Заданный<>1) и (рд_Заданный<>2) Тогда рд_Заданный=1; Конецесли; //рд_ПараметрЗаполнения=ВосстановитьЗначение("НачПроц_ПараметрЗаполнения"); рд_ПодразделениеЗатрат=ВосстановитьЗначение("НачПроц_ПодразделениеЗатрат"); рд_Таблица.НоваяКолонка("НомерСтроки","Число",4,0,"№",5,,2); рд_Таблица.НоваяКолонка("Сотрудник","Справочник.Сотрудники",,,"Сотрудник",25,,1); рд_Таблица.НоваяКолонка("ПодразделениеЗатрат","Справочник.Подразделения",,,"Подразд.",15); рд_Таблица.НоваяКолонка("Процент","Число",7,2,"Процент",10,,2); рд_Таблица.НоваяКолонка("БазоваяСумма","Число",12,2,"Базовая сумма",15,,2); рд_Таблица.НоваяКолонка("Сумма","Число",15,2,"Сумма",15,,2); Если Гл_ТипРегиона = Перечисление.ТипыРегионов.РК Тогда рд_Таблица.НоваяКолонка("РайонныйКоэффициент","Число",6,2,"РК",6,,2); рд_Таблица.НоваяКолонка("СуммаРК","Число",15,2,"СуммаРК",15,,2); ИначеЕсли Гл_ТипРегиона = Перечисление.ТипыРегионов.Север Тогда рд_Таблица.НоваяКолонка("РайонныйКоэффициент","Число",6,2,"РК",6,,2); рд_Таблица.НоваяКолонка("СуммаРК","Число",15,2,"СуммаРК",15,,2); рд_Таблица.НоваяКолонка("СредняяНадбавка","Число",6,2,"СевНадб",6,,2); рд_Таблица.НоваяКолонка("СуммаСЕВ","Число",15,2,"СуммаСЕВ",15,,2); КонецЕсли; рд_Таблица.НоваяКолонка("Должность","Справочник.Должности",,,"Должность",20); рд_Таблица.НоваяКолонка("ДНР_год","Число",4,0,"Год",4); рд_Таблица.НоваяКолонка("ДНР_мес","Число",2,0,"М-ц",4); рд_Таблица.НоваяКолонка("ДНР_день","Число",2,0,"День",4); рд_Таблица.НоваяКолонка("ДИС_год","Число",4,0,"Год",4); рд_Таблица.НоваяКолонка("ДИС_мес","Число",2,0,"М-ц",4); рд_Таблица.НоваяКолонка("ДИС_день","Число",2,0,"День",4); рд_Таблица.НоваяКолонка("СТАЖ_год","Число",4,0,"Год",4); рд_Таблица.НоваяКолонка("СТАЖ_мес","Число",2,0,"М-ц",4); рд_Таблица.НоваяКолонка("СТАЖ_день","Число",2,0,"День",4); рд_Таблица.НоваяКолонка("ДНИ_план","Число",2,0,"План",4); рд_Таблица.НоваяКолонка("ДНИ_факт","Число",2,0,"Факт",4); рд_Таблица.НоваяКолонка("Коэфт","Число",2,0,"К-т",4); рд_Таблица.НоваяКолонка("Часы","Число",8,2,"Часы",8,,2); рд_Таблица.НоваяКолонка("Ставка","Число",9,3,"Ставка",8,,2); рд_Таблица.НоваяКолонка("Оклад","Число",8,2,"Оклад/Мес.ст",8,,2); рд_Таблица.НоваяКолонка("КУУР","Число",5,3,"КУУР"); рд_Таблица.ТекущаяКолонка("Сотрудник"); рд_Начисление = м_КонтекстДокумента.Начисление; рд_НазваниеРасчета = Строка(м_КонтекстДокумента.Начисление)+" за "+Строка(м_КонтекстДокумента.ПериодНачисления); рд_ИсточникДохода = м_КонтекстДокумента.ИсточникДохода; Если ПустоеЗначение(м_КонтекстДокумента.ПериодНачисления)=0 тогда рд_ПериодНачисления = м_КонтекстДокумента.ПериодНачисления; иначе рд_ПериодНачисления = Гл_НайтиПериод(м_ДатаДок); КонецЕсли; рд_ТаблицаНадбавок.НоваяКолонка("Текст","Строка",80,,"Наименование"); рд_ТаблицаНадбавок.НоваяКолонка("ПроцентНадбавки","Число",4,1,"%"); рд_ТаблицаНадбавок.НоваяКолонка("С_Лет","Число",2,0); рд_ТаблицаНадбавок.НоваяКолонка("С_Месяцев","Число",2,0); рд_ТаблицаНадбавок.НоваяКолонка("С_Дней","Число",2,0); рд_ТаблицаНадбавок.НоваяКолонка("По_Лет","Число",2,0); рд_ТаблицаНадбавок.НоваяКолонка("По_Месяцев","Число",2,0); рд_ТаблицаНадбавок.НоваяКолонка("По_Дней","Число",2,0); рд_ТаблицаНадбавок.ВидимостьКолонки("С_Лет,С_Месяцев,С_Дней,По_Лет,По_Дней,ПО_Месяцев",0); Попытка ЗначениеИзСтрокиВнутр(ВосстановитьЗначение("НадбавкиЗаВыслугуЛет"),рд_ТаблицаНадбавок); Исключение КонецПопытки; м_фл_ДобавитьНадбавку=1; рд_ТаблицаНадбавок.НоваяСтрока(); рд_С_Лет=0; рд_С_Месяцев=0; рд_С_Дней=1; рд_По_Лет=1; рд_По_Месяцев=0; рд_По_Дней=0; рд_ТаблицаНадбавок.Текст="С "+рд_С_Лет+ФормаМЧ(" год "," года "," лет ",рд_С_Лет)+рд_С_Месяцев+ФормаМЧ(" месяц "," месяца "," месяцев ",рд_С_Месяцев)+рд_С_Дней+ФормаМЧ(" день"," дня"," дней",рд_С_Дней)+" по "+рд_По_Лет+ФормаМЧ(" год "," года "," лет ",рд_По_Лет)+рд_По_Месяцев+ФормаМЧ(" месяц "," месяца "," месяцев ",рд_По_Месяцев)+рд_По_Дней+ФормаМЧ(" день"," дня"," дней",рд_По_Дней); рд_ТаблицаНадбавок.ПроцентНадбавки=5.8; рд_ТаблицаНадбавок.С_Лет=0; рд_ТаблицаНадбавок.С_Месяцев=0; рд_ТаблицаНадбавок.С_Дней=1; рд_ТаблицаНадбавок.По_Лет=1; рд_ТаблицаНадбавок.По_Месяцев=0; рд_ТаблицаНадбавок.По_Дней=0; рд_ТаблицаНадбавок.НоваяСтрока(); рд_С_Лет=1; рд_С_Месяцев=0; рд_С_Дней=1; рд_По_Лет=2; рд_По_Месяцев=0; рд_По_Дней=0; рд_ТаблицаНадбавок.Текст="С "+рд_С_Лет+ФормаМЧ(" год "," года "," лет ",рд_С_Лет)+рд_С_Месяцев+ФормаМЧ(" месяц "," месяца "," месяцев ",рд_С_Месяцев)+рд_С_Дней+ФормаМЧ(" день"," дня"," дней",рд_С_Дней)+" по "+рд_По_Лет+ФормаМЧ(" год "," года "," лет ",рд_По_Лет)+рд_По_Месяцев+ФормаМЧ(" месяц "," месяца "," месяцев ",рд_По_Месяцев)+рд_По_Дней+ФормаМЧ(" день"," дня"," дней",рд_По_Дней); рд_ТаблицаНадбавок.ПроцентНадбавки=11.6; рд_ТаблицаНадбавок.С_Лет=1; рд_ТаблицаНадбавок.С_Месяцев=0; рд_ТаблицаНадбавок.С_Дней=1; рд_ТаблицаНадбавок.По_Лет=2; рд_ТаблицаНадбавок.По_Месяцев=0; рд_ТаблицаНадбавок.По_Дней=0; рд_ТаблицаНадбавок.НоваяСтрока(); рд_С_Лет=2; рд_С_Месяцев=0; рд_С_Дней=1; рд_По_Лет=3; рд_По_Месяцев=0; рд_По_Дней=0; рд_ТаблицаНадбавок.Текст="С "+рд_С_Лет+ФормаМЧ(" год "," года "," лет ",рд_С_Лет)+рд_С_Месяцев+ФормаМЧ(" месяц "," месяца "," месяцев ",рд_С_Месяцев)+рд_С_Дней+ФормаМЧ(" день"," дня"," дней",рд_С_Дней)+" по "+рд_По_Лет+ФормаМЧ(" год "," года "," лет ",рд_По_Лет)+рд_По_Месяцев+ФормаМЧ(" месяц "," месяца "," месяцев ",рд_По_Месяцев)+рд_По_Дней+ФормаМЧ(" день"," дня"," дней",рд_По_Дней); рд_ТаблицаНадбавок.ПроцентНадбавки=13.4; рд_ТаблицаНадбавок.С_Лет=2; рд_ТаблицаНадбавок.С_Месяцев=0; рд_ТаблицаНадбавок.С_Дней=1; рд_ТаблицаНадбавок.По_Лет=3; рд_ТаблицаНадбавок.По_Месяцев=0; рд_ТаблицаНадбавок.По_Дней=0; рд_ТаблицаНадбавок.НоваяСтрока(); рд_С_Лет=3; рд_С_Месяцев=0; рд_С_Дней=1; рд_По_Лет=5; рд_По_Месяцев=0; рд_По_Дней=0; рд_ТаблицаНадбавок.Текст="С "+рд_С_Лет+ФормаМЧ(" год "," года "," лет ",рд_С_Лет)+рд_С_Месяцев+ФормаМЧ(" месяц "," месяца "," месяцев ",рд_С_Месяцев)+рд_С_Дней+ФормаМЧ(" день"," дня"," дней",рд_С_Дней)+" по "+рд_По_Лет+ФормаМЧ(" год "," года "," лет ",рд_По_Лет)+рд_По_Месяцев+ФормаМЧ(" месяц "," месяца "," месяцев ",рд_По_Месяцев)+рд_По_Дней+ФормаМЧ(" день"," дня"," дней",рд_По_Дней); рд_ТаблицаНадбавок.ПроцентНадбавки=15.0; рд_ТаблицаНадбавок.С_Лет=3; рд_ТаблицаНадбавок.С_Месяцев=0; рд_ТаблицаНадбавок.С_Дней=1; рд_ТаблицаНадбавок.По_Лет=5; рд_ТаблицаНадбавок.По_Месяцев=0; рд_ТаблицаНадбавок.По_Дней=0; рд_ТаблицаНадбавок.НоваяСтрока(); рд_С_Лет=5; рд_С_Месяцев=0; рд_С_Дней=1; рд_По_Лет=10; рд_По_Месяцев=0; рд_По_Дней=0; рд_ТаблицаНадбавок.Текст="С "+рд_С_Лет+ФормаМЧ(" год "," года "," лет ",рд_С_Лет)+рд_С_Месяцев+ФормаМЧ(" месяц "," месяца "," месяцев ",рд_С_Месяцев)+рд_С_Дней+ФормаМЧ(" день"," дня"," дней",рд_С_Дней)+" по "+рд_По_Лет+ФормаМЧ(" год "," года "," лет ",рд_По_Лет)+рд_По_Месяцев+ФормаМЧ(" месяц "," месяца "," месяцев ",рд_По_Месяцев)+рд_По_Дней+ФормаМЧ(" день"," дня"," дней",рд_По_Дней); рд_ТаблицаНадбавок.ПроцентНадбавки=20.0; рд_ТаблицаНадбавок.С_Лет=5; рд_ТаблицаНадбавок.С_Месяцев=0; рд_ТаблицаНадбавок.С_Дней=1; рд_ТаблицаНадбавок.По_Лет=10; рд_ТаблицаНадбавок.По_Месяцев=0; рд_ТаблицаНадбавок.По_Дней=0; рд_ТаблицаНадбавок.НоваяСтрока(); рд_С_Лет=10; рд_С_Месяцев=0; рд_С_Дней=1; рд_По_Лет=15; рд_По_Месяцев=0; рд_По_Дней=0; рд_ТаблицаНадбавок.Текст="С "+рд_С_Лет+ФормаМЧ(" год "," года "," лет ",рд_С_Лет)+рд_С_Месяцев+ФормаМЧ(" месяц "," месяца "," месяцев ",рд_С_Месяцев)+рд_С_Дней+ФормаМЧ(" день"," дня"," дней",рд_С_Дней)+" по "+рд_По_Лет+ФормаМЧ(" год "," года "," лет ",рд_По_Лет)+рд_По_Месяцев+ФормаМЧ(" месяц "," месяца "," месяцев ",рд_По_Месяцев)+рд_По_Дней+ФормаМЧ(" день"," дня"," дней",рд_По_Дней); рд_ТаблицаНадбавок.ПроцентНадбавки=25.0; рд_ТаблицаНадбавок.С_Лет=10; рд_ТаблицаНадбавок.С_Месяцев=0; рд_ТаблицаНадбавок.С_Дней=1; рд_ТаблицаНадбавок.По_Лет=15; рд_ТаблицаНадбавок.По_Месяцев=0; рд_ТаблицаНадбавок.По_Дней=0; рд_ТаблицаНадбавок.НоваяСтрока(); рд_С_Лет=15; рд_С_Месяцев=0; рд_С_Дней=1; рд_По_Лет=99; рд_По_Месяцев=0; рд_По_Дней=0; рд_ТаблицаНадбавок.Текст="С "+рд_С_Лет+ФормаМЧ(" год "," года "," лет ",рд_С_Лет)+рд_С_Месяцев+ФормаМЧ(" месяц "," месяца "," месяцев ",рд_С_Месяцев)+рд_С_Дней+ФормаМЧ(" день"," дня"," дней",рд_С_Дней)+" по "+рд_По_Лет+ФормаМЧ(" год "," года "," лет ",рд_По_Лет)+рд_По_Месяцев+ФормаМЧ(" месяц "," месяца "," месяцев ",рд_По_Месяцев)+рд_По_Дней+ФормаМЧ(" день"," дня"," дней",рд_По_Дней); рд_ТаблицаНадбавок.ПроцентНадбавки=33.4; рд_ТаблицаНадбавок.С_Лет=15; рд_ТаблицаНадбавок.С_Месяцев=0; рд_ТаблицаНадбавок.С_Дней=1; рд_ТаблицаНадбавок.По_Лет=99; рд_ТаблицаНадбавок.По_Месяцев=0; рд_ТаблицаНадбавок.По_Дней=0; м_фл_ДобавитьНадбавку=0; ВидимостьРеквизитовНастройки(1); Конецпроцедуры Процедура ДеньМесяца() м_ДатаБазы=рд_ПериодНачисления.НачДата; Гл_ПериодНеРассчитан(рд_ПериодНачисления.КонДата); КонецПроцедуры Процедура ПроверкаСтатьиЗатрат() Если рд_СтатьяЗатрат.Выбран() = 0 Тогда рд_СтатьяЗатрат = рд_Начисление.СтатьяЗатрат; ИначеЕсли рд_СтатьяЗатрат<>рд_Начисление.СтатьяЗатрат тогда Если Вопрос("Изменить статью затрат на <"+рд_Начисление.СтатьяЗатрат+">?","Да+Нет")="Да" тогда рд_СтатьяЗатрат=рд_Начисление.СтатьяЗатрат; КонецЕсли; КонецЕсли; КонецПроцедуры Процедура ПроверкаНачисления() Если рд_Начисление.ЕстьБаза=0 Тогда Предупреждение("Начисление "+рд_Начисление.Код+" "+рд_Начисление.Наименование+ " не имеет базы"); КонецЕсли; ПроверкаСтатьиЗатрат(); КонецПроцедуры Процедура РассчитатьНадбавки() л_Сотрудник = рд_Таблица.Сотрудник; Если Гл_ТипРегиона = Перечисление.ТипыРегионов.РК Тогда рд_Таблица.РайонныйКоэффициент = л_Сотрудник.РайонныйКоэффициент; рд_Таблица.СуммаРК = гл_РассчитатьРК(рд_Начисление,рд_Таблица.Сумма,рд_Таблица.РайонныйКоэффициент); ИначеЕсли Гл_ТипРегиона = Перечисление.ТипыРегионов.Север Тогда рд_Таблица.РайонныйКоэффициент = л_Сотрудник.РайонныйКоэффициент; рд_Таблица.СредняяНадбавка = Гл_СредняяНадбавка(л_Сотрудник,НачМесяца(м_ДатаБазы),КонМесяца(м_ДатаБазы)); рд_Таблица.СуммаРК = гл_РассчитатьРК(рд_Начисление,рд_Таблица.Сумма,рд_Таблица.РайонныйКоэффициент); рд_Таблица.СуммаСЕВ = гл_РассчитатьСЕВ(рд_Начисление,рд_Таблица.Сумма,рд_Таблица.СредняяНадбавка); Конецесли; КонецПроцедуры Процедура ОбрБазСуммы() л_Сумма=Окр(рд_Таблица.БазоваяСумма*рд_Таблица.Процент/100,2); рд_Таблица.УстановитьЗначение(рд_Таблица.НомерСтроки,"Сумма",л_Сумма); РассчитатьНадбавки(); КонецПроцедуры Процедура РасчетСуммы() л_Строка = рд_Таблица.КоличествоСтрок(); л_Сотрудник = рд_Таблица.ПолучитьЗначение(л_Строка,"Сотрудник"); л_ВидСтавки = л_Сотрудник.Должность.ВидСтавки; Если л_ВидСтавки = Перечисление.ВидыСтавок.РубЧас Тогда л_Ставка = л_Сотрудник.Должность.МинСтавка; рд_Таблица.УстановитьЗначение(л_Строка,"Ставка",л_Ставка); л_Оклад = л_Ставка*рд_Таблица.Часы; рд_Таблица.УстановитьЗначение(л_Строка,"Оклад",л_Оклад); КонецЕсли; Если л_ВидСтавки = Перечисление.ВидыСтавок.РубМес Тогда л_Оклад = л_Сотрудник.Должность.МинСтавка; рд_Таблица.УстановитьЗначение(л_Строка,"Оклад",л_Оклад); КонецЕсли; л_Коэфт = рд_Таблица.Дни_факт/рд_Таблица.Дни_план; рд_Таблица.УстановитьЗначение(л_Строка,"Коэфт",л_Коэфт); л_БазоваяСумма = ОКР(рд_Таблица.Оклад*рд_Таблица.КУУР,2); рд_Таблица.УстановитьЗначение(л_Строка,"БазоваяСумма",л_БазоваяСумма); //л_БазоваяСумма=0; //Для л_Сч=ДатаМесяц(м_ДатаБазы) по ДатаМесяц(рд_ПериодНачисления.КонДата) цикл // л_Дата=Дата(ДатаГод(м_ДатаБазы),л_Сч,1); // л_БазоваяСумма=л_БазоваяСумма+Гл_ПодсчитатьБазуНу(л_Дата,рд_Начисление,рд_Таблица.Сотрудник,"О"); //КонецЦикла; //рд_Таблица.УстановитьЗначение(рд_Таблица.НомерСтроки,"БазоваяСумма",л_БазоваяСумма); ОбрБазСуммы(); КонецПроцедуры Процедура ЗаполнитьПроцент() //заполним процент надбавки за выслугу лет л_Сотрудник = рд_Таблица.ПолучитьЗначение(рд_Таблица.НомерСтроки,"Сотрудник"); л_ОбщийСтажЛет=0; л_ОбщийСтажМесяцев=0; л_ОбщийСтажДней=0; Попытка л_ОбщийСтажЛет=Гл_ПолучитьПараметрСотрудника(л_Сотрудник,"СтажДляВыслугиНаДатуПриема_Лет"); л_ОбщийСтажМесяцев=Гл_ПолучитьПараметрСотрудника(л_Сотрудник,"СтажДляВыслугиНаДатуПриема_Месяцев"); л_ОбщийСтажДней=Гл_ПолучитьПараметрСотрудника(л_Сотрудник,"СтажДляВыслугиНаДатуПриема_Дней"); Исключение КонецПопытки; л_ДатаА=м_ДатаДок; л_ДатаП=Гл_ПолучитьПараметрСотрудника(л_Сотрудник,"ВыслугаДатаОтсчета"); л_Разн = -1; //РазницаВМесяцах; л_ГодП = ДатаГод(л_ДатаП); л_МесП = ДатаМесяц(л_ДатаП); л_ЧслП = ДатаЧисло(л_ДатаП); л_ГодА = ДатаГод(л_ДатаА); л_МесА = ДатаМесяц(л_ДатаА); л_ЧслА = ДатаЧисло(л_ДатаА); рд_Таблица.УстановитьЗначение(рд_Таблица.НомерСтроки,"ДНР_год",л_ГодП); рд_Таблица.УстановитьЗначение(рд_Таблица.НомерСтроки,"ДНР_мес",л_МесП); рд_Таблица.УстановитьЗначение(рд_Таблица.НомерСтроки,"ДНР_день",л_ЧслП); рд_Таблица.УстановитьЗначение(рд_Таблица.НомерСтроки,"ДИС_год",л_ГодА); рд_Таблица.УстановитьЗначение(рд_Таблица.НомерСтроки,"ДИС_мес",л_МесА); рд_Таблица.УстановитьЗначение(рд_Таблица.НомерСтроки,"ДИС_день",л_ЧслА); л_Год = Цел(((л_ГодА-л_ГодП)*12+л_МесА-л_МесП)/12); л_Мес = ((л_ГодА-л_ГодП)*12+л_МесА-л_МесП)-л_Год*12; л_Дней = ?(л_ЧслП>л_ЧслА,ДатаЧисло(КонМесяца(ДобавитьМесяц(ТекущаяДата(),л_Разн)))-л_ЧслП+л_ЧслА,л_ЧслА-л_ЧслП); Если (л_МесП=л_МесА) И (л_ЧслП<=л_ЧслА)Тогда л_Лет = ДатаГод(л_ДатаА)-ДатаГод(л_ДатаП); ИначеЕсли (л_МесП<л_МесА) Тогда л_Лет = ДатаГод(л_ДатаА)-ДатаГод(л_ДатаП); Иначе л_Лет = ДатаГод(л_ДатаА)-ДатаГод(л_ДатаП)-1; КонецЕсли; Если (л_ЧслП>л_ЧслА) И (л_МесА=л_МесП) Тогда л_Месяц = 11; ИначеЕсли (л_ЧслП>л_ЧслА) Тогда л_Месяц = л_Мес-1; Иначе л_Месяц = л_Мес; КонецЕсли; л_ОбщийСтажЛет=л_ОбщийСтажЛет+л_Лет; л_ОбщийСтажМесяцев=л_ОбщийСтажМесяцев+л_Месяц; л_ОбщийСтажДней=л_ОбщийСтажДней+л_Дней; рд_Таблица.УстановитьЗначение(рд_Таблица.НомерСтроки,"СТАЖ_год",л_ОбщийСтажЛет); рд_Таблица.УстановитьЗначение(рд_Таблица.НомерСтроки,"СТАЖ_мес",л_ОбщийСтажМесяцев); рд_Таблица.УстановитьЗначение(рд_Таблица.НомерСтроки,"СТАЖ_день",л_ОбщийСтажДней); //для расчета всего дней примем, что: //в одном году 1000 дней //в одном месяце 100 дней л_ВсегоДнейСтажа=1000*л_ОбщийСтажЛет+100*л_ОбщийСтажМесяцев+л_ОбщийСтажДней; рд_ТаблицаНадбавок.ВыбратьСтроки(); л_Найден=0; Пока рд_ТаблицаНадбавок.ПолучитьСтроку()=1 Цикл л_С_Лет=рд_ТаблицаНадбавок.С_Лет; л_С_Месяцев=рд_ТаблицаНадбавок.С_Месяцев; л_С_Дней=рд_ТаблицаНадбавок.С_Дней; л_По_Лет=рд_ТаблицаНадбавок.По_Лет; л_По_Месяцев=рд_ТаблицаНадбавок.По_Месяцев; л_По_Дней=рд_ТаблицаНадбавок.По_Дней; л_С_ДнейСтажа=1000*л_С_Лет+100*л_С_Месяцев+л_С_Дней; л_По_ДнейСтажа=1000*л_По_Лет+100*л_По_Месяцев+л_По_Дней; Если (л_ВсегоДнейСтажа>=л_С_ДнейСтажа)и(л_ВсегоДнейСтажа<=л_По_ДнейСтажа) Тогда рд_Таблица.УстановитьЗначение(рд_Таблица.НомерСтроки,"Процент",рд_ТаблицаНадбавок.ПроцентНадбавки); л_Найден=1; Прервать; КонецЕсли; КонецЦикла; Если л_Найден=0 Тогда Сообщить("Не найден процент надбавки для сотрудника: "+СокрЛП(Гл_ФИО(л_Сотрудник,1,0))+" со стажем: "+л_ОбщийСтажЛет+ФормаМЧ(" год "," года "," лет ",л_ОбщийСтажЛет)+л_ОбщийСтажМесяцев+ФормаМЧ(" месяц "," месяца "," месяцев ",л_ОбщийСтажМесяцев)+л_ОбщийСтажДней+ФормаМЧ(" день"," дня"," дней",л_ОбщийСтажДней)); КонецЕсли; КонецПроцедуры Процедура ПересчетНомеровСтрок(знач п_Строка) Состояние("Обработка"); для л_Строка=п_Строка по рд_Таблица.КоличествоСтрок() цикл рд_Таблица.УстановитьЗначение(л_Строка,"НомерСтроки",л_Строка); КонецЦикла; КонецПроцедуры Процедура УдалитьСтрокуТаблицы() л_НомерСтроки = рд_Таблица.НомерСтроки; Если л_НомерСтроки > 0 Тогда рд_Таблица.УдалитьСтроку(л_НомерСтроки); ПересчетНомеровСтрок(л_НомерСтроки); Если л_НомерСтроки > рд_Таблица.КоличествоСтрок() Тогда л_НомерСтроки=л_НомерСтроки-1; Конецесли; Если л_НомерСтроки>0 тогда рд_Таблица.ТекущаяСтрока(л_НомерСтроки); рд_Таблица.ПолучитьСтрокуПоНомеру(л_НомерСтроки); КонецЕсли; Конецесли; Активизировать("рд_Таблица"); Конецпроцедуры Функция ПроверкаСотрудника(п_Сотрудник) м_БИ.ПериодМ(м_ДатаБазы); Если (м_БИ.СНК("ШР.2","С",,,,п_Сотрудник)=0) тогда Если (м_БИ.СНК("ШР.3","С",,,,п_Сотрудник)=0) тогда Если (м_БИ.СКК("ШР.2","С",,,,п_Сотрудник)=0) тогда Если (м_БИ.СКК("ШР.3","С",,,,п_Сотрудник)=0) тогда Если (м_БИ.КО("ШР.2","С",,,,п_Сотрудник)=0) тогда Если (м_БИ.КО("ШР.3","С",,,,п_Сотрудник)=0) тогда Если Вопрос ("Сотрудник "+п_Сотрудник+" не работал в расчетном периоде"+РазделительСтрок+ "Добавлять в таблицу?", "Да+Нет")="Да" тогда возврат(0); иначе возврат(1); КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; Возврат(0); КонецФункции Процедура Нули(п_Строка) рд_Таблица.УстановитьЗначение(п_Строка,"Процент",0); рд_Таблица.УстановитьЗначение(п_Строка,"БазоваяСумма",0); рд_Таблица.УстановитьЗначение(п_Строка,"Сумма",0); КонецПроцедуры Процедура ОбрТаблица() Перем л_Сотрудник,л_Процент,л_План,л_Факт,л_Коэфт,л_Часы,л_ВидСтавки,л_Ставка,л_Оклад,л_КУУР,л_БазоваяСумма,л_Сумма,л_РК,л_СЕВ; Если рд_Таблица.КоличествоСтрок()=0 тогда возврат; КонецЕсли; л_Строка = рд_Таблица.НомерСтроки; л_Колонка=рд_Таблица.ТекущаяКолонка(); Если л_Колонка = "Сотрудник" Тогда л_Сотрудник = рд_Таблица.ПолучитьЗначение(л_Строка,л_Колонка); Если ВвестиЗначение(л_Сотрудник,"Выберите сотрудника","Справочник.Сотрудники") = 1 Тогда Если ПроверкаСотрудника(л_Сотрудник)=0 тогда рд_Таблица.УстановитьЗначение(л_Строка,"Сотрудник",л_Сотрудник); рд_Таблица.УстановитьЗначение(л_Строка,"Должность",л_Сотрудник.Должность); Нули(л_Строка); Если рд_Выбрать=1 Тогда рд_Таблица.УстановитьЗначение(л_Строка,"ПодразделениеЗатрат",рд_ПодразделениеЗатрат); Иначе рд_Таблица.УстановитьЗначение(л_Строка,"ПодразделениеЗатрат",л_Сотрудник.Подразделение); Конецесли; ЗаполнитьПроцент(); РасчетСуммы(); иначе УдалитьСтрокуТаблицы(); КонецЕсли; Конецесли; ИначеЕсли л_Колонка = "Процент" Тогда л_Процент = 0; Если ВвестиЗначение(л_Процент,"Введите процент","Число",7,2) = 1 Тогда рд_Таблица.УстановитьЗначение(л_Строка,л_Колонка,л_Процент); Конецесли; ОбрБазСуммы(); ИначеЕсли л_Колонка = "Дни_план" Тогда л_План = 0; Если ВвестиЗначение(л_План,"Введите кол-во дней план","Число",2,0) = 1 Тогда рд_Таблица.УстановитьЗначение(л_Строка,л_Колонка,л_План); Конецесли; ИначеЕсли л_Колонка = "Дни_факт" Тогда л_Факт = 0; Если ВвестиЗначение(л_Факт,"Введите кол-во дней факт","Число",2,0) = 1 Тогда рд_Таблица.УстановитьЗначение(л_Строка,л_Колонка,л_Факт); РасчетСуммы(); Конецесли; ИначеЕсли л_Колонка = "Часы" Тогда л_Часы = 0; Если ВвестиЗначение(л_Часы,"Введите кол-во часов","Число",8,2) = 1 Тогда рд_Таблица.УстановитьЗначение(л_Строка,л_Колонка,л_Часы); РасчетСуммы(); Конецесли; ИначеЕсли л_Колонка = "КУУР" Тогда л_КУУР = 0; Если ВвестиЗначение(л_КУУР,"Введите КУУР","Число",5,3) = 1 Тогда рд_Таблица.УстановитьЗначение(л_Строка,л_Колонка,л_КУУР); Конецесли; РасчетСуммы(); ИначеЕсли л_Колонка="РайонныйКоэффициент" Тогда л_РК = рд_Таблица.ПолучитьЗначение(л_Строка,л_Колонка); Если ВвестиЗначение(л_РК,"Введите районный коэффициент","Число",6,2) = 1 Тогда рд_Таблица.УстановитьЗначение(л_Строка,л_Колонка,л_РК); КонецЕсли; рд_Таблица.СуммаРК = гл_РассчитатьРК(рд_Начисление,рд_Таблица.Сумма,рд_Таблица.РайонныйКоэффициент); ИначеЕсли л_Колонка="СредняяНадбавка" Тогда л_СЕВ = рд_Таблица.ПолучитьЗначение(л_Строка,л_Колонка); Если ВвестиЗначение(л_СЕВ,"Введите процент сев. надбавки","Число",6,2) = 1 Тогда рд_Таблица.УстановитьЗначение(л_Строка,л_Колонка,л_СЕВ); КонецЕсли; рд_Таблица.СуммаСЕВ = гл_РассчитатьСЕВ(рд_Начисление,рд_Таблица.Сумма,рд_Таблица.СредняяНадбавка); Конецесли; Конецпроцедуры Процедура ЗаполнитьСтрокуТаблицы() Перем л_Сотрудник,л_Процент,л_План,л_Факт,л_Коэфт,л_Часы,л_ВидСтавки,л_Ставка,л_Оклад,л_КУУР,л_БазоваяСумма,л_Сумма,л_РК,л_СЕВ; л_Строка = рд_Таблица.КоличествоСтрок(); л_Сотрудник = рд_Таблица.ПолучитьЗначение(л_Строка,"Сотрудник"); л_План = 0; Если ВвестиЗначение(л_План,"Введите кол-во дней план","Число",2,0) = 1 Тогда рд_Таблица.УстановитьЗначение(л_Строка,"ДНИ_план",л_План); Конецесли; л_Факт = 0; Если ВвестиЗначение(л_Факт,"Введите кол-во дней факт","Число",2,0) = 1 Тогда рд_Таблица.УстановитьЗначение(л_Строка,"ДНИ_факт",л_Факт); Конецесли; л_Часы = 0; Если ВвестиЗначение(л_Часы,"Введите кол-во часов","Число",8,2) = 1 Тогда рд_Таблица.УстановитьЗначение(л_Строка,"Часы",л_Часы); Конецесли; л_КУУР = 0; Если ВвестиЗначение(л_КУУР,"Введите КУУР","Число",5,3) = 1 Тогда рд_Таблица.УстановитьЗначение(л_Строка,"КУУР",л_КУУР); Конецесли; РасчетСуммы(); Конецпроцедуры Процедура ДобавитьСтрокуТаблицы() Перем л_Сотрудник; Если ВвестиЗначение(л_Сотрудник,"Выберите сотрудника","Справочник.Сотрудники") = 1 Тогда Если ПроверкаСотрудника(л_Сотрудник)=0 тогда рд_Таблица.НоваяСтрока(); л_НомерСтроки = рд_Таблица.КоличествоСтрок(); рд_Таблица.УстановитьЗначение(л_НомерСтроки,"НомерСтроки",л_НомерСтроки); рд_Таблица.ТекущаяСтрока(л_НомерСтроки); рд_Таблица.УстановитьЗначение(л_НомерСтроки,"Сотрудник",л_Сотрудник); рд_Таблица.УстановитьЗначение(л_НомерСтроки,"Должность",л_Сотрудник.Должность); Нули(л_НомерСтроки); Если рд_Выбрать=1 Тогда рд_Таблица.УстановитьЗначение(л_НомерСтроки,"ПодразделениеЗатрат",рд_ПодразделениеЗатрат); Иначе рд_Таблица.УстановитьЗначение(л_НомерСтроки,"ПодразделениеЗатрат",л_Сотрудник.Подразделение); Конецесли; ЗаполнитьПроцент(); иначе УдалитьСтрокуТаблицы(); КонецЕсли; Конецесли; ЗаполнитьСтрокуТаблицы(); //ОбрТаблица(); Конецпроцедуры Процедура ПодборСтрокТаблицы() Перем л_Сотрудник; Пока ВвестиЗначение(л_Сотрудник,"Выберите сотрудника","Справочник.Сотрудники") = 1 Цикл Если ПроверкаСотрудника(л_Сотрудник)=0 тогда рд_Таблица.НоваяСтрока(); л_НомерСтроки = рд_Таблица.КоличествоСтрок(); рд_Таблица.УстановитьЗначение(л_НомерСтроки,"НомерСтроки",л_НомерСтроки); рд_Таблица.ТекущаяСтрока(л_НомерСтроки); рд_Таблица.УстановитьЗначение(л_НомерСтроки,"Сотрудник",л_Сотрудник); рд_Таблица.УстановитьЗначение(л_НомерСтроки,"Должность",л_Сотрудник.Должность); Нули(л_НомерСтроки); Если рд_Выбрать=1 Тогда рд_Таблица.УстановитьЗначение(л_НомерСтроки,"ПодразделениеЗатрат",рд_ПодразделениеЗатрат); Иначе рд_Таблица.УстановитьЗначение(л_НомерСтроки,"ПодразделениеЗатрат",л_Сотрудник.Подразделение); Конецесли; ЗаполнитьПроцент(); иначе УдалитьСтрокуТаблицы(); КонецЕсли; ЗаполнитьСтрокуТаблицы(); КонецЦикла; //ОбрТаблица(); Конецпроцедуры Процедура ЗаполнитьТаблицу() л_НомерСтрокиНачальный = рд_Таблица.КоличествоСтрок(); л_Параметры = СоздатьОбъект("СписокЗначений"); л_Параметры.Установить("ДополнительныеУсловия",1); л_Параметры.Установить("Работники",1); л_Параметры.Установить("Основные",1); л_Параметры.Установить("Неосновные",1); л_Параметры.Установить("Работающие",1); л_Параметры.Установить("Уволенные",0); л_Параметры.Установить("Подразделение",рд_ПодразделениеЗатрат); л_Параметры.Установить("Входящие",1); л_Параметры.Установить("Дата1",рд_ПериодНачисления.НачДата); л_Параметры.Установить("Дата2",рд_ПериодНачисления.КонДата); л_СписокСотрудников = Гл_ВычислитьВнешнийОтчет(Константа.ПомощникПодбораСотрудников,Контекст,л_Параметры); Если ПустоеЗначение(л_СписокСотрудников) = 1 Тогда Возврат; Конецесли; Для л_Поз = 1 по л_СписокСотрудников.РазмерСписка() Цикл л_Сотрудник = л_СписокСотрудников.ПолучитьЗначение(л_Поз); Состояние(л_Сотрудник.Наименование); Если ПроверкаСотрудника(л_Сотрудник)=0 тогда рд_Таблица.НоваяСтрока(); л_НомерСтроки = рд_Таблица.КоличествоСтрок(); рд_Таблица.ТекущаяСтрока(л_НомерСтроки); рд_Таблица.УстановитьЗначение(л_НомерСтроки,"НомерСтроки",л_НомерСтроки); рд_Таблица.Сотрудник = л_Сотрудник; рд_Таблица.Должность = л_Сотрудник.Должность; Нули(л_НомерСтроки); Если рд_Выбрать=1 Тогда рд_Таблица.ПодразделениеЗатрат = рд_ПодразделениеЗатрат; Иначе рд_Таблица.ПодразделениеЗатрат = л_Сотрудник.Подразделение; &nbs |
|||
1
Fedot200
07.09.12
✎
10:33
|
Пятница, да?
|
|||
2
PuhUfa
07.09.12
✎
10:34
|
ГМ надо еще... без него тяжело искать
|
|||
3
vicof
07.09.12
✎
10:42
|
(0) хорошо,что не в УППшке ошибка вылезла.
|
|||
4
ValleySilence
07.09.12
✎
11:10
|
Юмор это хорошо, но всё же хотелось бы по существу, что то дельное услышать.
|
|||
5
smaharbA
07.09.12
✎
11:12
|
либо шаблон либо в печатной форме
|
|||
6
Kreont
07.09.12
✎
11:14
|
Убери из кода Попытки/Исключения, может тогда строку с ошибкой покажет
|
|||
7
ValleySilence
07.09.12
✎
11:18
|
(5) не то и не другое.
(6) это где то связано с добавлением новых колонок. Если я в проц-ре УстановитьЗначенияПоУмолчанию() комментирую колонки //рд_Таблица.НоваяКолонка("Должность","Справочник.Должности",,,"Должность",20); //рд_Таблица.НоваяКолонка("ДНР_год","Число",4,0,"Год",4); //рд_Таблица.НоваяКолонка("ДНР_мес","Число",2,0,"М-ц",4); //рд_Таблица.НоваяКолонка("ДНР_день","Число",2,0,"День",4); //рд_Таблица.НоваяКолонка("ДИС_год","Число",4,0,"Год",4); //рд_Таблица.НоваяКолонка("ДИС_мес","Число",2,0,"М-ц",4); //рд_Таблица.НоваяКолонка("ДИС_день","Число",2,0,"День",4); //рд_Таблица.НоваяКолонка("СТАЖ_год","Число",4,0,"Год",4); //рд_Таблица.НоваяКолонка("СТАЖ_мес","Число",2,0,"М-ц",4); //рд_Таблица.НоваяКолонка("СТАЖ_день","Число",2,0,"День",4); //рд_Таблица.НоваяКолонка("ДНИ_план","Число",2,0,"План",4); //рд_Таблица.НоваяКолонка("ДНИ_факт","Число",2,0,"Факт",4); //рд_Таблица.НоваяКолонка("Коэфт","Число",2,0,"К-т",4); //рд_Таблица.НоваяКолонка("Часы","Число",8,2,"Часы",8,,2); //рд_Таблица.НоваяКолонка("Ставка","Число",9,3,"Ставка",8,,2); //рд_Таблица.НоваяКолонка("Оклад","Число",8,2,"Оклад/Мес.ст",8,,2); //рд_Таблица.НоваяКолонка("КУУР","Число",5,3,"КУУР"); то ошибки нет :( |
|||
8
ValleySilence
07.09.12
✎
11:19
|
+7 Пытаюсь из стандавртного КАМИНовского помощника Выслуга лет сделать свой с добавлением нужных коэффициентов
|
|||
9
1Сергей
07.09.12
✎
11:22
|
раскоментируй по очереди
|
|||
10
smaharbA
07.09.12
✎
11:24
|
если не выдает номера строки, то однозначно только или шаблон или таблица
|
|||
11
smaharbA
07.09.12
✎
11:25
|
если не вк
|
|||
12
ValleySilence
07.09.12
✎
11:35
|
(9) Если убираю коммент с любой строки 1-й например
рд_Таблица.НоваяКолонка("Должность","Справочник.Должности",,,"Должность",20); то ошибка появляется вновь: Неверный идентификатор колонки! Неверный идентификатор колонки! 10,11 это файл Помощника, который подключается как внешняя обработка |
|||
13
ValleySilence
07.09.12
✎
11:40
|
+12 На форме помощника создана ТаблицаЗначений рд_Таблица
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |