Уважаемые коллеги! Как перепровести документ (начисления з-ты, например) за прошлый (2013) период, если к нему есть документ-исправление. Необходимость этого возникла из-за "кривой регистрации" этих самых ОКТМО.
Уважаемые коллеги! Как перепровести документ (начисления з-ты, например) за прошлый (2013) период, если к нему есть документ-исправление. Необходимость этого возникла из-за "кривой регистрации" этих самых ОКТМО.
Я писал обрботку примерно с таким алгоритмом:<br>1. Поиск документов-исправлений и отвязывание в них перерасчитываемого документа.<br>2. Перепроведение документа.<br>3. Привязка перерасчитываемого документа обратно к документам-исправлениям.<br>Все это в транзакции.
До сих пор загадка для меня – а если просто отвяжу исправление и проведу документы по отдельности, то что–нибудь разве испортиться?
кто его знает?! Но рисковать не хочется - не тот случай, и времени на эксперимент нет
> Я писал обрботку<br>а поделиться?
Да в том то и вопрос, что я так делала. И ничего нигде не вылазило. Вот стало интересно, может я чего–то не вижу
"Этой обработкой я выправлял 2 года назад НДФЛ и написал побыстрому. Там перепроведение не только ЗП, а всех возможных документов, которые двигают НДФЛ. В том числе за период и с возможностью отбора по физлицу и еще куча всяких вариантов проведения. И с тех пор я ей не пользовался, поэтому не хотелось бы выкладывать тут неизвестно что.<br>А нужная процедура вот она... Только надо на форму обработки вывести ссылку на документ и в процедуру кнопки вставить вызов <span>ПерезаписатьДокумент().</span><br><span>Еще раз повторюсь, процедура для универсального проведения, если надо только ЗП, то можно упростить. </span><br> <br><br><pre>Процедура ПерезаписатьДокумент(Док) Сообщить("""" + Док +" - Попытка перезаписи..."); Если Док.Метаданные().Реквизиты.Найти("ПерерассчитываемыйДокумент") = Неопределено Тогда ТекДокОбъект = Док.ПолучитьОбъект(); ТекДокОбъект.Записать(?(ТекДокОбъект.Проведен,РежимЗаписиДокумента.Проведение,РежимЗаписиДокумента.Запись)); Сообщить("""" + Док +" ... ОК!"); Возврат; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | НачислениеЗарплатыРаботникамОрганизаций.Ссылка |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций КАК НачислениеЗарплатыРаботникамОрганизаций |ГДЕ | НачислениеЗарплатыРаботникамОрганизаций.ПерерассчитываемыйДокумент = &ПерерассчитываемыйДокумент"; Запрос.Текст = СтрЗаменить(Запрос.Текст,"НачислениеЗарплатыРаботникамОрганизаций",Док.Метаданные().Имя); Запрос.УстановитьПараметр("ПерерассчитываемыйДокумент",Док); Выборка = Запрос.Выполнить().Выбрать(); МассивИсправлений = Новый Массив; Пока Выборка.Следующий() Цикл МассивИсправлений.Добавить(Выборка.Ссылка); КонецЦикла; НачатьТранзакцию(); Для каждого ТекДок Из МассивИсправлений Цикл ТекДокОбъект = ТекДок.ПолучитьОбъект(); ТекДокОбъект.ПерерассчитываемыйДокумент = Неопределено; ТекДокОбъект.Записать(РежимЗаписиДокумента.Запись); Сообщить("""" + ТекДок + " - отмена исправления."); КонецЦикла; ВыбДокОбъект = Док.ПолучитьОбъект(); ВыбДокОбъект.Записать(?(ВыбДокОбъект.Проведен,РежимЗаписиДокумента.Проведение,РежимЗаписиДокумента.Запись)); Для каждого ТекДок Из МассивИсправлений Цикл ТекДокОбъект = ТекДок.ПолучитьОбъект(); ТекДокОбъект.ПерерассчитываемыйДокумент = Док; ТекДокОбъект.Записать(РежимЗаписиДокумента.Запись); Сообщить("""" + ТекДок + " - восстановление исправления."); КонецЦикла; Сообщить("""" + Док +" ... ОК!"); ЗафиксироватьТранзакцию();КонецПроцедуры </pre>"
Хм..Ну что, Юра, слабо?!
"а что нам скажет начальник транспортного цеха?"
спасибо, если не найду другого выхода отдам этот полуфабрикат программисту.
26 апреля 2024 года — Форум пользователей «1С:Документооборота» |
1C:Лекторий: 7 мая 2024 года — Бесплатная онлайн-лекция о новом в 1С:ЗУП (версии 3.1.27-3.1.29): поддержка изменений по налогам и взносам, СЭДО, регистрация в органе статистики и другие изменения 1C:Лекторий: 14 мая 2024 года — Бесплатная онлайн-лекция об учете в 1С:БГУ 8 (ред. 2) невостребованной кредиторами задолженности. Серия 1С:Консалтинг для госсектора |