Должно быть NULL в регистре бухгалтерии Хозрасчетный










Обработка проверяет наличие и решает проблему с ошибкой развернутого сальдо в Оборотно-сальдовой ведомости (регистр бухгалтерии Хозрасчетный) из-за ошибки Универсального редактора реквизитов или кода программиста, устанавливающего пустые ссылки в значениях Валюты, Подразделения, Направления деятельности не равными NULL. И пересчёт итогов тут точно не поможет…

Бухгалтера столкнулись с проблемой развёрнутого сальдо на счёте 68.02

Откуда ноги растут стандартными методами разобраться не удалось (бывают глюки, когда решает проблему пересчёт итогов, но тут он не помог, визуальный анализ достаточно продвинутыми консультантами проводок БУ также не дал результата).

Анамнез показал, что в предыдущих месяцах развернутого сальдо не было…

Начали формировать в консоли проверочные запросы к регистру бухгалтерии и многие были без толку, пока не вывели типы значений измерений.

И дьявол кроется в мелочах…

Оказалось значение пусто да не так как нужно

 

 Сравнили результат запроса к регистру хозрасчетный по регистратору в текущей базе и архиве

Рис.1 Неправильный вариант заполнения

Рис.1 Правильный вариант заполнения

 

ПРАВИЛО:

В случае отключенного на счете признака ведения учета, соответствующее измерение должно быть не ПустаяСсылка справочника, а равняться NULL.

 

Например, на счете 68.02 отключены учеты: Валютный, Учет по подразделениям и Учет по направлениям деятельности.

и поэтому в проводках по 68.02 счету пустые значения Валюты, Подразделения и Направления деятельности должны равняться NULL (как на рис.2), а не пустым ссылкам справочников (рис.1).

Разбираясь откуда такая "котовасия" появилась, выяснили что для редактирования движений документов использовали обработку Универсальный редактор реквизитов.

который в режиме Загрузка.ОбменДанными = Истина записывает пустые ссылки на справочники в поля проводки, которые не используются по признакам учета в счете.

Для исправления в обработку Универсальный редактор реквизитов (популярная вещь, на инфостарте поиском можете найти) в модуль формы в процедуру ЗаписатьДвижения() внесены исправления

 

 Текст кода с исправлениями

 

Некорректных изменений в базе оказалось множество и не только по 68.02 счету, поэтому написал обработку, которая выявила все некорректные проводки БУ и исправила их (саму обработку можно скачать ниже):

Как она работает:

  1. Задаем настройки (Выбираем период исправления, отмечаем какие ошибки искать)
  2. Жмём кнопку [ Заполнить документы с ошибками] (Выводится список регистраторов у которых есть проводки с неправильными пустыми значениями)
  3. Отмечаем флажками строки
  4. Жмём кнопку [ Исправить на NULL ] (Обработка исправляет пустые ссылки справочника на NULL в изменениях Валюта, Подразделение, Направление деятельности по которым не установлен признак учета в счете)

 

В итоге исправилось неправильно возникшее развернутое сальдо:

Рис.3 Ошибочная Оборотно-сальдовая ведомость (с ошибкой развернутого сальдо)

Рис.4 Исправленная Оборотно-сальдовая ведомость (развернутое сальдо "свернулось")

P.S. Тем не менее, Универсальный редактор реквизитов, замечательная вещь!

Апдейты обработки:

Версия для скачивания: Проверка и правка на NULL в измерениях Хозрасчетный, по которым не ведется учет (для ERP, КА) 2024-12-17 Perl Amutor

Спасибо моему коллеге Владу, PerlAmutor IC ( //infostart.ru/profile/527156/ ) за исправления:

Воспользовался обработкой, но пришлось её немного "допилить". Первая проблема с которой я столкнулся это то, что после её работы остались документы, где нет NULL. Стал разбираться в запросе и понял, что виртуальная функция Обороты() — схлопывает в 0 суммы для некоторых документов и в этом случае, вообще их не показывает, считая, что оборотов — не было. Второе, что мне показалось странным — документы могут перезаписываться по несколько раз. Этого не происходит т.к. на первом цикле исправляются все движения, но они повторно перечитываются и вхолостую гоняются по циклу. Третье это то, что исправляются в любом случае Валюта, Подразделение и Направление деятельности в независимости от того какие отборы пользователь установил флажками. Четвертая проблема в том, что идет сравнение значений записи на пустую ссылку справочников, хотя по факту там могут стоять и Неопределено и все что угодно. С удивлением обнаружил то, что метод Модифицированность() у набора значений не работает, либо я не понимаю как он работает, если я меняю значение записи, но флаг не взводится. В общем все это дело я поправил и даю тебе ссылку на исправленную версию обработки.

33 Comments

  1. Senator_I

    Судя по описанию, сломано было не стандртными методами ведения документов?

    Reply
  2. sapervodichka

    (1) Всё стандартно и типово =) Записью любых движений через универсальный редактор реквизитов портились проводки документов и ещё одним самописным документом, который проводки формировал без учета признаков ведения учете.

    Reply
  3. PLAstic

    Сталкивался с этой проблемой пару лет назад. Причиной была обработка одного программиста, которая программно создавала самописные документы и ставила в реквизиты субконто пустое значение определённого типа, хотя этим видам субконто не задавались значения. В результате в РБ попадали не Неопределено, а пустые ссылки. И тоже задваивались в типовых отчётах.

    И я бы хотел обратить внимание, что всё же не NULL надо писать в субконто, а Неопределено.

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

    Отлично, что освещена такая нетривиальная проблема!

    Reply
  4. sapervodichka

    (3) да с субконто тоже бывает =) но там точно не NULL, вы правильно написали (Неопределено). В учетных же измерениях именнно NULL.

    Reply
  5. Rustig

    (0) крутое расследование! молодцы!

    Reply
  6. karpik666

    Вывод: обработки с Инфостарта — зло

    Reply
  7. YannikAlx

    (5) Будьте любезны продемонстрируйте этот NULL

    В учетных же измерениях

    только не запросом, а открытием формы регистра, чтобы виден был этот NULL.

    Ибо я считаю, что NULL не может показываться нигде в реквизитах иди измерениях, только через запрос к этим реквизитам или измерениям, потому что в них установлено именно = Неопределено

    А устанавливается везде именно «Неопределено» — это вроде как свидетель для NULL в 1С

    Reply
  8. Scorpion1_77

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

    Вообще еще не встречал ни одной базы БП, где бы не было этой проблемы в той или иной степени. Обычно это не мешает т.к. в типовых отчетах, вроде ОСВ по счету, не используются развернутые остатки.

    Reply
  9. sapervodichka

    (6) и не говори =))) что есть то есть

    Reply
  10. sapervodichka

    (8) аудиторам почему-то помешало развернутое сальдо (и часто ТиИ сделать не можем в режиме работы 24/7 или в 24/6 где база оч большая и процесс идет больше суток, хотя оно часто помогает)

    Reply
  11. Crazy_Max

    (6) Прям как в том анекдоте про ученого-экспериментатора:

    «Вывод: без ног не слышит!»

    Reply
  12. sapervodichka

    (11)

    Вывод: без ног не слышит

    это когда таракан без лапок убежать не мог, когда на него кричали )))

    Reply
  13. Поручик

    А у меня используется универсальный редактор реквизитов от Трактора.

    Исправление у вас неправильное, так как заточено именно под БП 3.0 и надо делать проверки на существования указанных справочников в метаданных.

    Reply
  14. sapervodichka

    (13) Если используется, то откройте документ с движениями по БУ.

    1) Возьмите текст запроса из моей публикации, выведите им результат (он покажет тип Валюты = NULL)

    2) Откройте документ в универсальном редакторе реквизитов от Трактора, включите «Режим Записи: Загрузка без проверок» запишите движения. Затем посмотрите через консоль запросов тип поля валюта в проводке станет Справочник.Валюты.ПустаяСсылка.

    Получилось?

    P.S. уточню, что ситуация была не на БП 3.0, а на ERP 2.4.8.98 и 2.4.7.151 и речь не о типах субконто, а именно об измерениях, учет по которым включается на счете. По субконто и правда надо правильно типы выбирать и все будет Ок, но эта история не про них.

    Reply
  15. Поручик

    Я говорю о том, что для универсальной обработки исправление неправильное.

    Reply
  16. Поручик

    обработки с Инфостарта — зло, когда их используют кривые руки

    Reply
  17. sapervodichka

    (16) исправление правильное, т.к. исправило ошибку.

    Reply
  18. Поручик

    Тогда это будет не универсальная обработка, так как в ней будут фигурировать конкретные справочники.

    Вы вообще прочитали всё, что я написал, или что было выгодно прочитать?

    Reply
  19. Поручик

    Обработка от Трактора признана одной из лучших на Инфостарте

    Reply
  20. sapervodichka

    (18) Прочитал и картинки приложил, смотрите. (вашими обработками постоянно пользуюсь, спасибо за их создание, но тут вы зря напали, т.к. ошибка есть в УРР и РБ.Хозрасчетный и ПланСчетов.Хозрасчетный универсальные объекты, универсально исправлены.)

    Reply
  21. sapervodichka

    (19) ни кто и не спорит я так в титрах и написал, что отличная вещь. Тем не менее факт нарушения проводок при ее использовании появился на практике.

    Reply
  22. sapervodichka

    (7) честно не совсем понимаю что от меня хотите, там запрос прямо в тексте публикации проверочный. Возьмите документ с проводками по БУ и сформируйте следующий запрос. На счете без признака валютный в поле валюта будет тип значения NULL (ставьте где хотите Неопределено, главное чтобы в итоге тип оставался NULL)

    ВЫБРАТЬ РАЗЛИЧНЫЕ

    ХозрасчетныйОбороты.Регистратор КАК Документ,

    ХозрасчетныйОбороты.Счет КАК Счет,

    ХозрасчетныйОбороты.Счет.Валютный КАК СчетВалютный,

    ТИПЗНАЧЕНИЯ(ХозрасчетныйОбороты.Валюта) КАК Тип_Валюта,

    ХозрасчетныйОбороты.Валюта КАК Валюта,

    ХозрасчетныйОбороты.Счет.УчетПоПодразделениям КАК СчетУчетПоПодразделениям,

    ТИПЗНАЧЕНИЯ(ХозрасчетныйОбороты.Подразделение) КАК Тип_Подразделение,

    ХозрасчетныйОбороты.Подразделение КАК Подразделение,

    ХозрасчетныйОбороты.Счет.УчетПоНаправлениямДеятельности КАК СчетУчетПоНаправлениямДеятельности,

    ТИПЗНАЧЕНИЯ(ХозрасчетныйОбороты.НаправлениеДеятельности) КАК Тип_НаправлениеДеятельности,

    ХозрасчетныйОбороты.НаправлениеДеятельности КАК НаправлениеДеятельности

    ИЗ

    РегистрБухгалтерии.Хозрасчетный.Обороты(

    &Дата1,

    &Дата2,

    Регистратор,

    ,

    ,

    ,

    ,

    ) КАК ХозрасчетныйОбороты

    ГДЕ

    ХозрасчетныйОбороты.Регистратор = &Регистратор

    Reply
  23. PLAstic

    (22) Да, думаю, он об этом. Что и в измерения надо при проведении документа ставить Неопределено. А NULL — он только в запросах бывает.

    Reply
  24. adhocprog

    Спасибо, полезная статья )

    Reply
  25. YannikAlx

    (22) Спасибо большое… Кое что открыл для себя!

    Reply
  26. YannikAlx

    (23) на самом деле такие присвоение

    =Неопределено

    =Null

    Сейчас равноценны, ибо приводят к одинаковому результату

    Reply
  27. Омский Домовой

    (18) Всегда найдутся умники которые умнее всех. Не превращайте этот форум в беспонтовую mista. Если есть что сказать по теме говорите если нет лучше промолчать.

    Reply
  28. human_new

    У меня не было такой ситуации, но есть подозрение, что тестирование и исправление исправляет эту ошибку, хотя вы пишите пересчёт итогов тут точно не поможет… комплексное тестирование как раз меняло значение субконто на верные. трабл в 1с известный

    Reply
  29. sapervodichka

    (28) ну тут не субконто, а измерения, и в комментарии № 9 я давал ответ по ТиИ

    Reply
  30. pvvpvv

    (0) Тема началась, как минимум в 2009. Что нового?

    Reply
  31. Award

    Добрый день,

    Тестирую на конфигурации: Бухгалтерия предприятия, редакция 3.0 (3.0.74.51).

    Получаю ошибку:

    {ВнешняяОбработка.ПравкаНаNULLВИзмеренияхХозрасчетныйПоКоторымНеВедетсяУчет.Форма.Форма.Форма(145)}: Ошибка при вызове метода контекста (Выполнить)

    Выборка = Запрос.Выполнить().Выбрать();

    по причине:

    {(31, 32)}: Неверные параметры «Справочник.СтруктураПредприятия.ПустаяСсылка»

    И Подразделение = ЗНАЧЕНИЕ(<<?>>Справочник.СтруктураПредприятия.ПустаяСсылка),

    Справочника СтруктрураПредприятия в БП 3.0 действительно нет (также как и справочника НаправленияДеятельности).

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

    Reply
  32. sapervodichka

    (31) спасибо, переслал вам обработку для БП личным сообщением. В публикацию также добавил для БП (тип подразделения изменил на БП-шный и убрал направление деятельности, которого нет в БП). Исходная ситуация была на ЕРП (поэтому типы ЕРП-шные), но по аналогии и в БП возможна..

    Reply
  33. Award

    (32) Спасибо. Работает.

    Reply

Leave a Comment

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