|
Установить значение параметра | ☑ | ||
---|---|---|---|---|
0
andreanochilentano
naïve
11.07.24
✎
17:32
|
Добрый день. Надо установить значение параметра из модуля объекта отчета.
Нашел два варианта, утверждается, что оба рабочие. У меня же не работает ни один из них - просто ничего не происходит. 8мерка, управляемые формы, формы отчета нет. Что я делаю не так? Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Настройки = КомпоновщикНастроек.ПолучитьНастройки(); ЭД = Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода"); ЭД.Значение = ТекущаяДата(); ЭД.Использование = Истина; Второй вариант - аналогично. Параметры = КомпоновщикНастроек.Настройки.ПараметрыДанных; Параметры.УстановитьЗначениеПараметра("НачалоПериода", ТекущаяДата()); КонецПроцедуры НачалоПериода - Это тип Дата. |
|||
1
andreanochilentano
naïve
11.07.24
✎
17:34
|
переименовал отчет и все заработало. кеширование, значит.
а у пользователя так же будет кешироваться? |
|||
2
andreanochilentano
naïve
11.07.24
✎
17:40
|
Забыл написать, что отчет - внешний. Один раз сработало, а дальше опять ничего не происходит. Как меняю имя отчета - начинает работать.
Как с этим быть? |
|||
3
Волшебник
11.07.24
✎
20:13
|
Это всё очень подозрительно
|
|||
4
andreanochilentano
naïve
12.07.24
✎
09:45
|
(3) вы правы. я столько раз вчера разных вариантов пробовал, что все смешалось.
Как итог - у меня внешний отчет. Варианты СтандартнаяОбработка = Ложь; Настройки = КомпоновщикНастроек.ПолучитьНастройки(); ЭД = Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода"); ЭД.Значение = ТекущаяДата(); ЭД.Использование = Истина; и Параметры = КомпоновщикНастроек.Настройки.ПараметрыДанных; Параметры.УстановитьЗначениеПараметра("НачалоПериода", ТекущаяДата()); не работают. Везде пишут, что должно работать, а по факту - нет. создал новый внешний отчет, проверил - не работает. |
|||
5
Мультук
12.07.24
✎
09:50
|
(4)
Приведи код ПриКомпоновкеРезультата полностью P.S. Копи-паст из рабочего отчёта Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Настройки = КомпоновщикНастроек.Настройки; Параметры = КомпоновщикНастроек.Настройки.ПараметрыДанных; Параметры.УстановитьЗначениеПараметра("НекийПараметр", получитьНекийПараметр() ); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки); ДокументРезультат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); КонецПроцедуры |
|||
6
andreanochilentano
naïve
12.07.24
✎
09:58
|
(5)
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; //Настройки = КомпоновщикНастроек.ПолучитьНастройки(); //ЭД = Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода"); //ЭД.Значение = ТекущаяДата(); //ЭД.Использование = Истина; //ЭД = Настройки.ПараметрыДанных.Элементы.Найти("КонецПериода"); //ЭД.Значение = КонецМесяца(ТекущаяДата()); //ЭД.Использование = Истина; // //ЭД = Настройки.ПараметрыДанных.Элементы.Найти("ПериодОтчета"); //ЭД.Значение.ДатаНачала = ТекущаяДата(); //ЭД.Использование = Истина; Параметры = КомпоновщикНастроек.Настройки.ПараметрыДанных; Параметры.УстановитьЗначениеПараметра("КонецПериода", ТекущаяДата()); КонецПроцедуры скопипастил. наверху варианты, которые тоже пробовал. даже предприятие перезапустил - просто ничего не происходит. |
|||
7
Мультук
12.07.24
✎
09:59
|
(6)
Отлично. Сравните мой код и свой. Найдите разницу. Удачи! |
|||
8
andreanochilentano
naïve
12.07.24
✎
10:22
|
(7) спасибо, скопипастил ваш код, поставил свои значения. нет, не работает.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Настройки = КомпоновщикНастроек.Настройки; Параметры = КомпоновщикНастроек.Настройки.ПараметрыДанных; Параметры.УстановитьЗначениеПараметра("КонецПериода", ТекущаяДата() ); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки); ДокументРезультат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); КонецПроцедуры |
|||
9
Мультук
12.07.24
✎
10:58
|
|
|||
10
andreanochilentano
naïve
12.07.24
✎
11:09
|
Спасибо за потраченное время. Я криво сформулировал, значит.
Я имел в виду другое :( Есть элемент на форме. Тип - Дата. И вот надо заполнить именно элемент формы. Чтобы пользователь видел уже предварительно заполненные элементы управления. Отчет как правило будет запускаться с текущей даты, поэтому и есть желание заполнить элемент формы текущей датой. |
|||
11
DrZombi
12.07.24
✎
11:46
|
(10)Если вы используете БСП. То так.
Модуль отчета. Формы нет, и не надо... //Обязательно весь модуль обработки заключить в - ошибок будет меньше, на одну #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда //.......... #Иначе ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); #КонецЕсли ПрограммныйИнтерфейс#Область ПрограммныйИнтерфейс Функция СведенияОВнешнейОбработке() Экспорт ИмяОтчета = ЭтотОбъект.Метаданные().Имя; Синоним = ЭтотОбъект.Метаданные().Синоним; Версия = "РС5423ВУК025"; //ЭтотОбъект.Метаданные().Комментарий; //Бессмысленный набор буковок и циферей, после 1 и 1000 модификаций различных обработок :) Синоним = ?(ЗначениеЗаполнено(Синоним),Синоним, ИмяОтчета); //ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1"); (на память...) ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("1.0.0.0"); ПараметрыРегистрации.Наименование = Синоним; ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет(); ПараметрыРегистрации.Версия = Версия; ПараметрыРегистрации.Информация = ЭтотОбъект.Метаданные().Комментарий; ПараметрыРегистрации.БезопасныйРежим = Ложь; //Документы... //ПараметрыРегистрации.Назначение.Добавить("Документ.АктСверкиВзаиморасчетов"); ТаблицаКоманд = ПолучитьТаблицуКоманд(); Представление = "Расчет оценочного обязательства по оплате отпусков из ЗУП"; Идентификатор = "ИмяКоманды"; Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы(); ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, Истина, Идентификатор); // Сохраним таблицу команд в параметры регистрации обработки ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); Возврат ПараметрыРегистрации; КонецФункции Функция ПолучитьТаблицуКоманд() // Создадим пустую таблицу команд и колонки в ней Команды = Новый ТаблицаЗначений; // Как будет выглядеть описание печатной формы для пользователя Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); // Имя нашего макета, что бы могли отличить вызванную команду в обработке печати Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); // Тут задается, как должна вызваться команда обработки // Возможные варианты: // - ОткрытиеФормы - в этом случае в колонке идентификатор должно быть указано имя формы, которое должна будет открыть система // - ВызовКлиентскогоМетода - вызвать клиентскую экспортную процедуру из модуля формы обработки // - ВызовСерверногоМетода - вызвать серверную экспортную процедуру из модуля объекта обработки Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); // Следующий параметр указывает, необходимо ли показывать оповещение при начале и завершению работы обработки. Не имеет смысла при открытии формы Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")); // Для печатной формы должен содержать строку ПечатьMXL Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")); Возврат Команды; КонецФункции Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование = "ОткрытиеФормы", ПоказыватьОповещение = Ложь, Модификатор = "ПечатьMXL") // Добавляем команду в таблицу команд по переданному описанию. // Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = Представление; НоваяКоманда.Идентификатор = Идентификатор; НоваяКоманда.Использование = Использование; НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение; НоваяКоманда.Модификатор = Модификатор; КонецПроцедуры Процедура ВыполнитьКоманду(ИмяКоманды, ОбъектыНазначения = Неопределено, ПараметрыВыполнения = Неопределено) Экспорт Если ИмяКоманды = "ИмяКоманды" Тогда //код вашей обработки по регламенту... КонецЕсли; КонецПроцедуры #КонецОбласти ОбработчикиСобытий#Область ОбработчикиСобытий Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки(); //ЗначениеПараметра = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ИспользоватьШтатноеРасписание")); //Если ЗначениеПараметра <> Неопределено Тогда // ЗначениеПараметра.Значение = ПолучитьФункциональнуюОпцию("ИспользоватьШтатноеРасписание"); //КонецЕсли; //Параметры. ПользМодиф = Ложь; //Если нужно... ПараметрВключен = Ложь; //ЗначениеПериодНач = ПолучитьЗначениеПараметра(НастройкиОтчета,"ПериодНач",Неопределено,ПараметрВключен); ЗначениеПериод_ = ПолучитьЗначениеПараметра(НастройкиОтчета,"Период_",Неопределено,ПараметрВключен); ПараметрВключен = Ложь; //ЗначениеПериодКон = ПолучитьЗначениеПараметра(НастройкиОтчета,"ПериодКон",Неопределено,ПараметрВключен); ЗначениеПериодНач = ЗначениеПериод_.ДатаНачала; ЗначениеПериодКон = ЗначениеПериод_.ДатаОкончания; УстановитьПараметр(НастройкиОтчета,"ПериодНач",ЗначениеПериодНач,Истина,ПользМодиф,Неопределено); УстановитьПараметр(НастройкиОтчета,"ПериодКон",ЗначениеПериодКон,Истина,ПользМодиф,Неопределено); ЗначениеОснОтпуска = ОбщегоНазначенияКлиентСервер.ПредопределенныйЭлемент("Справочник.ВидыОтпусков.Основной"); УстановитьПараметр(НастройкиОтчета,"ОсновнойОтпуск",ЗначениеОснОтпуска,Истина,ПользМодиф,Неопределено); ПараметрВключен = Ложь; ЗначениеПараметра = ПолучитьЗначениеПараметра(НастройкиОтчета,"ДатаОтчета",Неопределено,ПараметрВключен); Если ЗначениеПараметра <> Неопределено Тогда ЗначениеПараметра = КонецДня(ЗначениеПериодКон); УстановитьПараметр(НастройкиОтчета,"ДатаОтчета",ЗначениеПараметра,Истина,ПользМодиф,Неопределено); ПериодОстатка = ЗначениеПараметра; КонецЕсли; ПараметрВключен = Ложь; ЗначениеПараметра = ПолучитьЗначениеПараметра(НастройкиОтчета,"ПериодКон_Вкл",Неопределено,ПараметрВключен); Если ПериодОстатка <> Неопределено И ЗначениеПараметра <> Неопределено Тогда ЗначениеПараметра = Новый Граница(ПериодОстатка,ВидГраницы.Включая); УстановитьПараметр(НастройкиОтчета,"ПериодКон_Вкл",ЗначениеПараметра,Истина,ПользМодиф,Неопределено); КонецЕсли; КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиОтчета); Если ПользМодиф = Истина Тогда ЗаполнитьПользовательскиеНастройки(НастройкиОтчета, КомпоновщикНастроек.ПользовательскиеНастройки); //КомпоновщикНастроек.ЗагрузитьПользовательскиеНастройки(КомпоновщикНастроек.ПользовательскиеНастройки); //КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПользовательскиеНастройкиМодифицированы",Истина); КонецЕсли; //------------------------ //Получим сотрудников, для среднего заработка... пРасчетСреднегоПоЧасам = Ложь; пСпособРасчетаОтпуска = Перечисления.СпособыРасчетаНачислений.ОплатаОтпускаПоКалендарнымДням; ТЗ_Сотрудники = ПолучитьСотрудниковПоЗапросуРезерва(ЗначениеПериодНач,ЗначениеПериодКон); ТЗ_РезультатРасчета = ПолучитьРезультатРасчетаСреднегоЗаработка(ПериодОстатка,пРасчетСреднегоПоЧасам,пСпособРасчетаОтпуска, ТЗ_Сотрудники); НаборыДанных=новый структура; НаборыДанных.Вставить("СведенияОСреднем",ТЗ_РезультатРасчета); //... СтандартнаяОбработка = Ложь; ДокументРезультат.Очистить(); МакетКомпоновки = ЗарплатаКадрыОтчеты.МакетКомпоновкиДанных(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки); // Создадим и инициализируем процессор компоновки. ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, НаборыДанных, ДанныеРасшифровки, Истина); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); // Обозначим начало вывода ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина); КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ОтчетПустой", Ложь); КонецПроцедуры #КонецОбласти СлужебныеПроцедурыИФункции_Среднего_Заработка_СКД#Область СлужебныеПроцедурыИФункции_Среднего_Заработка_СКД Функция ПолучитьТекстЗапроса_Резерва() ТекстЗапроса = "ВЫБРАТЬ | ОценочныеОбязательстваПоСотрудникамОстатки.Резерв КАК Резерв, | ОценочныеОбязательстваПоСотрудникамОстатки.Сотрудник КАК Сотрудник, | ОценочныеОбязательстваПоСотрудникамОстатки.СтатьяФинансирования КАК СтатьяФинансирования, | СУММА(ОценочныеОбязательстваПоСотрудникамОстатки.СуммаРезерваОстаток) КАК СуммаРезерва, | СУММА(ОценочныеОбязательстваПоСотрудникамОстатки.СуммаРезерваСтраховыхВзносовОстаток) КАК СуммаСтраховыхВзносов, | СУММА(ОценочныеОбязательстваПоСотрудникамОстатки.СуммаРезерваФССНесчастныеСлучаиОстаток) КАК СуммаФССНС, | СУММА(ОценочныеОбязательстваПоСотрудникамОстатки.СуммаРезерваОстаток + ОценочныеОбязательстваПоСотрудникамОстатки.СуммаРезерваСтраховыхВзносовОстаток + ОценочныеОбязательстваПоСотрудникамОстатки.СуммаРезерваФССНесчастныеСлучаиОстаток) КАК СуммаВсего |ПОМЕСТИТЬ ВТ_РезервОстаткиНач |ИЗ | РегистрНакопления.ОценочныеОбязательстваПоСотрудникам.Остатки(&ПериодНач, {(Организация = &Организация | И Резерв = &Резерв)}) КАК ОценочныеОбязательстваПоСотрудникамОстатки | |СГРУППИРОВАТЬ ПО | ОценочныеОбязательстваПоСотрудникамОстатки.Резерв, | ОценочныеОбязательстваПоСотрудникамОстатки.Сотрудник, | ОценочныеОбязательстваПоСотрудникамОстатки.СтатьяФинансирования |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ОценочныеОбязательстваПоСотрудникамОстатки.Резерв КАК Резерв, | ОценочныеОбязательстваПоСотрудникамОстатки.Сотрудник КАК Сотрудник, | ОценочныеОбязательстваПоСотрудникамОстатки.СтатьяФинансирования КАК СтатьяФинансирования, | СУММА(ОценочныеОбязательстваПоСотрудникамОстатки.СуммаРезерваОстаток) КАК СуммаРезерва, | СУММА(ОценочныеОбязательстваПоСотрудникамОстатки.СуммаРезерваСтраховыхВзносовОстаток) КАК СуммаСтраховыхВзносов, | СУММА(ОценочныеОбязательстваПоСотрудникамОстатки.СуммаРезерваФССНесчастныеСлучаиОстаток) КАК СуммаФССНС, | СУММА(ОценочныеОбязательстваПоСотрудникамОстатки.СуммаРезерваОстаток + ОценочныеОбязательстваПоСотрудникамОстатки.СуммаРезерваСтраховыхВзносовОстаток + ОценочныеОбязательстваПоСотрудникамОстатки.СуммаРезерваФССНесчастныеСлучаиОстаток) КАК СуммаВсего |ПОМЕСТИТЬ ВТ_РезервОстаткиКон |ИЗ | РегистрНакопления.ОценочныеОбязательстваПоСотрудникам.Остатки(&ПериодКон_Вкл, {(Организация = &Организация | И Резерв = &Резерв)}) КАК ОценочныеОбязательстваПоСотрудникамОстатки | |СГРУППИРОВАТЬ ПО | ОценочныеОбязательстваПоСотрудникамОстатки.Резерв, | ОценочныеОбязательстваПоСотрудникамОстатки.Сотрудник, | ОценочныеОбязательстваПоСотрудникамОстатки.СтатьяФинансирования |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ОценочныеОбязательстваПоСотрудникамОбороты.Резерв КАК Резерв, | ОценочныеОбязательстваПоСотрудникамОбороты.Сотрудник КАК Сотрудник, | ОценочныеОбязательстваПоСотрудникамОбороты.СтатьяФинансирования КАК СтатьяФинансирования, | ОценочныеОбязательстваПоСотрудникамОбороты.СуммаРезерваПриход КАК СуммаРезерваПриход, | ОценочныеОбязательстваПоСотрудникамОбороты.СуммаРезерваСтраховыхВзносовПриход КАК СуммаСтраховыхВзносовПриход, | ОценочныеОбязательстваПоСотрудникамОбороты.СуммаРезерваФССНесчастныеСлучаиПриход КАК СуммаФССНСПриход, | ОценочныеОбязательстваПоСотрудникамОбороты.СуммаРезерваПриход + ОценочныеОбязательстваПоСотрудникамОбороты.СуммаРезерваСтраховыхВзносовПриход + ОценочныеОбязательстваПоСотрудникамОбороты.СуммаРезерваФССНесчастныеСлучаиПриход КАК СуммаВсегоПриход, | ОценочныеОбязательстваПоСотрудникамОбороты.СуммаРезерваРасход КАК СуммаРезерваРасход, | ОценочныеОбязательстваПоСотрудникамОбороты.СуммаРезерваСтраховыхВзносовРасход КАК СуммаСтраховыхВзносовРасход, | ОценочныеОбязательстваПоСотрудникамОбороты.СуммаРезерваФССНесчастныеСлучаиРасход КАК СуммаФССНСРасход, | ОценочныеОбязательстваПоСотрудникамОбороты.СуммаРезерваРасход + ОценочныеОбязательстваПоСотрудникамОбороты.СуммаРезерваСтраховыхВзносовРасход + ОценочныеОбязательстваПоСотрудникамОбороты.СуммаРезерваФССНесчастныеСлучаиРасход КАК СуммаВсегоРасход |ПОМЕСТИТЬ ВТ_РезервОбороты |ИЗ | РегистрНакопления.ОценочныеОбязательстваПоСотрудникам.Обороты(&ПериодНач, &ПериодКон, Период, {(Организация = &Организация | И Резерв = &Резерв)}) КАК ОценочныеОбязательстваПоСотрудникамОбороты |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Внз.Сотрудник КАК Сотрудник, | СУММА(ЕСТЬNULL(Внз.СуммаРезерва_Нач, 0)) КАК СуммаРезерва_Нач, | СУММА(ЕСТЬNULL(Внз.СуммаСтраховыхВзносов_Нач, 0)) КАК СуммаСтраховыхВзносов_Нач, | СУММА(ЕСТЬNULL(Внз.СуммаФССНС_Нач, 0)) КАК СуммаФССНС_Нач, | СУММА(ЕСТЬNULL(Внз.СуммаВсего_Нач, 0)) КАК СуммаВсего_Нач, | СУММА(ЕСТЬNULL(Внз.СуммаРезерва_Кон, 0)) КАК СуммаРезерва_Кон, | СУММА(ЕСТЬNULL(Внз.СуммаСтраховыхВзносов_Кон, 0)) КАК СуммаСтраховыхВзносов_Кон, | СУММА(ЕСТЬNULL(Внз.СуммаФССНС_Кон, 0)) КАК СуммаФССНС_Кон, | СУММА(ЕСТЬNULL(Внз.СуммаВсего_Кон, 0)) КАК СуммаВсего_Кон, | СУММА(ЕСТЬNULL(Внз.СуммаРезерваПриход, 0)) КАК СуммаРезерваПриход, | СУММА(ЕСТЬNULL(Внз.СуммаСтраховыхВзносовПриход, 0)) КАК СуммаСтраховыхВзносовПриход, | СУММА(ЕСТЬNULL(Внз.СуммаФССНСПриход, 0)) КАК СуммаФССНСПриход, | СУММА(ЕСТЬNULL(Внз.СуммаВсегоПриход, 0)) КАК СуммаВсегоПриход, | СУММА(ЕСТЬNULL(Внз.СуммаРезерваРасход, 0)) КАК СуммаРезерваРасход, | СУММА(ЕСТЬNULL(Внз.СуммаСтраховыхВзносовРасход, 0)) КАК СуммаСтраховыхВзносовРасход, | СУММА(ЕСТЬNULL(Внз.СуммаФССНСРасход, 0)) КАК СуммаФССНСРасход, | СУММА(ЕСТЬNULL(Внз.СуммаВсегоРасход, 0)) КАК СуммаВсегоРасход |ИЗ | (ВЫБРАТЬ | ВТ_РезервОстаткиНач.Резерв КАК Резерв, | ВТ_РезервОстаткиНач.Сотрудник КАК Сотрудник, | ВТ_РезервОстаткиНач.СтатьяФинансирования КАК СтатьяФинансирования, | ВТ_РезервОстаткиНач.СуммаРезерва КАК СуммаРезерва_Нач, | ВТ_РезервОстаткиНач.СуммаСтраховыхВзносов КАК СуммаСтраховыхВзносов_Нач, | ВТ_РезервОстаткиНач.СуммаФССНС КАК СуммаФССНС_Нач, | ВТ_РезервОстаткиНач.СуммаВсего КАК СуммаВсего_Нач, | NULL КАК СуммаРезерва_Кон, | NULL КАК СуммаСтраховыхВзносов_Кон, | NULL КАК СуммаФССНС_Кон, | NULL КАК СуммаВсего_Кон, | NULL КАК СуммаРезерваПриход, | NULL КАК СуммаСтраховыхВзносовПриход, | NULL КАК СуммаФССНСПриход, | NULL КАК СуммаВсегоПриход, | NULL КАК СуммаРезерваРасход, | NULL КАК СуммаСтраховыхВзносовРасход, | NULL КАК СуммаФССНСРасход, | NULL КАК СуммаВсегоРасход | ИЗ | ВТ_РезервОстаткиНач КАК ВТ_РезервОстаткиНач | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ВТ_РезервОстаткиКон.Резерв, | ВТ_РезервОстаткиКон.Сотрудник, | ВТ_РезервОстаткиКон.СтатьяФинансирования, | NULL, | NULL, | NULL, | NULL, | ВТ_РезервОстаткиКон.СуммаРезерва, | ВТ_РезервОстаткиКон.СуммаСтраховыхВзносов, | ВТ_РезервОстаткиКон.СуммаФССНС, | ВТ_РезервОстаткиКон.СуммаВсего, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL | ИЗ | ВТ_РезервОстаткиКон КАК ВТ_РезервОстаткиКон | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ВТ_РезервОбороты.Резерв, | ВТ_РезервОбороты.Сотрудник, | ВТ_РезервОбороты.СтатьяФинансирования, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | ВТ_РезервОбороты.СуммаРезерваПриход, | ВТ_РезервОбороты.СуммаСтраховыхВзносовПриход, | ВТ_РезервОбороты.СуммаФССНСПриход, | ВТ_РезервОбороты.СуммаВсегоПриход, | ВТ_РезервОбороты.СуммаРезерваРасход, | ВТ_РезервОбороты.СуммаСтраховыхВзносовРасход, | ВТ_РезервОбороты.СуммаФССНСРасход, | ВТ_РезервОбороты.СуммаВсегоРасход | ИЗ | ВТ_РезервОбороты КАК ВТ_РезервОбороты) КАК Внз | |СГРУППИРОВАТЬ ПО | Внз.Сотрудник"; Возврат ТекстЗапроса; КонецФункции Функция ПолучитьСотрудниковПоЗапросуРезерва(ЗначениеПериодНач,ЗначениеПериодКон) Запрос = Новый Запрос; Запрос.УстановитьПараметр("ПериодНач", ЗначениеПериодНач); Запрос.УстановитьПараметр("ПериодКон", ЗначениеПериодКон); ПериодКон_Вкл = Новый Граница(ЗначениеПериодКон,ВидГраницы.Включая); Запрос.УстановитьПараметр("ПериодКон_Вкл", ПериодКон_Вкл); Запрос.Текст = ПолучитьТекстЗапроса_Резерва(); РезЗапроса = Запрос.Выполнить(); Выборка = РезЗапроса.Выбрать(); //... ИсхДан = УчетСреднегоЗаработка.ПустаяТаблицаИсходныхДанныхРасчетаОбщегоСреднегоЗаработка(); //ИсхДан = Новый ТаблицаЗначений; //ИсхДан.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники")); //ИсхДан.Колонки.Добавить("ПорядокРасчета", Новый ОписаниеТипов("ПеречислениеСсылка.ПорядокРасчетаСреднегоЗаработкаОбщий")); //ИсхДан.Колонки.Добавить("ДатаНачалаСобытия", Новый ОписаниеТипов("Дата")); //ИсхДан.Колонки.Добавить("НачалоПериодаРасчетаСреднего", Новый ОписаниеТипов("Дата")); //ИсхДан.Колонки.Добавить("ОкончаниеПериодаРасчетаСреднего", Новый ОписаниеТипов("Дата")); пНаДату = ЗначениеПериодКон; пКоличествоМесяцев = 12; ДатаНачалаРасчета = ДобавитьМесяц(НачалоМесяца(пНаДату),-пКоличествоМесяцев); ДатаОкончанияРасчета = НачалоДня(КонецМесяца(ДобавитьМесяц(пНаДату,-1))); Пока Выборка.Следующий() Цикл СтрокаДанных = Выборка; СтрТаб = ИсхДан.Добавить(); СтрТаб.Сотрудник = СтрокаДанных.Сотрудник; СтрТаб.ПорядокРасчета = Перечисления.ПорядокРасчетаСреднегоЗаработкаОбщий.Постановление2010; СтрТаб.ДатаНачалаСобытия = НачалоМесяца(пНаДату); пДатаНачалаРасчета = ДатаНачалаРасчета; пДатаОкончанияРасчета = ДатаОкончанияРасчета; СтрТаб.НачалоПериодаРасчетаСреднего = пДатаНачалаРасчета; СтрТаб.ОкончаниеПериодаРасчетаСреднего = пДатаОкончанияРасчета; КонецЦикла; Возврат ИсхДан; КонецФункции Функция ПолучитьПустуюТЗ_СведенияОСреднем() ТЗ_РезультатРасчета = Новый ТаблицаЗначений; ТЗ_РезультатРасчета.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники")); ТЗ_РезультатРасчета.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число")); ТЗ_РезультатРасчета.Колонки.Добавить("ГруппаКолонок", Новый ОписаниеТипов("Строка")); ТЗ_РезультатРасчета.Колонки.Добавить("ВидЗаработка", Новый ОписаниеТипов("ПеречислениеСсылка.УчетНачисленийВСреднемЗаработкеОбщий")); //ПеречислениеСсылка.УчетНачисленийВСреднемЗаработкеОбщий Возврат ТЗ_РезультатРасчета; КонецФункции Функция ПолучитьРезультатРасчетаСреднегоЗаработка(пНаДату,пРасчетСреднегоПоЧасам,пСпособРасчетаОтпуска, ТЗ_Сотрудники) пРезультатРасчета = ПолучитьПустуюТЗ_СведенияОСреднем(); пТЗ_Сотрудники = ТЗ_Сотрудники.Скопировать(); ДанныеДляРасчСредЗарЗаМесяц = УчетСреднегоЗаработка.ДанныеДляРасчетаОбщегоСреднегоЗаработкаСотрудников(пТЗ_Сотрудники); ДополнительныеПараметры = УчетСреднегоЗаработкаКлиентСервер.ДополнительныеПараметрыРасчетаСреднегоЗаработка(); ДополнительныеПараметры.ДатаНачалаСобытия = НачалоМесяца(пНаДату); ДополнительныеПараметры.НачалоПериода = Дата(1,1,1);//НачалоПериодаРасчетаСреднего; ДополнительныеПараметры.ОкончаниеПериода = Дата(1,1,1);//ОкончаниеПериодаРасчетаСреднего; ДополнительныеПараметры.ПоЧасам = пРасчетСреднегоПоЧасам; //Ложь ДополнительныеПараметры.СпособРасчетаОтпуска = пСпособРасчетаОтпуска; //Перечисления.СпособыРасчетаНачислений.ОплатаОтпускаПоКалендарнымДням; //ДополнительныеПараметры = УчетСреднегоЗаработкаКлиентСервер.ДополнительныеПараметрыРасчетаСреднегоЗаработка(); //ДополнительныеПараметры.Индексации = ДанныеОбИндексации(Форма); //ДополнительныеПараметры.ДатаНачалаСобытия = Форма.ДатаНачалаСобытия; //ДополнительныеПараметры.НачалоПериода = Форма.НачалоПериодаРасчета; //ДополнительныеПараметры.ОкончаниеПериода = Форма.ОкончаниеПериодаРасчета; //ДополнительныеПараметры.ПоЧасам = Форма.ЧасовойСреднийЗаработок; Для Каждого СтрокаСотрудника Из ТЗ_Сотрудники Цикл ОтборСтрок = новый Структура("Сотрудник",СтрокаСотрудника.Сотрудник); ЗаработокСотрудника = ДанныеДляРасчСредЗарЗаМесяц.ДанныеОНачислениях.найтиСтроки(ОтборСтрок); ВремяСотрудника = ДанныеДляРасчСредЗарЗаМесяц.ДанныеОВремени.найтиСтроки(ОтборСтрок); ИндексацияСотрудника = ДанныеДляРасчСредЗарЗаМесяц.ДанныеОбИндексации.найтиСтроки(ОтборСтрок); ДополнительныеПараметры.Индексации = ИндексацияСотрудника; ДополнительныеПараметры.НачалоПериода = СтрокаСотрудника.НачалоПериодаРасчетаСреднего; ДополнительныеПараметры.ОкончаниеПериода = СтрокаСотрудника.ОкончаниеПериодаРасчетаСреднего; //ДанныеДляРасчетаСреднего = УчетСреднегоЗаработкаКлиентСервер.ДанныеДляРасчетаСреднегоЗаработка(ЗаработокСотрудника, ВремяСотрудника, ДополнительныеПараметры); // //// ВсегоЗаработок //для каждого стр из ДанныеДляРасчетаСреднего.Заработок цикл // НовСтрока = пРезультатРасчета.Добавить(); // НовСтрока.Сотрудник = СтрокаСотрудника.Сотрудник; // НовСтрока.Сумма = стр.Учтено; // НовСтрока.ГруппаКолонок = "Учтен заработок"; // НовСтрока.ВидЗаработка = стр.СоставнаяЧасть; //КонецЦикла; // //// ВсегоВремя //ВсегоЗаработок = УчетСреднегоЗаработкаКлиентСервер.ИтогиПоПолю(ДанныеДляРасчетаСреднего.Заработок, "Учтено"); //ВсегоВремя = УчетСреднегоЗаработкаКлиентСервер.ИтогиПоПолю(ДанныеДляРасчетаСреднего.ОтработанноеВремя, "Учтено"); // //НовСтрока = пРезультатРасчета.Добавить(); //НовСтрока.Сотрудник = СтрокаСотрудника.Сотрудник; //НовСтрока.Сумма = ВсегоВремя; //НовСтрока.ГруппаКолонок = "Учтено отработанного времени"; // СреднийЗаработок СреднийЗаработок = УчетСреднегоЗаработкаКлиентСервер.СреднийЗаработокОбщий(ЗаработокСотрудника, ВремяСотрудника, ДополнительныеПараметры); //СреднийЗаработок = УчетСреднегоЗаработкаКлиентСервер.СреднийЗаработок(ВсегоЗаработок,ВсегоВремя); НовСтрока = пРезультатРасчета.Добавить(); НовСтрока.Сотрудник = СтрокаСотрудника.Сотрудник; НовСтрока.Сумма = СреднийЗаработок; НовСтрока.ГруппаКолонок = "Средний заработок"; КонецЦикла; //пРезультатРасчета.Свернуть("Сотрудник,Сумма,ГруппаКолонок,ВидЗаработка"); Возврат пРезультатРасчета; КонецФункции #КонецОбласти СлужебныеПроцедурыИФункции#Область СлужебныеПроцедурыИФункции Процедура ПередЗаполнениемОбщихИсточниковДанныхОтчета(НаборДанных) Экспорт //Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда // МодульГосударственнаяСлужба = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужба"); // Для Каждого Набор Из НаборДанных Цикл // Если ТипЗнч(Набор) = Тип("НаборДанныхЗапросСхемыКомпоновкиДанных") Тогда // МодульГосударственнаяСлужба.ДобавитьВТекстЗапросаПредставлениеВидДолжностиГосударственнойСлужбы(Набор.Запрос); // КонецЕсли; // КонецЦикла; //КонецЕсли; // //Для Каждого Набор Из НаборДанных Цикл // Если ТипЗнч(Набор) = Тип("НаборДанныхЗапросСхемыКомпоновкиДанных") Тогда // Набор.Запрос = СтрЗаменить(Набор.Запрос, "&ВидГосударственнойСлужбы", """"); // КонецЕсли; //КонецЦикла; КонецПроцедуры Процедура ИнициализироватьОтчет() Экспорт ПередЗаполнениемОбщихИсточниковДанныхОтчета(СхемаКомпоновкиДанных.НаборыДанных); ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеИсточникиДанныхОтчета(ЭтотОбъект); КонецПроцедуры // Для общей формы "Форма отчета" подсистемы "Варианты отчетов". Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт Настройки.События.ПриСозданииНаСервере = Истина; Настройки.События.ПередЗагрузкойНастроекВКомпоновщик = Истина; Настройки.Вставить("РазрешеноМенятьВарианты", Истина); Настройки.Вставить("РазрешеноИзменятьСтруктуру", Истина); КонецПроцедуры // Вызывается перед загрузкой новых настроек. Используется для изменения схемы компоновки. // Процедура ПередЗагрузкойНастроекВКомпоновщик(Контекст, КлючСхемы, КлючВарианта, НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД) Экспорт Если КлючСхемы <> КлючВарианта Тогда ИнициализироватьОтчет(); ОтчетыСервер.ПодключитьСхему(ЭтотОбъект, Контекст, СхемаКомпоновкиДанных, КлючСхемы); КлючСхемы = КлючВарианта; КонецЕсли; КонецПроцедуры // Вызывается в обработчике одноименного события формы отчета после выполнения кода формы. // // Параметры: // Форма - УправляемаяФорма - Форма отчета. // Отказ - Передается из параметров обработчика "как есть". // СтандартнаяОбработка - Передается из параметров обработчика "как есть". // // См. также: // "УправляемаяФорма.ПриСозданииНаСервере" в синтакс-помощнике. // Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт ИнициализироватьОтчет(); ЗначениеВДанныеФормы(ЭтотОбъект, Форма.Отчет); КонецПроцедуры #КонецОбласти ДопФункцииПроцедуры#Область ДопФункцииПроцедуры Функция ПолучитьЗначениеПараметра(Настройки_Основные,ИмяПараметра,ЗначениПоУмолчанию,ПараметрВключен=Ложь,ПараметрНайден=Ложь) РезФункц = ЗначениПоУмолчанию; НайденПараметр = Настройки_Основные.ПараметрыДанных.Элементы.Найти(ИмяПараметра); Если НайденПараметр <> Неопределено Тогда РезФункц = НайденПараметр.Значение; ПараметрВключен = НайденПараметр.Использование; ПараметрНайден = Истина; КонецЕсли; Возврат РезФункц; КонецФункции Процедура УстановитьПараметр(Настройки_Основные,ИмяПараметра,Знач ЗначениеПоУмолчанию, Знач УстановитьНовоеЗначение=Ложь, пПользовательскиеНастройкиМодифицированы=Ложь, ВозвращаемоеЗначениеПараметра=Неопределено) НайденПараметр = Настройки_Основные.ПараметрыДанных.Элементы.Найти(ИмяПараметра); Если НайденПараметр = Неопределено Тогда ВозвращаемоеЗначениеПараметра = ЗначениеПоУмолчанию; //Не нашли, но вернем его... Возврат; КонецЕсли; пЗначение = НайденПараметр.Значение; Если УстановитьНовоеЗначение = Истина или Не ЗначениеЗаполнено(пЗначение) Тогда НайденПараметр.Значение = ЗначениеПоУмолчанию; пЗначение = ЗначениеПоУмолчанию; КонецЕсли; ВозвращаемоеЗначениеПараметра = пЗначение; НайденПараметр.Использование = Истина; //Для пользовательского интерфейса... ПользовательскийПараметр = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(НайденПараметр.ИдентификаторПользовательскойНастройки); Если ТипЗнч(ПользовательскийПараметр) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда ПользовательскийПараметр.Значение = пЗначение; ПользовательскийПараметр.Использование = Истина; пПользовательскиеНастройкиМодифицированы = Истина; КонецЕсли; КонецПроцедуры Процедура ЗаполнитьПользовательскиеНастройки(НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД) Для Каждого СледПараметр Из НовыеНастройкиКД.ПараметрыДанных.Элементы Цикл Если Не ПустаяСтрока(СледПараметр.ИдентификаторПользовательскойНастройки) Тогда ПользовательскийПараметр = НовыеПользовательскиеНастройкиКД.Элементы.Найти(СледПараметр.ИдентификаторПользовательскойНастройки); Если ТипЗнч(ПользовательскийПараметр) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда ПользовательскийПараметр.Значение = СледПараметр.Значение; ПользовательскийПараметр.Использование = СледПараметр.Использование; КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры //................................ Процедура ДобавитьЗаполненноеЗначениеСписок(СпсЗнач, ЭлементОтбора) Если ЭлементОтбора = Неопределено или Не ЗначениеЗаполнено(ЭлементОтбора) Тогда Возврат; КонецЕсли; СпсЗнач.Добавить(ЭлементОтбора); КонецПроцедуры Процедура ВыполнитьПроверкуВерсииОтчета(Настройки,КомпоновщикНастроек, пОбновитьЗначения,пПользовательскиеНастройкиМодифицированы) пВерсияОтчета = ""; пТекущаяВерсияОтчета = ""; ЗначениеПараметра = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ТекущаяВерсияОтчета")); Если ЗначениеПараметра <> Неопределено Тогда пТекущаяВерсияОтчета = СокрЛП(ЗначениеПараметра.Значение); КонецЕсли; ЗначениеПараметра = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВерсияОтчета")); Если ЗначениеПараметра <> Неопределено Тогда пВерсияОтчета = СокрЛП(ЗначениеПараметра.Значение); ЗначениеПараметра.Значение = пТекущаяВерсияОтчета; ПользовательскийПараметр = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ЗначениеПараметра.ИдентификаторПользовательскойНастройки); Если ТипЗнч(ПользовательскийПараметр) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда ПользовательскийПараметр.Значение = ЗначениеПараметра.Значение; КонецЕсли; КонецЕсли; Если пВерсияОтчета <> пТекущаяВерсияОтчета или ПустаяСтрока(пВерсияОтчета) Тогда пОбновитьЗначения = Истина; пПользовательскиеНастройкиМодифицированы = Истина; КонецЕсли; КонецПроцедуры Процедура ЗаполнитьЗначениямиПараметр(Настройки,КомпоновщикНастроек, ИмяПараметра, пПользовательскиеНастройкиМодифицированы, пОбновитьЗначения) //Если ИмяПараметра = "Имяпараметра" Тогда // // ЗначениеПараметра = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ИмяПараметра")); // Если ЗначениеПараметра <> Неопределено // и (Не ЗначениеЗаполнено(ЗначениеПараметра.Значение) или НЕ ЗначениеПараметра.Использование или пОбновитьЗначения = Истина) // Тогда // пПользовательскиеНастройкиМодифицированы = Истина; // // СпсЗнач = Новый СписокЗначений; // // ЭлементОтбора = Справочники.НоменклатурныеГруппы.НайтиПоКоду("Код элемента"); // ДобавитьЗаполненноеЗначениеСписок(СпсЗнач, ЭлементОтбора); // // ЗначениеПараметра.Значение = СпсЗнач; // ЗначениеПараметра.Использование = Истина; // // ПользовательскийПараметр = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ЗначениеПараметра.ИдентификаторПользовательскойНастройки); // Если ТипЗнч(ПользовательскийПараметр) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда // ПользовательскийПараметр.Значение = ЗначениеПараметра.Значение; // КонецЕсли; // КонецЕсли; // // //КонецЕсли; КонецПроцедуры #КонецОбласти |
|||
12
DrZombi
12.07.24
✎
11:46
|
+(10) Ваш раздел "СлужебныеПроцедурыИФункции"
|
|||
13
andreanochilentano
naïve
12.07.24
✎
12:52
|
Ура, работает. Для потомков:
Процедура ПриОбновленииСоставаПользовательскихНастроекНаСервере(СтандартнаяОбработка) Настройки = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПериодОтчета")); Настройки.Значение.Вариант =ВариантСтандартногоПериода.ПроизвольныйПериод; Настройки.Значение.ДатаНачала = ТекущаяДата(); |
|||
14
DrZombi
12.07.24
✎
13:17
|
(13) для вас.
В БСП этот список параметров куда ширше, но его надо искать в основной конфигурации, через поиск. И вы поймете, что кроличья нора куда глубже :) // Для общей формы "Форма отчета" подсистемы "Варианты отчетов". Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт Настройки.События.ПриСозданииНаСервере = Истина; Настройки.События.ПередЗагрузкойНастроекВКомпоновщик = Истина; Настройки.Вставить("РазрешеноМенятьВарианты", Истина); Настройки.Вставить("РазрешеноИзменятьСтруктуру", Истина); КонецПроцедуры |
|||
15
andreanochilentano
naïve
12.07.24
✎
14:21
|
(14) до БСП пока не дошел, пока с СКД разбираюсь ) Спасибо )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |