Данная обработка показывает, как работать с регистром сведения, а конкретнее с регистром ПорядокОтраженияЗарплатыВБухУчете (способ учета зарплаты в бух. учете). Обработка обходит все ограничения, иногда полезные и правильные, которые заложил разработчик, но иногда "нужно" пойти "другим" путем.
"Способ учета зарплаты в бухучете" требуется, когда работаешь со сдельной оплатой труда. Основные объекты метаданных, которые используются при работе с этими данными в базе 1с8 бухгалтерии, это Справочник СпособыОтраженияЗарплатыВБухУчете и Регистр сведений ПорядокОтраженияЗарплатыВБухУчете. В случае, если вам захочется внести изменения таким образом, чтобы при разных наименованиях "Способа отражения зарплаты в бухгалтерском учете" значения "Счета" и "Субконто1" совпадали, программа заблокирует этот момент и не позволит это сделать, так было не всегда. Чтобы это обойти, потребуется "костыль", т.е. обработка.
Обработка точно работает на Бухгалтерия предприятия, редакция 3.0 (3.0.91.23) платформа 1С:Предприятие 8.3 (8.3.18.1289).
Сначала выбираете "способ отражения", в котором нужно внести изменения, а потом заполняете, какие изменения вам нужно назначить.
Код обработки ниже:
&НаСервереБезКонтекста
Процедура ЗаписатьНаСервере(СпособУчетаЗарплаты,Счет,Субконто1,Субконто2,Субконто3)
МенеджерРегистрЗарплатыВБухУчете = РегистрыСведений.ПорядокОтраженияЗарплатыВБухУчете;
РегистрЗарплатыВбух = МенеджерРегистрЗарплатыВБухУчете.СоздатьМенеджерЗаписи();
РегистрЗарплатыВбух.СпособОтраженияЗарплатыВБухУчете = СпособУчетаЗарплаты;
РегистрЗарплатыВбух.ЕНВД = Ложь;
РегистрЗарплатыВбух.Прочитать();
Сообщение = Новый СообщениеПользователю;
Если РегистрЗарплатыВбух.Выбран() Тогда
Сообщение.Текст = "Регистр уже есть в базе и будет изменен";
Иначе
Сообщение.Текст = "Создана новая запись регистра";
РегистрЗарплатыВбух.СпособОтраженияЗарплатыВБухУчете = СпособУчетаЗарплаты;
РегистрЗарплатыВбух.ЕНВД = Ложь;
КонецЕсли;
Сообщение.Сообщить();
РегистрЗарплатыВбух.Счет = Счет;
Если НЕ Субконто1=Неопределено Тогда
РегистрЗарплатыВбух.Субконто1=Субконто1
КонецЕсли;
Если НЕ Субконто2=Неопределено Тогда
РегистрЗарплатыВбух.Субконто2=Субконто2
КонецЕсли;
Если НЕ Субконто3=Неопределено Тогда
РегистрЗарплатыВбух.Субконто3=Субконто3
КонецЕсли;
РегистрЗарплатыВбух.Записать(ИСТИНА);
КонецПроцедуры
&НаКлиенте
Процедура Записать(Команда)
Если СпособУчетаЗарплаты.Пустая() или Счет.Пустая() Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Поля способ учета зарплаты и Счет не могут быть пустыми";
Сообщение.Сообщить();
Иначе
ЗаписатьНаСервере(СпособУчетаЗарплаты,Счет,Субконто1,Субконто2,Субконто3);
КонецЕсли;
КонецПроцедуры