Программное создание и расчет документов начисления зарплаты в конфигурации ЗУП 3.1 и ERP (по подразделениям)

Публикация № 1576926 27.12.21

Приемы и методы разработки

Программное создание документов расчеты зарплаты менеджер расчета механизмы ЗУП 3.1 разработка расчетных

Краткое описание типового механизма расчета зарплаты в конфигурации ЗУП 3.1 и ERP и описание разработанной обработки по программному расчету документов зарплаты в разрезе подразделений. Т.к. формирование документов происходит полностью программно, с минимумов параметров, его можно брать за основу для расчета документов по своим условиям, вплоть до создания по расписанию при необходимости.

В этой статье расскажу о подходе к программному созданию и расчету документов в ЗУП на примере документа "Начисление зарплаты и взносов". В ERP у нас блок расчета зарплаты тоже есть, поэтому актуально и для этой конфигурации.

Сначала кратко приведу как работает типовой механизм, потом опишу как я это реализовал в обработке. 

Сразу уточню, что в моем решении я не использую форму документа, но при этом постарался максимально использовать типовые механизмы. В обработке реализован расчет зарплаты по подразделениям организации.

Как работает типовая логика.

При создании формы документа  для табличных частей, использующих показатели, создаются дополнительные колонки Показатель1...ПоказательN и Значение1...ЗначениеN, в которые переносятся данные из табличной части Показали, связанные по реквизиту ИдентификаторСтрокиВидаРасчета.

По команде "Заполнить" запускается расчет в фоновом задании, используется метод "ПодготовитьДанныеДляЗаполнения" из модуля менеджера. Думаю тут не нужно напоминать про существование параметра запуска "РежимОтладки", который позволяет не запускать выполнение в фоне, для удобства отладки.

Результат = ДлительныеОперации.ЗапуститьВыполнениеВФоне(
	УникальныйИдентификатор,
	"Документы.НачислениеЗарплаты.ПодготовитьДанныеДляЗаполнения",
	СтруктураПараметров,
	НаименованиеЗадания);

Но в модуле менеджера основной логики нет, тут вызывается функция из общего модуля "Расчет зарплаты расширенный".

ДанныеЗаполнения = РасчетЗарплатыРасширенный.ДанныеДляЗаполненияТаблицДокумента(ОписаниеДокумента, Организация, МесяцНачисления, ДополнительныеПараметры);

И уже в функции "ДанныеДляЗаполненияТаблицДокумента" происходит логика заполнения менеджера расчета, для расчета зарплаты. Ранее я уже описывал данный механизм в статье 

Использование менеджера расчета для расчета зарплаты в ЗУП 3.

Если кратко по этой функции, то мы получаем сотрудников для расчета

Сотрудники = СотрудникиДляНачисленияЗарплаты(Организация, Подразделение, МесяцНачисления, ПараметрыСотрудников);

Инициализируем менеджер расчета

МенеджерРасчета = СоздатьМенеджерРасчета(МесяцНачисления, Организация);

Рассчитываем начисления и переносим результаты расчета в данные заполнения, для возврата в документ.

МенеджерРасчета.РассчитатьЗарплату();

ДанныеЗаполнения.Начисления = МенеджерРасчета.Зарплата.Начисления;

После выполнения фонового задания происходит заполнение документа из рассчитанных данных

Если Результат.ЗаданиеВыполнено Тогда
	ЗаполнениеПослеВыполненияДлительнойОперации();
КонецЕсли;

Таблицы из формата менеджера расчета преобразуются в формат формы документа

ДанныеДляЗаполненияВДанныеФормы(ДанныеДляЗаполнения, Объект);

Все обработчики переноса находятся общем модуле РасчетЗарплатыРасширенныйФормы

РасчетЗарплатыРасширенныйФормы.РасчетЗарплатыНачисленияВДанныеФормы(ТаблицыНачислений, ДанныеЗаполнения.Начисления, Объект.Организация, Объект.МесяцНачисления, ПозицииВставки, Объект.РежимДоначисления);

В событии "ПередЗаписьюНаСервере" происходит перенос показателей из табличных частей в табличную часть "Показатели"

ЗарплатаКадрыРасширенный.ВводНачисленийРеквизитВДанные(ЭтаФорма, ТекущийОбъект, ОписанияТаблиц, 2);

Вроде бы все просто, бери, копируй код в обработку, пиши свое решение. Сложность в том, что все механизмы переноса данных менеджера расчета в данные формы рассчитаны на форму. Все методы находятся в общем модуле РасчетЗарплатыРасширенныйФормы. В коде есть такие методы как Строка.Свойство(), что мы можем применить только к ДанныеФормыКоллекция.  

Раньше я уже реализовывал подобную задачу, переписав методы РасчетЗарплатыРасширенныйФормы без использования специфичных свойств. В этот раз для статьи, как мне кажется я нашел более изящное решение.

Собственно интерфейс обработки

 

Я максимально упростил условия. Т.е. в шапке у нас только месяц расчета организация и ответственный.

РежимНачисления - окончательный расчет, порядок выплаты - зарплата.

В табличной части подразделения организации, не имеющие подчиненных подразделений. По каждой строке рассчитывается отдельный документ. Это бывает удобно в крупных организациях, когда численность сотрудников не позволяет их рассчитать в одном документе, а количество подразделений сильно усложняет время расчета.

Расчет идентичный тому, что если вы создадите документ, укажите необходимы реквизиты и нажмете кнопку "Заполнить".

Расчет реализован через длительные операции, т.е. через фоновые задания. Естественно, т.к. это внешняя обработка, она должна быть подключена в дополнительные отчеты и обработки. При открытии напрямую, будет работать без фонового задания.

Выполнение команды через длительные операции отображением прогресса работы.

Возврат ДлительныеОперации.ВыполнитьПроцедуру(
	ПараметрыВыполнения, 
	"ДлительныеОперации.ВыполнитьПроцедуруМодуляОбъектаОбработки", 
	ПараметрыЗадания,
	АдресХранилища);

Весь расчет, создание и заполнение документа проходит в модуле обработки. После выполнения на клиенте обновляется таблица подразделений с документами. Никаких заполнений документов не происходит.

В модуле мы обходим в цикле выбранные подразделения и для каждого делаем расчет, в процессе сообщая прогресс выполнения

Процедура РасчитатьЗарплату(Параметры, АдресРезультата) Экспорт

	Подразделения = Параметры.Подразделения;
	
	ПорядковыйНомер = 1;	                            
	КоличествоПодразделений = Подразделения.Количество();
	
	Для Каждого ПараметрыРасчета Из Подразделения Цикл
		
		Процент = Окр(ПорядковыйНомер / КоличествоПодразделений * 100, 0);
		
		ДлительныеОперации.СообщитьПрогресс(Процент, 
			СтрШаблон(
				НСтр("ru = 'Расчет подразделения %1 (%2 из %3)'"),
				ПараметрыРасчета.Подразделение,
				ПорядковыйНомер,
				КоличествоПодразделений));
			
		РасчитатьДокумент(Параметры, ПараметрыРасчета);

		ПорядковыйНомер = ПорядковыйНомер + 1;

	КонецЦикла;	

КонецПроцедуры

В процедуре РасчитатьДокумент создаем или получаем объект документа

Если ЗначениеЗаполнено(ПараметрыРасчета.Документ) Тогда
	ДокументОбъект = ПараметрыРасчета.Документ.ПолучитьОбъект();
Иначе
    ДокументОбъект = Документы.НачислениеЗарплаты.СоздатьДокумент();
КонецЕсли;

Как уже писал, использую максимально типовые механизмы, поэтому расчет проходит так же через типовой метод

Документы.НачислениеЗарплаты.ПодготовитьДанныеДляЗаполнения(ПараметрыВыполнения, АдресХранилища);	

СтруктураДанных = ПолучитьИзВременногоХранилища(АдресХранилища);

Ну и заполнение документа

	Если СтруктураДанных.Свойство("ДанныеДляЗаполненияТаблицДокумента", ДанныеДляЗаполнения) Тогда

		// Заполнение табличных частей и вторичных данных коллекций, которые с ней связаны.
		ОчиститьТаблицыДокументаНаСервере(ДокументОбъект);
		
		//Эмуляция формы для удобства работы с типовыми механизмами 
		//Для использования максимально типового функциола смоделируем в объекте данные формы документа
		ЭтаФорма = ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру(ПараметрыВыполнения);
		ЭтаФорма.Вставить("ВременныйОбъект", ДанныеДокументаВОбъект(ДокументОбъект));
		
		//Данные процедура полностью идентичная аналогичной процедуре формы документа НачислениеЗарплаты
		ДанныеДляЗаполненияВДанныеОбъекта(ДанныеДляЗаполнения, ЭтаФорма.ВременныйОбъект);
		
		//Окончательно перенесем данные объекта в данные документа
		ДанныеОбъектаВДанныеДокумента(ЭтаФорма, ДокументОбъект, ПараметрыВыполнения);

С учетом того, что мы в том числе перезаполняем документ, то чистим все таблицы документа

Для Каждого ТабличнаяЧасть Из Метаданные.Документы.НачислениеЗарплаты.ТабличныеЧасти Цикл 
	ДокументОбъект[ТабличнаяЧасть.Имя].Очистить();
КонецЦикла;

Будем считать что в ТЧ ДополнительныеРеквизиты у нас пусто :)

Для переноса данных менеджера расчета в данные "формы", использую копию процедуры формы документа "ДанныеДляЗаполненияВДанныеОбъекта".

Так же в модуль перенесены и адаптированы функции модуля формы по описанию документа и таблиц начислений (льготы, взносы, налоги, удержания в зависимости от настроек программы).

Т.к. использую типовые механизмы переноса, но при этом не используя форму, то например в общем модуле ЗарплатаКадрыРасширенный.ВводНачисленийРеквизитВДанныеТаблицыРасчета пришлось обходить вот такое условие  

Если СтрокаКоллекции.Свойство("ДокументОснование") Тогда
	СтруктураДокументОснование.ДокументОснование = СтрокаКоллекции.ДокументОснование;
	ЗаполнитьЗначенияСвойств(НоваяСтрокаПоказателя, СтруктураДокументОснование);
КонецЕсли;

Для этого вместо таблиц значений использовал массивы структур

Форма.Объект.Вставить(Элемент.Ключ, ОбщегоНазначения.ТаблицаЗначенийВМассив(Элемент.Значение));

Тут форма - это структура. Сделано для удобства и "эмуляции" формы.

Показатели в таблицы добавляю програмно

	МаксимальноеКоличествоПоказателей = ЗарплатаКадрыРасширенныйПовтИсп.МаксимальноеКоличествоОтображаемыхПоказателей();
	Для Каждого ТабличнаяЧасть Из Метаданные.Документы.НачислениеЗарплаты.ТабличныеЧасти Цикл
		Объект.Вставить(ТабличнаяЧасть.Имя, ДокументОбъект[ТабличнаяЧасть.Имя].Выгрузить());
		Для НомерПоказателя = 1 По МаксимальноеКоличествоПоказателей Цикл
			Объект[ТабличнаяЧасть.Имя].Колонки.Добавить("Показатель" + НомерПоказателя, Новый ОписаниеТипов("СправочникСсылка.ПоказателиРасчетаЗарплаты"));
			Объект[ТабличнаяЧасть.Имя].Колонки.Добавить("Значение" + НомерПоказателя, Метаданные.ОпределяемыеТипы.ЗначениеПоказателяРасчетаЗарплаты.Тип);
		КонецЦикла;
	КонецЦикла;                          

 

Записываем документ с чисткой перерасчетов.

		ДокументОбъект.ДополнительныеСвойства.Вставить("УдалитьПерерасчетыТекущегоПериода", Истина);
		Попытка
			ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение); 
		Исключение
			ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
			ОбщегоНазначения.СообщитьПользователю(СтрШаблон(НСтр("ru = 'Не удалось провести расчетный документ %1 по причине:
				|%2'"), ДокументОбъект.Ссылка, КраткоеПредставлениеОшибки(ОписаниеОшибки())));
		КонецПопытки;


На будущее добавлено сохранения вида операции, если планируется разделять документы по видам операций.

		Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ОперацииРасчетаЗарплаты") И ЗначениеЗаполнено(ДокументОбъект.Ссылка) Тогда
			Модуль = ОбщегоНазначения.ОбщийМодуль("ОперацииРасчетаЗарплаты");
			Модуль.ЗаписатьВидОперацииДокумента(ДокументОбъект.Ссылка, ПараметрыВыполнения.ВидОперации);
		КонецЕсли;

 

Разработано в конфигурации 1С:Предприятие 8.3 (8.3.20.1613)

Код актуален для конфигурации Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.20.71). Дополнительно протестировал  работу в 1С:ERP Управление предприятием 2 (2.5.7.201) (В демо версии подразделения для теста есть в организации "Деловой союз").

В конфигурации очень много своей специфики. Например по нумерации ИдентификаторСтрокиВидаРасчета в зависимости от документа и табличной части. Или например менеджер расчета вычеты возвращает в ТЧ НДФЛ, которые потом переносятся в отдельную табличную часть. Показатели, которые в менеджере расчета хранятся для каждой строки в отдельной таблице значений, а в документа одна табличная часть Показатели для всех ТЧ, связанных по идентификатору.

К чему это я. Результаты работы данный обработки я сравнивал через выгрузку документа через обработку "Выгрузка загрузка данных в XML" и затем сравнивая результаты расчета через обработку и вручную.

Весь код показать не могу, слишком много для статьи. Мог упустить что-нибудь важное в статье, отвечу в комментариях. Если что-то конкретное, то приведу пример кода. Обработка писалась с нуля исключительно для данной статьи. 

Для данной обработки функциональная опция "Выполнять расчет зарплаты по подразделениям" должна быть включена. Это можно сделать в настройках сняв галку на пункте "Расчет и выплата зарплаты выполняется по организации в целом".

 

Скачать файлы

Наименование Файл Версия Размер
Программное создание и расчет документов начисления зарплаты в конфигурации ЗУП 3.1 и ERP (по подразделениям):

.epf 19,71Kb
4
.epf 1.0 19,71Kb 4 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Komanda1C 3 27.12.21 09:56 Сейчас в теме
А зачем так нужно делать? Расчет обычно выполняется в рамках организации, а не подразделений.
2. the1 1069 27.12.21 10:03 Сейчас в теме
(1) Шутить изволите? Если в организации сотни подразделений, физически невозможно все рассчитать в одном документе.
ixijixi; ubnkfl; +2 Ответить
3. maraty 277 27.12.21 10:17 Сейчас в теме
(1) Да банально возьмем ограничение в 99тыс строк в табличных частях документов.
Предположим в организации 10тыс сотрудников. Ведется учет по РК, СН. Еще несколько дополнительных начислений, надбавок. Добавим несколько удержаний. В общем в среднем на каждого сотрудника 4 начисления (Оклад, РК, СН, надбавка). Итого по 40тыс строк в ТЧ Начисления. А теперь на каждое начисление у нас по несколько показателей. Время, ставка, оклад, северный коэффициент, районный. В общем в крупной организации этого добра хватает. В табличной части "Показатели" у нас внезапно больше 99тыс строк и перестают сохраняться документы. Да и открывать документы где в табличных частях больше 10к строк то еще удовольствие для пользователя.
А если добавим сюда блокировки скуля по таблицам в РС ЗначенияПоказателейНачислений, то будет еще веселее.
4. Komanda1C 3 27.12.21 10:48 Сейчас в теме
(3)Коллега, а назовите хотя-бы одну организацию, где 10000 человек?
У нас в организации, например, 700 подразделений.
5. maraty 277 27.12.21 11:15 Сейчас в теме
(4) в яндексе запрос "top организаций по численности". Просто участвовал в некоторых организациях из этого топа в проектах, поэтому не хотелось бы их называть, а в особенности разглашать их численность.
10. biimmap 417 05.01.22 13:10 Сейчас в теме
6. Komanda1C 3 27.12.21 11:21 Сейчас в теме
Топ численности персонала как и выручка компаний не является конфиденциальной информацией.
Например, Газпром, 500 000 тысяч сотрудников, но при этом 380 организаций. При этом самые крупные организации Газпрома имеют ОП.
По факту 10000 нет ни у кого.
7. maraty 277 27.12.21 11:35 Сейчас в теме
(6) Вот тут точно не скажу точных цифр. Да, согласен что в крупных компаниях идет дробление на организации. Пусть там 5 тыс. сотрудников, но проблемы указанные мной в (3) не выдуманы. Мы упирались в проекте в озвученные мной ограничения. Совокупное количество сотрудников, начислений и показателей фактически не давало сохранить документ в системе по одной организации.
8. Komanda1C 3 27.12.21 12:00 Сейчас в теме
(7)Обработка, в целом, полезная, но только для очень-очень крупных компаний...
9. maraty 277 27.12.21 12:57 Сейчас в теме
(8) да, так и есть. Организациям, у которых все рассчитывается в одном документе, это не нужно.
Разве что будет интересен сам принцип расчета без форм. Я по этому же принципу писал обработки по автоматическому расчету отпусков.
36. Alex65rus 01.04.22 18:14 Сейчас в теме
(7) Спасибо за статью. Запросов на ЗУП все больше, и 10к+ сотрудников сейчас - объективная реальность.
11. biimmap 417 05.01.22 13:12 Сейчас в теме
(6) это заблуждение. И главное, что данная обработка актуальна при численности свыше 3х тысяч.
Alex65rus; +1 Ответить
15. maraty 277 09.01.22 12:35 Сейчас в теме
(11) Вообще целью было показать программное создание и расчет документа Начисления зарплаты. Пожалуй неудачно выбрал такой относительно узкий пример, как расчет по подразделениям, который используют только крупные организации. Можно сделать пример, как рассчитать зарплату автоматически, через регламентное задание по расписанию. Но это так себе будет решение, с точки зрения практического применения. Можно рассчитывать автоматически кадровые документы, например отпуск. Но тут тоже для каждой компании своя практика и опять же оправданно только при большом количестве сотрудников.
12. biimmap 417 05.01.22 13:34 Сейчас в теме
Здесь аналогично про форму недостаточно написано. Без формы превратить результаты расчета в документ не представляется возможным типовым программным интерфейсом. Собственно это и не обязательно. Результат из Менеджера расчета зарплаты можно напрямую в ТЧ положить. Хотя придётся циклом пройтись по его строкам)

Вообще плохо сейчас сделано, что без формы не работают многие алгоритмы заполнения и расчета. Такая же проблема в кадровом учете в таблицах начислений и показателей.
the1; RealSurfer; +2 Ответить
13. the1 1069 07.01.22 22:48 Сейчас в теме
Какова бы ни была численность, один расчетчик просто не в состоянии рассчитать более 400-500, ну пусть и 1000 сотрудников. Поэтому при достижении этой численности нанимается второй расчетчик, и о расчете всей организации в одном документе приходится забыть.
14. maraty 277 09.01.22 11:22 Сейчас в теме
(12) В моей обработке расчет и заполнение документа проходят в модуле обработки, соответственно на сервере и без форм. Да, типовые методы в РасчетЗарплатыРасширенныйФормы подразумевают работу исключительно с формой. Но это можно обойти, передав в общий модуль структуру со свойством Объект, а вместо таблиц - массив структур, имитирующих строки (чтобы обойти вызов метода "Свойства"). Да, конечно эти таблицы еще модифицировать, добавив колонки показателей и их значений. Об этом писал в статье. Если вы используете результаты распределения, то нужно не забыть корректно перенести результаты в документ.

Метод прямого перекладывания результатов расчета их менеджера расчета в документ тоже допустим, но тут нужно просто быть внимательным. Например вручную перенести реквизит ТЧ ИдентификаторСтроки в ИдентификаторСтрокиВидаРасчета. Не забыть исключить показатели, у которых есть признак "ОтображатьВДокументахНачисления" стоит в ложь. Если у нас не только начисления, а еще удержания, перерасчеты, то не забыть для идентификатора строки ввести модификатор, чтобы показатели корректно были связаны со строкой расчета. Ну и еще по мелочам. Не забываем что результаты расчета для ТЧ "ПримененныеВычетыНаДетейИИмущественные" в менеджере расчета возвращаются в НДФЛ.

В общем всё зависит от требуемого конечного результата. Мой респект всем разработчикам, кто в ЗУП все таки дошел до прямого использования менеджера расчета и его результатов.
16. biimmap 417 09.01.22 12:48 Сейчас в теме
(14) я в нескольких обработках все нужные табличные части и реквизиты формы создаю на форме обработки. и потом запускаю весь программный интерфейс как будто из документа. удобно и меньше думать надо над последствиями.
user_2010; +1 Ответить
17. maraty 277 09.01.22 13:01 Сейчас в теме
(16) Тоже решение, согласен, но часть функционала требует работы на клиенте. Хотя зарплата она такая, в большинстве случаев, пользователи хотят контролировать процесс.
18. SlavaKron 11.01.22 13:34 Сейчас в теме
(16) А в общих модулях используются какие-то методы и свойства исключительно управляемой формы или данных формы? Что если вместо формы передать структуру, содержащую прикладной объект с ключом "Объект"?
19. maraty 277 11.01.22 14:02 Сейчас в теме
(18)
1. У объекта должны быть табличные части, идентичные по структуре документу.
2. ТЧ должны быть дополнены колонками Показатель1...N, и Значение1...N
3. Строки ТЧ должны иметь метод "Свойства". В форме это обеспечивается, что ТЧ имеют тип "ДанныеФормыКоллекция". В моем случае, я ТЧ сделал через массив структур.
Так, это сходу что помню.
Ну минус, что приходится сначала переносить данные из менеджера в "форму", а затем уже в документ. Это нужно чтобы максимально сохранить всю типовую логику по переносу данных. Прямой перенос из менеджера расчета в документ тоже возможен, но уже через собственные методы.
20. biimmap 417 11.01.22 14:23 Сейчас в теме
(18) да ничего особенного, просто зачем этот велосипед? Коллега ранее Вам ответил, что должен быть определенный набор реквизитов и табличных частей. Их элементарно скопировать из типовой формы. А в структуру их нужно создавать. Вот и вся разница. Я за то, чтоб копировать типовое, а не городить велосипеды.
21. maraty 277 11.01.22 15:01 Сейчас в теме
(20) Куда скопировать? В другую форму которой у меня нет? А типовые реквизиты, которые создаются программно на форме как элементарно скопировать? Мы по моему говорим о разных задачах. Мой способ полностью работает на сервере. Ваш способ требует наличия формы и работы на клиенте.
22. biimmap 417 11.01.22 15:11 Сейчас в теме
(21) форма обработки есть!!! в неё всё и копирую. а потом форму обработки использую как параметр для программного интерфейса
23. maraty 277 11.01.22 15:21 Сейчас в теме
(22) моя реализация допускает выполнения расчета в регламентном задании. без формы соответственно. Правда сомневаюсь что такой расчет кому то нужен, но тем не менее можно :)
И потом с формой нужно смотреть как это будет работать на большом объеме данных. Просто когда дойдет до оптимизации производительности, в первую очередь будут избавляться от перекладывания данных в форму и обратно.
24. biimmap 417 11.01.22 15:23 Сейчас в теме
(23) В таких задачах речь про производительность обычно не идёт! Важно добиться цели, которая нормальным путём не достигается. Идею с формой обработки уже несколько раз использовал. Очень удобно.
25. maraty 277 11.01.22 15:31 Сейчас в теме
(24) Просто мне достаются задачи, когда писать нужно именно с учетом требований по производительности.
Когда есть пара десятков организаций, в каждой организации десятки и сотни подразделений и в целом несколько тысяч сотрудников, к сожалению простые способы не работают.
26. biimmap 417 11.01.22 15:33 Сейчас в теме
(25) на ночь запускаются такие обработки + попробуйте через фоновые задания реализовать многопоточную обработку данных. Коллега в Роснефти таким образом добивался классных результатов!
27. maraty 277 11.01.22 15:44 Сейчас в теме
(26) Тот проект, где я реализовывал подобное, уже давно закончился. Правда в отличии от реализации в статье, я там адаптировал типовые модули заполнения, это был действительно велосипед. А как реализовано в Роснефти при случае посмотрю.
28. user_2010 678 11.01.22 17:01 Сейчас в теме
Интересно! Такая реализация где-то используется в бою?
Нет ошибок в таком расчете начислений, удержаний, взносов?
Код же постоянно меняется. Насколько сложно поддерживать такую разработку? Предполагаю, что для каждого релиза приходится что-то дорабатывать/перелопачивать?
30. maraty 277 11.01.22 17:20 Сейчас в теме
(28) Именно эта реализация нет. Я реализовывал похожее решение, но вместо использования методов РасчетЗарплатыРасширенныйФормы, я переносил нужные процедуры в обработку и переписывал их на использование без форм. Такое решение как раз было сложнее поддерживать. А так фактически используем типовой метод расчета Документы.НачислениеЗарплаты.ПодготовитьДанныеДляЗаполнения, данные переносим в документ с помощью типовых методов РасчетЗарплатыРасширенныйФормы. Тут особо ничего не меняется.
29. user_2010 678 11.01.22 17:05 Сейчас в теме
(28) Тоже работала в большой компании 5.5 тыс сотрудников. Тоже многие операции автоматизировали. Но! Недостатком автоматизации - являются проблемы, которые никто не видит... и визуализируются проблемы только в момент подготовки отчетности...
31. maraty 277 11.01.22 17:23 Сейчас в теме
(29) Да, встречал такое что какая то мелочь не перенеслась в документ, что-то не провелось по регистрам и все. Отчеты работают не корректно. Поэтому и тестировал через выгрузку документа в XML и сравнение типового расчета и расчета обработкой.
32. user_2010 678 11.01.22 18:25 Сейчас в теме
33. vladir 114 04.03.22 15:35 Сейчас в теме
Добрый день. Скачал обработку. Проверял на конф. Зарплата и управление персоналом, редакция 3.1 (3.1.21.36) (не КОРП). В модуле формы Функция РезультатЗаполненияВДлительнойОперации() закомментировал строку: //СтруктураПараметров.Вставить("ВидОперации", Справочники.ВидыОперацийРасчетаЗарплаты.ПустаяСсылка()); (Такого справочника нет). В остальном все хорошо! Однако обнаружилась проблема: При повторном расчете ЗП по подразделению все таблицы документа очищаются, документ проводится с пустыми таблицами. Т. е. получается чередование, первый расчет - все Ок, второй расчет - очистка таблиц. Как обойти, пока не понял. Буду благодарен если подскажете, как устранить проблему.
35. maraty 277 09.03.22 16:04 Сейчас в теме
(33)
1. в ПРОФ ВидОперации можно закомментировать или убрать в условие
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ОперацииРасчетаЗарплаты") Тогда
		СтруктураПараметров.Вставить("ВидОперации",				Справочники.ВидыОперацийРасчетаЗарплаты.ПустаяСсылка());
	КонецЕсли;

2. Спасибо, увидел ошибку. Для исправления в начале процедуры РасчитатьДокумент(ПараметрыВыполнения, ПараметрыРасчета)
добавить код
	ПараметрыВыполнения.ДокументСсылка	= ПараметрыРасчета.Документ;
.
37. AlMedvedev 22.04.22 13:43 Сейчас в теме
(35)
ПараметрыВыполнения.ДокументСсылка = ПараметрыРасчета.Документ;


Добавил указанную строчку в начало процедуры. Документ заполняется, но данными без изменений.
34. user728230 08.03.22 07:28 Сейчас в теме
Есть моменты, когда сотрудники кадровым переводом туда-сюда в течение месяца (и даже иногда не один раз) переводятся.
Есть при этом суммированный учет времени. Есть моменты, когда необходимо соблюдать последовательность при начислении по подразделениям- сначала одни, именно ПОТОМ другие..... В общем идея хороша- автоматизировать.. Но не всем подойдет.
Оставьте свое сообщение

См. также

HTTP-клиент Промо

Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Подсистема 1С для работы с HTTP.

1 стартмани

28.07.2021    8015    21    SpaceOfMyHead    41    

Шаблон отчета на СКД (обычные формы)

СКД v8 v8::СКД 1cv8.cf Абонемент ($m)

Улучшенный шаблон отчёта СКД, реализованный на обычных формах. Лаконичный и функциональный, весь необходимый минимум для управления отчётом вынесен на форму отчёта, что избавляет рядовых пользователей от необходимости лезть внутрь настроек отчёта. Форма сделана гибкой и позволяет легко себя адаптировать под Ваши потребности. Ряд элементов формы сделан сворачиваемыми и растягиваемыми.

2 стартмани

14.02.2022    2105    5    Eugen-S    3    

Программное формирование существующих печатных форм

Инструментарий разработчика v8 1cv8.cf Россия Абонемент ($m)

Получение списка печатных форм, формирование выбранной печатной формы и сохранение ее в файл.

1 стартмани

17.12.2021    3938    11    RocKeR_13    3    

Универсальный редактор данных (УРД)

Инструментарий разработчика v8 Абонемент ($m)

Универсальный редактор данных (УРД) - это лучший инструмент в своем классе, который позволяет редактировать реквизиты и движения объектов

1 стартмани

27.08.2021    9480    160    Adeptus    53    

Выгрузка зарплаты из ЗУП 3 в БП 3 по принципу обмена ЗУП 2.5 в БП 3 Промо

Обмен между базами 1C Зарплата v8 v8::СПР ЗУП3.x Россия БУ Абонемент ($m)

Выгрузка отражения зарплаты из ЗУП 3 в Бухгалтерию 3 без настройки типового обмена! т.е. по принципу, как было в ЗУП 2.5.

10 стартмани

13.05.2020    6066    56    boobzx    27    

Использование менеджера расчета для расчета зарплаты в ЗУП 3.1

Зарплата Механизмы типовых конфигураций v8 ЗУП3.x 1С:Франчайзи, автоматизация бизнеса Россия Абонемент ($m)

Пример использования менеджера расчета начислений и НДФЛ по сотруднику или организации. Будет полезен разработчикам, которые в ЗУП 3.1. залезли немного поглубже, чем при разработке печатных формы или отчетов.

1 стартмани

24.08.2021    4110    23    maraty    13    

Подсистема "Показатели объектов"

Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Если вашим пользователям нужно вывести в динамический список разные показатели, которые нельзя напрямую получить из таблиц ссылочных объектов, и вы не хотите изменять структуру справочников или документов - тогда эта подсистема для вас. С помощью нее вы сможете в пользовательском режиме создать свой показатель, который будет рассчитываться по формуле или с помощью запроса. Этот показатель вы сможете вывести в динамический список, как любую другую характеристику объекта. Также можно будет настроить отбор или условное оформление с использованием созданного показателя.

2 стартмани

06.03.2021    9716    6    pila86    16    

Внешняя компонента: Android tools

Мобильная разработка Разработка внешних компонент v8 v8::Mobile Абонемент ($m)

Несколько дополнительных функций для мобильного приложения\клиента под Android. Размер архива внешних компонент под архитектуры ARM и x86 - 230KB.

1 стартмани

12.01.2021    8829    27    KAV2    22    

Навигатор по конфигурации базы 1С 8.3 Промо

Инструментарий разработчика v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Универсальная внешняя обработка для просмотра метаданных конфигураций баз 1С 8.3. Отображает свойства и реквизиты объектов конфигурации, их количество, основные права доступа и т.д. Отображаемые характеристики объектов: свойства, реквизиты, стандартные рекизиты, реквизиты табличных частей, предопределенные данные, регистраторы для регистров, движения для документов, команды, чужие команды, подписки на события, подсистемы. Отображает структуру хранения объектов базы данных, для регистров доступен сервис "Управление итогами". Платформа 8.3, управляемые формы. Версия 1.1.0.87 от 02.12.2021

3 стартмани

28.10.2018    50075    450    ROL32    72    

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5

Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Данная публикация является продолжением описания функционирования обработки "FormCodeGenerator " в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.

5 стартмани

21.12.2020    13336    27    huxuxuya    11    

Внешний регламент для 1С

Инструментарий разработчика v8 Россия Абонемент ($m)

Внешний регламент сделан для тех, кто ценит свое время и время заказчика. После одноразового встраивания в конфигурацию, внешний регламент на лету позволяет добавлять, изменять внешние модули, которые могут выполнятся как регламентные задачи с указанным интервалом или запускаться в ручном режиме для отладки. Все модули (внешние обработки) находятся и выполняются на стороне сервера, что позволяет исключить подмену алгоритмов со стороны клиента.

1 стартмани

05.03.2020    11458    9    moolex    12    

CF & SQL : конструктор прямых запросов к БД 1С

Инструментарий разработчика v8 1cv8.cf Россия Абонемент ($m)

Программа для чтения и анализа внутренней структуры данных 1С V8.х, Содержит конструктор прямых SQL запросов, позволяет обрабатывать и редактировать тексты SQL-запросов, выполнять прямые запросы к базе данных 1С и обрабатывать полученные результаты.

1 стартмани

02.10.2019    36029    343    dmitrydemenew    66    

Удаление и/или копирование сохраненных в 1С настроек (например настроек печати табличных форм) Промо

Инструментарий разработчика v8 Абонемент ($m)

Иногда нужно удалить сохраненную в 1С "покореженную" настройку или скопировать "удачную" другому пользователю...

1 стартмани

01.09.2012    70514    1388    AnryMc    46    

Альтернативный способ добавления элементов и реквизитов на формы

Работа с интерфейсом v8 ERP2 УТ11 Россия Абонемент ($m)

Предлагаю альтернативный вариант добавления динамически создаваемых элементов и реквизитов на форму.

1 стартмани

09.09.2019    20682    39    bmk74    8    

Работа с релизами 1С и договорами ИТС

WEB БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Работа с релизами 1С и партнерским кабинетом.

2 стартмани

15.08.2019    24541    65    RocKeR_13    38    

Вам нравятся запросы в 1С?

Запросы v8 v8::Запросы 1cv8.cf Абонемент ($m)

Речь не только о том, что простейший запрос с "легальным" оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать "в нагрузку" к тексту запроса. Все эти "Новый Запрос", "УстановитьПараметр" и последующие пляски с обработкой результата... Пора с этим заканчивать!

1 стартмани

03.07.2019    30980    7    m-rv    91    

Faster - многофункциональный ускоритель работы программиста 1С и других языков программирования Промо

Инструментарий разработчика v8 1cv8.cf Россия Абонемент ($m)

Программа Faster 9.4 позволяет ускорить процесс работы программиста (работает в любом текстовом редакторе). Подсказка при вводе текста на основе ранее введенного текста и настроенных шаблонов. Программа Faster позволяет делится кодом с другими программистами в два клика или передать ссылку через QR Код. Исправление введенных фраз двойным Shift (с помощью speller.yandex). Переводчик текста. Переворачивает текст случайно набранный на другой раскладке. Полезная утилита для тех, кто печатает много однотипного текста, кодирует в среде Windows на разных языках программирования. Через некоторое время работы с программой у вас соберется своя база часто используемых словосочетаний и кусков кода. Настройка любых шорткатов под себя с помощью скриптов. Никаких установок и лицензий, все бесплатно.

1 стартмани

24.05.2012    88486    971    moolex    157    

Запуск 1С под любым пользователем (без необходимости указания пароля)

Пароли Инструменты администратора БД Инструментарий разработчика v8 v8::Права 1cv8.cf Абонемент ($m)

Предназначается для запуска сеанса другого пользователя из своего сеанса 1С (если пароль вам неизвестен).

1 стартмани

02.07.2019    32875    349    sapervodichka    0    

Модель объекта

Инструментарий разработчика v8 Абонемент ($m)

Подсистема позволяет описать модель данных объекта, где описана зависимость между реквизитами, и затем использовать эту модель в разных сценариях работы с объектом. Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.

1 стартмани

30.06.2019    19276    1    vadim1980    5    

Блин, мы забыли включить регламентные задания…

Инструментарий разработчика v8 Абонемент ($m)

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

1 стартмани

08.04.2019    28506    22    slozhenikin_com    37    

Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь новая версия - Simple UI (обновлено 14.11.2019)

Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Склад и ТМЦ Инструментарий разработчика v8 v8::Mobile БУ УУ Абонемент ($m)

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

5 стартмани

09.01.2019    67515    277    informa1555    239    

Помощник перехода с КА 1.1 на ЗУП 3.1

Обмен между базами 1C Зарплата Файловые протоколы обмена (TXT, XML, DBF), FTP v8 КА1 ЗУП3.x Россия БУ НДФЛ ФОМС, ПФ, ФСС Абонемент ($m)

Обработка предназначена для переноса данных из КА 1.1 в ЗУП 3.1.

3 стартмани

25.12.2018    40653    139    gudogu    40    

Легкое и гибкое управление списком доступных баз 1С у пользователей

Инструментарий разработчика v8 1cv8.cf Россия Абонемент ($m)

Когда в локальной сети много пользователей, а еще большое количество различных баз и при этом каждому нужны свои, то администрирование этого зоопарка превращается в АД! Этот комплекс позволяет централизованно управлять списком доступных баз в разрезе пользователей. За пару кликов можно добавить или убрать базу у всех пользователей.

7 стартмани

05.12.2018    24721    27    RomikR    11    

Очистка кэша 1С 8 (8.0, 8.1, 8.2, 8.3). Грамотная чистка кэша 1С с сохранением настроек.

Инструментарий разработчика v8 1cv8.cf Россия Абонемент ($m)

Эффективное средство для устранения ошибок, возникающих в локальном кэше 1С на клиенте, которым легко сможет воспользоваться пользователь с любым уровнем знаний. Wsf-скрипт, созданный на стандартном языке автоматизации Windows - "WSH JScript", очищает кэш 1С просто, быстро и безопасно. Кроме варианта, очищающего кэш текущего пользователя, имеется также вариант для чистки кэша 1С всех пользователей терминального-сервера.

1 стартмани

04.11.2018    58296    566    Eugen-S    36    

Открывашка ячеек таблиц

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Глобальное сочетание клавиш для открытия объекта по ссылке из текущей ячейки любой таблицы в большинстве управляемых форм

1 стартмани

27.10.2018    24940    14    tormozit    38    

Отправка электронной почты с помощью локального почтового клиента из 1С, развернутой под удаленным рабочим столом

Печатные формы Универсальные функции Email v8 КА1 БП2.0 УТ10 УПП1 Абонемент ($m)

Решение для интерактивной (нажал-отредактировал) отправки электронных писем и печатных форм через почтовый клиент (Thunderbird, Outlook) находящийся на локальном компьютере, из конфигурации 1С, развернутой под удаленным рабочим столом (RDP, remote-app). Подходит также для локального развертывания 1С. Представлен пример быстрой интеграции с конфигурациями "Управление торговлей 10.3", "Управление производственным предприятием 1.3", "Комплексная автоматизация 1.1", "Бухгалтерия предприятия 2.0".

1 стартмани

21.09.2018    34536    24    stvorl    1    

TextRadar - нечеткий поиск в тексте

Разработка внешних компонент Поиск данных v8 1cv8.cf Абонемент ($m)

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

1 стартмани

19.09.2018    26709    33    TSSV    19    

Расчет Тарификации и зарплаты в средних общеобразовательных школах для ЗКГУ - 3.1 (релиз 3.1.22.50)

Зарплата Бюджетный учет v8 v8::СПР ЗКГУ3.0 Государственные, бюджетные структуры Россия БУ Госбюджет Абонемент ($m)

Данная настройка конфигурации предназначена для расчета Тарификации педработников и расчета зарплаты в средних общеобразовательных учреждениях. Настройка сделана на базе Типовой конфигурации "Зарплата и кадры государственного учреждения" редакции 3.1.

2 стартмани

05.09.2018    42795    65    ivnik    24    

Управляемая консоль запросов, отчетов 3.8.9 (расширение, внешняя обработка)

Инструментарий разработчика v8 v8::УФ v8::Запросы v8::СКД 1cv8.cf Абонемент ($m)

Работа с запросом и СКД, Полная поддержка пакетных запросов, временных таблиц, Сравнение результатов, текстов, Разбор структуры запроса в виде дерева, Анализ плана запроса, Групповая обработка

5 стартмани

14.08.2018    136625    3193    Evg-Lylyk    771    

Расширение резервов отпусков

Обработка документов Зарплата v8 v8::СПР ERP2 ЗКГУ3.0 ЗУП3.x Россия БУ Абонемент ($m)

Произвольная настройка базы для расчета резервов отпусков.

2 стартмани

10.08.2018    41848    68    СергейКа    30    

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции

Инструментарий разработчика v8 Абонемент ($m)

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    40417    35    informa1555    30    

Визуализация событий на временной шкале средствами "Поле HTML документа"

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Интересный способ наглядно отобразить события на временной шкале. Например, может быть применен для красивого вывода документов по клиенту. Тестировалось на платформе 8.3.12.1469

1 стартмани

31.07.2018    31804    149    Plotks2017    27    

Работа с данными выбора

Работа с интерфейсом v8 Россия Абонемент ($m)

В управляемом интерфейсе заложена мощная возможность описывать связи реквизитов формы через параметры. Установка параметров связей позволяет ограничить выбор данных так, чтобы целостность данных была обеспечена на этапе ввода. Однако без дополнительного программирования задать можно только самые простые связи. Такие условия связи, как зависимость от реквизита через точку или зависимость через дополнительное отношение, заданное в регистре сведений - уже задать без программирования не получится.

1 стартмани

17.07.2018    78113    25    kalyaka    17    

Приложение Android для идентификации/распознавания образов (с обучением с одного раза, One-Shot Learning) с возможностью работы с 1С через веб-сервис

Мобильная разработка v8 Абонемент ($m)

В данной статье описано приложение, алгоритм и методика распознавания изображений, предоставляющее посредством http-запросов информацию о распознанных объектах в 1С. В качестве примера интеграции прилагается конфигурация, реализующая веб-сервис для приема запросов от приложения.

1 стартмани

19.06.2018    21712    5    informa1555    16    

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар")

Механизмы платформы 1С v8 v8::Запросы 1cv8.cf Абонемент ($m)

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

1 стартмани

01.06.2018    39832    100    m-rv    58    

Tool1CD Beta в деле

Разработка внешних компонент v8 Абонемент ($m)

Пс, парень! Не хочешь немного сырых байтов?

1 стартмани

09.05.2018    34674    32    dmpas    32    

Автоматическое заполнение графиков в ЗУП 3.1

Зарплата Учет рабочего времени Обработка справочников v8 v8::СПР ЗУП3.x Россия БУ Абонемент ($m)

Данная разработка будет актуальна для организаций с большим количеством графиков (несколько десятков/сотен).

1 стартмани

05.05.2018    35508    21    notserioussam    2    

Внешняя компонента для работы по Web-socket протоколу x32 x64

Разработка внешних компонент WEB v8 Абонемент ($m)

Кто когда-нибудь сталкивался с обменом данными по Web-Socket (wss) протоколу из 1С, тому известно, что в платформе отсутствуют данные механизмы (не путать с HTTP запросами и WebServices). Предлагается использовать внешнюю компоненту, написанную по технологии NativeAPI, для подключения и обмена с серверами из 1С-Предприятия, работающими по протоколу Web-Socket.

2 стартмани

30.03.2018    42223    100    Ditron    115    

Регистры правил [Расширение]

Инструментарий разработчика v8 v8::Права УТ11 Абонемент ($m)

Регистры правил - права доступа, запрет редактирования, автоподстановка реквизитов и т.д.

10 стартмани

15.03.2018    26239    31    33lab    5    

Правила конвертации документов ЗУП 2.5 - ЗУП 3.1

Зарплата Обмен между базами 1C Файловые протоколы обмена (TXT, XML, DBF), FTP v8 v8::СПР ЗУП2.5 ЗУП3.x Россия БУ Абонемент ($m)

Правила конвертации документов ЗУП 2.5 - ЗУП 3.1. Позволяют вести параллельную работу в базах ЗУП редакций 2,5 и 3.1.

10 стартмани

06.03.2018    52223    148    kostya_whiskas    25    

Заполняем по шаблону (по умолчанию)

Инструментарий разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Простой в подключении, универсальный и достаточно удобный механизм заполнения реквизитов произвольных документов/справочников значениями по умолчанию. Реализован в расширении, но может быть и непосредственно включен практически в любую конфигурацию на управляемых формах простым копированием одной формы и двух команд. Весь код в статье.

1 стартмани

08.02.2018    38200    21    mvxyz    17    

Расчет начисления зарплаты со сложной формулой, по данным из внешнего источника. ЗУП 3.1

Обработка документов Загрузка и выгрузка в Excel Зарплата v8 v8::СПР ЗКГУ3.0 ЗУП3.x БУ Абонемент ($m)

Расчет начисления зарплаты со сложной формулой, по данным из внешнего источника по данным экономического отдела. ЗУП 3.1.

3 стартмани

20.12.2017    67393    36    mvv1975    8