Детализация до регистратора 1с что это
Детективная история
Сразу покажу на небольшом примере почему это так важно.
Пусть у нас есть начисление заработной платы за январь:
В начале февраля мы создаём ведомость на выплату зарплаты из кассы и нажимаем кнопку "Заполнить":
И получаем следующее:
Но ведь за январь:
- Начисление 50 000 рублей
- НДФЛ 6 500 рублей
- Итого к выплате 43 500 рублей
Где закралась ошибка? Что пошло не так? Неужели теперь всегда вводить сумму к выплате вручную?
Опытный бухгалтер тут же сделает оборотно-сальдовую ведомость по 70 счёту:
И будет в ещё большем недоумении, потому что по данным отчёта к выплате выходят всё те же 43 500! И откуда же взялись лишние 5 000 рублей?
Причём такая ситуация (с любыми расчётами) может произойти как в "тройке", так и в "двойке".
Сегодня я попытаюсь приоткрыть завесу тайны - почему же иногда программа ведёт себя так странно. Я расскажу как в таких случаях находить и устранять ошибку. Ближе к концу статьи мы разберёмся - откуда же взялись эти самые 5 000 рублей.
Учимся видеть регистры
При проведении документов 1С:Бухгалтерия 8 делает проводки по бухгалтерским счетам (кнопка ДтКт у любого документа):
Именно на основании этих проводок строятся все бухгалтерские отчёты: Анализ счёта, Карточка счёта, Оборотно-сальдовая ведомость.
Но есть огромный пласт данных, которые пишутся программой параллельно с проводками и используются для всего остального: заполнение КУДИР, книги покупок и продаж, регламентированной отчётности. заработной платы к выплате, наконец
Как вы уже, наверное, догадались этот пласт называется регистрами, вот он:
Я сейчас не буду вдаваться в подробности описания самих регистров, чтобы не запутать вас ещё больше.
Скажу лишь, что нам просто жизненно необходимо постепенно учиться "видеть" движения по этим регистрам, чтобы лучше понимать и, когда надо, корректировать поведение программы.
Давайте присмотримся к регистру "Зарплата к выплате" - именно он имеет смысл для решения нашей проблемы с лишними 5 000:
Мы видим две записи по этому регистру, сделанные в приход, то есть в плюс. Если пролистать экран в право, то мы увидим в первой строчке сумму к выплате "-6 500", а во второй "50 000".
Остаток по этому регистру -6 500 + 50 000 равен 43 500, который и должен попасть в документ "Ведомость на выплату из кассы", когда мы нажимаем на кнопку "Заполнить".
Ещё раз повторюсь - ведомость на выплату определяет нашу задолженность по заработной плате перед сотрудником не по 70 счёту, а по регистру "Зарплата к выплате" .
Получается мы знаем, что зарплата к выплате заполняется на основании этого регистра, но даже видя записи регистра не можем понять что не так.
Скорее всего мы не видим всей картины (может быть существуют другие записи по этому регистру) и напрашивается некий инструмент для анализа регистра подобный бухгалтерским отчётам.
Учимся анализировать регистры
И такой инструмент есть, он называется "Универсальный отчёт".
Переходим в раздел "Отчеты" пункт "Универсальный отчёт":
Выбираем тип регистра "Регистр накопления", регистр "Зарплата к выплате" и нажимаем кнопку "Сформировать":
Получилось не очень информативно:
Всё потому, что требуется предварительная настройка отчёта, нажимаем кнопку "Показать настройки" и на закладке "Группировка" добавляем поле "Сотрудник":
На закладке "Отборы" делаем отбор по нашей организации:
Нажимаем кнопку "Сформировать":
Вот это уже более интересно. Видим остаток к выплате нашему сотруднику те самые 48 500 рублей!
Снова заходим в настройки отчёта и добавляем на закладку "Показатели" новое поле "Регистратор":
Снова формируем отчёт:
Вот теперь мы прекрасно видим, что 5 000 появились как результат операции (видимо ввода остатков) 31 декабря 2014 года.
И нам нужно либо изменить эту операцию, либо вручную откорректировать регистр "Зарплата к выплате" и закрыть эти 5 000 рублей, например, 31 декабря 2015 года.
Давайте пойдём вторым путём. Итак, наша задача - сделать так, чтобы на начало 2016 года по регистру "Зарплата к выплате" не было нашей задолженности перед сотрудником.
Это делается ручной операцией.
Учимся корректировать регистры
Заходим в раздел "Операции" пункт "Операции, введенные вручную":
Создаём новую операцию концом 2015 года:
Из меню "Ещё" выбираем пункт "Выбор регистров. ":
Указываем регистр "Зарплата к выплате" и нажимаем ОК:
Переходим на появившуюся закладку регистра и делаем расход на 5 000 рублей:
Этим самым мы как бы отнимаем от регистра 5 000 рублей по сотруднику, чтобы выйти на ноль к началу 2016 года.
Проводим операцию и заново формируем универсальный отчёт:
Всё получилось! Видим, что наша ручная операция от 31.12.2015 вывела остаток в ноль и зарплата к выплате после начисления равна ожидаемым 43 500.
Замечательно. И сейчас мы проверим это в ведомости на выплату.
Но прежде я хочу обратить ваше внимание на ещё один важный момент:
Обратите внимание, что остатки на начало и на конец по группировке "Сотрудник" показывают ерунду. Это никакая не ошибка, это нюанс, который нужно учитывать, связанный с архитектурными особенностями 1с.
Запомните. В том случае, если универсальный отчёт выводится с детализацией до документа (регистратора) - остатки по группировкам будут показывать ерунду.
Если нам требуются остатки по группировке сотрудник - нужно сначала удалить из настроек добавленный нами показатель "Регистратор":
И только потом формировать отчёт:
Сейчас остатки показаны корректно.
Результат
Напоследок убедимся, что мы сделали всё правильно. Снова заходим в ведомость на выплату заработной платы за январь и нажимаем кнопку "Заполнить":
Мы молодцы, на этом пока всё
Кстати, подписывайтесь на новые уроки.
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Использование Журнала регистрации
Область применения: управляемое приложение, обычное приложение.
1. Журнал регистрации предназначен для хранения событий, возникающих в процессе работы пользователей с информационной базой. При администрировании эту информацию часто необходимо анализировать в различных разрезах для того, чтобы например, узнать какие события происходили в определенный момент времени, какие действия выполнял тот или иной пользователь.
2. Рекомендуется производить запись в Журнал регистрации из встроенного языка в тех случаях, когда администратору необходимо сообщить дополнительную диагностическую информацию о событиях, которые не записываются платформой 1С:Предприятие . Такая необходимость может возникнуть как при выполнении бизнес-логики, вызываемой при интерактивной работе, так и в фоновых (регламентных) заданиях. Для удобства анализа Журнала регистрации одна его запись должна соответствовать одному событию, а сами записи должны содержать ряд обязательных атрибутов, в разрезе которых проводится анализ.
2.1. Строковый идентификатор типа события. Как правило, список типов событий в конфигурации может быть сколь угодно большим, поэтому типы событий рекомендуется группировать по функциональному признаку: «Название группы событий.Название события». Например, правильно записывать события с типами «Поручения.Уведомление о новых задачах» и «Поручения.Уведомление о зависших задачах» вместо двух «плоских» типов событий «Уведомление о новых задачах» и «Уведомление о зависших задачах». Текст типа события – локализуем, при этом всегда задается основной язык конфигурации.
2.3. Комментарий. Содержит текстовую неструктурированную информацию о событии. В случае ошибок в этом поле содержится информация, необходимая для расследования причины проблемы. Не следует помещать в комментарий информацию сразу о нескольких событиях. Например, неправильно записывать одно событие с комментарием вида:
[01.01.2010 00:00:01] Начало инициализации обмена данными по настройке "Обмен данными выгрузка", номер строки настройки: 1
[01.01.2010 00:00:02] Окончание инициализации обмена данными (успешно)
[01.01.2010 00:00:03] Начало процесса обмена данными по настройке "Обмен данными выгрузка", номер строки настройки: 1
[01.01.2010 00:00:04] Начало записи изменений в файл обмена
[01.01.2010 00:00:05] Окончание записи изменений в файл обмена (успешно)
[01.01.2010 00:00:06] Окончание процесса обмена данными по настройке "Обмен данными выгрузка", номер строки настройки: 1
[01.01.2010 00:00:07] Выполнено, Выгрузка данных, Обработано 1 объектов
правильно записать столько событий, сколько их реально произошло.
Текст комментария – локализуем. Для записи в Журнал регистрации информации о возникшем исключении следует использовать конструкцию:
Пример регистрации дополнительных событий в функциональной подсистеме «Мой механизм»:
Попытка
ЗаписьЖурналаРегистрации(НСтр("ru = 'Мой механизм.Действие с возможной ошибкой'", КодОсновногоЯзыка),
УровеньЖурналаРегистрации.Информация, , ,
НСтр("ru = 'Начато действие'"));
ДействиеСВозможнойОшибкой(ОбъектДействия);
ЗаписьЖурналаРегистрации(НСтр("ru = 'Мой механизм.Действие с возможной ошибкой'", КодОсновногоЯзыка),
УровеньЖурналаРегистрации.Информация, , ,
НСтр("ru = 'Завершено действие'");
Исключение
ЗаписьЖурналаРегистрации(НСтр("ru = 'Мой механизм.Действие с возможной ошибкой'", КодОсновногоЯзыка),
УровеньЖурналаРегистрации.Ошибка, , ,
НСтр("ru = '"Во время выполнения действия произошла неизвестная ошибка.'") + Символы.ПС +
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;
КонецПроцедуры
где переменная КодОсновногоЯзыка содержит код языка для хранения данных в информационной базе. Подробнее см. Автогенерированные данные в информационной базе: требования по локализации, п. 1.
3. Не следует использовать выборку из журнала регистрации в тех задачах, где критична высокая скорость выполнения выборки. Поскольку при больших объемах журнала регистрации скорость выборки падает пропорционально увеличению его объема.
Рекомендуется заводить отдельный регистр для протоколирования интересующих событий или обращаться к специализированным объектам платформы (например, МенеджерФоновыхЗаданий для выборки истории выполнения фоновых заданий).
Эту особенность нужно также учитывать при разработке отчетов по журналу регистрации.
Читайте также: