Modber Сообщество
профессионалов по 1С

Внешняя обработка

Внешняя Обработка Зарплата и Управление пресооналом 8.2 ред 2.5
  
Сообщений: 2

0
сложилась такая ситуация, нужно написать обработку котороя могла бы считать сколько должен сотрудник за питания из расчета по формуле
если сумма до 100 рублей то опла происходит 50% работник 50% предприятие
если сумма свыше 100 рублей то 50р оплачивает предприятие а все остальное работник,
Это я сделал но вопрос тепере состоит что бы внести 3 должности в исключение которое оплачивает полностью предприятие, не могу и все как связать должность с обработкой (тоесть прописать в модуле) что если должность = сантехник или там космонавт ну или на крайней случай президент, то работник кушает бесплатно.
вот модуль
Код 1C:
  1. Функция Печать(Режим) Экспорт
    ТабДок = Новый ТабличныйДокумент;
  2. Макет = ПолучитьМакет("Макет");
  3.  
  4. ТЗ = Новый ТаблицаЗначений;
  5. ТЗ.Колонки.Вставить(1,"Сотрудник",,"Сотрудник");
  6. ТЗ.Колонки.Вставить(2,"Сумма",,"Сумма");
  7. ТЗ.Колонки.Вставить(3,"Подразделение",,"Подразделение");
  8. ТЗ.Колонки.Вставить(4,"Счет",,"Счет");
  9. ТЗ.Колонки.Вставить(5,"Пред",,"Предприятие");
  10. ТЗ.Колонки.Вставить(6,"Раб",,"Работник");
  11. Нач = День(НачалоМесяца(Дата));
  12. Кон = День(КонецМесяца(Дата));
  13.  
  14. Для Ин = Нач По КонЦикл
    ИмяФайла = Строка(Ин) + Формат(Дата,"ДФ=ММгггг");
  15. База = ВосстановитьЗначение("База");
  16. Файл = Новый XBase;
  17. Файл.ОткрытьФайл(База + "\" + ИмяФайла + ".dbf",База + "\" + ИмяФайла + ".cdx");
  18.  
  19. Если Файл.Открыта() Тогда
    Пока Не Файл.ВКонце()ЦиклСтр = ТЗ.Добавить();
  20. Наим = Файл.ПолучитьЗначениеПоля("Sotr");
  21. Спр = Справочники.ФизическиеЛица;
  22. Стр.Сотрудник = Спр.НайтиПоНаименованию(Наим);
  23. Стр.Сумма = Файл.ПолучитьЗначениеПоля("Sum");
  24. Наим = Файл.ПолучитьЗначениеПоля("Pod");
  25. Спр = Справочники.ПодразделенияОрганизаций;
  26. Стр.Подразделение = Спр.НайтиПоНаименованию(Наим);
  27. Код = Файл.ПолучитьЗначениеПоля("Sch");
  28. Спр = ПланыСчетов.Хозрасчетный;
  29. Стр.Счет = Спр.НайтиПоКоду(Код);
  30. Если Дата < '20120417000000' Тогда
    Стр.Пред = 0;
  31. Стр.Раб = Стр.Сумма;
  32. Иначе
    Если Стр.Сумма <= 100 ТогдаСтр.Пред = Стр.Сумма / 2;
  33. Стр.Раб = Стр.Сумма / 2;
  34. Иначе
    Стр.Пред = 50;
  35. Стр.Раб = Стр.Сумма - 50;
  36. КонецЕсли;
    КонецЕсли;КонецЕсли;Файл.Следующая();
  37. КонецЦикла;
    Файл.ЗакрытьФайл();
  38. КонецЕсли;
    КонецЦикла;Если Режим = 0 ТогдаОбласть = Макет.ПолучитьОбласть("Шапка");
  39. Область.Параметры.Месяц = "За " + Формат(Дата,"ДФ=ММММ");
  40. ТабДок.Вывести(Область);
  41.  
  42. ТабЗн = ТЗ.Скопировать();
  43. ТабЗн.Свернуть("Сотрудник","Сумма,Пред,Раб");
  44. Область = Макет.ПолучитьОбласть("Строка");
  45. Для Каждого Эл Из ТабЗнЦикл
    Область.Параметры.Сотр = Эл.Сотрудник;
  46. Область.Параметры.Сум = Эл.Сумма;
  47. Область.Параметры.Пред = Формат(Эл.Пред,"ЧДЦ=2");
  48. Область.Параметры.Раб = Формат(Эл.Раб,"ЧДЦ=2");
  49. ТабДок.Вывести(Область);
  50. КонецЦикла;
     
    Область = Макет.ПолучитьОбласть("Итоги");
  51. Область.Параметры.ИтогСум = ТабЗн.Итог("Сумма");
  52. Область.Параметры.ИтогПред = Формат(ТабЗн.Итог("Пред"),"ЧДЦ=2");
  53. Область.Параметры.ИтогРаб = Формат(ТабЗн.Итог("Раб"),"ЧДЦ=2");
  54. ТабДок.Вывести(Область);
  55. ИначеЕсли Режим = 1 Тогда
    Область = Макет.ПолучитьОбласть("ШапкаПод");
  56. Область.Параметры.Месяц = "За " + Формат(Дата,"ДФ=ММММ");
  57. ТабДок.Вывести(Область);
  58.  
  59. ПодТЗ = ТЗ.Скопировать();
  60. ПодТЗ.Свернуть("Подразделение","Сумма,Пред,Раб");
  61. Область = Макет.ПолучитьОбласть("СтрокаПод");
  62.  
  63. Для Каждого Под Из ПодТЗЦикл
    СчТЗ = ТЗ.Скопировать();
  64. Область = Макет.ПолучитьОбласть("ШапкаТаб");
  65. Область.Параметры.Подр = Под.Подразделение;
  66. ТабДок.Вывести(Область);
  67. ОтТЗ = СчТЗ.СкопироватьКолонки();
  68. Для Каждого Сч Из СчТЗЦикл
    Если Сч.Подразделение = Под.Подразделение ТогдаСтр = ОтТЗ.Добавить();
  69. Стр.Счет = Сч.Счет;
  70. Стр.Сумма = Сч.Сумма;
  71. Стр.Пред = Сч.Пред;
  72. Стр.Раб = Сч.Раб;
  73. КонецЕсли;
    КонецЦикла;Область = Макет.ПолучитьОбласть("СтрокаПод");
  74. ОтТЗ.Свернуть("Счет","Сумма,Пред,Раб");
  75. Для Каждого От Из ОтТЗЦикл
    Область.Параметры.Сотр = От.Счет;
  76. Область.Параметры.Сум = От.Сумма;
  77. Область.Параметры.Пред = От.Пред;
  78. Область.Параметры.Раб = От.Раб;
  79. ТабДок.Вывести(Область);
  80. КонецЦикла;
    Область = Макет.ПолучитьОбласть("ИтогиПод");
  81. Область.Параметры.ИтогСум = ОтТЗ.Итог("Сумма");
  82. Область.Параметры.ИтогПред = ОтТЗ.Итог("Пред");
  83. Область.Параметры.ИтогРаб = ОтТЗ.Итог("Раб");
  84. ТабДок.Вывести(Область);
  85. Область = Макет.ПолучитьОбласть("Разделитель");
  86. ТабДок.Вывести(Область);
  87. КонецЦикла;
    Область = Макет.ПолучитьОбласть("ИтогиОбщ");
  88. Область.Параметры.ИтогСум = ТЗ.Итог("Сумма");
  89. Область.Параметры.ИтогПред = ТЗ.Итог("Пред");
  90. Область.Параметры.ИтогРаб = ТЗ.Итог("Раб");
  91. ТабДок.Вывести(Область);
  92. Иначе
    Таб = Новый ТаблицаЗначений;
  93. Таб.Колонки.Вставить(1,"Сотрудник",,"Сотрудник");
  94. Таб.Колонки.Вставить(2,"Сумма",,"Сумма");
  95. Таб.Колонки.Вставить(3,"Пред",,"Предприятие");
  96. Таб.Колонки.Вставить(4,"Раб",,"Работник");
  97.  
  98. ИмяФайла = Формат(Дата,"ДФ=дММгггг");
  99. База = ВосстановитьЗначение("База");
  100. Файл = Новый XBase;
  101. Файл.ОткрытьФайл(База + "\" + ИмяФайла + ".dbf",База + "\" + ИмяФайла + ".cdx");
  102.  
  103. Если Файл.Открыта() Тогда
    Пока Не Файл.ВКонце()ЦиклСтр = Таб.Добавить();
  104. Наим = Файл.ПолучитьЗначениеПоля("Sotr");
  105. Спр = Справочники.ФизическиеЛица;
  106. Стр.Сотрудник = Спр.НайтиПоНаименованию(Наим);
  107. Стр.Сумма = Файл.ПолучитьЗначениеПоля("Sum");
  108. Если Дата < '20120417000000' Тогда
    Стр.Пред = 0;
  109. Стр.Раб = Стр.Сумма;
  110. Иначе
    Если Стр.Сумма <= 100 ТогдаСтр.Пред = Стр.Сумма / 2;
  111. Стр.Раб = Стр.Сумма / 2;
  112. Иначе
    Стр.Пред = Стр.Сумма - 50 ;
  113. Стр.Раб = Стр.Сумма * 0.5;
  114. КонецЕсли;
    КонецЕсли;Файл.Следующая();
  115. КонецЦикла;
    Файл.ЗакрытьФайл();
  116. КонецЕсли;
    Таб.Свернуть("Сотрудник","Сумма,Пред,Раб");
  117. Область = Макет.ПолучитьОбласть("Строка");
  118. Для Каждого Эл Из ТабЦикл
    Область.Параметры.Сотр = Эл.Сотрудник;
  119. Область.Параметры.Сум = Эл.Сумма;
  120. Область.Параметры.Пред = Формат(Эл.Пред,"ЧДЦ=2");
  121. Область.Параметры.Раб = Формат(Эл.Раб,"ЧДЦ=2");
  122. ТабДок.Вывести(Область);
  123. КонецЦикла;
     
    Область = Макет.ПолучитьОбласть("Итоги");
  124. Область.Параметры.ИтогСум = Формат(Таб.Итог("Сумма"),"ЧДЦ=2");
  125. Область.Параметры.ИтогПред = Формат(Таб.Итог("Пред"),"ЧДЦ=2");
  126. Область.Параметры.ИтогРаб = Формат(Таб.Итог("Раб"),"ЧДЦ=2");
  127. ТабДок.Вывести(Область);
  128. КонецЕсли;
     
    ТабДок.ТолькоПросмотр = Истина;
  129. Возврат ТабДок;
  130. КонецФункции
Редактировалось: 1 раз (Последний: 24 мая 2013 в 12:29)
МедальГрамота
Сообщений: 541

+8
Нет слов… как говорится, "правильный вопрос — половина ответа"
Сообщений: 2

0
Alexandr:
мысльто верная незнаю как её осуществить я уже и так и так пытался но все у меня не выходит, с программированием плохо. я знаю тут на 2 минуты
Сообщений: 4

0
Добрый день!
Подскажите есть ли внешняя обработка для 1с 8.2 бухгалтерия что бы в справочнике номенклатура для каждого наименования товара можно было себестоимость товара заполнить автоматически. Но вопрос именно в том что стандартная обработка которая есть в 1с она заполняет себестоимость только по ценам поступления без учета доп расходов (транспортных расходов). А мне нужно что бы себестоимость заполнялась себестоимость=закупочная цена +доп расходы.
Сообщений: 16

+1
В некоторых конфигурациях есть флажок "Включать расходы в себестоимость" в форме документа. Если нет, тогда нужно добавить программно, причем опять же в форму документа, ане внешней обработкой.
Сообщений: 2

0
В некоторых конфигурациях есть флажок "Включать расходы в себестоимость" в форме документа. Если нет, тогда нужно добавить программно, причем опять же в форму документа, а не внешней обработкой.
Сообщений: 1

0
круто!
В начало страницы 
|
Перейти на форум: