перепроведение исправленного документа
Показывать по
10
20
40
сообщений
- 1
- 2
19.02.2014
09:09
#1
Уважаемые коллеги! Как перепровести документ (начисления з-ты, например) за прошлый (2013) период, если к нему есть документ-исправление. Необходимость этого возникла из-за "кривой регистрации" этих самых ОКТМО.
19.02.2014
09:30
#2
Я писал обрботку примерно с таким алгоритмом:
1. Поиск документов-исправлений и отвязывание в них перерасчитываемого документа.
2. Перепроведение документа.
3. Привязка перерасчитываемого документа обратно к документам-исправлениям.
Все это в транзакции.
1. Поиск документов-исправлений и отвязывание в них перерасчитываемого документа.
2. Перепроведение документа.
3. Привязка перерасчитываемого документа обратно к документам-исправлениям.
Все это в транзакции.
19.02.2014
09:33
#3
До сих пор загадка для меня – а если просто отвяжу исправление и проведу документы по отдельности, то что–нибудь разве испортиться?
19.02.2014
09:52
#4
кто его знает?! Но рисковать не хочется - не тот случай, и времени на эксперимент нет
19.02.2014
09:55
#6
Да в том то и вопрос, что я так делала. И ничего нигде не вылазило. Вот стало интересно, может я чего–то не вижу
19.02.2014
10:23
#7
"Этой обработкой я выправлял 2 года назад НДФЛ и написал побыстрому. Там перепроведение не только ЗП, а всех возможных документов, которые двигают НДФЛ. В том числе за период и с возможностью отбора по физлицу и еще куча всяких вариантов проведения. И с тех пор я ей не пользовался, поэтому не хотелось бы выкладывать тут неизвестно что.
А нужная процедура вот она... Только надо на форму обработки вывести ссылку на документ и в процедуру кнопки вставить вызов ПерезаписатьДокумент().
Еще раз повторюсь, процедура для универсального проведения, если надо только ЗП, то можно упростить.
А нужная процедура вот она... Только надо на форму обработки вывести ссылку на документ и в процедуру кнопки вставить вызов ПерезаписатьДокумент().
Еще раз повторюсь, процедура для универсального проведения, если надо только ЗП, то можно упростить.
Процедура ПерезаписатьДокумент(Док) Сообщить("""" + Док +" - Попытка перезаписи..."); Если Док.Метаданные().Реквизиты.Найти("ПерерассчитываемыйДокумент") = Неопределено Тогда ТекДокОбъект = Док.ПолучитьОбъект(); ТекДокОбъект.Записать(?(ТекДокОбъект.Проведен,РежимЗаписиДокумента.Проведение,РежимЗаписиДокумента.Запись)); Сообщить("""" + Док +" ... ОК!"); Возврат; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | НачислениеЗарплатыРаботникамОрганизаций.Ссылка |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций КАК НачислениеЗарплатыРаботникамОрганизаций |ГДЕ | НачислениеЗарплатыРаботникамОрганизаций.ПерерассчитываемыйДокумент = &ПерерассчитываемыйДокумент"; Запрос.Текст = СтрЗаменить(Запрос.Текст,"НачислениеЗарплатыРаботникамОрганизаций",Док.Метаданные().Имя); Запрос.УстановитьПараметр("ПерерассчитываемыйДокумент",Док); Выборка = Запрос.Выполнить().Выбрать(); МассивИсправлений = Новый Массив; Пока Выборка.Следующий() Цикл МассивИсправлений.Добавить(Выборка.Ссылка); КонецЦикла; НачатьТранзакцию(); Для каждого ТекДок Из МассивИсправлений Цикл ТекДокОбъект = ТекДок.ПолучитьОбъект(); ТекДокОбъект.ПерерассчитываемыйДокумент = Неопределено; ТекДокОбъект.Записать(РежимЗаписиДокумента.Запись); Сообщить("""" + ТекДок + " - отмена исправления."); КонецЦикла; ВыбДокОбъект = Док.ПолучитьОбъект(); ВыбДокОбъект.Записать(?(ВыбДокОбъект.Проведен,РежимЗаписиДокумента.Проведение,РежимЗаписиДокумента.Запись)); Для каждого ТекДок Из МассивИсправлений Цикл ТекДокОбъект = ТекДок.ПолучитьОбъект(); ТекДокОбъект.ПерерассчитываемыйДокумент = Док; ТекДокОбъект.Записать(РежимЗаписиДокумента.Запись); Сообщить("""" + ТекДок + " - восстановление исправления."); КонецЦикла; Сообщить("""" + Док +" ... ОК!"); ЗафиксироватьТранзакцию();КонецПроцедуры " - 1
- 2
Читают тему
(гостей: 1)