![]() |
![]() |
![]() |
|
Не срабатывает программное изменение движений документа | ☑ | ||
---|---|---|---|---|
0
Pahom
12.09.25
✎
08:12
|
Стоит задача в отражении зарплаты в бухучете (Бухгалтерия 3.0) выделить начисления отпускных на отдельные статьи затрат . Типового способа нет, делать на каждое подразделение способ отражения не вариант, поэтому решил программно менять движения. После обработки проведения вставил процедуру следующего содержания:
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(ЭтотОбъект.Ссылка); НаборЗаписей.Прочитать(); Если НаборЗаписей.Количество() = 0 Тогда Возврат; КонецЕсли; Счет20 = ПланыСчетов.Хозрасчетный.ОсновноеПроизводство; Счет23 = ПланыСчетов.Хозрасчетный.ВспомогательныеПроизводства; Счет25 = ПланыСчетов.Хозрасчетный.ОбщепроизводственныеРасходы; Счет26 = ПланыСчетов.Хозрасчетный.ОбщехозяйственныеРасходы; Счет4401 = ПланыСчетов.Хозрасчетный.ИздержкиОбращения; Счет4402 = ПланыСчетов.Хозрасчетный.КоммерческиеРасходы; Для каждого Запись из НаборЗаписей Цикл Если Запись.Содержание = "Начислен ежегодный отпуск" Тогда Если Запись.СчетДт = Счет20 Тогда Запись.СубконтоДт.СтатьиЗатрат = Справочники.СтатьиЗатрат.НайтиПоКоду("000000022"); ИначеЕсли Запись.СчетДт = Счет23 Тогда Запись.СубконтоДт.СтатьиЗатрат = Справочники.СтатьиЗатрат.НайтиПоКоду("000001053"); ИначеЕсли Запись.СчетДт = Счет25 Тогда Запись.СубконтоДт.СтатьиЗатрат = Справочники.СтатьиЗатрат.НайтиПоКоду("000001064"); ИначеЕсли Запись.СчетДт = Счет26 Тогда Запись.СубконтоДт.СтатьиЗатрат = Справочники.СтатьиЗатрат.НайтиПоКоду("000001000"); ИначеЕсли Запись.СчетДт = Счет4401 Тогда Запись.СубконтоДт.СтатьиЗатрат = Справочники.СтатьиЗатрат.НайтиПоКоду("000001015"); ИначеЕсли Запись.СчетДт = Счет4402 Тогда Запись.СубконтоДт.СтатьиЗатрат = Справочники.СтатьиЗатрат.НайтиПоКоду("000001015"); КонецЕсли; КонецЕсли; КонецЦикла; НаборЗаписей.ОбменДанными.Загрузка = Истина; НаборЗаписей.Записать(); В отладке вижу, что статьи затрат меняются, но после записи всё остаётся по старому. В чём может быть проблема? |
|||
1
Ненавижу 1С
гуру
12.09.25
✎
08:19
|
Например движения записываются после обработки проведения платформой
Но ваш код по сути унылое г... |
|||
2
Chai Nic
12.09.25
✎
08:32
|
Если Запись.Содержание = "Начислен ежегодный отпуск" Тогда
--- Ой блин... |
|||
3
Pahom
12.09.25
✎
08:51
|
(1) (2) Можете предложить лучше? Или так, чсв почесать?
|
|||
4
Гена
гуру
12.09.25
✎
08:53
|
(0) И 23, и 25... Фирма не относится к малым предприятиям?
|
|||
5
Pahom
12.09.25
✎
09:02
|
(4) Относится, но и 23 и 25 вполне оправданы, да и вопрос какбэ не в этом.
|
|||
6
Ненавижу 1С
гуру
12.09.25
✎
09:09
|
(3) Можем, но это не отменяет факт гуанокодинга
|
|||
7
Pahom
12.09.25
✎
09:11
|
(6) Я так понимаю, спрашивать как написать без гуано бесполезно.
|
|||
8
Ненавижу 1С
гуру
12.09.25
✎
09:13
|
(7) полезно, спрашивай, если хочешь
|
|||
9
СвинТуз
12.09.25
✎
09:13
|
(0)
запись реальных движений (Объект.Движения) затирают, то что вы записали. |
|||
10
2S
12.09.25
✎
09:14
|
(7) постройте регистр соответствия. Условие на запись.содержание иначе не определить?
|
|||
11
СвинТуз
12.09.25
✎
09:15
|
(3)
Тут чесать не об что. Вам надо репу свою чесать. |
|||
12
Fedor-1971
12.09.25
✎
09:16
|
(0) Точно понимаешь что делаешь?
твой НаборЗаписей затирается при стандартной записи, т.к. в Движения.Хозрасчетный нет твоих изменений Запись.СубконтоДт.СтатьиЗатрат - это работает? По идее, должно быть как-то так: Запись.СубконтоДт[СтатьиЗатрат], т.к. СубконтоДт/Кт - соответствие После ОбработкаПроведения делаешь процедуру в расширении или подпиской? По сути: у тебя остался доступ к Движения, вот их и исправляй (3) могу Запись.СубконтоДт.СтатьиЗатрат - проверяй статью затрат, а не текст в содержании |
|||
13
Pahom
12.09.25
✎
09:16
|
(8) Хорошо, спрашиваю: как написать то, что мне нужно, без гуано?
|
|||
14
maxar
12.09.25
✎
09:17
|
(13) Для каждого выборка из Движения.Хозрасчетный Цикл
|
|||
15
Ненавижу 1С
гуру
12.09.25
✎
09:17
|
(13) тут уже расписали по сути все
в этой и соседней ветке кстати, зачем их две? |
|||
16
СвинТуз
12.09.25
✎
09:18
|
(12)
Ну да. Субконто это таблица тут. он еще поиск по коду в цикле гоняет |
|||
17
Fedor-1971
12.09.25
✎
09:19
|
(14) Так неинтересно, сразу решение выдал, а как же ТСу репу почесать?
|
|||
18
Гена
гуру
12.09.25
✎
09:24
|
(5) Я просто понять хочу, а что ГБ дальше будет делать аж с пятью разными статьями затрат: Отпускные_20, Отпускные_23, Отпускные_25, Отпускные_26 и Отпускные_44?
А зарплаты тоже на разных статьях: Зарплата_20, Зарплата_23, Зарплата_25, Зарплата_26 и Зарплата_44? |
|||
19
Pahom
12.09.25
✎
09:27
|
(12) Код взят из примера на helpf.pro. Сделано в расширении, процедура &После("ОбработкаПроведения").
|
|||
20
Pahom
12.09.25
✎
09:28
|
(18) Мне тоже интересно, но спорить бесполезно. Зарплата да, тоже на разных статьях. Знаю, что дурь несусветная, но эту дурь не пробить.
|
|||
21
Serg_1960
12.09.25
✎
09:31
|
(17) Нуу.. ТС, например, можно предложить писать не в "после обработки проведения", а в самом регистре после "Если ТипЗнч(Регистратор)...". Пусть репу почешет и скажет что ему это не подходит:))
|
|||
22
Pahom
12.09.25
✎
09:30
|
(15) Особенности интерфейса. Не сразу понял, что добавил тему.
|
|||
23
Гена
гуру
12.09.25
✎
09:33
|
(20) Коль пошла такая пьянка... а остальные статьи по каждому чиху тоже упятерены? Ну там Канцелярия, свет, вода...
Хотя, чего я спрашиваю... у МАЛОГО предприятия судя по коду статей затрат уже больше тысячи(!) Не убегайте, я впервые с таким сталкиваюсь... Будет что рассказать... |
|||
24
Fedor-1971
12.09.25
✎
09:36
|
(19) значит не понимаешь.
этот код для изменения движений документа после записи, т.е. у тебя есть документ в закрытом периоде и тебе очень хочется поменять субконто в проводках - тут он оправдан, а в проведении, есть Движения.Хозрасчётный и они будут записаны в любом раскладе |
|||
25
Pahom
12.09.25
✎
09:39
|
(14) Господи, неужели тут есть люди, которые просто отвечают на заданный вопрос? Спасибо огромное!
|
|||
26
Pahom
12.09.25
✎
09:40
|
(24) Спасибо за разъяснение. Кто бы мог подумать.
|
|||
27
spiller26
12.09.25
✎
09:41
|
(0) "Прибитые гвоздями" ссылки, конечно тебя тапками закидвют за такое.
"Запись.СубконтоДт.СтатьиЗатрат = Справочники.СтатьиЗатрат.НайтиПоКоду("000000022");" |
|||
28
Pahom
12.09.25
✎
09:52
|
(23) Я больше скажу - до меня один умник на этих счетах завел ещё субконто "Номенклатура затрат". Просто справочник с названиями. И ГБ орёт, что оно ей нужно.
Предприятие малое потому что в реестре. По факту не такое уж и малое. |
|||
29
spiller26
12.09.25
✎
09:43
|
(25) Тебе уже ответили в (24), смотри движение документа и при условиях подменяй.
Твой код (0) не сработает, он затрется. По коду смотри где что пишеться, а не выдумывай грабли. |
|||
30
Fedor-1971
12.09.25
✎
09:43
|
(23) Не факт, могли, в какой-то период, просто поставить большой код, т.е. статей затрат, штук 50, но, например, часть 1-20, а остальные начинаются с кода 1000
Хотя и такое безобразие встречается, возможно, у них план счетов с выделенным счётом под каждую валюту (и такое видел, бабуська ГБ упорно доказывала, что так правильно, бо ордер на каждую валюту) |
|||
31
Гена
гуру
12.09.25
✎
09:45
|
(27) Да для малышей можно говнокодить по кодам. Тем более когда элементов в справочнике за 1000. Чего там перебирать, там цепочка давно известна ГБ.
|
|||
32
spiller26
12.09.25
✎
09:46
|
(28) В СтатьиЗатрат, нужно было добавить реквизит дополнительный с указанием счета, а не такими вот "гвоздями" в коде.
Многие терпеть не могут подобное в коде и сам ни раз на это натыкался, по типу если "Вася пупкин" тогда |
|||
33
Fedor-1971
12.09.25
✎
09:48
|
(28) Может "Номенклатурная группа"? Это, действительно, оправдано, тогда распределение затрат будет более красивым
|
|||
34
Гена
гуру
12.09.25
✎
09:49
|
(30) Не думаю... ТАКИЕ сами код не меняют, он им не нужен, они наименования смотрят.
Интересно, а как она закрывает месяц с такой простынью? Уж наверняка не одной проводкой оборотного субконто. Скорее всего требует постатейного закрытия тех же 23 и 25 на 20. А там без говнокода не обойтись, если Отпускные_25 идут на Отпускные_20 |
|||
35
Pahom
12.09.25
✎
09:50
|
(27) Делать предопределенными? Или как?
|
|||
36
Гена
гуру
12.09.25
✎
09:51
|
(35) Не заморачивайтесь. В данном случае ГБ шейте гвоздями в коде как решили.
|
|||
37
spiller26
12.09.25
✎
09:55
|
(35) Так себе идея - задолбёшься потом вспоминать про это при обновлении.
Подумай о последствиях. Вариантов много как реализовать. Первый вы уже использовали. |
|||
38
Fedor-1971
12.09.25
✎
09:55
|
(36) а ну как сменится ГБ - будет цугундер, бо новая захочет свои проводки и придётся разбирать код заново
|
|||
39
Гена
гуру
12.09.25
✎
09:58
|
(38) Такие пятидесятилетние, выросшие на экселе, несменяемы, ещё и после пенсии будут сидеть как влитые, как патроны в рожке. Такие троих-четверых гендиров пересидят )
|
|||
40
Fedor-1971
12.09.25
✎
09:58
|
(35) как вариант: сделай регистр сведений правил.
Что-то типа: Счет, Статья затрат - заменять на Счёт, статья затрат и признак Действует Пусть ГБ развлекается, хочет так, хочет этак - код проведения не изменится |
|||
41
Гена
гуру
12.09.25
✎
10:00
|
(40) +
Мне нравится. |
|||
42
Fedor-1971
12.09.25
✎
10:03
|
(39) Они с виду вечные, но, таки, жизнь конечна и молодые и шустрые будут заново городить учёт, а прибитый гвоздями код придётся переделать заново, тогда уж проще взять чистую БД и перелить остатки
|
|||
43
Гена
гуру
12.09.25
✎
10:05
|
(42) Они таких шустрых замш на раз-два обыгрывают в подковёрных играх и конкурентки вылетают с фирмы как пробки из бутылки.
|
|||
44
spiller26
12.09.25
✎
10:10
|
(40) Вот что-то подобное далал, ещё и "период действия с" нужно, чтобы текущую смотреть, они сами потом меняли уже без моего участия.
|
|||
45
Гена
гуру
12.09.25
✎
10:11
|
Но мы отвлеклись. А по теме - автору надо просто программно сделать то, что руками делает ГБ. Она заходит в док начисления, жмёт D/K, ставит галочку ручной корректировки и перещёлкивает в дебете статью затрат.
|
|||
46
spiller26
12.09.25
✎
10:30
|
Вот примерно здесь магия сия происходит, дальше сам.
ОбщМодуль.УчетЗарплаты Процедура СформироватьПроводкиПоОтражениюЗарплатыВУчете(ТаблицаЗаработнойПлаты, Реквизиты, Движения, Отказ) |
|||
47
spiller26
12.09.25
✎
10:32
|
А так автор по ходу ждёт готовое решение от нас.
|
|||
48
2S
12.09.25
✎
10:37
|
(40) см (10) :)
|
|||
49
Гена
гуру
12.09.25
✎
10:56
|
(46) Глянул. Там уже готовый массив используется.
Лично я бы изменил в общем модуле ОтражениеЗарплатыВБухучетеБазовый в Функция СоответствиеВидОперацииСтатьяРасходов() Экспорт Там длинный перечень ИначеЕсли на каждый чих, вот там я бы и добавил такую же строчку вроде: ИначеЕсли ЗначениеПеречисления = ВидыОперацийМенеджер.ЕжегодныйОтпуск Тогда СоответствиеОпераций.Вставить(ЗначениеПеречисления, Справочники.СтатьиРасходовЗарплата. вот тут свой гвоздь по коду); |
|||
50
Гена
гуру
12.09.25
✎
11:11
|
Хотя нет - это для кредита )
А за дебет отвечает функция ниже: Функция НастройкаБухучетаЗарплатыСотрудника(Сотрудник, ДатаАктуальности) Экспорт Она с РС БухучетЗарплатыСотрудников тащит дебет. Значит по уму надо добавлять реквизиты вида начисления, счёта и статьи затрат. Затратно по времени и деньгам ) Ну его... хрень, а не задача... |
|||
51
spiller26
12.09.25
✎
11:35
|
Автор не отписываться, так что я пас.
Пусть анализирует уже написанное. |
|||
52
Pahom
12.09.25
✎
12:53
|
(47) Автор уже реализовал своё, на говнокоде. Главное - работает. Нет, искать по коду в цикле - это я дал маху, конечно. Но в остальном - не понимаю претензий. Впрочем, я ещё только учусь.
|
|||
53
Pahom
12.09.25
✎
12:55
|
(40) Вот только статья затрат у отпуска та же, что и у начисления. Тут костылить либо ЗУП, либо Бухню, либо просто добавить процедуру после проведения на быдлокоде.
|
|||
54
shuhard
12.09.25
✎
13:24
|
(53) изменение аналитик лучше разместить в модуле Рг бухгалтерии перед записью с отбором по типу документа, в остальном код нормальный
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |