Добрый день. Прошу помочь с проблемой.
После свертки базы (делалась еще до меня) в регистре бухгалтерии появились записи с пустыми регистраторами. Выяснилось это после формирования отчета "Главная книга", т.к. из за этих записей не закрывается 000 счет.
Но дело в том, что в физической таблице "Регистр бухгалтерии" таких записей нет. Записи находятся в виртуальной таблице "ЕПСБУОстаткиИОбороты".(проверял в консоле).
Вопрос: Как это так?) И каким образом можно удалить эти записи?
После свертки базы (делалась еще до меня) в регистре бухгалтерии появились записи с пустыми регистраторами. Выяснилось это после формирования отчета "Главная книга", т.к. из за этих записей не закрывается 000 счет.
Но дело в том, что в физической таблице "Регистр бухгалтерии" таких записей нет. Записи находятся в виртуальной таблице "ЕПСБУОстаткиИОбороты".(проверял в консоле).
Вопрос: Как это так?) И каким образом можно удалить эти записи?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(7) motorkuzbassa.it, вроде бы уже качал сегодня. Она просто универсальна, но работает с регистрами накопления и сведений. Принцип работы через так же через набор записей, я ее переделал под бухгалтерский регистр, но увы, ошибка осталась та же("для записи не установлен регистратор...")
Тестирование и исправление делал, со всеми вариантами настроек. Как это сделать? Так еще есть сложность в том, что в физической таблице нет таких записей. Эти 2 записи нет и в виртуальной таблице ЕПСБУОстатки, а в ОстаткахИОборотах есть.
НаборЗаписей = РегистрыБухгалтерии.ЕПСБУ.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Значение = Документы.КорректировкаЗаписейРегистров.ПустаяСсылка();
Набор записей пуст, т.к. отбор по регистратору у набора записей происходит по физической таблице, но там нет записей с пустым регистратором.
Может ли быть ошибка в платформе? (по сути ошибка возникает в платформе, при формировании виртуальной таблица "ОстаткиИОбороты").
ПО: Бухгалтерия государственного учреждения, редакция 1.0 (1.0.20.5) и 1С:Предприятие 8.2 (8.2.17.153).
(12) aaudin90, (12) aaudin90, Вы уже сами ответили на свой вопрос:
"Может ли быть ошибка в платформе? (по сути ошибка возникает в платформе, при формировании виртуальной таблица "ОстаткиИОбороты"). "
Получается, что если до НачалоПериода или после КонецПериода - есть записи, то в виртуальную таблицу выводятся дополнительно итоговые строки. Имхо, это глюк.
Побороть можно условием
Регистратор <> Неопределено
"Может ли быть ошибка в платформе? (по сути ошибка возникает в платформе, при формировании виртуальной таблица "ОстаткиИОбороты"). "
Получается, что если до НачалоПериода или после КонецПериода - есть записи, то в виртуальную таблицу выводятся дополнительно итоговые строки. Имхо, это глюк.
Побороть можно условием
Регистратор <> Неопределено
Данный запрос возвращает 0 записей.
А этот 2:
ВЫБРАТЬ
ЕПСБУ.Регистратор,
ЕПСБУ.СчетДт,
ЕПСБУ.СчетКт
ИЗ
РегистрБухгалтерии.ЕПСБУ КАК ЕПСБУ
ГДЕ
(ЕПСБУ.Регистратор = НЕОПРЕДЕЛЕНО
ИЛИ ЕПСБУ.Регистратор ЕСТЬ NULL )
ПоказатьА этот 2:
ВЫБРАТЬ
ЕПСБУОстаткиИОбороты.Учреждение,
ЕПСБУОстаткиИОбороты.КВД,
ЕПСБУОстаткиИОбороты.Баланс,
ЕПСБУОстаткиИОбороты.СуммаКонечныйОстатокДт,
ЕПСБУОстаткиИОбороты.СуммаКонечныйОстатокКт,
ЕПСБУОстаткиИОбороты.Регистратор
ИЗ
РегистрБухгалтерии.ЕПСБУ.ОстаткиИОбороты(&н, &к, Регистратор, , , , КВД = &КВД) КАК ЕПСБУОстаткиИОбороты
ГДЕ
ЕПСБУОстаткиИОбороты.Счет = &Счет
И ЕПСБУОстаткиИОбороты.Регистратор = НЕОПРЕДЕЛЕНО
Показать
(23) deniseek77, База SQL. Она не выгружается, говорит мешает активное предприятие, хотя в активных пользователях ничего нет) Данная проблема тут давно говорят, но бэкапы отлично делаются методами SQL).
На счет НаборЗ = ....ВыбратьПоРегистратору() уже пытался. Подсовывал ему и неопределено и пустую ссылку. Запись формируется пустая и вылетает ошибка при записи набора.
На счет НаборЗ = ....ВыбратьПоРегистратору() уже пытался. Подсовывал ему и неопределено и пустую ссылку. Запись формируется пустая и вылетает ошибка при записи набора.
А если как то так? Я на БП писал, по аналогии переделайте
НаборЗаписей=РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Значение=Документы.РеализацияТоваровУслуг.ПустаяСсылка();
НаборЗаписей.Прочитать();
НаборЗаписей.Очистить();
НаборЗаписей.Записать();
Сорри, перечитал еще, так тоже пробовали...
НаборЗаписей=РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Значение=Документы.РеализацияТоваровУслуг.ПустаяСсылка();
НаборЗаписей.Прочитать();
НаборЗаписей.Очистить();
НаборЗаписей.Записать();
Сорри, перечитал еще, так тоже пробовали...
Проблема еще не решена :( Заметил закономерность в запросе :
Если убрать поле "Баланс", но запрос вернется пустым, тоесть по нему не будет остатков.
Получается этих записей нет и в виртуальной таблице, при некоторых условиях?
ВЫБРАТЬ
ЕПСБУОстаткиИОбороты.Регистратор,
ЕПСБУОстаткиИОбороты.Учреждение,
ЕПСБУОстаткиИОбороты.КВД,
ЕПСБУОстаткиИОбороты.КБК,
ЕПСБУОстаткиИОбороты.Валюта,
// ЕПСБУОстаткиИОбороты.Баланс,
ЕПСБУОстаткиИОбороты.СуммаКонечныйОстатокДт,
ЕПСБУОстаткиИОбороты.СуммаКонечныйОстатокКт
ИЗ
РегистрБухгалтерии.ЕПСБУ.ОстаткиИОбороты(&н, &к, Авто, , , , КВД = &КВД) КАК ЕПСБУОстаткиИОбороты
ГДЕ
ЕПСБУОстаткиИОбороты.Счет = &Счет
И ЕПСБУОстаткиИОбороты.Регистратор = НЕОПРЕДЕЛЕНО
ПоказатьЕсли убрать поле "Баланс", но запрос вернется пустым, тоесть по нему не будет остатков.
Получается этих записей нет и в виртуальной таблице, при некоторых условиях?
(47) aaudin90, если база SQL, и если данные зависли не в таблице движений, а в таблице остатков может быть попробовать удалить их непосредственно в SQL-ной базе?
Таблица остатков должна быть _AccTtl0<номер регистра>
Таблицы остатков и оборотов должны быть _AccTtl<кол-во субконто><номер регистра>
Таблица итогов оборотов между считами _AccTtlC<номер регистра>
По этим таблицам SQL и строятся виртуальные таблицы.
Толька естествено все на копии (а не на рабочей базе)!
Ну, может поможет
Таблица остатков должна быть _AccTtl0<номер регистра>
Таблицы остатков и оборотов должны быть _AccTtl<кол-во субконто><номер регистра>
Таблица итогов оборотов между считами _AccTtlC<номер регистра>
По этим таблицам SQL и строятся виртуальные таблицы.
Толька естествено все на копии (а не на рабочей базе)!
Ну, может поможет
(47) aaudin90, Вот что подумал, если в основной таблице битых записей нет, а в виртуальных таблицах они остались то можно выполнить полный пересчет итогов, платформа сама должна почистить таблицу остатков и оборотов:
РегистрыБухгалтерии.ЕПСБУ.ПересчитатьИтоги();
РегистрыБухгалтерии.ЕПСБУ.ПересчитатьИтоги();
(51) aaudin90, Сталкнулся с аналогичной проблемой вот как помогло:
Для вашего регистра будет как то так:
РегистрыБухгалтерии.ЕПСБУ.УстановитьИспользованиеИтогов(Ложь)
РегистрыБухгалтерии.ЕПСБУ.УстановитьИспользованиеТекущихИтогов(Ложь);
РегистрыБухгалтерии.ЕПСБУ.УстановитьИспользованиеИтогов(Истина);
РегистрыБухгалтерии.ЕПСБУ.УстановитьИспользованиеТекущихИтогов(Истина);
РегистрыБухгалтерии.ЕПСБУ.УстановитьПериодРассчитанныхИтогов(КонецМесяца(РабочаяДата));
Для вашего регистра будет как то так:
РегистрыБухгалтерии.ЕПСБУ.УстановитьИспользованиеИтогов(Ложь)
РегистрыБухгалтерии.ЕПСБУ.УстановитьИспользованиеТекущихИтогов(Ложь);
РегистрыБухгалтерии.ЕПСБУ.УстановитьИспользованиеИтогов(Истина);
РегистрыБухгалтерии.ЕПСБУ.УстановитьИспользованиеТекущихИтогов(Истина);
РегистрыБухгалтерии.ЕПСБУ.УстановитьПериодРассчитанныхИтогов(КонецМесяца(РабочаяДата));
(53) aaudin90, Ну тогда остаётся более жёсткий метод, если запрос:
ВЫБРАТЬ
ЕПСБУ.Регистратор
ИЗ
РегистрБухгалтерии.ЕПСБУ КАК ЕПСБУ
ГДЕ
ЕПСБУ.Регистратор.Ссылка ЕСТЬ NULL
ничего не возвращяет, тогда делаем следующее:
сперва:
РегистрыБухгалтерии.ЕПСБУ.УстановитьИспользованиеИтогов(Ложь)
РегистрыБухгалтерии.ЕПСБУ.УстановитьИспользованиеТекущихИтогов(Ложь);
потом удаляем записи как писал (48)Ягг, и только потом:
РегистрыБухгалтерии.ЕПСБУ.УстановитьИспользованиеИтогов(Истина);
РегистрыБухгалтерии.ЕПСБУ.УстановитьИспользованиеТекущихИтогов(Истина);
РегистрыБухгалтерии.ЕПСБУ.УстановитьПериодРассчитанныхИтогов(КонецМесяца(РабочаяДата));
Пробуйте сначала на копии, после удаления записей в вритуальных таблицах метод УстановитьПериодРассчитанныхИтогов(КонецМесяца(РабочаяДата)) должен создать итоги заново.
ВЫБРАТЬ
ЕПСБУ.Регистратор
ИЗ
РегистрБухгалтерии.ЕПСБУ КАК ЕПСБУ
ГДЕ
ЕПСБУ.Регистратор.Ссылка ЕСТЬ NULL
ничего не возвращяет, тогда делаем следующее:
сперва:
РегистрыБухгалтерии.ЕПСБУ.УстановитьИспользованиеИтогов(Ложь)
РегистрыБухгалтерии.ЕПСБУ.УстановитьИспользованиеТекущихИтогов(Ложь);
потом удаляем записи как писал (48)Ягг, и только потом:
РегистрыБухгалтерии.ЕПСБУ.УстановитьИспользованиеИтогов(Истина);
РегистрыБухгалтерии.ЕПСБУ.УстановитьИспользованиеТекущихИтогов(Истина);
РегистрыБухгалтерии.ЕПСБУ.УстановитьПериодРассчитанныхИтогов(КонецМесяца(РабочаяДата));
Пробуйте сначала на копии, после удаления записей в вритуальных таблицах метод УстановитьПериодРассчитанныхИтогов(КонецМесяца(РабочаяДата)) должен создать итоги заново.
Мне кажется, если делалось тестирование и исправление со всеми галочкам и (а они включают и пересчет итогов и реструкторизацию таблиц и т.д.), то ни специальным пересчетом ни включением выключеним итогов проблему не решить. Смотрите физические таблицы остатков.
Для истории
Может кому пригодится
У меня выводилось начальное сальдо на любой начальный период
Сделал следующий код и все стало ок:
РегистрыБухгалтерии.МеждународныйУпрощенный.УстановитьИспользованиеИтогов(Ложь);
РегистрыБухгалтерии.МеждународныйУпрощенный.УстановитьИспользованиеТекущихИтогов(Ложь);
РегистрыБухгалтерии.МеждународныйУпрощенный.УстановитьИспользованиеИтогов(Истина);
РегистрыБухгалтерии.МеждународныйУпрощенный.УстановитьИспользованиеТекущихИтогов(Истина);
РегистрыБухгалтерии.МеждународныйУпрощенный.ПересчитатьИтоги();
Может кому пригодится
У меня выводилось начальное сальдо на любой начальный период
Сделал следующий код и все стало ок:
РегистрыБухгалтерии.МеждународныйУпрощенный.УстановитьИспользованиеИтогов(Ложь);
РегистрыБухгалтерии.МеждународныйУпрощенный.УстановитьИспользованиеТекущихИтогов(Ложь);
РегистрыБухгалтерии.МеждународныйУпрощенный.УстановитьИспользованиеИтогов(Истина);
РегистрыБухгалтерии.МеждународныйУпрощенный.УстановитьИспользованиеТекущихИтогов(Истина);
РегистрыБухгалтерии.МеждународныйУпрощенный.ПересчитатьИтоги();
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот