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

13.08.12

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

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

Скачать файлы

Наименование Файл Версия Размер
Файл консоли запроса
.sel 8,55Kb
39
.sel 8,55Kb 39 Скачать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

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

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

13000 10400 руб.

02.09.2020    121608    670    389    

711

Запрос 1С copilot

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

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

5 стартмани

15.01.2024    6279    30    mkalimulin    25    

49

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

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

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

28.12.2023    4823    mrXoxot    11    

99

Объектная модель запроса "Схема запроса" 2

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

Далеко уже не новый тип данных "Схема запроса". Статья о том, как использовать его "попроще". Примеры создания текста запроса с нуля и изменение имеющегося запроса.

06.12.2023    5386    user1923546    26    

43

Ключи аналитик учета в ЕРП, КА, УТ

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

Разбираемся, зачем в системе ЕРП созданы справочники: ключи аналитик учета, зачем созданы аналогичные по набору измерений регистры сведений. Какие проблемы они решают, какие создают новые и что с этим делать.

08.11.2023    7029    ids79    25    

74

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    16166    skovpin_sa    14    

98

Структура запроса

Инструментарий разработчика Запросы Платформа 1С v8.3 Запросы Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

21.06.2023    5154    57    obmailok    35    

56
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. mip128 03.12.13 16:52 Сейчас в теме
Это чтоб ТиИ не запускать когда народ сидит
2. mip128 03.12.13 17:31 Сейчас в теме
Было бы неплохо написать еще для измененного типа значения, чтобы в составном типе вместо пустой ссылки стояло неопределено.
3. Vladisa 38 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 1 11.05.21 15:48 Сейчас в теме
(5) До сих пор актуален бывает данный механизм.
Был бы признателен если бы вы обновили запрос и процедуру обработки.
9. Itilive.ru 43 12.05.21 19:37 Сейчас в теме
(8) А что необходимо обновить? На некоторые моменты конечно сейчас уже смешно смотреть. Но я не понимаю в какой части он не работает...
Оставьте свое сообщение