THE BELL

Есть те, кто прочитали эту новость раньше вас.
Подпишитесь, чтобы получать статьи свежими.
Email
Имя
Фамилия
Как вы хотите читать The Bell
Без спама

В данной статье я расскажу вам про функцию быстрого поиска 1С Предприятие 8. Что такое быстрый поиск? Очень просто. Быстрый поиск — это один из способов навигации в больших списках записей 1С. Это могут быть списки документов, справочники , регистры — все то, что представлено таблицами.

Что такое быстрый поиск?

Функция быстрого поиска в документах 1С Предприятие чрезвычайно удобна и позволяет не пролистывать огромные массивы данных (к примеру, с помощью полосы прокрутки), а сразу перейти к нужному месту в списке. К сожалению, начинающие пользователи 1С Предприятие 8 (в том числе и 1С Бухгалтерии 8) поначалу не используют возможности быстрого поиска, предпочитая листать списки документов вручную (а они могут быть очень большими). Данная статья поможет вам разобраться с использованием быстрого поиска в 1С.

Прежде всего следует заметить, что в конфигурациях 1С Предприятие 8, построенных на управляемых формах , быстрый поиск работает иначе, чем в предыдущих версиях 1С. Поэтому разберем отдельно использование быстрого поиска в управляемых формах и в обычных.

Быстрый поиск в 1С Бухгалтерии 8.2

В версиях 1С Бухгалтерии с 8.0 по 8.2 функция предназначена именно для перехода к нужной части списка. Для примера посмотрите на окно плана счетов , приведённое на рисунке.


В окне выделена некоторая строка. Обратите внимание малозаметный треугольник из полосок, на который указывает красная стрелка. Как и в других программах Windows, где есть списки (например, в Проводнике), положение этого маркера (треугольника) определяет сортировку списка в целом — в какой колонке установлен маркер, по той и будет отсортирован весь список. На рисунке маркер стоит в колонке Код , следовательно счета в плане счетов будут отсортированы по коду.

Маркер можно перемещать с одной колонки на другую, щёлкая на нужной колонке (на ЗАГОЛОВКЕ колонки! ) мышкой. Если маркер и так уже стоит в текущей колонке, то щелчок приведет к изменению направления сортировки на противоположное (т.е. от большего к меньшему или наоборот). Это стандартное поведение для любых программ Windows. В чем же особенность этого маркера в 1С Предприятии и как это связано с быстрым поиском?

Быстрый поиск в списках 1С Предприятие 8 осуществляется по колонке, в которой стоит маркер. В данном случае быстрый поиск в плане счетов будет осуществляться по колонке Код.

Тут была важная часть статьи, но без JavaScript её не видно!

Как пользоваться быстрым поиском в 1С? Легко! Просто начните печатать то, что хотите найти в ДАННОЙ колонке , т.е. там, где стоит маркер. В примере на рисунке выше следует вводить номер счета. Например, вы хотите найти счет 50 Касса . В таком случае введите (мышкой щелкать никуда не нужно! ) число 50 с клавиатуры и если в данной колонке есть счет с таким номером (а он, конечно, есть), то список прокрутится до этой строки, а сама строка окажется выделенной. Результат показан на скриншоте плана счетов ниже.

сайт_

Текст, на который указывает стрелка, стирать потом не нужно — он сам исчезнет.

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

В 1С Предприятии 8 быстрый поиск производится по началу строки, т.е. в колонке ищется совпадение вводимого текста с началом одной из строк этой колонки.
Отсюда вытекает важная рекомендация: при вводе данных в справочники именуйте элементы так, чтобы их было удобно искать при помощи быстрого поиска. Например, название контрагента лучше писать как "ИмяФирмы ООО", чем "ООО ИмяФирмы". И тем более не стоит использовать в названии кавычки и прочие ненужные символы (речь идет о заполнении поля Наименование в формах).

Если вы начали вводить текст, а он стирается — то, что вы ищете, отсутствует в данной колонке! В этом случае проверьте язык ввода, а также колонку в которой производится быстрый поиск. Типичная ошибка — выбрана не та колонка. Например, маркер установлен в колонке Код, а поиск производится по названию счета.

Быстрый поиск в 1С Бухгалтерии 8.3

Теперь посмотрим, чем отличается быстрый поиск в версии 1С Предприятие 8.3 . Использование во многом схоже с версией 8.2, однако есть одно существенное отличие, которое следует запомнить.

В 1С Бухгалтерии 8.3, а также в любых других конфигурациях на управляемых формах (тот самый новый интерфейс), работает как фильтр. Проще говоря, в результате работы функции быстрого поиска часть списка скрывается .

Как этим пользоваться, мы с вами сейчас выясним. Для начала посмотрите на скриншот окна плана счетов 1С Бухгалтерии 8.3, приведенный ниже.

сайт_

Как видите, тот же самый маркер в одной из колонок. Поиск так же производится по колонке, в которой установлен маркер. Это всё осталось без изменений. Однако, если начать вводить текст (в примере - номер счета), то произойдет следующее.

сайт_

Как видите, просто автоматически открылось окно поиска. Такое же точно окно откроется, если нажать на кнопку поиска на панели инструментов окна (на рисунке подчеркнута). В результате при нажатии в окне поиска кнопки Найти (на картинке скрыта за выпадающим меню) или просто Enter, то получиться следующий результат.

сайт_

Отсюда видно, что быстрый поиск в 1С Бухгалтерии 8.3 просто оставляет видимой часть списка, удовлетворяющую условиям поиска. При этом кнопка Найти пропадает, а вместо неё появляется линза с крестиком (на рис. подчеркнута), при нажатии на которую список возвращается в исходное состояние (при этом остаётся выделена строка, найденная в результате быстрого поиска).

Еще одна важная особенность быстрого поиска в 1С Бухгалтерии 8.3 — совпадение ищется не по началу строки, как в версии 8.2, а производится поиск на совпадение с любой частью строк в колонке. Таким образом, если контрагента назвать "ООО ИмяФирмы", а при поиске начать вводить "ИмяФирмы ООО", то строка все равно найдется!

Делаем выводы

Таким образом, быстрый поиск в 1С Бухгалтерии 8.2 и более ранних версиях предназначается для прокрутки списка к нужной строке, а в 1С Бухгалтерии 8.3 быстрый поиск работает как обычный фильтр, скрывая ненужную вам часть списка.

Меня зовут Павел Баркетов, я работаю в компании «Софтпоинт». Мы уже более 10 лет занимаемся решением задач оптимизации производительности. И несмотря на большое количество решенных задач, их количество не уменьшается, а растет в геометрической прогрессии. Объемы данных увеличиваются, и задачи по оптимизации работы с этими данными усложняются. Этот процесс неизбежен.

Тема статьи - нетривиальные подходы к оптимизации . Будут рассмотрены два аспекта :

  • Первый - поиск по подстроке . Пользователи часто его используют, и многие, наверное, уже сталкивались со значительным ожиданием, поиск по подстроке выполняется недостаточно быстро.
  • Второй - проведение больших документов , таких, как закрытие месяца, расчет себестоимости. Наверняка многие сталкивались с тем, что бухгалтеры проводят эти документы по 5-9 часов, ночью и в нерабочее время. Самое интересное, что классические методы оптимизации здесь не всегда помогают. Если вы при проведении таких документов запустите в отладчике замер производительности, то увидите, что наибольшее количество времени тратится на запись во временные или реальные структуры - таблицы, регистры и т.д. И решить эту задачу классическими методами не получается.

Поиск по подстроке

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

Поиск по начальным символам

Начну с первого примера, когда поиск осуществляется по начальным символам. Это - частный случай поиска по подстроке, когда пользователь точно знает, что искомое значение начинается с определенных символов.

Поиск по начальным символам реализуется в 1С с помощью команды ПОДОБНО (или в английском варианте, LIKE) с указанием значения с «%» в конце («%» обозначает последовательность любых других символов). Например, мы ищем:

Наименование ПОДОБНО "ивано%"

Обратите внимание, что если у вас в системе существует индекс по этому полю, то в SQL-запросе для этого поиска будет использоваться Index Seek - это поиск по индексу.

Условие «ПОДОБНО поисковой строке» эквивалентно поиску в диапазоне значений . В частном случае, когда мы ищем «ивано%» - это эквивалентно поиску в диапазоне фамилий, которые начинаются на «ивано», и, заканчивая «иванп» (потому что символ «п» идет после символа «о»).

Современные оптимизаторы самостоятельно преобразуют запрос LIKE на запрос поиска по диапазону . Следовательно, если у вас в системе существует индекс по этому полю, вы при интерпретации запроса в термины SQL получите именно такой результат - оптимизатор представит запрос с LIKE в виде поиска по диапазону.

Таким образом, можно осуществлять классический быстрый поиск с использованием индекса (Index Seek). С этим проблем нет или решить их можно простым способом.

Поиск по вхождению

Теперь возьмем пример посложнее, когда неизвестно, в каком именно месте строки стоит наше искомое значение, и реализуется поиск по вхождению строки. В этом случае в запросе «ПОДОБНО» «%» стоит с двух сторон.

При преобразовании такого запроса в SQL мы видим, что изменяется только команда (в значении используется уже два «%»).

Рассмотрим подробнее план выполнения. Здесь мы видим тот же Index Seek, но в данном случае он не работает эффективно.

Дело в том, что индекс по наименованию справочника, который мы рассматриваем, состоит из нескольких полей.

  • Первое из них - это разделитель учета.
  • Дальше непосредственно идет поле поиска.

И поэтому, когда в плане выполнения отображается «Index Seek», это означает, что поиск делается по первому полю разделителя - на слайде выше можно увидеть, что поиск по нашему искомому значению Desc абсолютно не используется.

Что делать в этой ситуации? У меня на практике было очень часто, что пользователям запрещали использовать запросы на вхождение. И пользователи в ряде случае сами не использовали этот функционал, потому что время выполнения очень значительное, а надо продолжать работать. Поэтому им приходилось выкручиваться другими способами - выбирали в списках, пытались найти по первым символам и так далее.

Но это приводит к недовольству функционалом и неправильному восприятию системы. Пользователь понимает, что система с чем-то не может справиться и не работает как положено. Это неправильно.

Нетривиальный подход к решению задачи поиска по подстроке

Давайте теперь рассмотрим нетривиальный подход к решению этой задачи .

Обозначим ряд допусков:

  • Первое - поскольку современные диски имеют неограниченный размер , допустим, что пространство на диске, которое вы можете использовать, у вас есть достаточно большое.
  • Второе - пользователь ищет не по одному-двум символам, а по какому-то фрагменту . Например, никто из нас не ищет по «ал» - это слишком маленькая селективность. Ищут какую-то значимую последовательность символов. Здесь мы для примера выбрали поиск по шести символам.

Пример искомой строки «алексе» записали в форму и будем с ее помощью тестировать.

  • Предположим, у нас есть поле с фамилией, именем и отчеством клиента. Первым шагом мы автоматически раскладываем это значение на фрагменты из шести символов со сдвигом «1» и получаем массив фрагментов (см. выше), которые одновременно всегда принадлежат искомому значению. Мы получили фрагменты, которые теоретически может вводить пользователь. А именно, на прошлом слайде определили, что мы ищем шесть символов. Их может быть и пять, и четыре, просто размер структуры будет больше.

  • На втором шаге мы записываем эти наборы в отдельную структуру (это может быть таблица, регистр сведений и т.д.) и получаем выборку, в которой определенный фрагмент принадлежит разным значениям.

  • И на третьем шаге, мы при поиске по подстроке к конструкции запроса 1С «ПОДОБНО» добавляем дополнительное условие «И», которое фильтрует количество возможных комбинаций , и вытаскиваем из этой дополнительной структуры (это может быть регистр сведений) все элементы, которым принадлежат нужные фрагменты строк.

Например, пользователь ищет клиента с фамилией «Солдатов». Это - восемь символов, значит, будет три фрагмента длиной в шесть символов, которые мы ищем в служебной структуре. Далее объединяем это все в запросе. Таким образом, получается дополнительная фильтрация.

В результате мы избавляемся от знака «%» (т.е. впереди этих фрагментов всегда будет нужный нам символ), и при выполнении внутреннего запроса будет идти Index Seek, за который мы и боролись.

На практике получается очень интересная история - ускорение в десятки, в сотни раз . Причем, все это можно сделать средствами 1С, что очень приятно. Переписывать логику не потребуется, пользователь порадуется, что у него ускорился запрос поиска. В примере ускорение с 4 секунд до 0,05 секунды, а если бы у нас изначально запрос выполнялся две минуты, он стал бы исполняться менее секунды.

Механизм, что я вам показал, не является каким-то экспериментальным примером, это уже работает у реальных клиентов.

Подготовительные мероприятия для внедрения

Теперь я расскажу кратко о подготовительных мероприятиях.

  • Сначала необходимо заполнить регистр начальными значениями . Для этого мы должны запланировать регламентное окно.
  • Далее мы должны соблюсти консистентность данных - это значит, должна быть подписка на изменение значения , чтобы эта Фрагменты автоматически перестраивались.
  • И последнее - дописать стандартную форму поиска .

Заполнение регистра можно делать как средствами 1С, так и с помощью SQL.

Могу сказать, что заполнение такой структуры для 17-ти миллионов значений занимает где-то 20-25 минут. Естественно, пользователи в этот момент не должны изменять значения справочника.

Если мы рассчитаем для одного миллиона значений где-то 100 символов по 6 во фрагменте, получится где-то 4,7 Гб. Нужно запланировать, чтобы это место у вас было. Если у вас в справочнике, например, 100 миллионов значений, то вы должны запланировать место, которое будет доступно на диске.

Необходимость учета статистики популярности фрагментов

Всегда ли этот метод будет работать быстро?

На это влияет статистика популярности фрагментов .

  • Например, у вас есть фрагмент «алексе», который может входить в имя Алексей, в отчество Алексеевич, в фамилию Алексеенко и т.д. Этот фрагмент может входить в 50-100 тысяч записей.
  • А есть редко используемые фрагменты.

Таким образом, появляется статистика популярности по фрагментам.

Обратите внимание, что если популярность фрагментов низкая (100 элементов), то мы получаем ускорение - 0,1 секунду.

Если подстрока достаточно популярная (50 тысяч элементов), то мы получаем деградацию , причем гораздо большую, чем если бы не было оптимизации.

Таким образом, необходимо сделать улучшенную схему выполнения запроса , в которой мы сначала бы получили значение популярности подзапроса. Это делается тремя-пятью строчками в 1С. При этом мы точно знаем, что если строка непопулярная, то идет по первой ветке, а если популярная, то по второй.

Как работает ускорение? Идет запрос поиска из формы, далее мы обращаемся к регистру сведений со статистикой, получаем элемент и дальше выбираем, что использовать - классический или ускоренный запрос.

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

На слайде представлена упрощенная схема:

  • идет запрос к оптимизатору;
  • мы смотрим статистику по полям, которые используются в запросе;
  • выбираем, какой план выполнения использовать, то есть выбираем стратегию выполнения запроса (например, вложенный цикл).

На что похожа реализованная нами схема?

  • Мы сделали свой индекс . Не стандартный индекс SQL, не индекс 1С, а свой индекс, который нужен для решения этой задачи;
  • Более того, столкнулись с тем, что нужна своя статистика ;
  • И нужен собственный оптимизатор , который по этой статистике решает, какую ветку выбрать.

Исходя из этой логики, можно сказать, что этот процесс раскрывает смысл того, для чего нам индексы, статистика и оптимизатор.

Кто не знал, для чего нужно обслуживать статистику в SQL, загляните в эту логику, и вы поймете, что если она неправильная или неактуальная, то мы пойдем по неправильной ветке. Запрос будет тормозить. Понимаем, для чего качественно и правильно обслуживать статистику - это влияет на производительность, на индекс.

Если индекса нет - будем сканировать все значения.

Таким образом, мы создали хоть примитивный, но свой оптимизатор. Можно сказать, что прощупали «на пальцах» то, как это делает MS SQL и другие СУБД, причем создав свои структуры.

Ускорение «больших» документов

Перейду ко второй теме - ускорение больших документов.

Мы в производственных задачах часто сталкиваемся с какими-то регламентными процедурами, как: закрытие месяца, отчет агенту, расчет себестоимости. Эти тяжелые, массивные документы проводятся и заполняются значительное количество времени. А когда мы заглядываем в отладчик и делаем на этих операциях трассировку, то видим, что 1С построчно вставляет значения в какую-то таблицу и на это уходит основное время . И ничего с этим поделать нельзя. Единственная рекомендация, которую можно предложить - это ускорить диск (эффективность этого решения очень сомнительная и требует предварительного анализа).

Предлагаю вернуться в историю и рассмотреть, как это делалось в 1С, начиная с 8.0 до 8.3 - это делалось построчно . SQL-сервер каждый раз анализировал запрос, его обрабатывал, создавал план выполнения, добавлял, отправлял команду в сторону 1С об успешности и получал следующий запрос. И такими step by step шли запросы от 1С сервера приложения к MS SQL.

Понятно, что если у вас 40 записей в документе, то проблем возникнуть не должно. Если записей у вас становится 10 тысяч и более (бывают организации, где в регламентных документах миллион записей), то этот процесс занимает очень длительное время. Одна запись обрабатывается очень быстро, но в документе их слишком много. На что уходят накладные расходы? На сеть, на выполнение запроса, на обратный сигнал, на обработку этого сигнала в системе 1С - итого, сумма четырех этапов. Все этапы суммируются, умножаются на миллион строк, и получаются наши длительные ожидания. Понятно, что это не ужасно.

В 1С, начиная с 8.3, сделаны улучшения. Теперь запрос для вставки во временные таблицы и в регистры сведений подготавливается на SQL-сервере, и его дальнейшее выполнение происходит с помощью классических RPC-вызовов, где сам провайдер доступа 1С (Native или OLE DB) группирует записи и вставляет их по N строк (как правило 100 строк) .

Таким образом, достигается ускорение от 30% до 300%. Но это все равно недостаточно, потому что сегодня у вас 10 тысяч строк, завтра 20 тысяч строк. Это не принципиальное решение проблемы, вы все равно с ней столкнетесь, но только через полгода/год.

Какая наиболее быстрая вставка в SQL-сервер, да и вообще в любую СУБД?

Это BULK INSERT . В 1С BULK INSERT используется, но для других задач. Работу с «большими» документами также хотелось бы ускорить путем укрупнения вставок INSERT и добавления записей единым массивом в базу данных SQL-сервера.

Посмотрим, какой достигается эффект. В рассматриваемом примере получено ускорение где-то в 5 раз, но можно ускориться и в 10 раз . Теоретически основная проблема для того, чтобы это ускорялось значительно сильнее - это скорость диска. Диск может является узким местом.

Также важно помнить про такой критерий, как индексы . Если бы мы вставляли BULK INSERT в таблицу без обновления индексов, то мы бы получили значительное ускорение (результат менее чем за секунду). Здесь мы получаем 69 секунд за счет того, что каждая вставка в таблицу требует REFRESH индекса.

В любом случае, этот способ позволяет достичь эффекта в 5-10 раз.

Плюс здесь не рассматриваются такие возможности, как партиционирование, секционирование. Можно было бы улучшить ситуацию, если бы мы знали, что BULK INSERT вставляется в актуальный период, а неактуальный мы вынесли бы в другую партицию. Это был бы еще больший эффект . Получается, что ускорение очень хорошее.

Возможности оптимизации безграничны

Таким образом, возможности оптимизации безграничны . Единственное - не увлекаться. До оптимизации всегда имеет смысл посчитать, будет ли предполагаемый эффект или нет. Также я бы советовал в каких-то ситуациях «подниматься» над проблемой, использовать не классические методы оптимизации запроса, а какие-то совсем иные, которые могут принести более значительный результат.

****************

Данная статья написана по итогам доклада (), прочитанного на конференции INFOSTART EVENT 2017 COMMUNITY.

Из статьи вы узнаете, как грамотно вести учет в программном комплексе 1с 8.3, мы разберем в вопросе как удержать НДФЛ в 1с 8.3 и его начислить. Удобнее всего процесс удержания НДФЛ в 1с рассматривать на конкретном примере, в нашем случае мы осуществим процедуру в случае начисления отпуска.

Для начала вам необходимо настроить основные параметры учета НДФЛ, для этого необходимо выполнить четыре важнейшие настройки:

На первом этапе нужно настроить учетную политику по данной операции, для этого переходим в панель “Настройка”, далее выбираем вкладку “Организация” и переходим в раздел “Учетная политика”. В этом разделе производится настройка учетной политики компании.

На втором этапе необходимо настроить вычеты по НДФЛ, для этого необходимо зайти в подраздел “Налоги и взносы” после чего перейти во вкладку “Виды вычетов по НДФЛ”. Здесь мы проверяем все возможные вычеты, и соответствие их законодательству, в программном комплексе 1с ЗУП (НДФЛ удержанный рассчитывается с высокой точностью) все настроено на их точное совпадение с требованиями законодательства. Однако, в том случает, если программный продукт долго не обновлялся, возможно их несоответствие, поэтому очень важно всегда иметь последнюю версию ПО.


На третьем этапе надо проверить, какой именно доход попадает в налогооблагаемую базу, для этого необходимо - Зайти в панель “Настройка-Начисление” после чего нажить вкладку ”Настройка НДФЛ”, здесь вписываем параметры среднего заработка сотрудника и другие данные.


Четвертый этап это заполнение данных о самом налогоплательщике, переходим в подраздел “Налоги и доходы” и заполняем все необходимые данные, а именно: сведения о налогоплательщике, его статус, все вычеты (имущественные, социальные, стандартные) и так далее.

Пятым этапом будет проводка операции по регистрации в налоговом органе, для этого достаточно зайти во вкладку “Настойка” и выбрать пункт “Территория”, далее заполняем все необходимые данные.

Как осуществляется расчёт НДФЛ в 1С 8.3 ЗУП 3.0

Для того чтобы выполнить расчет (в том числе и излишне удержанный НДФЛ 1с ) необходимо произвести всего несколько операция. Для начала необходимо выбрать нужный нам документ, это может быть: Отпуск, Больничный лист, и так далее. В нашем случае нам надо сделать расчет в случае начисления отпуска. Поэтому, выбираем и создаем документ – Отпуск, в нем автоматически производится расчет, в нашем случае получается сумма 2768 рублей.

Далее нам необходимо сформировать отчётность по НДФЛ, для того чтобы в случае ошибки отобразить в 1с ЗУП излишне удержанный НДФЛ . При проводке документа “Отпуск” была произведена автоматическая запись в несколько регистров, именно благодаря им в дальнейшем формируются справки 2-НДФЛ и расчеты 6-НДФЛ. Если все заполнено и настроено правильно никаких проблем с формированием отчетности не возникнет.

* Изображения заимствованы с сайта ПрофБух10.ру

Иногда на предприятии возникает ситуация излишне удержанного налога на доходы физических лиц с работника. В этом случае в расчетном периоде в документе «Начисление зарплаты» на закладке «НДФЛ» указывается отрицательная сумма налога.

Также в документе на закладке «Корректировки выплаты» указывается сумма к зачету, в случае если сумма налога с минусом больше суммы начисленного налога за текущий период.

В моем примере я добавила работнику Пирогову П.П. стандартный налоговый вычет на детей с октября месяца, соответственно за октябрь программа перерассчитала налог и сумма получилась с минусом. Между октябрем и ноябрем (расчетный месяц) разница 208 рублей, которая показывается на закладке «Корректировки выплаты».

Если бы отрицательная сумма за октябрь была бы меньше суммы за ноябрь, то такой разницы не было бы.

При проведении документа формируется проводка Дт 70 Кт 68.01 с отрицательной суммой.

Данная сумма налога будет отражаться как задолженность организации, не увеличивающая сумму к выплате сотруднику. Излишне удержанный НДФЛ будет учитываться при расчете зарплаты в следующих месяцах и уменьшать сумму рассчитанного налога.

Если нужно излишне удержанную сумму НДФЛ можно вернуть, оформив документ Возврат НДФЛ в 1С Бухгалтерия 8 ред. 3.0.

Для этого переходим в раздел «Зарплата и кадры», затем «Еще» и «Все документы по НДФЛ». Нажимаем на кнопку «Создать» и выбираем нужный документ «Возврат НДФЛ».

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

Затем в поле «Сотрудник» выбираем сотрудника, которому возвращается излишне удержанный налог.

Табличная часть документа заполнится автоматически после указания сотрудника. Будет указана дата получения дохода и сумма налога к возврату по соответствующей ставке.

В нашем примере – это налог по ставке 13%.

При необходимости можно обновить суммы по кнопке «Обновить суммы к возврату» или добавить суммы вручную по кнопке «Добавить».

Документ «Возврат НДФЛ» в 1С Бухгалтерия 8 ред. 3.0 проводок не формирует, только сумма возвращенного налога будет отражена в регистре налогового учета по НДФЛ.

Обратите внимание, что на основании абзаца 4 п. 1 ст. 231 НК РФ и письма Минфина России от 17 февраля 2011 г. № 030406/931возврат налогоплательщику излишне удержанных сумм налога будет осуществляться налоговым агентом в безналичной форме путем перечисления денежных средств на счет налогоплательщика в банке, который указан в его заявлении.

Порядок возврата излишне уплаченных сумм НДФЛ

Замечание 1

В Налоговом кодексе Российской Федерации, а именно, в статье 231 определяется порядок возврата излишне удержанной суммы НДФЛ. Возврат должен осуществляться налоговым агентом. В том случае, если налоговый агент отсутствует, возврат осуществляется налоговым органом по месту учета налогоплательщика.

Слишком большое удержание НДФЛ из дохода налогоплательщика может быть обнаружено как самим налогоплательщиком, так и налоговым агентом. В том случае, если факт переплаты по НДФЛ обнаружил налоговый агент, то он обязан сообщить об этом работнику. Осуществить это нужно в течение десяти дней со дня, когда этот факт был обнаружен.

Сумма НДФЛ, которая была излишне удержана, в обязательном порядке подлежит возврату работнику-налогоплательщику на основании его письменного заявления.

Стоит также отметить, что в Налоговом кодексе нет указания четкой формы и способа для того, чтобы сообщить работнику факт излишнего удержания НДФЛ, а также о его сумме. Это говорит о том, что эта процедура может осуществляться в произвольной форме.

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

Замечание 2

Перечисление излишне уплаченных сумм НДФЛ работнику осуществляется только в безналичной форме.

Очень часто бывают ситуации, когда величины суммы НДФЛ, которая подлежит перечислению в бюджет, не хватает для осуществления возврата налога работнику в установленный срок. В этом случае работодателю следует обратиться за возвратом налога в налоговую инспекцию с заявлением на возврат излишне удержанной суммы налога.

Отражение возврата НДФЛ в программе 1С: Бухгалтерия

В случае, если с работника был удержан НДФЛ в большем размере, программа сообщит об этом. Это можно увидеть, зайдя в документ «Начисление зарплаты». Открыв этот документ и пройдя на закладку «НДФЛ» можно увидеть отрицательные суммы налога.

В этом же документе на закладке «Корректировки выплаты» приводится сумма к зачету. Это происходит в том случае, если сумма налога на доходы со знаком «минус» больше, чем сумма начисленного налога за текущий период.

После того, как данный документ будет проведен сформируется проводка: Дт 70 Кт 68.01, причем сумма проводки будет отрицательной.

Эта сумма налога отражается в виде задолженности организации, которая не увеличивает сумму к выплате работнику. Излишне удержанный НДФЛ учитывается при расчете заработной платы работника в следующих периодах и уменьшает сумму рассчитанного налога.

Если же нужно произвести возврат излишне удержанной суммы НДФЛ, то следует оформить документ «Возврат НДФЛ».

Для того, чтобы оформить данный документ нужно перейти в раздел «Зарплата и кадры» и выбрать «Все документы по НДФЛ». Путем нажатия кнопки «Создать» выбирается нужный для нас документ, а именно «Возврат НДФЛ».

В этом документе нужно указывать:

  • Дату документа;
  • Наименование организации;
  • Месяц налогового периода, в котором происходит возврат налог;
  • Сотрудника, которому осуществляется возврат излишне удержанного налога.

При этом заполнение табличной части документа происходит автоматически после того, как в поле «Сотрудник» был выбран нужный работник. Автоматически проставится и дата момента получения дохода, а также сумма налога, подлежащая возврату.

В случае необходимости можно произвести обновление суммы, подлежащие возврату, путем нажатия кнопки «Обновить суммы к возврату» или же можно добавить суммы вручную, нажав на кнопку «Добавить».

Сам документ «Возврат НДФЛ» в программе 1С: Бухгалтерия проводок не формирует. С его помощью формируется только сумма подлежащего возврату налога, которая впоследствии будет отражена в регистрах налогового учета по НДФЛ.

THE BELL

Есть те, кто прочитали эту новость раньше вас.
Подпишитесь, чтобы получать статьи свежими.
Email
Имя
Фамилия
Как вы хотите читать The Bell
Без спама