Свёртка сальдо с потерянными ссылками на субконто.

 

       В процессе работы в программе 1С случаются ситуации потери ссылок на объекты. В причины таких ошибок погружаться не будем. Данная статья будет полезна, если ситуация некритичная, как в нашем примере, и требуется просто выровнять остатки на счете.

   Рассмотрим один конкретный пример на базе 1С Бухгалтерия 8.3 свертки сальдо по таким субконто.

 

 

   Первое что требуется выяснить, на основании каких документов сформированы проводки по субконто «объект не найден». Для этого можно сформировать карточку счета и посмотреть какими документам формировались движения. Если сальдо в базе появилось не в результате ввода остатков или документа «Операция», т. е. есть движения по документам на основании которых можно сформировать сторно, то ситуация исправляется достаточно просто. Создаем документ «Операция» с видом операции «Сторно документа», выбираем любой документ по субконто «объект не найден», на основании которого формируется сторно. Далее, после автоматического заполнения сторнирующих проводок, удаляем все проводки, кроме той, в которой субконто = «объект не найден» и корректируем корреспондирующую сторону и сумму.

В нашем примере решение выглядело бы так:

 

 

   Далее остается скорректировать дебетовую сторону и сумму проводки.

 

   Но бывают ситуации, когда нет основания для формирования сторнирующего документа.

   Для решения вопроса можно воспользоваться одним простым способом.

   Сначала, как и в первом примере, создадим документ «Операция» с видом операции «Операция» и сформируем проводку. Указать в проводке потерянную ссылку мы не можем, поэтому оставим пустую ссылку, в нашем примере - пустая ссылка на документ «Исполнительный лист». Документ запишем.

 

 

   Далее воспользуемся встроенной обработкой «Групповое изменение реквизитов». Она находится в разделе Администрирование → Обслуживание →Корректировка данных.

    В изменяемых объектах укажем «Операция», в форме выбора элементов для изменения добавим условие отбора, например :

 

 

   Необходимо удостовериться в том, что в отбор попала именно наша операция, т. к. выполняемые в дальнейшем действия будут необратимыми.

 

    Затем перейдем на вкладку «Выполнить произвольный алгоритм».

   Важный момент, получить ссылку на потерянный объект можно программно, написав запрос. Но в таком случае, текст запроса, необходимо писать под каждую конкретную ситуацию.

   В нашем примере мы получим ссылку на потерянный объект по уникальному идентификатору.

   Скопируем из оборотно-сальдовой ведомости представление нашего объекта.

 

<Объект не найден> (15059:81eeac162d6e839811ed917e77f6416a)

Теперь определим ГУИД объекта аналогично нашему примеру.

ГУИД_объекта = "77f6416a-917e-11ed-81ee-ac162d6e8398"

 

   И пропишем следующий алгоритм:

НЗ = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();

НЗ.Отбор.Регистратор.Установить(Объект.Ссылка);

НЗ.Прочитать();

ТЗ_Проводки = НЗ.Выгрузить();

ГУИД_объекта = "77f6416a-917e-11ed-81ee-ac162d6e8398";

Для каждого Проводка Из ТЗ_Проводки Цикл

Если ТипЗнч(Проводка.СубконтоДт1) = Тип("ДокументСсылка.ИсполнительныйЛист") Тогда

Проводка.СубконтоДт1 = Документы.ИсполнительныйЛист.ПолучитьСсылку(Новый УникальныйИдентификатор(ГУИД_объекта));

ИначеЕсли ТипЗнч(Проводка.СубконтоДт2) = Тип("ДокументСсылка.ИсполнительныйЛист") Тогда

Проводка.СубконтоДт2 = Документы.ИсполнительныйЛист.ПолучитьСсылку(Новый УникальныйИдентификатор(ГУИД_объекта));

Иначе

Проводка.СубконтоДт3 = Документы.ИсполнительныйЛист.ПолучитьСсылку(Новый УникальныйИдентификатор(ГУИД_объекта));

КонецЕсли;

КонецЦикла;

 

НЗ.ОбменДанными.Загрузка = Истина;

НЗ.Загрузить(ТЗ_Проводки);

НЗ.Записать();

 

   Далее нажимаем выполнить и проверяем результат нашего исправления.

 

 

   P.S. Если потерянных ссылок в базе много и ситуация носит не разовый характер, то следует обратится к специалистам 1С для выяснения и устранения причин и последствий их появления.