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

13.08.12

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

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

Файлы

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

Наименование Скачано Купить файл
Файл консоли запроса
.sel 8,55Kb
40 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

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

16500 руб.

02.09.2020    256994    1425    421    

1162

WEB-интеграция Запросы Программист 1С 8.3 Абонемент ($m)

Post1C - это внешняя обработка, которая превращает 1С в полноценный инструмент для тестирования REST API. Всё управление сосредоточено в одном окне: настройка запроса, выполнение, просмотр ответа и генерация кода - без переключения между формами. Аналог Postman, но работающий в привычной среде 1С.

1 стартмани

02.04.2026    2006    67    priem_nv    23    

63

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

Каждый, кто работал с кадровыми отчетами в ЗУП, ERP или УХ, сталкивался с механизмом представлений – странным кодом запроса, где поля отображаются пустыми ссылками, а в названии временной таблицы есть слово «Представление». В статье разберем, что такое представления и как ими пользоваться. Больше не нужно ломать голову над тем, откуда и как правильно получать данные. Механизм представлений сделает это за вас.

08.07.2025    14670    user2012581    55    

62

Инструментарий разработчика Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

QueryConsole1C — расширение, включающее консоль запросов с поддержкой исполняемых представлений — аналогов виртуальных таблиц, основанных на методах программного интерфейса ЗУП. Оно позволяет выполнять запросы с учётом встроенной бизнес-логики, отлаживать алгоритмы получения данных и автоматически генерировать код на встроенном языке 1С.

1 стартмани

16.05.2025    10960    145    zup_dev    30    

83

Механизмы типовых конфигураций Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Расчет себестоимости в типовых конфигурациях 1С – для многих «черный ящик», работающий по жестко зашитым в него алгоритмам. Реализация этого «черного ящика» может меняться в зависимости от конкретной конфигурации – УПП, БП 3.0, ERP. Но принцип работы везде одинаковый. Расскажем о том, как устроен расчет себестоимости, как его дорабатывать, и какие методы могут быть эффективны и без доработок.

27.12.2024    28389    Begemoth80    33    

95

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

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

18.10.2024    22832    sergey279    18    

74

Запросы Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

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

11.10.2024    18089    XilDen    39    

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 2 30.07.20 01:16 Сейчас в теме
Запрос нереальный.Для больших баз явно не подходит.Все движения в базе в таблицу запроса. Да это нереально и очень долго.
5. Itilive.ru 43 04.08.20 15:18 Сейчас в теме
(4) Ага Вы правы. Прямо спустя 8 лет со слезами на него смотрю...
6. Fox_65 2 04.08.20 16:19 Сейчас в теме
Кстати я его доработал. Добавил период и таблицы стали не такими громоздкими. И теперь он работает очень даже ничего. И самое главное исправляет ошибку с субконто NULL. Так что это до сих пор актуально. Спасибо.
7. DennyPhilord 66 18.08.20 11:10 Сейчас в теме
(6)
актуально

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