В некоторых типовых конфигурациях фирмы 1С существует возможность ручной корректировки движений документа по регистрам. В конфигурации 1С: Бухгалтерия 8 для этого, при наличии соответствующих прав, нужно открыть движения документа и установить флаг “Ручная корректировка”. Однако, иногда возникает необходимость выполнить корректировку движений большого количества документов. В этом случае нам понадобится обработка, которая изменит движения документов без перепроведения.
Рассмотрим как изменить движения документа на примере конфигурации 1С: Бухгалтерия 8. Менять будем движения по регистру бухгалтерии “Хозрасчетный”. Пусть перед нами стоит задача заполнить суммы налогового учета по данным бухгалтерского. Предположим, что у нас уже есть обработка, которая выбирает необходимые нам документы и последовательно обрабатывает их с помощью описанной нами процедуры “ИзменитьДвиженияДокумента”. Посмотрим как должна выглядеть эта процедура.
Хотелось бы отметить, что без проверки ведения налогового учета на счёте, при попытке записать набор, содержащий проводку с ненулевой суммой по счёту на котором не ведется налоговый учет, возникнет ошибка следующего содержания:
Запись не верна! Поле “Сумма (налоговый учет)” должно быть пустым! (Регистр бухгалтерии: Журнал проводок (бухгалтерский и налоговый учет); Номер строки: 1)
Режим обмена данными устанавливается следующими строками:
Это необходимо для того, чтобы не выполнялся программный код, находящийся в обработчиках событий “ПередЗаписью” модуля набора записей регистра бухгалтерии “Хозрасчетный” и модуля корректируемого документа. В каждом из них (для типовых конфигураций) есть проверка следующего вида:
Признак ручной корректировки документа (ДокументОбъект.РучнаяКорректировка = Истина) необходимо устанавливать для того, чтобы изменения сохранились при повторном проведении документа. При проведении такого документа в конфигурации 1С:Бухаглерия 8 выдается следующее сообщение:
Движения документа отредактированы вручную и не могут быть автоматически актуализированы.
Для ручной регистрации изменений можно в модуле объекта (документа) определить следующий обработчик события
В глобальном общем модуле определим следующую процедуру:
Обе рассмотренные процедуры одновременно решают две задачи:
Регистрируют изменения для узла, у которого реквизит Склад совпадает со складом, указанным в документе.
Производят проверку (для ранее существовавших документов), не изменился ли склад.
Если склад изменился, то производится регистрация изменения для узла, значение реквизита Склад которого соответствует старому значению документа (хранимому на момент проверки в информационной базе). Далее в момент выгрузки изменений данная регистрация может быть «подменена» на объект УдалениеОбъекта, что приведет к удалению накладной, «не свойственной» узлу.
В примере обнуляется флаг ручной правки расчетов выбранного сотрудника, кроме
расчетов с ВР ПремияСум, для которых, наоборот, вносится ручная правка результата.
Новая величина премии равна 1250 руб. Попутно выполняется расчет записей,
с которых снимется флаг ручной правки.