Удаление Неопределено из Регистра Бухгалтерии



При добавлении нового субконто счету, бывает возникает ситуация, когда в ОСВ по счету с группировкой по этому субконто появляются две строки <…>. Это субконто с типом Неопределено и Пустая ссылка.

Эта обработка позволяет найти и исправить Неопределено на ПустаяСсылка. Указывается период за который исправляем, Субконто и тип Пустой ссылки.

2 Comments

  1. NGPhoenix

    Есть несколько замечаний по коду:

    1) Регистр надо сохранять не после обработки каждой записи по дебету или кредиту, а после обработки всего набора записей документа, т.е. в конце внешнего цикла

    2) Не стоит искать значение плана вида характеристик по наименованию, когда известно его значение заранее

    3) Подсчет записей происходит неверно, т.к. считается число строк, а в значении «из» число документов.

    4) Если в запросе поставить «выбирать различные», то и сворачивать таблицу по регистратору не нужно

    После всего вышесказанного код будет выглядеть так + вставил прерывание на всякий случай:

    Процедура Обработать() Экспорт

    Запрос = Новый Запрос;

    Запрос.Текст = «ВЫБРАТЬ РАЗЛИЧНЫЕ

    | ЕПСБУСубконто.Регистратор

    |ИЗ

    | РегистрБухгалтерии.ЕПСБУ.Субконто КАК ЕПСБУСубконто

    |ГДЕ

    | ЕПСБУСубконто.Период МЕЖДУ &ДатаНачала И &ДатаОкончания

    | И ЕПСБУСубконто.Вид = &Вид

    | И ЕПСБУСубконто.Значение = НЕОПРЕДЕЛЕНО

    |

    |УПОРЯДОЧИТЬ ПО

    | ЕПСБУСубконто.Регистратор.Дата»;

    Запрос.УстановитьПараметр(«ДатаНачала», ДатаНачала);

    Запрос.УстановитьПараметр(«ДатаОкончания», КонецДня(ДатаОкончания));

    Запрос.УстановитьПараметр(«Вид», ВыбСубконто);

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

    КолЗ = Результат.Количество();

    КолД = Результат.Количество();

    ТекДата = ТекущаяДата();

    Сообщить(«количество документов » + КолД + «. Количество записей » + КолЗ + » » + ТекущаяДата());

    н = 0;

    Для Каждого Стр Из Результат Цикл

    Док = Стр.Регистратор;

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

    Рег.Отбор.Регистратор.Значение = Док;

    Рег.Прочитать();

    Для Каждого Дв Из Рег Цикл

    Для Каждого Субконто Из Дв.СубконтоДт Цикл

    Если Субконто.Ключ = ВыбСубконто Тогда

    Если Субконто.Значение = Неопределено Тогда

    Дв.СубконтоДт.Вставить(ВыбСубконто, ТипСубконто.Ссылка);

    КонецЕсли;

    КонецЕсли;

    КонецЦикла;

    Для Каждого Субконто Из Дв.СубконтоКт Цикл

    Если Субконто.Ключ = ВыбСубконто Тогда

    Если Субконто.Значение = Неопределено Тогда

    Дв.СубконтоКт.Вставить(ВыбСубконто, ТипСубконто.Ссылка);

    КонецЕсли;

    КонецЕсли;

    КонецЦикла;

    КонецЦикла;

    Рег.Записать();

    н = н+1;

    Состояние(«Записан » + н + » из » + КолЗ + «. Скорость » + Окр((ТекущаяДата() — ТекДата)/н,5) + » » + Строка(Док));

    ОбработкаПрерыванияПользователя();

    КонецЦикла;

    Сообщить(«Обработка завершена»);

    КонецПроцедуры

    Reply
  2. sumixam

    у меня такая проблемка разьехался 71.01 счет, запросом проверил, что есть субконто с видом NULL, как мне их заменить на НЕОПРЕДЕЛННО или ПУСТУЮ ссылку чтобы схлопнуть субконто…Заранее Спасибо

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *