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

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

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

0
сложилась такая ситуация, нужно написать обработку котороя могла бы считать сколько должен сотрудник за питания из расчета по формуле если сумма до 100 рублей то опла происходит 50% работник 50% предприятие если сумма свыше 100 рублей то 50р оплачивает предприятие а все остальное работник, Это я сделал но вопрос тепере состоит что бы внести 3 должности в исключение которое оплачивает полностью предприятие, не могу и все как связать должность с обработкой (тоесть прописать в модуле) что если должность = сантехник или там космонавт ну или на крайней случай президент, то работник кушает бесплатно. вот модуль [code=1C]Функция Печать(Режим) Экспорт ТабДок = Новый ТабличныйДокумент; Макет = ПолучитьМакет("Макет"); ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Вставить(1,"Сотрудник",,"Сотрудник"); ТЗ.Колонки.Вставить(2,"Сумма",,"Сумма"); ТЗ.Колонки.Вставить(3,"Подразделение",,"Подразделение"); ТЗ.Колонки.Вставить(4,"Счет",,"Счет"); ТЗ.Колонки.Вставить(5,"Пред",,"Предприятие"); ТЗ.Колонки.Вставить(6,"Раб",,"Работник"); Нач = День(НачалоМесяца(Дата)); Кон = День(КонецМесяца(Дата)); Для Ин = Нач По Кон Цикл ИмяФайла = Строка(Ин) + Формат(Дата,"ДФ=ММгггг"); База = ВосстановитьЗначение("База"); Файл = Новый XBase; Файл.ОткрытьФайл(База + "\" + ИмяФайла + ".dbf",База + "\" + ИмяФайла + ".cdx"); Если Файл.Открыта() Тогда Пока Не Файл.ВКонце() Цикл Стр = ТЗ.Добавить(); Наим = Файл.ПолучитьЗначениеПоля("Sotr"); Спр = Справочники.ФизическиеЛица; Стр.Сотрудник = Спр.НайтиПоНаименованию(Наим); Стр.Сумма = Файл.ПолучитьЗначениеПоля("Sum"); Наим = Файл.ПолучитьЗначениеПоля("Pod"); Спр = Справочники.ПодразделенияОрганизаций; Стр.Подразделение = Спр.НайтиПоНаименованию(Наим); Код = Файл.ПолучитьЗначениеПоля("Sch"); Спр = ПланыСчетов.Хозрасчетный; Стр.Счет = Спр.НайтиПоКоду(Код); Если Дата < '20120417000000' Тогда Стр.Пред = 0; Стр.Раб = Стр.Сумма; Иначе Если Стр.Сумма <= 100 Тогда Стр.Пред = Стр.Сумма / 2; Стр.Раб = Стр.Сумма / 2; Иначе Стр.Пред = 50; Стр.Раб = Стр.Сумма - 50; КонецЕсли; КонецЕсли; КонецЕсли; Файл.Следующая(); КонецЦикла; Файл.ЗакрытьФайл(); КонецЕсли; КонецЦикла; Если Режим = 0 Тогда Область = Макет.ПолучитьОбласть("Шапка"); Область.Параметры.Месяц = "За " + Формат(Дата,"ДФ=ММММ"); ТабДок.Вывести(Область); ТабЗн = ТЗ.Скопировать(); ТабЗн.Свернуть("Сотрудник","Сумма,Пред,Раб"); Область = Макет.ПолучитьОбласть("Строка"); Для Каждого Эл Из ТабЗн Цикл Область.Параметры.Сотр = Эл.Сотрудник; Область.Параметры.Сум = Эл.Сумма; Область.Параметры.Пред = Формат(Эл.Пред,"ЧДЦ=2"); Область.Параметры.Раб = Формат(Эл.Раб,"ЧДЦ=2"); ТабДок.Вывести(Область); КонецЦикла; Область = Макет.ПолучитьОбласть("Итоги"); Область.Параметры.ИтогСум = ТабЗн.Итог("Сумма"); Область.Параметры.ИтогПред = Формат(ТабЗн.Итог("Пред"),"ЧДЦ=2"); Область.Параметры.ИтогРаб = Формат(ТабЗн.Итог("Раб"),"ЧДЦ=2"); ТабДок.Вывести(Область); ИначеЕсли Режим = 1 Тогда Область = Макет.ПолучитьОбласть("ШапкаПод"); Область.Параметры.Месяц = "За " + Формат(Дата,"ДФ=ММММ"); ТабДок.Вывести(Область); ПодТЗ = ТЗ.Скопировать(); ПодТЗ.Свернуть("Подразделение","Сумма,Пред,Раб"); Область = Макет.ПолучитьОбласть("СтрокаПод"); Для Каждого Под Из ПодТЗ Цикл СчТЗ = ТЗ.Скопировать(); Область = Макет.ПолучитьОбласть("ШапкаТаб"); Область.Параметры.Подр = Под.Подразделение; ТабДок.Вывести(Область); ОтТЗ = СчТЗ.СкопироватьКолонки(); Для Каждого Сч Из СчТЗ Цикл Если Сч.Подразделение = Под.Подразделение Тогда Стр = ОтТЗ.Добавить(); Стр.Счет = Сч.Счет; Стр.Сумма = Сч.Сумма; Стр.Пред = Сч.Пред; Стр.Раб = Сч.Раб; КонецЕсли; КонецЦикла; Область = Макет.ПолучитьОбласть("СтрокаПод"); ОтТЗ.Свернуть("Счет","Сумма,Пред,Раб"); Для Каждого От Из ОтТЗ Цикл Область.Параметры.Сотр = От.Счет; Область.Параметры.Сум = От.Сумма; Область.Параметры.Пред = От.Пред; Область.Параметры.Раб = От.Раб; ТабДок.Вывести(Область); КонецЦикла; Область = Макет.ПолучитьОбласть("ИтогиПод"); Область.Параметры.ИтогСум = ОтТЗ.Итог("Сумма"); Область.Параметры.ИтогПред = ОтТЗ.Итог("Пред"); Область.Параметры.ИтогРаб = ОтТЗ.Итог("Раб"); ТабДок.Вывести(Область); Область = Макет.ПолучитьОбласть("Разделитель"); ТабДок.Вывести(Область); КонецЦикла; Область = Макет.ПолучитьОбласть("ИтогиОбщ"); Область.Параметры.ИтогСум = ТЗ.Итог("Сумма"); Область.Параметры.ИтогПред = ТЗ.Итог("Пред"); Область.Параметры.ИтогРаб = ТЗ.Итог("Раб"); ТабДок.Вывести(Область); Иначе Таб = Новый ТаблицаЗначений; Таб.Колонки.Вставить(1,"Сотрудник",,"Сотрудник"); Таб.Колонки.Вставить(2,"Сумма",,"Сумма"); Таб.Колонки.Вставить(3,"Пред",,"Предприятие"); Таб.Колонки.Вставить(4,"Раб",,"Работник"); ИмяФайла = Формат(Дата,"ДФ=дММгггг"); База = ВосстановитьЗначение("База"); Файл = Новый XBase; Файл.ОткрытьФайл(База + "\" + ИмяФайла + ".dbf",База + "\" + ИмяФайла + ".cdx"); Если Файл.Открыта() Тогда Пока Не Файл.ВКонце() Цикл Стр = Таб.Добавить(); Наим = Файл.ПолучитьЗначениеПоля("Sotr"); Спр = Справочники.ФизическиеЛица; Стр.Сотрудник = Спр.НайтиПоНаименованию(Наим); Стр.Сумма = Файл.ПолучитьЗначениеПоля("Sum"); Если Дата < '20120417000000' Тогда Стр.Пред = 0; Стр.Раб = Стр.Сумма; Иначе Если Стр.Сумма <= 100 Тогда Стр.Пред = Стр.Сумма / 2; Стр.Раб = Стр.Сумма / 2; Иначе Стр.Пред = Стр.Сумма - 50 ; Стр.Раб = Стр.Сумма * 0.5; КонецЕсли; КонецЕсли; Файл.Следующая(); КонецЦикла; Файл.ЗакрытьФайл(); КонецЕсли; Таб.Свернуть("Сотрудник","Сумма,Пред,Раб"); Область = Макет.ПолучитьОбласть("Строка"); Для Каждого Эл Из Таб Цикл Область.Параметры.Сотр = Эл.Сотрудник; Область.Параметры.Сум = Эл.Сумма; Область.Параметры.Пред = Формат(Эл.Пред,"ЧДЦ=2"); Область.Параметры.Раб = Формат(Эл.Раб,"ЧДЦ=2"); ТабДок.Вывести(Область); КонецЦикла; Область = Макет.ПолучитьОбласть("Итоги"); Область.Параметры.ИтогСум = Формат(Таб.Итог("Сумма"),"ЧДЦ=2"); Область.Параметры.ИтогПред = Формат(Таб.Итог("Пред"),"ЧДЦ=2"); Область.Параметры.ИтогРаб = Формат(Таб.Итог("Раб"),"ЧДЦ=2"); ТабДок.Вывести(Область); КонецЕсли; ТабДок.ТолькоПросмотр = Истина; Возврат ТабДок; КонецФункции[/code]
Редактировалось: 1 раз (Последний: 24 мая 2013 в 12:29)
МедальГрамота
Сообщений: 544

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

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

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

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

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

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