Проверка актуальности итогов регистров накоплений

11.12.18

Задачи пользователя - Корректировка данных

Иногда возникают ситуации, когда с остатками происходит что-то непонятное. Остаток на начало + Оборот != Остаток на конец. После пересчета итогов проблема уходит. Но как узнать вовремя, что что-то не так?

Файлы

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

Наименование Скачано Купить файл
Проверка актуальности итогов регистров накоплений:
.epf 5,03Kb
32 1 850 руб. Купить

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

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

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

Если пересчет итогов не занимает много времени, то можно просто время от времени пересчитывать итоги.

А вот если пересчет итогов по одному регистру занимает несколько часов, то уже возникает вопрос, как же быть уверенным, что с итогами все нормально.

Для себя закрыл вопрос написав обработку и включив ее в регламент. Теперь каждую ночь обработка проверяет регистры накопления и шлет письмо, если что-то не так.

Как работает? Сверяет обороты по с периодичностью "запись" с оборотами без периодичности. Проверяет последний год от текущей даты. Проверяет все регистры накоплений.

Механизм проверки выглядит так:

	Для Каждого Рег Из Метаданные.РегистрыНакопления Цикл 
		
		ТекстЗапроса = 
		"ВЫБРАТЬ
		|	РегОбороты.Измерение,
		|	СУММА(РегОбороты.Ресурс) КАК РесурсПериод,
		|	0 КАК Ресурс
		|ПОМЕСТИТЬ ТаблицаДанных
		|ИЗ
		|	РегистрНакопления.ИмяРегистра.Обороты(&D1, &D2, Запись, ) КАК РегОбороты
		|
		|СГРУППИРОВАТЬ ПО
		|	РегОбороты.Измерение
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	РегОбороты.Измерение,
		|	0,
		|	СУММА(РегОбороты.Ресурс)
		|ИЗ
		|	РегистрНакопления.ИмяРегистра.Обороты(&D1, &D2, , ) КАК РегОбороты
		|
		|СГРУППИРОВАТЬ ПО
		|	РегОбороты.Измерение
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ТаблицаДанных.Измерение,
		|	СУММА(ТаблицаДанных.РесурсПериод) КАК РесурсПериод,
		|	СУММА(ТаблицаДанных.Ресурс) КАК Ресурс
		|ПОМЕСТИТЬ ТаблицаДанныхГрупп
		|ИЗ
		|	ТаблицаДанных КАК ТаблицаДанных
		|
		|СГРУППИРОВАТЬ ПО
		|	ТаблицаДанных.Измерение
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ТаблицаДанныхГрупп.Измерение,
		|	ТаблицаДанныхГрупп.РесурсПериод,
		|	ТаблицаДанныхГрупп.Ресурс
		|ИЗ
		|	ТаблицаДанныхГрупп КАК ТаблицаДанныхГрупп
		|ГДЕ
		|	ТаблицаДанныхГрупп.Ресурс <> ТаблицаДанныхГрупп.РесурсПериод
		|";
		
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Измерение", Рег.Измерения[0].Имя);
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Ресурс", "" + Рег.Ресурсы[0].Имя + "Оборот");
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ИмяРегистра", Рег.Имя);

Если есть проблема по какому-то регистру, пересчитываем этот регистр:

РегистрыНакопления[ИмяРег].ПересчитатьИтоги()

P.S. Обработка протестирована на релизе 1С:Предприятие 8.2 (8.2.19.130). Должна работать на любых релизах 8.2-8.3.

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

См. также

Корректировка данных Системный администратор Программист 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Незаменимая обработка для сопровождения конфигураций: ERP, УТ, КА. Позволяет вычистить многие ошибки в ключах аналитики, в ключевых справочниках конфигурации.

3600 руб.

10.02.2017    116386    702    176    

742

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

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    39751    120    152    

83

Взаиморасчеты Корректировка данных Бухгалтер Пользователь 1С v8.3 1C:Бухгалтерия Бухгалтерский учет Управленческий учет Платные (руб)

Вы наконец разобрались с закрытием месяцев и пора начать контролировать сроки оплаты поставщикам и задолженности клиентов, но в базе расчеты не идут из-за развернутого сальдо? Не беда, есть решение!

12000 руб.

02.11.2020    8600    6    3    

9

Закрытие периода Корректировка данных Программист Пользователь 1С v8.3 Система компоновки данных 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Внешняя обработка, позволяющая произвольным образом заполнять документ "Корректировка регистров" Предназначена для использования в конфигурациях "Управление торговлей 11", "Управление небольшой фирмой", "ERP Управление предприятием", а также в других конфигурациях, в состав которых входит библиотека стандартных подсистем (БСП) версии 2.2+ и указанный выше документ.

5000 руб.

13.07.2015    53020    182    29    

134

Ценообразование, анализ цен Корректировка данных 1С v8.3 1С:Управление торговлей 11 Платные (руб)

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

5000 руб.

07.05.2025    872    1    0    

2

Загрузка и выгрузка в Excel Корректировка данных Пользователь 1С v8.3 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Обработка для группового редактирования реквизитов номенклатуры в 1С для УТ 11 / КА 2. Позволяет редактировать реквизиты (как основные, так и дополнительные реквизиты и сведения) непосредственно в таблице, устанавливать новые значения реквизитов на выбранную номенклатуру, а также загружать новые значения из Excel. Предусмотрена возможность добавления фото к товарам перетаскиванием файла из проводника на строку с товаром (drag'n'drop)

4200 руб.

16.11.2020    18689    13    6    

12

Печатные формы Корректировка данных Учет документов 1С v8.3 1C:Бухгалтерия 1С:Управление нашей фирмой 3.0

Данная обработка позволяет работать со справками об оплате медицинских услуг в любой конфигурации 1С 8.3 Решение выполнено в виде внешней обработки, поэтому будет работать так же на базовых версиях конфигураций 1С, где нет возможности добавить расширение.

3600 руб.

28.01.2025    1295    0    0    

3

Корректировка данных Бухгалтер 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Налоговый учет Налог на прибыль Платные (руб)

Обработка служит для: выравнивания бухгалтерского и налогового учета на определенную дату по выбранным счетам; закрытия остатков по выбранным счетам; обнуления налогового учета (ПР, ВР также будут обнулены)

2880 руб.

05.05.2024    1628    16    0    

12
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. PerlAmutor 160 12.12.18 20:20 Сейчас в теме
Задумался сегодня на эту тему, попробовал реализовать свой вариант "на коленке" и вот что немного смутило в процессе.

Рег.Ресурсы[0].Имя


Тут мы берем первый попавшийся ресурс регистра накопления. С одной стороны это быстро и голову ломать не нужно. А с другой стороны, это может быть ресурс, который просто напросто не используется прикладным решением исходя из настроек какой-нибудь функциональной опции и всегда имеет значение 0. В то время как ошибка может засесть в других ресурсах того же самого регистра.
3. dmt 69 13.12.18 04:42 Сейчас в теме
(1) Гм. С новыми конфигурациями слабо знаком. Там такое действительно есть? Можно пример? Или это теория?
5. PerlAmutor 160 13.12.18 05:54 Сейчас в теме
(3) Теория. Но если брать на вскидку такой ресурс как СтоимостьНУ. То у нас в базе, например, налоговый учет не ведется и этот ресурс всегда 0.
7. dmt 69 13.12.18 06:24 Сейчас в теме
(5)
) Теория. Но если брать на вскидку такой ресурс как СтоимостьНУ. То у нас в базе, например, налоговый учет не ведется и этот ресурс всегда 0.


Понятно. Если еще кто-нибудь из коллег присоединится к мнению, что такая проблема существенна, перепишу обработку.
2. CheBurator 3231 12.12.18 23:54 Сейчас в теме
Костыль.
Понятно, что с костылем кловылять всяко лучше чем без костыля, но хотелось бы не допускать травматизма.
То бишь - причины такого разбегания в чем? как устранить эти причины?
4. dmt 69 13.12.18 04:45 Сейчас в теме
(2) Самому интересно. Ходят слухи, что это связанно с демоническим обновлением, но я не верю.
6. PerlAmutor 160 13.12.18 06:00 Сейчас в теме
(2) Причины практически те же, что и в случаях, когда в базе появляются объекты с одинаковым GUIDом из-за обмена или переноса данных. Когда проведенный документ не имеет движений там где они быть должны. Когда непроведенный документ имеет движения. Когда помеченный на удаление документ имеет движения. Когда в подчиненных справочниках появляются элементы без владельца.

В 1С гарантий нет ни от чего. С кривыми итогами встречаюсь периодически в своей базе. Раньше раз в неделю делал реструктуризацию базы вручную, бонусом и итоги пересчитывались и фрагментация таблиц снижалась. Теперь такая возможность пропала. Позавчера включал пересчет итогов, так как отчеты стали врать. Помогло. В БСП не обнаружил регламентных заданий по пересчету итогов.
8. CheBurator 3231 14.12.18 02:53 Сейчас в теме
(6) "когда в базе появляются объекты с одинаковым GUIDом из-за обмена или переноса данных."
- ну это еще, допустим, чисто технологическая заморочка, совпадение гуидов еще может быть вроде как, 100% гарантии здесь нет

"Когда проведенный документ не имеет движений там где они быть должны. Когда непроведенный документ имеет движения. Когда помеченный на удаление документ имеет движения. Когда в подчиненных справочниках появляются элементы без владельца."
- это следствие чего-то? кривого кода? сбоя в механизмах платформы? насколько мне известно - технологически в 8-ке совсем не запрещено иметь движения у непроведенных документов.. и у помеченных на удаление... Так в результате чего такие "нестыковки"..?
9. PerlAmutor 160 14.12.18 06:06 Сейчас в теме
(8)
Так в результате чего такие "нестыковки"..?


ОбменДанными.Загрузка = Истина;
10. dmt 69 14.12.18 06:21 Сейчас в теме
(6), (8), (9) Что-то вы намешали, коллеги.
Проблемы с итогами, это ИМХО, проблемы платформы.
Проблемы с кодом "ОбменДанными.Загрузка = Истина" это уже проблемы конфигурации и/или программиста.

На самом деле, не все так плохо с 8-кой. На нормально обслуживаемой базе, с нормальным железом, проблемы типа (0) происходят довольно редко. Я даже и не помню когда была предыдущая подобная ситуация, год или два назад.
Самое-то неприятное, что проблему обычно выявляют пользователи, через какой-то промежуток времени после возникновения ситуации. И тогда:
1. Непонятно когда вообще наступил час Х.
2. Если это было несколько дней назад, трудно вспомнить, что же именно могло привести к беде.
11. aegoncharov 14.12.18 11:47 Сейчас в теме
Я что-то не понял... Виртуальная таблица "Обороты" для регистров типа "Остатки" вроде как читает только таблицу реальных записей, то есть никакие таблицы итогов не читаются в принципе, и результат от сбитых итогов не может зависеть. Эта обработка что ли только для оборотных регистров?

Цитата из книги:
Алгоритм, применяемый системой для получения оборотов регистра накопления остатков.
Для построения виртуальной таблицы оборотов регистра накопления остатков всегда используются данные таблицы движений регистра (из базы данных).
12. dmt 69 14.12.18 12:07 Сейчас в теме
(11) Хм. Похоже на то.

Словил проблему на РП "Продажи". Написал (0) для проверки результата. Поймал проблему еще на одном (самописном) оборотном регистре...

Косяк. Ввел коллег в заблуждение.
13. aegoncharov 14.12.18 12:18 Сейчас в теме
Вообще, конечно, идея хорошая, сам недавно нарвался на базе заказчика на сбитые итоги. Сначала по регистру бухгалтерии, причем у них около пяти месяцев была эта проблема и они в оборотках видели нереальные остатки, и закрывали счета исходя из неверных остатков. Пересчет итогов привел к тому, что в оборотках изменились остатки по закрытым периодам (то есть отразились реальные остатки), счета 26, 20, 40 раскрылись, в общем ужас-ужас. Потом, там же, нарвался на слетевшие итоги в регистре УчетЗатратРегл. Полный пересчет итогов, конечно, помог, но надежный инструмент диагностики для быстрого выявления проблем хотелось бы иметь.
14. aegoncharov 14.12.18 12:22 Сейчас в теме
Причем по регистру бухгалтерии сбитые итоги выглядели так: видимо был какой-то документ с проводками, эти проводки были учтены в таблицах итогов, потом сам документ с проводками пропал, а в таблицах итогах все осталось как с этими проводками.
При этом вроде бы запись записей в регистр и апдейт таблиц итогов должен же быть в одной транзакции, как сбой происходит, ума не приложу. MS SQL.
15. dmt 69 14.12.18 12:27 Сейчас в теме
(14) О, я правильно понял? Если грохнуть документ на SQL, не трогая движения, и потом прогнать (0), если покажет различия, то механизм годный?
16. aegoncharov 14.12.18 12:32 Сейчас в теме
(15) Если движения и таблицу итогов не трогать, то итоги продолжат соответствовать движениям, то есть с итогами как таковыми все нормально будет.
Чтобы создать проблему, нужно в MSSQL зайти в таблицу итогов и поправить там циферки, вот тогда будет проблема и можно тестировать обработку.
17. dmt 69 14.12.18 12:44 Сейчас в теме
(16) Тогда этого немного долго проверять.
18. Franchiser 47 06.07.24 20:24 Сейчас в теме
Обработка проверяет корректность остатков? Что с чем сверяется ?
Для отправки сообщения требуется регистрация/авторизация