Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > Бэк-офисы платформы 1С > 1С: Бухгалтерия

Платёжные поручения, флаг "Оплачено" и корректировка проводок : 1С: Бухгалтерия

23.11.2024 20:27


07.04.2014 23:29
Бухгалтерия 3.0.31.13
Сегодня столкнулся с таким вопросом: "А почему у ряда платёжек не стоит флаг <<Оплачено>>?"

Сел разбираться - что, зачем, почему.
Выяснил, что пропадает флаг у платёжек, проводки по которым подверглись ручной корректировке.
Т.е. выписка первоначально была разнесена, потом - возникла необходимость коррекции проводок.
Действия бухгалтеров:
1) Входят в платёжку, из неё идут на подчинённый документ списания с расчётного счёта
2) В документе списания с расчетного счёта - идут в проводки (движения документа)
3) В проводках ("Движениях документа") достаточно поставить флажок "Ручная корректировка" и "Записать и закрыть"
4) Если теперь просто закрыть документ списания с расчётного счёта, то в первоначальной платёжке - слетает флажок "Оплачено".

Если перед закрытием документа списания с расчётного счёта этот документ сохранить (выходит сообщение - "Движения документа Списания с расчётного счёта отредактированы вручную и не могут быть автоматически актуализированы) или провести (выходит такое же сообщение), или нажать "Провести и закрыть" (что-то быстро мелькает, скорее всего такое же сообщение, но его не успеваешь разглядеть), то флажок "Оплачено" у платёжного поручения - остаётся (или - появляется, если его не было).

В принципе, можно использовать простую обработку для восстановления "потерянных" флажков "Оплачено"
[spoil=Модуль пустой формы обработки]
Код:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ПлатежноеПоручение.Ссылка Как ПлатСсылка,
		|	ПлатежноеПоручение.ДокументОснование Как ПлатДокументОснование
		|ИЗ
		|	Документ.ПлатежноеПоручение КАК ПлатежноеПоручение
		|ГДЕ
		|	ПлатежноеПоручение.Оплачено = ЛОЖЬ";


	РезультатЗапроса = Запрос.Выполнить();

	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		НаименованиеДокумента="";
		ДокументСписания = НайтиДокументСписанияНаСервере(ВыборкаДетальныеЗаписи.ПлатСсылка, ВыборкаДетальныеЗаписи.ПлатДокументОснование, НаименованиеДокумента);
		Если Найти(НаименованиеДокумента, "Списание с расчетного счета №") > 0 Тогда
			ОбъектПлатПор=ВыборкаДетальныеЗаписи.ПлатСсылка.ПолучитьОбъект();
			ОбъектПлатПор.Оплачено=Истина;
			Попытка
				ОбъектПлатПор.Записать();
			Исключение
				Сообщить(НСтр("ru = 'Не удалось записать объект';"
					+ " en = 'Can't write the object'") 
					+ " '" + Объект + "'"+ ОписаниеОшибки());
			КонецПопытки;
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры

&НаСервереБезКонтекста
Функция НайтиДокументСписанияНаСервере(Знач ПлатежноеПоручение, Знач ДокументОснование, НаименованиеДокумента)
	
	Возврат Документы.ПлатежноеПоручение.НайтиДокументСписания(ПлатежноеПоручение, ДокументОснование, НаименованиеДокумента);
	
КонецФункции
[/spoil]
Скорее всего, некорректны действия бухгалтеров (надо идти не в проводки, а в "Документе списания с расчётного счёта" в подвале указать сразу правильные счета), хотя точно не знаю.
Часовой пояс GMT +3, время: 20:27.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.