Выпуск 3

В этом выпуске были приведены некоторые соображения по переносу сальдо в ЗиК 7.70.235

Сальдо на начало месяца в "двойке" состоит из двух видов расчета - НачальноеСальдоЗадолженность и НачальноеСальдоОкругления. Как обычно, все рассчитано на то, что предприятие вовремя выдает зарплату, а если задерживает, то платит компенсацию :), уволенных рассчитывают в день увольнения :))), ну и т.д. Еще интересный момент - удержания не должны превышать начисления (текущего месяца). Ну где Вы видели такую фирму? Они существуют, наверное, только в воображении программистов 1С.

Ну и, конечно, скорость работы. При рассчете сальдо программа перелопачивает такой объем информации, что только диву даешься: ЗАЧЕМ???

Далее, а что такое эти два сальдо? Зачем их столько? Первое - это задолженность предприятия. Второе - это невыплаченные копейки. Ну и долг сотрудника, если он есть. Первое сальдо всегда положительно. Второе может быть любым. Спрашивается: а будет ли все это работать, если будет только второе сальдо? БУДЕТ!!! И еще как.

Для этого выкидываем документ "Накопленная задолженность". Т.е. просто им не пользуемся. Если в предыдущих месяцах Вы им все-таки пользовались - ничего страшного. Просто не делайте этого впредь. Далее пишем документ "Начало месяца", который на каждого сотрудника вводит вид расчета НачальноеСальдоОкругления. Модуль расчета придется немного подредактировать, а также в глобальном модуле закоментировать строчку, вводящую этот вид расчета при формировании документа "НачислениеЗарплаты". Зачем так? А да просто так понятнее бухгалтерам. Сделали начало месяца - вот оно сальдо. Его даже можно вводить автоматом при смене периода.

Оригинал функции любой может посмотреть сам. Я привожу здесь исправленный.

Процедура ПровестиРасчет()
  // Если запись исправлена или фиксирована, то ее не рассчитываем
  Если (Исправлена = 1) или (Фиксирована = 1) Тогда
    глСообщениеТрассировки(глСообщенияТрассировки, ""  +  ?(Исправлена = 1,"Результат записи исправлен вручную","Запись фиксирована")  +  ". Расчет не проводился.", , 1);
    Возврат
  КонецЕсли;

  //Результат = глСальдоОкругления(Объект,ДатаНачала);

  // Автор алгоритма Руденко Э.В. 

  ЖрнЗарплата = СоздатьОбъект("ЖурналРасчетов.Зарплата");
  Сумма = 0; 
  Сальдо = 0;//Сальдо на начало прошлого месяца
  Касса = 0;
  БылоНачислено = 0;
  БылоУдержано = 0;
  ВозвратВКассу = 0;
  ЖрнЗарплата.ВыбратьПериодПоОбъекту(Объект,ДатаНачала - 1);
  Пока ЖрнЗарплата.ПолучитьЗапись() = 1 Цикл
    Если ЖрнЗарплата.ВидРасч = ВидРасчета.ВыплатаЗарплаты Тогда
      Касса = Касса + ЖрнЗарплата.Результат;
    ИначеЕсли (ЖрнЗарплата.ВидРасч = ВидРасчета.НачальноеСальдоЗадолженность) Тогда 
      Сальдо = Сальдо + ЖрнЗарплата.Результат;
    ИначеЕсли (ЖрнЗарплата.ВидРасч = ВидРасчета.НачальноеСальдоОкругления) Тогда 
      Сальдо = Сальдо + ЖрнЗарплата.Результат;
    ИначеЕсли (ЖрнЗарплата.ВидРасч = ВидРасчета.Возврат) Тогда 
      ВозвратВКассу = ВозвратВКассу + ЖрнЗарплата.Результат;
    ИначеЕсли ЖрнЗарплата.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления) = 1 Тогда
      БылоНачислено = БылоНачислено + ЖрнЗарплата.Результат;
    ИначеЕсли ЖрнЗарплата.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеУдержания) = 1 Тогда
      БылоУдержано = БылоУдержано + ЖрнЗарплата.Результат;
    КонецЕсли;
  КонецЦикла;

  Результат = Сальдо + БылоНачислено - БылоУдержано - Касса + ВозвратВКассу;

КонецПроцедуры	// ПровестиРасчет()

Все это должно работать на любой модификации стандартной конфигурации.

<<< обратно

Hosted by uCoz