7.7 Как правильно написать условие?

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем vlad071007, 16 апр 2013.

  1. TopicStarter Overlay
    vlad071007
    Offline

    vlad071007

    Регистрация:
    10 апр 2013
    Сообщения:
    32
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте!
    Как правильно написать условие: если сотрудник в Этом месяце перешел на должность с реквизитом ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией

    написал функцию сильно не смейтесь я только начал программировать


    Функция глПерешелНаВредную(Сотрудник,НаДату) Экспорт

    рез = 0;
    долж= СоздатьОбъект("Справочник.Должности");
    долж.ИспользоватьВладельца(Сотрудник);
    долж.ВыбратьЭлементы();
    Пока долж.ПолучитьЭлемент() = 1 Цикл
    Если (долж.ДатаНачалаДействия>=НачМесяца(ТекущаяДата())) И (долж.ДатаОкончанияДействия<=КонМесяца(ТекущаяДата())) Тогда
    Если долж.Должность.ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией = Перечисление.ВидыРаботСДосрочнойПенсией.ПодземныеИВредныеРаботы Тогда
    рез = 1;
    прервать;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    Возврат рез;
    КонецФункции
  2. TopicStarter Overlay
    vlad071007
    Offline

    vlad071007

    Регистрация:
    10 апр 2013
    Сообщения:
    32
    Симпатии:
    0
    Баллы:
    1
    Пишет ошибку: Поле агрегатного объекта не обнаружено (ДатаНачалаДействия)

    ЗиК релиз 334 помогите пожалуйста!!!
  3. Vlan
    Offline

    Vlan Гость Гость

    Логично было бы предположить, что такого реквизита, как ДатаНачалаДействия, в справочнике Должности нет.
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Действительно. Таких реквизитов нет. Если вам так уж нужно - сделайте ВзимаютсяВзносыЗаЗанятыхНаРаботахСДосрочнойПенсией периодическим. Ибо добавлять период в данном случае не кашерно... Особенно если вы собрались что-то править в расчетах. Вот вам типичный пример: Вы задали период и все рассчиталось правильно. Потом в силу обстоятельств период был изменен. При этом по закону подлости расчетчику срочно нужно было пересчитать предыдущий период. Каков будет результат? Думаю понятно.

    Вы я думаю пошли не тем путем изначально. Ведь должность, это периодический реквизит справочника сотрудники.. Далее объяснять?
  5. TopicStarter Overlay
    vlad071007
    Offline

    vlad071007

    Регистрация:
    10 апр 2013
    Сообщения:
    32
    Симпатии:
    0
    Баллы:
    1
    А где? в периодических реквизитах справочника сотрудники?
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Что именно "где"? Уточните вашу задачу более развернуто.
    + я бы на вашем месте незамедлительно обновился до 335го релиза. 334й - косячный. В процедуре глПолучитьКатегориюЗЛПоТарифуВзносов есть ошибка. Да в прочем 335й тоже не без греха. Пришлось уже править в части ранее уволенных.
  7. TopicStarter Overlay
    vlad071007
    Offline

    vlad071007

    Регистрация:
    10 апр 2013
    Сообщения:
    32
    Симпатии:
    0
    Баллы:
    1
    У меня проблема с начислением страховых вредникам, если сотрудник в только в этом месяце, перешел на вредную должность программа от базы отнимает мат.помощ с начала года наростающим итогом, а если на оборот сотрудник ушел с вредной должности ТО мат.помощь с начала года на этот месяс выходит минусом он от базы ноль отнимет минус и получается в этом месяце мат.помощь облагает как вреднику.
    вот код где расчет мат.помощи может подскажешь пожалуйста где косяк:

    глОбходСотрудниковДляСтраховыхВзносов


    // рассчитаем скидку к доходу Матпомощь
    МатпомощьПоТекущийМесяц = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаТаблицы,10);
    МатпомощьИнвалидПоТекущийМесяц = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаТаблицы,10+13);
    МатпомощьЕНВДПоТекущийМесяц = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаТаблицы,10+26);
    МатпомощьЛТПоТекущийМесяц = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаТаблицы,10+39);
    МатпомощьВсегоПоТекущийМесяц = МатпомощьПоТекущийМесяц + МатпомощьИнвалидПоТекущийМесяц + МатпомощьЕНВДПоТекущийМесяц + МатпомощьЛТПоТекущийМесяц;

    Если Сч = 1 Тогда

    МатпомощьПоПредыдущийМесяц = 0;
    МатпомощьИнвалидПоПредыдущийМесяц = 0;
    МатпомощьЕНВДПоПредыдущийМесяц = 0;
    МатпомощьЛТПоПредыдущийМесяц = 0;
    МатпомощьВсегоПоПредыдущийМесяц = 0;

    СкидкаМатПомощьПоПредыдущийМесяц = 0;
    СкидкаМатПомощьИнвалидПоПредыдущийМесяц = 0;
    СкидкаМатПомощьЕНВДПоПредыдущийМесяц = 0;
    СкидкаМатПомощьЛТПоПредыдущийМесяц = 0;
    СкидкаМатПомощьВсегоПоПредыдущийМесяц = 0;

    Иначе

    СкидкаМатПомощьПоПредыдущийМесяц = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаТаблицы-1,11);
    СкидкаМатПомощьИнвалидПоПредыдущийМесяц = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаТаблицы-1,11+13);
    СкидкаМатПомощьЕНВДПоПредыдущийМесяц = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаТаблицы-1,11+26);
    СкидкаМатПомощьЛТПоПредыдущийМесяц = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаТаблицы-1,11+39);
    СкидкаМатПомощьВсегоПоПредыдущийМесяц = СкидкаМатПомощьПоПредыдущийМесяц + СкидкаМатПомощьИнвалидПоПредыдущийМесяц + СкидкаМатПомощьЕНВДПоПредыдущийМесяц + СкидкаМатПомощьЛТПоПредыдущийМесяц;

    МатпомощьПоПредыдущийМесяц = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаТаблицы-1,10);
    МатпомощьИнвалидПоПредыдущийМесяц = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаТаблицы-1,10+13);
    МатпомощьЕНВДПоПредыдущийМесяц = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаТаблицы-1,10+26);
    МатпомощьЛТПоПредыдущийМесяц = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаТаблицы-1,10+39);
    МатпомощьВсегоПоПредыдущийМесяц = МатпомощьПоПредыдущийМесяц + МатпомощьИнвалидПоПредыдущийМесяц + МатпомощьЕНВДПоПредыдущийМесяц + МатпомощьЛТПоПредыдущийМесяц;

    КонецЕсли;

    МатПомощьТекущийМесяц = (МатпомощьПоТекущийМесяц - МатпомощьПоПредыдущийМесяц);
    МатПомощьИнвалидаТекущийМесяц = (МатпомощьИнвалидПоТекущийМесяц - МатпомощьИнвалидПоПредыдущийМесяц);
    МатПомощьЕНВДТекущийМесяц = (МатпомощьЕНВДПоТекущийМесяц - МатпомощьЕНВДПоПредыдущийМесяц);
    МатПомощьЛТТекущийМесяц = (МатпомощьЛТПоТекущийМесяц - МатпомощьЛТПоПредыдущийМесяц);
    МатпомощьВсегоТекущийМесяц = МатПомощьТекущийМесяц + МатПомощьИнвалидаТекущийМесяц + МатПомощьЕНВДТекущийМесяц + МатПомощьЛТТекущийМесяц;

    МатпомощьВсегоПоПредыдущийМесяцСкорр = МатпомощьВсегоПоТекущийМесяцСкорр;
    МатпомощьВсегоПоТекущийМесяцСкорр = МатпомощьВсегоПоТекущийМесяцСкорр + МатпомощьВсегоТекущийМесяц;

    // Скидка текущего месяца
    СкидкаМатПомощьВсегоТекущийМесяц = Мин(МатпомощьВсегоПоТекущийМесяцСкорр, РазмерСкидкаМатпомощь) - СкидкаМатПомощьВсегоПоПредыдущийМесяц;

    // вычислим месячную долю, которая учавствует в расчете
    // это для месяца, в котором превысили предел РазмерСкидкаМатпомощь
    Если СкидкаМатПомощьВсегоТекущийМесяц >= 0 Тогда

    Если (МатпомощьВсегоТекущийМесяц = 0) или (МатпомощьВсегоПоПредыдущийМесяцСкорр >= РазмерСкидкаМатпомощь) Тогда
    // предел превышен
    КоэффициентБазы = 0;
    ИначеЕсли МатпомощьВсегоПоТекущийМесяцСкорр <= РазмерСкидкаМатпомощь Тогда
    //не достигли предела
    КоэффициентБазы = 1;
    Иначе
    КоэффициентБазы = СкидкаМатПомощьВсегоТекущийМесяц / МатпомощьВсегоТекущийМесяц;
    КонецЕсли;

    Иначе // сторно скидуки

    КоэффициентБазы = СкидкаМатПомощьВсегоТекущийМесяц / МатпомощьВсегоТекущийМесяц;

    КонецЕсли;

    СкидкаМатПомощьТекущийМесяц = МатПомощьТекущийМесяц * КоэффициентБазы; // по основному тарифу
    СкидкаМатПомощьИнвалидаТекущийМесяц = МатПомощьИнвалидаТекущийМесяц * КоэффициентБазы; // база инвалида
    СкидкаМатПомощьЕНВДТекущийМесяц = МатПомощьЕНВДТекущийМесяц * КоэффициентБазы; // база ЕНВД
    СкидкаМатПомощьЛТТекущийМесяц = МатПомощьЛТТекущийМесяц * КоэффициентБазы;


    СкидкаМатПомощьПоТекущийМесяц = СкидкаМатПомощьПоПредыдущийМесяц + СкидкаМатПомощьТекущийМесяц;
    СкидкаМатПомощьИнвалидПоТекущийМесяц = СкидкаМатПомощьИнвалидПоПредыдущийМесяц + СкидкаМатПомощьИнвалидаТекущийМесяц;
    СкидкаМатПомощьЕНВДПоТекущийМесяц = СкидкаМатПомощьЕНВДПоПредыдущийМесяц + СкидкаМатПомощьЕНВДТекущийМесяц;
    СкидкаМатПомощьЛТПоТекущийМесяц = СкидкаМатПомощьЛТПоПредыдущийМесяц + СкидкаМатПомощьЛТТекущийМесяц;

    ДоходыВычетыНалогиСотрудников.УстановитьЗначение(СтрокаТаблицы,11,СкидкаМатПомощьПоТекущийМесяц);
    ДоходыВычетыНалогиСотрудников.УстановитьЗначение(СтрокаТаблицы,11+13,СкидкаМатПомощьИнвалидПоТекущийМесяц);
    ДоходыВычетыНалогиСотрудников.УстановитьЗначение(СтрокаТаблицы,11+26,СкидкаМатПомощьЕНВДПоТекущийМесяц);
    ДоходыВычетыНалогиСотрудников.УстановитьЗначение(СтрокаТаблицы,11+39,СкидкаМатПомощьЛТПоТекущийМесяц);

    СкидкаМатпомощьДопТариф = СкидкаМатПомощьПоТекущийМесяц + СкидкаМатПомощьИнвалидПоТекущийМесяц + СкидкаМатПомощьЕНВДПоТекущийМесяц + СкидкаМатПомощьЛТПоТекущийМесяц;

    Если ЭтоПрокурор=1 Тогда

    ДоляМатпомощьПрокурор = МатпомощьПоТекущийМесяц-СкидкаМатПомощьПоТекущийМесяц;
    ДоляМатпомощьПрокурорИнвалид = МатпомощьИнвалидПоТекущийМесяц-СкидкаМатПомощьИнвалидПоТекущийМесяц;

    ДоходыВычетыНалогиСотрудников.УстановитьЗначение(СтрокаТаблицы,7,ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаТаблицы,7)+ДоляМатпомощьПрокурор);
    ДоходыВычетыНалогиСотрудников.УстановитьЗначение(СтрокаТаблицы,7+13,ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаТаблицы,7+13)+ДоляМатпомощьПрокурорИнвалид);

    КонецЕсли;

    Если ИскатьРаботыСДосрочнойПенсией = 1 Тогда

    ВидыРаботСДосрочнойПенсией = СписокВидыРаботСДосрочнойПенсией.ПолучитьЗначение(Сч);

    // по дополнительным тарифам
    Для СчТарифов = 1 по 2 Цикл

    УчитыватьМатериальнуюПомощь = 0;
    РазлелТаблицы = (СчТарифов-1) * 3;
    Если СчТарифов=1 Тогда
    ИмяКолонкиБаза = "БазаДопТарифПодземныеИВредныеРаботы";
    Если ВидыРаботСДосрочнойПенсией = Перечисление.ВидыРаботСДосрочнойПенсией.ПодземныеИВредныеРаботы Тогда
    ДоходыВычетыНалогиСотрудников.УстановитьЗначение(СтрокаТаблицы,55,ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаТаблицы,55)+СкидкаМатпомощьДопТариф);
    КонецЕсли;
    Иначе
    ИмяКолонкиБаза = "БазаДопТарифТяжелыеИПрочиеРаботы";
    Если ВидыРаботСДосрочнойПенсией = Перечисление.ВидыРаботСДосрочнойПенсией.ТяжелыеИПрочиеРаботы Тогда
    ДоходыВычетыНалогиСотрудников.УстановитьЗначение(СтрокаТаблицы,58,ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаТаблицы,58)+СкидкаМатпомощьДопТариф);
    КонецЕсли;
    КонецЕсли;

    НачисленоВсего = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаТаблицы,54+РазлелТаблицы);
    НеОблагаетсяЦеликом = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаТаблицы,55+РазлелТаблицы);
    Скидка = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаТаблицы,56+РазлелТаблицы);

    НалоговаяБаза = НачисленоВсего - НеОблагаетсяЦеликом - Скидка;
    БазаПФРТекущийМесяцДопТарифы = КоэфПФР*(НалоговаяБаза - БазаПФРПоПредыдущийМесяцДопТарифы[СчТарифов]);
    БазаПФРПоПредыдущийМесяцДопТарифы[СчТарифов] = НалоговаяБаза;

    БазаПФРДопТарифы[СчТарифов] = БазаПФРДопТарифы[СчТарифов] + БазаПФРТекущийМесяцДопТарифы;

    ДоходыВычетыНалогиСотрудников.УстановитьЗначение(СтрокаТаблицы,ИмяКолонкиБаза,БазаПФРДопТарифы[СчТарифов]);

    КонецЦикла; // цикл по тарифам

    КонецЕсли;

    До 335 обновился не помогло :unsure:
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Глянул... Не стал особо вникать (не было такой проблемы чтобы отладчиком шерстить) но ваш код отличается от кода 335го релиза. Думаю - исправлено
  9. TopicStarter Overlay
    vlad071007
    Offline

    vlad071007

    Регистрация:
    10 апр 2013
    Сообщения:
    32
    Симпатии:
    0
    Баллы:
    1
    Я так понимаю в 1с не предполагают что сотрудники могут бегать с должности на должность!!!
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Извиняюсь... Не в ту процедуру глянул.... Смотрел в ОбходСотрудниковДляСтраховыхВзносов2010, а надо было в ОбходСотрудниковДляСтраховыхВзносов2012

    Щас уточню
  11. TopicStarter Overlay
    vlad071007
    Offline

    vlad071007

    Регистрация:
    10 апр 2013
    Сообщения:
    32
    Симпатии:
    0
    Баллы:
    1
    скинь пожалуйста этот код с 335, может у меня косячное обновление? можешь на мыло artem290584@mail.ru

    у меня в 335 ОбходСотрудниковДляСтраховыхВзносов2012 идентичны
  12. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Да. Действительно. Проблема (если она есть) осталась. Думаю все же есть. Единственное "но". Нужно уточнить в ПФР порядок расчета м.пом. при смене условий труда.
    Я такого законодательного акта не встречал. У клиентов подобной проблемы не возникало. Если вы потрудитесь уточнить и покажете ссылку на нормативный акт или цитату разговора - я помогу исправить.

    Алгоритм же функции получения условий труда из должности следующий:
    Сотрудник- Должность(периодический реквизита)-ВУТ.
    Вернет 0 - не вредные/тяжелые условия
    1 - вредные УТ
    2 - тяжелые УТ
  13. TopicStarter Overlay
    vlad071007
    Offline

    vlad071007

    Регистрация:
    10 апр 2013
    Сообщения:
    32
    Симпатии:
    0
    Баллы:
    1
    как у вас на форуме прикрепить файл? я скину скан инструкции с пенсионного
  14. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Нужно жмакнуть кнопу "расширенная форма"
  15. TopicStarter Overlay
    vlad071007
    Offline

    vlad071007

    Регистрация:
    10 апр 2013
    Сообщения:
    32
    Симпатии:
    0
    Баллы:
    1
    пишет Загрузка пропущена (Ошибка500)
  16. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    какой размер файла? Тип? Правила загрузки читали?
    Проще выложить в файлообменник, а сюда ссылку. Только не делайте ссылку одноразовой - вдруг кому еще пригодится
  17. TopicStarter Overlay
    vlad071007
    Offline

    vlad071007

    Регистрация:
    10 апр 2013
    Сообщения:
    32
    Симпатии:
    0
    Баллы:
    1
    http://files.mail.ru/457C3E58DF314F30B1364EF4050A7151
  18. TopicStarter Overlay
    vlad071007
    Offline

    vlad071007

    Регистрация:
    10 апр 2013
    Сообщения:
    32
    Симпатии:
    0
    Баллы:
    1
    Выручай отблагодарю чем смогу!
  19. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Это я все читал... Но вот про МП там не сказано ни слова. Как ее учитывать? Если выдана в период занятости на тяжелых/вредных условиях труда или наоборот вне? Может ее вообще нужно делить пропорционально отработанным дням?
  20. TopicStarter Overlay
    vlad071007
    Offline

    vlad071007

    Регистрация:
    10 апр 2013
    Сообщения:
    32
    Симпатии:
    0
    Баллы:
    1
    еслибухгалтера объясняют: не превысила 4000 вычитать полностью
Похожие темы
  1. Vitaly
    Ответов:
    6
    Просмотров:
    370
  2. Vitaly
    Ответов:
    38
    Просмотров:
    1.425
Загрузка...

Поделиться этой страницей