|   |   | 
| 
 | Не срабатывает программное изменение движений документа | ☑ | ||
|---|---|---|---|---|
| 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) изменение аналитик лучше разместить в модуле Рг бухгалтерии перед записью с отбором по типу документа, в остальном код нормальный     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |