![]() |
![]() |
![]() |
|
Программное изменение движений документа | ☑ | ||
---|---|---|---|---|
0
Pahom
12.09.25
✎
08:11
|
Стоит задача в отражении зарплаты в бухучете (Бухгалтерия 3.0) выделить начисления отпускных на отдельные статьи затрат . Типового способа нет, делать на каждое подразделение способ отражения не вариант, поэтому решил программно менять движения. После обработки проведения вставил процедуру следующего содержания:
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(ЭтотОбъект.Ссылка); НаборЗаписей.Прочитать(); Если НаборЗаписей.Количество() = 0 Тогда Возврат; КонецЕсли; Счет20 = ПланыСчетов.Хозрасчетный.ОсновноеПроизводство; Счет23 = ПланыСчетов.Хозрасчетный.ВспомогательныеПроизводства; Счет25 = ПланыСчетов.Хозрасчетный.ОбщепроизводственныеРасходы; Счет26 = ПланыСчетов.Хозрасчетный.ОбщехозяйственныеРасходы; Счет4401 = ПланыСчетов.Хозрасчетный.ИздержкиОбращения; Счет4402 = ПланыСчетов.Хозрасчетный.КоммерческиеРасходы; Для каждого Запись из НаборЗаписей Цикл Если Запись.Содержание = "Начислен ежегодный отпуск" Тогда Если Запись.СчетДт = Счет20 Тогда Запись.СубконтоДт.СтатьиЗатрат = Справочники.СтатьиЗатрат.НайтиПоКоду("000000022"); ИначеЕсли Запись.СчетДт = Счет23 Тогда Запись.СубконтоДт.СтатьиЗатрат = Справочники.СтатьиЗатрат.НайтиПоКоду("000001053"); ИначеЕсли Запись.СчетДт = Счет25 Тогда Запись.СубконтоДт.СтатьиЗатрат = Справочники.СтатьиЗатрат.НайтиПоКоду("000001064"); ИначеЕсли Запись.СчетДт = Счет26 Тогда Запись.СубконтоДт.СтатьиЗатрат = Справочники.СтатьиЗатрат.НайтиПоКоду("000001000"); ИначеЕсли Запись.СчетДт = Счет4401 Тогда Запись.СубконтоДт.СтатьиЗатрат = Справочники.СтатьиЗатрат.НайтиПоКоду("000001015"); ИначеЕсли Запись.СчетДт = Счет4402 Тогда Запись.СубконтоДт.СтатьиЗатрат = Справочники.СтатьиЗатрат.НайтиПоКоду("000001015"); КонецЕсли; КонецЕсли; КонецЦикла; НаборЗаписей.ОбменДанными.Загрузка = Истина; НаборЗаписей.Записать(); В отладке вижу, что статьи затрат меняются, но после записи всё остаётся по старому. В чём может быть проблема? |
|||
1
Dmitry1c
12.09.25
✎
08:24
|
Типовой способ есть.
В ЗУП-е надо эти начисления по отдельным способам отражения зарплаты выделять. |
|||
2
Pahom
12.09.25
✎
08:59
|
(1) Способ отражения отпуска в ЗУП-е такой же как у основного заработка сотрудника. Можно конечно насоздавать 20 начислений отпусков и каждому указать способ отражения, и потом их руками менять каждому сотруднику, но хотелось бы без садо-мазо.
|
|||
3
maxar
12.09.25
✎
09:04
|
(0) в обработке проведения (после) редактируй Движения.Хозрасчетный
|
|||
4
Pahom
12.09.25
✎
09:13
|
(3) Может, это не очевидно, но именно так и пытаюсь делать.
|
|||
5
maxar
12.09.25
✎
09:13
|
(4) а где тут Движения.Хозрасчетный если
"РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();" |
|||
6
Ненавижу 1С
гуру
12.09.25
✎
09:14
|
(4) не так ты делаешь. Ты набор записей создал и записываешь. Этот набор записей к коллекции движений объекта документа не имеет никакого отношения
|
|||
7
Pahom
12.09.25
✎
09:37
|
(5) А это не одно и то же?
|
|||
8
Ненавижу 1С
гуру
12.09.25
✎
09:39
|
(7) вообще-то нет
|
|||
9
Прохожий
12.09.25
✎
09:46
|
(8) И это был не правильный ответ...
|
|||
10
Прохожий
12.09.25
✎
09:47
|
В обработке проведения Движения.Хозрасчетный, а для сторонней обработки -(0)
|
|||
11
Прохожий
12.09.25
✎
09:50
|
(3) насколько я понимаю, в типовых Движения формируются как структура и потом Движения.Загрузить(). А структура формируется где-то в общих модулях. Там и надо подготавливать. А не Движения документа парсить. Если во время проведения хотите получать другое.
|
|||
12
Прохожий
12.09.25
✎
09:52
|
Все ушли в другую ветку...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |