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