Построчное перепроведение документов 1С 7.7 |
Довольно часто возникают ситуации, когда необходимо записывать или проводить изменения в документе в 1С не полностью, а частично. А чем же нас не устраивает стандартный механизм? Самое главное – не существует стандартного механизма по выборочной записи и проведению документа 1С. Если у нас добавилась одна строка в документе, то мы не можем только ее записать. Каждый раз при вызове метода Записать() будут перезаписываться заново все строки документа. Этот недостаток не самый критичный – что гораздо хуже так это отсутствие метода выборочной очистки движений по регистру документа. Подобная операция гораздо более ресурсоемкая. Рассмотрим вкратце реализацию перепроведения документа 1С по оперативному учету в контексте интересующей нас проблемы (часть алгоритма внутренней реализации перепроведения будет пропущена). После запуска операции перепроведения документа 1С в первую очередь открывается транзакция. После чего в зависимости от опций установленных в документе 1С (смотрите конфигуратор), а именно автоматическое удаление движений вызывается процедура T-SQL _1sp_RAХХХ_ClearRecalcDocActs. Полное название ее определятся внутренним идентификатором регистра. ![]() ![]() Если такая опция не стоит то вышеописанная процедура будет инициализирована после вызова метода 1С - ОчиститьДвижения(<ВидыДвижений>). Для того, что бы произвести выборочную очистку движений необходимо рассмотреть эту процедуру немного подробнее. Краткая концепция очистки движения по регистрам такова:
Как мы видим такой вариант нас не устраивает, так как удаляются все движения. Изменить стандартную процедуру очистки 1С _1sp_RAХХХ_ClearRecalcDocActs мы тоже не можем, так как такой механизм будет работать некорректно. Дело в том что удаление движений из таблицы RAХХХ производится напрямую из 1С без промежуточного вызова процедур на T-SQL. Единственный выход, который остается это реализовать свою процедуру очистки и использовать ее. К счастью это совсем не сложно. Можно взять стандартные процедуры 1С и только в реализации выборки движений по документу добавить фильтр по конкретным позициям. Фактически это будет дополнительный фильтр по измененным полям. Стандартная реализация. Построчное удаление. Чтобы не зависеть от конфигурации, это желательно сделать с помощью внешней компоненты. Такую компоненту можно реализовать полностью прозрачной для 1С программиста не искушенного в T-SQL программировании. Фактически это будет вызов процедуры в 1С -ОчиститьДвиженияПоИзмерениям(ВидыДвижений…,СписокИзмерений…) Кроме этого, естественно нужно будет убрать все опции автоматического удаления движений в тех документах 1С, где потребуется использование вышеописанной технологии. Подобная конструкция позволит сделать использование механизма проведения документов в 1С более гибким и эффективным. Использовать его нужно не с большей осторожностью чем, например использование стандартного метода ОчиститьДвижения. Компания "СофтПоинт" представляет компоненту для использования вышеописанного механизма. Статьи по этой теме: Построчное перепроведение документов 1с
Перепечатка, воспроизведение в любой форме, распространение, в том числе в переводе, любых материалов с сайта www.softpoint.ru возможны только с письменного разрешения компании "СофтПоинт". Это правило действует для всех без исключения случаев, кроме тех, когда в материале прямо указано разрешение на копирование (основание: Закон Российской Федерации "Об авторском праве и смежных правах").
|
Статья: Построчное перепроведение документов 1С 7.7 |
Перейти на главную страницу компании "Софтпоинт" |