Исправление ошибки отсутствия субконто в проводках после редактирования плана счетов.

13.08.12

Разработка - Механизмы типовых конфигураций

Алгоритм исправляющий ошибку  платформы, возникавшей в некоторых релизах, возникающей при добавлении нового субконто в счете.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Файл консоли запроса
.sel 8,55Kb
39
39 Скачать (1 SM) Купить за 1 850 руб.

В свое время в платформе была ошибка - после добавления субконто к счету платформа не производила рестутуризацию существующих проводок и в результате к ним не добавлялась строка с пустым значением нового субконто.

Внешне результат данной ошибки был виден в оборотке по счету. В группировке по данному субконто появлялось две пустые строки. Если выбирать запросом в консоли одна строка была пустым значением данного типа субконто а вторая NULL.  

История "лечится" перепроведением или перезаписью движений.

Приведенный ниже запрос позволяет выявить такие  ошибки

ВЫБРАТЬ
   
Хозрасчетный.Регистратор КАК Регистратор,
   
Хозрасчетный.НомерСтроки КАК НомерСтроки,
   
Хозрасчетный.СчетДт КАК Счет,
   
Хозрасчетный.Сумма,
   
Хозрасчетный.Организация,
   
ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Дебет) КАК ВидДвижения,
   
"Д" КАК ВидДвиженияБуквой
ПОМЕСТИТЬ Движения
ИЗ
   
РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   
Хозрасчетный.Регистратор,
   
Хозрасчетный.НомерСтроки,
   
Хозрасчетный.СчетКт,
   
Хозрасчетный.Сумма,
   
Хозрасчетный.Организация,
   
ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Кредит),
   
"К"
ИЗ
   
РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   
Движения.Регистратор КАК Регистратор,
   
Движения.НомерСтроки КАК НомерСтроки,
   
ВЫБОР
        КОГДА
ХозрасчетныйСубконто.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Кредит)
           
ТОГДА "К"
       
ИНАЧЕ "Д"
   
КОНЕЦ КАК ВидДвиженияБуквой,
   
ХозрасчетныйСубконто.ВидДвижения,
   
ХозрасчетныйСубконто.Вид КАК ВидСубконто
ПОМЕСТИТЬ ДвиженияССубконто
ИЗ
   
Движения КАК Движения
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Субконто КАК ХозрасчетныйСубконто
        ПО Движения.Регистратор = ХозрасчетныйСубконто.Регистратор
            И Движения.НомерСтроки = ХозрасчетныйСубконто.НомерСтроки
            И Движения.ВидДвижения = ХозрасчетныйСубконто.ВидДвижения
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
   
Движения.Регистратор КАК Регистратор,
   
Движения.НомерСтроки КАК НомерСтроки,
   
Движения.Счет,
   
Движения.ВидДвижения
ИЗ
   
Движения КАК Движения
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланСчетов.Хозрасчетный.ВидыСубконто КАК ХозрасчетныйВидыСубконто
        ПО Движения.Счет = ХозрасчетныйВидыСубконто.Ссылка
ГДЕ
   
НЕ (Движения.Регистратор, Движения.НомерСтроки, Движения.ВидДвиженияБуквой, ХозрасчетныйВидыСубконто.ВидСубконто) В
               
(ВЫБРАТЬ
                   
ДвиженияССубконто.Регистратор,
                   
ДвиженияССубконто.НомерСтроки,
                   
ДвиженияССубконто.ВидДвиженияБуквой,
                   
ДвиженияССубконто.ВидСубконто
                ИЗ
                   
ДвиженияССубконто КАК ДвиженияССубконто)

УПОРЯДОЧИТЬ ПО
   
Регистратор
ИТОГИ ПО
   
Регистратор,
   
НомерСтроки
АВТОУПОРЯДОЧИВАНИЕ

а этот кусок кода позволяет исправить ошибки в выявленных движениях

ВыборкаДокументов=РезЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ВремяНачалаОбработки=ТекущаяДата();
КоличествоСтрок=ВыборкаДокументов.Количество();
НомерСтроки=0;
Пока
ВыборкаДокументов.Следующий() Цикл
   
ТекущийМоментВремени=ТекущаяДата();
   
НомерСтроки=НомерСтроки+1;
   
КоличествоСтрокОставшихся=КоличествоСтрок-НомерСтроки;

   
НаборЗаписей=РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
   
НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаДокументов.Регистратор);
   
НаборЗаписей.Прочитать();
   
НаборЗаписей.ОбменДанными.Загрузка=Истина;

   
ВыборкаПоСтрокам=ВыборкаДокументов.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока
ВыборкаПоСтрокам.Следующий() Цикл
       
Проводка=НаборЗаписей[ВыборкаПоСтрокам.НомерСтроки-1];
       
Выборка=ВыборкаПоСтрокам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        Пока
Выборка.Следующий() Цикл
            Если
Выборка.ВидДвижения=ВидДвиженияБухгалтерии.Дебет Тогда
               
Счет=Проводка.СчетДт;
               
Субконто=Проводка.СубконтоДт;
            Иначе
               
Счет=Проводка.СчетКт;
               
Субконто=Проводка.СубконтоКт;
            КонецЕсли;
           
СоответсвиеТекущихСубконто=Новый Соответствие;
            Для Каждого
ВидСубконто ИЗ Счет.ВидыСубконто Цикл
               
СоответсвиеТекущихСубконто.Вставить(ВидСубконто.ВидСубконто,Субконто[ВидСубконто.ВидСубконто]);
            КонецЦикла;

            Для Каждого
ВидСубконто ИЗ Счет.ВидыСубконто Цикл
               
Субконто.Вставить(ВидСубконто.ВидСубконто,ВидСубконто.ВидСубконто.ТипЗначения.ПривестиЗначение());
                Если
СоответсвиеТекущихСубконто[ВидСубконто.ВидСубконто]<>Неопределено Тогда
                   
Субконто.Вставить(ВидСубконто.ВидСубконто,СоответсвиеТекущихСубконто[ВидСубконто.ВидСубконто]);
                КонецЕсли;
            КонецЦикла;

        КонецЦикла;
    КонецЦикла;
   
НаборЗаписей.Записать();

   
СреднееВремя=(ТекущаяДата()-ВремяНачалаОбработки)/НомерСтроки;
   
Состояние(Строка(НомерСтроки)+"/"+Строка(КоличествоСтрок)+" ("+Строка(ТекущаяДата()-ТекущийМоментВремени)+") "+Строка(ТекущаяДата()+КоличествоСтрокОставшихся*СреднееВремя));
   
ОбработкаПрерыванияПользователя();
КонецЦикла;

Перед выполением на больших базах рекомендуется отключить итоги и запрет границы редактирования.

Дополнительно,для вашего удобства, выкладываю файл .sel для консоли запроса с обработкой, который содержить оба текста.

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159389    872    399    

861

Запросы Программист Бесплатно (free)

Увидел cheatsheet по SQL и захотелось нарисовать подобное, но про запросы.

18.10.2024    9869    sergey279    18    

64

Запросы Программист Платформа 1С v8.3 Запросы Конфигурации 1cv8 Бесплатно (free)

Столкнулся с интересной ситуацией, которую хотел бы разобрать, ввиду её неочевидности. Речь пойдёт про использование функции запроса АВТОНОМЕРЗАПИСИ() и проблемы, которые могут возникнуть.

11.10.2024    5163    XilDen    36    

80

Механизмы типовых конфигураций Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Статистическая выборка сценариев и точек изменения отчетов на общей форме ФормаОтчета в типовых конфигурациях. Примеры кода.

03.06.2024    4891    Serg2000mr    32    

108

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

Часто при разработке отчетов в СКД возникает ситуация, когда не совсем понятно, почему отчет выводит не те данные, которые нужны, либо не выводит вовсе. Возникает потребность увидеть конечный запрос, который формирует СКД. Как это сделать, рассмотрим в этой статье.

15.05.2024    8684    implecs_team    6    

47

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Уже не одна веб-страница исписана знаниями о дополнительных обработках, как создать, как подключить. Есть масса вариантов, как их можно отладить. Я разобрался в кишках работы библиотеки и покажу, как можно расширить возможности дополнительных отчетов, а также покажу удобный способ отладки.

07.02.2024    4043    YA_418728146    11    

53

Инструментарий разработчика Запросы Программист Стажер Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Бесплатно (free)

Пишем на человеческом языке, что нам надо, и получаем текст запроса на языке 1С. Используются большие языковые модели (LLM GPT) от OpenAI или Яндекс на выбор.

15.01.2024    10119    142    mkalimulin    32    

60

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист Стажер Платформа 1С v8.3 1С:Бухгалтерия 3.0 Бесплатно (free)

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

28.12.2023    6424    mrXoxot    11    

112
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. mip128 03.12.13 16:52 Сейчас в теме
Это чтоб ТиИ не запускать когда народ сидит
2. mip128 03.12.13 17:31 Сейчас в теме
Было бы неплохо написать еще для измененного типа значения, чтобы в составном типе вместо пустой ссылки стояло неопределено.
3. Vladisa 39 13.12.13 09:24 Сейчас в теме
возникла после добавления субконто похожая проблема...старые значения остались на одном пустом субконто, а вот случайно незаполненные свежие-на другом пустом...схлопнуть их никак не удается(((
4. Fox_65 1 30.07.20 01:16 Сейчас в теме
Запрос нереальный.Для больших баз явно не подходит.Все движения в базе в таблицу запроса. Да это нереально и очень долго.
5. Itilive.ru 43 04.08.20 15:18 Сейчас в теме
(4) Ага Вы правы. Прямо спустя 8 лет со слезами на него смотрю...
6. Fox_65 1 04.08.20 16:19 Сейчас в теме
Кстати я его доработал. Добавил период и таблицы стали не такими громоздкими. И теперь он работает очень даже ничего. И самое главное исправляет ошибку с субконто NULL. Так что это до сих пор актуально. Спасибо.
7. DennyPhilord 65 18.08.20 11:10 Сейчас в теме
(6)
актуально

Будьте добры, выложите модификации
8. Goggy 2 11.05.21 15:48 Сейчас в теме
(5) До сих пор актуален бывает данный механизм.
Был бы признателен если бы вы обновили запрос и процедуру обработки.
9. Itilive.ru 43 12.05.21 19:37 Сейчас в теме
(8) А что необходимо обновить? На некоторые моменты конечно сейчас уже смешно смотреть. Но я не понимаю в какой части он не работает...
Оставьте свое сообщение