Бухгалтерия 3.0.31.13
Сегодня столкнулся с таким вопросом: "А почему у ряда платёжек не стоит флаг <<Оплачено>>?"
Сел разбираться - что, зачем, почему.
Выяснил, что пропадает флаг у платёжек, проводки по которым подверглись ручной корректировке.
Т.е. выписка первоначально была разнесена, потом - возникла необходимость коррекции проводок.
Действия бухгалтеров:
1) Входят в платёжку, из неё идут на подчинённый документ списания с расчётного счёта
2) В документе списания с расчетного счёта - идут в проводки (движения документа)
3) В проводках ("Движениях документа") достаточно поставить флажок "Ручная корректировка" и "Записать и закрыть"
4) Если теперь просто закрыть документ списания с расчётного счёта, то в первоначальной платёжке - слетает флажок "Оплачено".
Если перед закрытием документа списания с расчётного счёта этот документ сохранить (выходит сообщение - "Движения документа Списания с расчётного счёта отредактированы вручную и не могут быть автоматически актуализированы) или провести (выходит такое же сообщение), или нажать "Провести и закрыть" (что-то быстро мелькает, скорее всего такое же сообщение, но его не успеваешь разглядеть), то флажок "Оплачено" у платёжного поручения - остаётся (или - появляется, если его не было).
В принципе, можно использовать простую обработку для восстановления "потерянных" флажков "Оплачено"
[spoil=Модуль пустой формы обработки]
Код:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПлатежноеПоручение.Ссылка Как ПлатСсылка,
| ПлатежноеПоручение.ДокументОснование Как ПлатДокументОснование
|ИЗ
| Документ.ПлатежноеПоручение КАК ПлатежноеПоручение
|ГДЕ
| ПлатежноеПоручение.Оплачено = ЛОЖЬ";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
НаименованиеДокумента="";
ДокументСписания = НайтиДокументСписанияНаСервере(ВыборкаДетальныеЗаписи.ПлатСсылка, ВыборкаДетальныеЗаписи.ПлатДокументОснование, НаименованиеДокумента);
Если Найти(НаименованиеДокумента, "Списание с расчетного счета №") > 0 Тогда
ОбъектПлатПор=ВыборкаДетальныеЗаписи.ПлатСсылка.ПолучитьОбъект();
ОбъектПлатПор.Оплачено=Истина;
Попытка
ОбъектПлатПор.Записать();
Исключение
Сообщить(НСтр("ru = 'Не удалось записать объект';"
+ " en = 'Can't write the object'")
+ " '" + Объект + "'"+ ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
Функция НайтиДокументСписанияНаСервере(Знач ПлатежноеПоручение, Знач ДокументОснование, НаименованиеДокумента)
Возврат Документы.ПлатежноеПоручение.НайтиДокументСписания(ПлатежноеПоручение, ДокументОснование, НаименованиеДокумента);
КонецФункции
[/spoil]
Скорее всего, некорректны действия бухгалтеров (надо идти не в проводки, а в "Документе списания с расчётного счёта" в подвале указать сразу правильные счета), хотя точно не знаю.