Программа тестер

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

Сформируем отчет 6-НДФЛ за 1-ый квартал 2018-го года по организации Крон-Ц. Сумма начисленного дохода, которая попадает в строку 020 раздела 1 составляет 3 910 513,21 руб. (см. рис. 1).

Рис. 1.

Если же сформировать краткий свод начислений и удержаний, то в итоговой строке будет стоять сумма 3 910 862,53 руб. (см. рис. 2).

Рис. 2.

Было бы логично предположить, что среди начислений, отраженных в первом квартале, есть те, которые не облагаются НДФЛ, а соответственно, и не попадают в отчет 6-НДФЛ (например, пособия по уходу за ребенком). Однако, как мы видим, в списке таких не имеется. В чем же тогда причина? Ответ на этот вопрос нам поможет найти универсальный отчет, который мы настроим определённым образом.

Выбираем пункт меню Зарплата -> Отчеты по зарплате -> Все отчеты. Далее выбираем ветку Все разделы, и в списке, отображенном в правой части окна, находим универсальный отчет (см. рис. 3).

Рис. 3.

Мы будем формировать универсальный отчет по регистру накопления Учет доходов для исчисления НДФЛ (см. рис. 4).

Рис. 4.

Для того, чтобы настроить отчет нужным нам образом, нажимаем на кнопку Ещё -> Прочее -> Изменить вариант отчета.

Далее в окне настройки структуры отчета щелкаем правой кнопкой мыши по строке <Детальные записи> и в появившемся контекстном меню выбираем пункт Удалить (см. рис. 5).

Рис. 5.

После этого настраиваем структуру отчета следующим образом:

  1. Кнопка Добавить -> Новая группировка, выбираем поле Организация;
  2. Кнопка Добавить -> Новая таблица;
  3. Устанавливаем курсор на позицию Строки. Кнопка Добавить -> Новая группировка, выбираем поле Регистрация;
  4. Устанавливаем курсор на позицию Строки. Кнопка Добавить -> Новая группировка, выбираем поле Регистрация;
  5. Устанавливаем курсор на позицию Строки. Кнопка Добавить -> Новая группировка, выбираем поле Регистрация;
  6. Устанавливаем курсор на позицию Регистрация. Кнопка Добавить -> Новая группировка, выбираем поле Период -> Дата начала -> Начало месяца;
  7. Устанавливаем курсор на позицию Колонки. Кнопка Добавить -> Новая группировка, выбираем поле Дата получения дохода -> Дата начала -> Начало месяца.

В результате получаем структуру отчета, представленную на рисунке 6.

Рис. 6.

Нажимаем на кнопку Завершить редактирование.

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

  1. Дата получения дохода Больше или равно 01.01.2018
  2. Дата получения дохода Меньше или равно 31.03.2018

Указываем, что оба отбора необходимо вывести в шапке отчета (см. рис. 7).

Рис. 7.

Нажимаем на кнопку Закрыть.

Для сохранения выбираем Ещё -> Варианты отчета -> Сохранить вариант отчета (см. рис. 8).

Рис. 8.

В появившемся окне вводим наименование варианта, например, Универсальный отчет – НДФЛ доходы.

Наш отчет готов к использованию. Для того, чтобы в него попали все доходы, дата получения которых относится к 1-му кварталу 2018-го года, необходимо очистить поле период (см. рис. 9) и нажать кнопку Сформировать.

Рис. 9.

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

Рис. 10.

Как мы видим, в декабре 2017-го года был проведён некий доход, который с точки зрения НДФЛ относится к январю 2018. Если сделать расшифровку по регистратору, то становится понятно, что это был Больничный лист (рис. 11).

Рис. 11.

Действительно, если в документе Больничный лист за декабрь 2017 поставить дату выплаты, которая относится к январю 2018 (см. рис. 12), то получим расхождение между кратким сводом начислений и удержаний и суммой дохода, попадающей в отчет 6-НДФЛ.

Рис. 12.

Теперь давайте попробуем сформировать Универсальный отчет – НДФЛ доходы немного по-другому. Установим период формирования отчета – 1-ый квартал 2018. Отбор по датам получения дохода производить не будем (см. рис. 13).

Рис. 13.

Сформировав отчет, мы увидим, что в марте 2018 был отражен доход, который с точки зрения НДФЛ относится к апрелю 2018, а, следовательно, не может попасть в отчет 6-НДФЛ за 1-ый кваратал (см. рис. 14).

Рис. 14.

Сделав расшифровку по регистратору, обнаруживаем, что это документ больничный лист за март 2018, оплаченный в апреле 2018 (см. рис. 15)

Рис. 15.

Если вернуться к краткому своду начислений и удержаний, то получаем следующее: 3 910 862,53 руб. (всего начислено по своду) + 5 704,11 руб. (больничный лист из свода за декабрь, выплаченный в январе) – 6 053,43 руб. (больничный лист из свода за март, выплаченный в апреле) = 3 910 513,21 руб. – именно эта сумма попадает в строку 020 отчета 6-НДФЛ за 1-ый квартал 2018.

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

Зимой прошлого года я со своей группой сдавал сессию. Сессия почти закрыта, предновогоднее настроение, только одно но, последний экзамен. Экзамен проводился в виде теста на компьютере. Почему не сдал? Добро пожаловать под кат
.

С чего все начиналось

Вся группа знала, что тест будет очень большим 1600 вопросов. Всем ( и мне тоже) хотелось набрать высокие баллы и получить хорошие оценки.
Вооружившись джентельментским набором флешкой, коробочкой «Раффаэлло» отправился на охоту в компьютерный класс.
Проявив все свое мастерство общения с девушками и потратив 30 минут времени все необходимое было у меня в кармане.

«Все необходимое»

На флешке оказались:
папка с программой SunRav TestOfficePro
папка «Материалы преподавателей»
В папке с программой SunRav TestOfficePro были компоненты tTester ( программа для запуска теста), tMaker (редактирование базы вопросов), tAdmin (статистика).
В папке «Материалы преподавателей» Списки групп и база с вопросами ( читай тот самый заветный файл).

Разбор

Открыть tAdmin не составило ни малейшего труда, пароль подобрал за 2 секунды 123
К сожалению, ничего нужного для себя я не нашел. Идем дальше…
tTester Сама программа. Пароль тот же 123 ничего нужного…
tMaker программа для редактирования тестов. Посмотрим.
Открываем нужный тест и… Первое препятствие. Наш пароль не подходит. Файл рсширения .SRT

Поискав немного на форумах убеждаемся, что это файл не субтитров.
Позже был найден измененный tMaker который сразу отображал пароль. На удивление пароль оказался 09876543211
Открываем базу с тестами и убеждаемся в огромном количестве вопросов ( 1600).
На этом все и закончилось.
Было несколько вариантов.
1. Выучить все (как вариант даже не рассматривался)
2. Изменить базу тестов
3.Сделать все ответы правильными под номером 1
Был еще один вариантНе вижу смысла выкладывать исходники. Кто захочет — создаст свою программу, моей задачей было рассказать как можно обойти конкретный тест. Патчить ничего не нужно, да и не выйдет это, как правило заменить файл программы вам никто не даст. Просто создаётся своя программа, которая незаметно ни для кого работает.
Список API:
SendMessage — использовал для запроса текста.
FindWindow — для поиска главного окна программы тестирования FindWindow(0, «tTester — Информационная безопасность»). Возвращает ID окна.
GetWindow — возвращает, в зависимости от параметров (GW_HWNDNEXT, GW_CHILD) ID следующего окна на том же уровне либо ID дочернего окна.
GetClassName — позволяет определить класс окна по его ID
PostMessage — посылать в окно событие «клик мышки»
GetKeyState — функция для определения нажатой кнопки мыши.
Программа запущена, кликаю правой кнопкой мышки, начинает работать моя программа — получаем ID главного окна программы функцией FindWindow(0, «tTester — Информационная безопасность»), от него глядя в Microsoft Spy++, смотрим, как далеко от него находится окно с вопросом. С помощью функции GetWindow и различных параметров получаем ID окна с вопросом. Используя этот ID получаем текст вопроса функцией SendMessage с параметром WM_GETTEXT. Далее смотрел в текстовом файле правильные ответы и перебирая окона, искал нужный ответ и посылал «клик мышки» в checkbox напротив нужного ответа функцией PostMessage. Всё.
Нужный ответ отметился автоматически по клику на правую кнопку мыши 🙂 Преподаватель не видит. Тест сдан на «отлично».
Взято с форума xakep.ru
Последний идеально подходил. Правда совершенно не зная ни одного языка программирования ничего не вышло.
А тест я завалил.

В конечном счете, вам нужно посмотреть содержимое извлеченных данных, чтобы убедиться, что он действительный XML, а парсинг — это самый простой способ сделать это.

Если вы извлекаете данные через HTTP-запрос, вы можете также просмотреть ответ, который вы получите, прежде чем вы начнете получать фактические данные. Например, если вы используете NSURLConnection, вы можете реализовать didReceiveResponse, который часто должен возвращать 200 для кода состояния и text/xml для типа содержимого:

— (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
if (])
{
NSHTTPURLResponse *httpResponse = (id)response;

// check to see if statusCode == 200 and/or here;
}
}

В стороне, код состояния и тип контента устанавливаются сервером, поэтому он, по общему признанию, зависит от реализации сервера (например, если XML создается программным путем сервером, мы надеемся, что он правильно установит эти поля ответа HTTP, но если вы извлекаете XML с сторонних серверов, вы не можете гарантировать, что они хорошо себя ведут). Но код состояния 200 и тип контента «text/xml» являются обычными, и большинство серверов будут соответствующим образом устанавливать эти значения, если вы просто извлекаете XML файл.

Самый надежный метод проверки вашего XML — это просто получить данные с сервера и отправить его в синтаксический анализатор и посмотреть, возвращает ли парсер ошибку или нет.

Бесплатная программа для сценарного тестирования решений на базе 1С:Предприятие 8.3, управляемые формы.

Тестер является инструментом для проведения сценарного тестирования приложений, и призван сохранить и воспроизвести опыт программиста, время на приобретение которого было потрачено на ручные проверки и тестирование. Основным профитом от использования Тестера является повышение качества программ, без существенных организационных изменений, изменений принципов программирования, и других долгосрочных инвестиций времени на выпуски очередных версий продуктов. Тестер может использоваться как независимый инструмент, так и совместно с BDD, выступая в качестве платформы для разработки сложных тестов.

Сводка¶

Текущая версия: 1.3.5.6 История релизов

Последние обновления: https://github.com/grumagargler/tester

Репозиторий общих тестов: https://github.com/grumagargler/CommonTests

Репозиторий демо тестов для ERP2 (демо): https://github.com/grumagargler/ERP2

Разработчик: Решитко Дмитрий, grumagargler@gmail.com

Поддержка: https://gitter.im/tester1c/Lobby, Телеграмм канал

Стоимость / Лицензия: Бесплатно / BSD

Язык интерфейса: Английский, Русский

Справка: Английский (частично), Русский

Возможности¶

  • Программирование и запуск сложных сценарных тестов в одной среде
  • Глубокое тестирование интерфейса и бизнес логики
  • Запись работы пользователя с переводом сценария в программный код
  • Организация коллективной работы по созданию базы тестов
  • Гибкий ролевой доступ, раздельный RLS-доступ пользователей к тестируемым конфигурациям
  • Организация разветвленной разработки тестов с использованием git-репозиториев, хранение базы тестов вместе с проектами EDT
  • Интеграция с сервисами управления и контроля версий github.com, gitlab.com и других с использованием Webhook-ов
  • Формирование протоколов и сводных отчетов по выполненным сценариям
  • Настройка рассылки результатов тестов по электронной почте
  • Тестирование по расписанию, организация непрерывного процесса прогона тестов в рамках CI
  • Интеграция с Visual Studio Code
  • Возможность подключения к тестируемым клиентам разных версий платформ
  • Пошаговая видеозапись и воспроизведение хода выполнения сценария

Особенности¶

  • Быстро устанавливается, не требует специальных (кроме 1С) знаний и программного обеспечения
  • Быстро интегрируется в процесс разработки
  • Не требует фундаметального пересмотра философии программирования
  • Сфокусирован на процесс создания реальных тестов
  • Не требует подготовки отдельных баз и эталонных данных

Другое применение¶

Тестер может быть использован как автоматизатор рутинных операций, как в процессе разработки, так и в режиме реальной эксплуатации продуктовых баз. Среди таких задач можно выделить: — Выгрузка/загрузка данных, пакетный запуск 1С для административных задач — Запуск и манипуляции обработками, отчетами. Тестером можно написать сценарий, который будет формировать отчет, проверять какие-то данные или открывать обработку и нажимать там нужные кнопки и выбирать поля — Формирование начальных или тестовых данных для ваших решений (вместо использования конвертации данных) — Нагрузочное тестирование. Например, у вас есть доработка и вы хотите проверить работу этого функционала под нагрузкой. Для этого можно написать сценарий запуска Тестера нужное кол-во раз с передачей целевого тестируемого сценария в качестве параметра

Несколько примеров¶

Совместимость¶

Конфигурация выкладывается без режима совместимости, и как правило на базе последних версий 1С (на момент публикации в GitHub). Попытка загрузки cf-файла Тестера в ранние версии платформы, может завершаться сообщением о несовместимости файла конфигурации.

В этом случае, необходимо выполнить следующие действия:

  • Под последней версией платформы, создать пустую базу и загрузить конфигурацию cf-файла Тестера
  • В конфигураторе, в палитре свойств корня конфигурации Тестера, установить требуемый режим совместимости
  • Сохранить полученную конфигурацию в файл и использовать его в качестве обновления Тестера

Добавить комментарий

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