О Unit-тестах замолвите слово.Часть 1

Публикация № 1056335

Администрирование - Администрирование данных 1С - Тестирование и исправление

Тестирование Unit-тестирование xUnitFor1C Vanessa-ADD

23
Последнее время в контексте 1С очень много говорят о функциональном тестировании, BDD. А Unit-тестирование обходят стороной. Попробуем разобраться, для чего Unit-тестирование применять стоит.

Введение

Разберемся немного в терминологии:

Функциональное (E2E) тестирование - проверка, что сценарии работы пользователя выполняются. Другими словами прогоны тестовых пользовательский сценариев. Поддерживается фреймворками "Сценарное тестирование", "Vanessa-ADD", "Vanessa-Automation", "Тестер" и др. Большинство из этих фреймворков специально созданы для написания функциональных/сценарных тестов. 

Unit-тестирование (модульное тестирование) - проверка на корректность отдельные единицы работы исходного кода программы. Минимальными единицами работы для нас являются процедуры и функции.

Получилось так, что наибольшую популярность среди программистов 1С получило функциональное тестирование. Такой вывод можно сделать по обилию публикаций и дискуссий на профессиональных конференциях. 
Основной целью такого тестирования при его внедрении в первую очередь является уменьшение ошибок, в том числе организация регрессионного тестирования (англ. regression testing, собирательное название для всех видов тестирования программного обеспечения, направленных на обнаружение ошибок в уже протестированных участках исходного кода).

Функциональное тестирование требует подготовки - создание эталонных баз / шаблонов данных, проработки сценариев использования и их написания. Т.е. это больше история про процесс разработки, а не непосредственное написание кода, ответственность за поддержку лежит на команде.

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

Для Unit-тестов есть один специализированный фреймворк - xUnitFor1C (возможно я не прав, напишите, пожалуйста, в комментариях, если это не так). Его функционал плавно перекочевал в Vanessa-ADD. Также модульные тесты можно запускать и на фреймворках, предназначенных для функционального тестирования. Существуют плагин для EDT для написания unit-тестов с использованием фреймворка Vanessa-Automation (https://github.com/DoublesunRUS/ru.capralow.dt.unit.launcher).

Unit-тестирование и функциональное тестирование не исключают, а дополняют друг друга.

Функциональный тест vs Unit-тест

Попробуем сравнить разные виды тестирования.

Категории сравнения:

Скорость - время выполнения теста
Область действия - что тест проверяет
Сложность написания - объем необходимых знаний
Сложность запуска - насколько сложная инфраструктура нужна для запуска теста, насколько сложно обеспечить повторение однотипных тестов
Изменение трудозатрат на написание тестов с ростом количества тестов - как меняются количество времени, необходимое для написания тестов с ростом количества тестов и накоплением инструментария.

Критерий Функциональный тест Unit-тест
Скорость Медленный Быстрый
Область действия Сценарий пользователя Процедура/Функция
Сложность написания Средне Средне
Сложность запуска Средне Легко
Трудозатраты на написание  Большие Маленькие
Изменение трудозатрат на написание тестов с ростом количества тестов Уменьшаются Остаются неизменными
Скорость
Функциональные тесты достаточно медленные - нужно запустить тест-менеджер, нужно запустить тест-клиент и прогнать сам тест (воспроизвести все действия пользователя). В каких-то случаях подготовить тестовую базу: либо скопировать эталонную базу, либо создать в базе тестирование необходимые данные.
 
Unit-тесты запускаются намного быстрее, а данные которые необходимы тесту в большинстве случаев не нужно записывать в базу, а потом удалять. 
Область действия

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

Unit-тест - обычно проверяет одну функцию или набор связанных процедур.

Сложность написания

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

Функциональный тест можно записать "накликивая действия" в пользовательском интерфейсе. Большинство фреймворков позволяют преобразовать запись действий пользователя в сценарий, готовый к воспроизведению. К сожалению просто накликанные сценарии сложно поддерживать, приходится оптимизировать сгенерированный код. Да и забота о неизменности данных для тестов становится проблемой: не забывать удалять тестовые данные, делать так, чтобы данные для тестов не пересекались между собой непростая задача.

 Сложность запуска

Unit-тест запускается одной кнопкой. Пишем код, запускаем тест.

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

Трудозатраты на написание

Первоначальные трудозатраты на написание функциональных тестов довольно большие - необходимо накопить библиотеку "шагов" (подсценариев), которые позволят в дальнейшем быстро писать более высокоуровневые сценарии.
Если пользовательский сценарий большой, то и данных в нем используется много, нужно быть готовым описывать их создание =)

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

Если вам нужен большой набор данных для Unit-теста, то скорее всего вы сделали что-то не так =)

Изменение трудозатрат на написание тестов с ростом количества тестов

Для функциональных тестов со временем копится подсценарии и новые тесты становится писать легче.

Для Unit-тестов фреймворк ADD/xUnit предоставляет богатый инструментарий и придумать того, что еще нет, довольно-таки сложно.

На что стоит писать Unit-тесты и что это дает 

 

Удобно писать
  • Расчетные механизмы 
  • Механизмы интеграции
  • Любые API

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

Неудобно писать
  • Отчеты
  • Интерфейсы

Для теста отчета нужно много тестовых данных, в алгоритме их создания можно допустить много ошибок, да и легче это результат проверять функциональным тестом. Чтобы действительно хотелось тестировать локально - это формирование сложных ресурсов с большим количеством "ВычислитьВыражение" на разных уровнях группировок. Но пока для этого нет удобных инструментов =)

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

Бессмысленно писать
  • Обработки проведения документов
  • Обработки проверки заполнения
  • Печатные формы
  • Отчеты

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

Вместо итога

Я попытался обобщить свой опыт написания Unit-тестов. Если у кого-то был другой опыт, было бы здорово, если бы вы рассказали о нём в комментариях =)

В этом посте было мало практический примеров. Этот недостаток постараюсь исправить вот тут: //1c.smartsoft.kz/public/1085875/

 

23

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. sapervodichka 1708 22.07.19 14:45 Сейчас в теме
по быстрому можно такой обработкой протестить https://infostart.ru/public/1056811/
2. Сурикат 264 22.07.19 15:19 Сейчас в теме
(1)
Эта обработка проводит "дымовое тестирование". Такая возможность есть во многих фреймворках тестирования, которые указаны в статье

Её функционал несколько урезанный относительно аналогов - нельзя запускать на CI.
for_sale; zeegin; sapervodichka; artbear; +4 Ответить
3. sapervodichka 1708 22.07.19 15:36 Сейчас в теме
(2) спасибо))) главное, что она есть
4. artbear 1156 22.07.19 15:40 Сейчас в теме
(1) А эта Ваш набор обработок не является ли набором обработок из раздела ERP ?

уж очень функционал схож.

или я ошибаюсь?
5. artbear 1156 22.07.19 15:41 Сейчас в теме
(0) Спасибо за набор статей с практическими примерами по тестированию.

Отдельное спасибо за использование и популяризацию Ванесса-АДД - тесты кодом (например, юнит-тесты) все-также важны!
6. grumagargler 612 22.07.19 15:57 Сейчас в теме
Однозначно полезный материал, но вы пишите, что unit и сценарное дополняют друг-друга, а в статье делаете их противопоставление, сквозит мысль неудачного опыта сценарного тестирования :-)
Но это разные техники и подходы, и TDD заслуживает внимания само по себе, а не от обратного других методик.
7. Сурикат 264 22.07.19 18:34 Сейчас в теме
(6)
Целью статей было больше показать, что есть сценарии, в которых написание Unit-тестов позволит намного быстрее получить результат, чем при написании сценарных тестов.

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

Вот я и попытался описать те ситуации, в которых unit-тест отлично себя показывает =) По крайней мере в моей практике =)
8. grumagargler 612 22.07.19 19:11 Сейчас в теме
(7)
написание Unit-тестов позволит намного быстрее получить результат, чем при написании сценарных тестов

Да, я именно к этому и прицепился. Понимаете, механики тестирования у обоих подходов настолько отличаются, что даже тестируя казалось бы одну и туже функцию бизнес-приложения, о взаимозаменяемости говорить сложно. Юнит тест гарантирует работу определенного алгоритма, а сценарный - процесса. Юниту не нужно проверять срабатывания подписок на события или наличие объекта в меню, а сценарному, если и нужно только веб-сервис проверить, не менее важным является и достижимость функции в рамках процесса. В общем, хочу заразить идеей, что выставлять преимущества подхода лучше отталкиваясь от задачи, а не от неэффективности какой-либо другой методики.
9. artbear 1156 22.07.19 19:28 Сейчас в теме
(8) В рамках 1С "настоящие" юнит-тесты слабо возможны, т.к. наши тесты не отделимы от самой конфигурации 1С, платформы, СУБД и т.п.

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

Любые приемочные тесты (хоть кодом (хЮнит, Тестер), хоть через БДД) имеют практическое одинаковые строение, как обычно, 3A :)

вопрос в инструментарии, удобстве разработки, сопровождаемости и т.п.

В рамках приемочных тестов в любом случае проверяются процессы. Только гранулярность этих процессов определяется разработчиком :)

лично я за последние годы практически не пишу тестов кодом, а использую возможности приемочного тестирования в виде БДД-сценариев.
при этом фактически работаю через механизмы ТДД/БДД.
10. ImHunter 161 23.07.19 07:20 Сейчас в теме
(9) А вот это я не понял:
В рамках 1С "настоящие" юнит-тесты слабо возможны, т.к. наши тесты не отделимы от самой конфигурации 1С, платформы, СУБД и т.п.

Речь о том, что тестируемый 1С-код редко когда бывает чисто unit-кодом? А чаще всего делает явные или неявные обращения за пределы модуля?
11. artbear 1156 23.07.19 10:34 Сейчас в теме
(10) в других языках программирования часто можно отделить бекграунд от самого класса и проверить только функциональность класса, например, не подключая СУБД, не вызывая веб-сервисы, какие-то конфигурационные действия и т.п.
В 1С с этим сложно, поле возможностей у нас поменьше.

всегда есть СУБД (файловая или настоящая), всегда есть платформа 1С, всегда есть конфигурации.

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

например, в большинстве случаев нет особого смысла абстрагироваться от объектной модели конфигурации, это усложняет логику.
12. Сурикат 264 23.07.19 10:53 Сейчас в теме
(9)

По сравнению с другими языками это действительно так.

Но ведь можно представить что: у каждого метода языка есть параметры и есть контекст. Контекст - это параметры сеанса и методы доступа к БД.
Каждый метод нуждается не в полном контексте, а только в его части (кроме чего-то сильно глобального). И вот эту часть мы и можем мокать, создавая очень обрезанные объекты. Легкие, не требующие понимания а какие проверки нужно выполнить, чтобы он вообще создался.

Есть скажем контрагент, у него обязательно ИНН, КПП, заполненное по определенным правилам. Но в моем методе мне не нужен ИНН и КПП, мне нужна ссылка на контрагента и флаг "Не работаем", к примеру. И вот для модульного теста я и создам этого контрагента, не думая вообще ни о чем другом.

Да, это не полностью позволит мне проверить функционал, да я не проверю что процесс дойдет до конца. Но это не моя цель. Моя цель сейчас - написать метод. И я на нем фокусируюсь и проверяю только его поведение.

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

Т.е. сценарный тест проверяет взаимосвязь методов.
13. Сурикат 264 23.07.19 11:01 Сейчас в теме
(8)
Я именно это и пытался сделать, видимо не получилось =(

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

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

Наличие модульных тестов, не гарантирует работоспособности процесса. И если наша задача - проверить процесс, то вы абсолютно правы, модульный тест не самый лучший инструмент.
14. CheBurator 3400 23.07.19 14:19 Сейчас в теме
сколько пытаюсь представить - никак не получается.
вот допустим есть WMS. почти вся работа идет через RDP-доступ, обработки для ТСД.
как раз сценарное тестирование вроде бы подошло. Надо проверить ожидаемо ли отрабатывает куча нажатий по кнопочкам исполнителем (в т.ч. с учетом того, что с одного экрана по разным кнопочкам-горячим клавишам можно уйти на другие экраны где аналогично - очень быстро ветвится дерево возможностей). при этом то что видно на экране (в т.ч. и набор долступных горячих клавиш) определяется кучей настроечных параметров. как это все прогнать и оцениить правильно ли сценарий отработал или нет - я вообще не представляю. кроме как сидеть и наблюдать и тормозить если вижу проблему...
Или я неграмотный?
15. DmitryMironov 24.07.19 10:30 Сейчас в теме
(14)
Может стоить начать тестировать конкретные сценарии, а не просто сразу все возможные переходы и ветвления?
Например сценарий "Приемка товара", "Подбор товара", "Отгрузка товара" и т.д.
Каждый сценарий будет:
1. Показывать как ДОЛЖЕН работать функционал - можно также использовать как инструкцию для пользователей
2. Проверять что правильный путь сценария отрабатывает корректно
16. CheBurator 3400 24.07.19 11:52 Сейчас в теме
(15) ну да, только сам по себе сценарий "приемка товара" - достаточно развесистый. реально достаточно развесистый. и как быть? - дробить на суб-сценарии? где каждый субсценарий - это, например, одна включенная галочка в настройках? и как это вообще автоматом тестировать? автоматом включать-выключать настроечные галки и прогонять автоматом сценарий? как знать - правильно отработал сценарий или нет? вручную описывать сценарий (что само по себе уже является ручным прогоном этого сценария) для каждого набора настроечных параметров? ничего непонятно...
17. CheBurator 3400 24.07.19 11:54 Сейчас в теме
(15) сейчас по сути - выставляются конкретные настройки для какого-то одного варианта. и прогоняется сценарий вручную только для этих выставленных настроек.
18. Сурикат 264 24.07.19 12:49 Сейчас в теме
(17)
Выставляются конкретные настройки для какого-то одного варианта. и прогоняется сценарий вручную только для этих выставленных настроек


Автотест будет делать тоже самое. Только не в ручную проганяться будет, а автоматически. Можно распараллелить запуск тестов, запускать одновременно сразу несколько сценариев
19. CheBurator 3400 24.07.19 14:14 Сейчас в теме
(18) но по-любому, один раз сценарий надо прогнать вручную? и записать его? по всем возможным ветвлениям сценария?
20. Сурикат 264 24.07.19 14:54 Сейчас в теме
(19) Да, и даже не один.
Сценарий еще отладить нужно
21. CheBurator 3400 24.07.19 18:42 Сейчас в теме
(20) не, при тех ресурсах, которые есть - нереально
22. artbear 1156 29.07.19 17:34 Сейчас в теме
(19) Сергей, тебе уже несколько лет рассказывается и даже показывается, что тесты вполне реально можно сделать.
А ты все "нереально" :(

начни с малого - хотя бы один сценарий преврати в тест :)
24. CheBurator 3400 29.07.19 18:54 Сейчас в теме
(22) а сколько времени с нуля для неграмотного занимает развертывание "инфраструктуры" для работы с тестами-сценариями? (все на win-инфраструктуре)
25. Сурикат 264 29.07.19 21:33 Сейчас в теме
(24)
А вы уверены, что вам нужна инфраструктура?

По началу тесты можно и в ручную запускать. Запуск - 5 мин.
26. CheBurator 3400 29.07.19 22:34 Сейчас в теме
(25) и что - нажимания кнопочек и ввод значений будут сами по себе в тесте выполняться?
27. Сурикат 264 30.07.19 09:00 Сейчас в теме
(26)

Да, а вы чем-то другим в это время заниматься будете, более полезным
23. artbear 1156 29.07.19 17:35 Сейчас в теме
Все возможные ветвления не нужно проверять.
всегда компромисс и приоритезация тест.сценариев по разным критериям - бизнес-польза, частота срабатывания, легкость реализации и т.п.
Сурикат; +1 Ответить
Оставьте свое сообщение

См. также

Восстановление индексов СУБД 9

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Тестирование и исправление

Восстановление индексов СУБД на основе структуры хранения базы данных 1С.

09.10.2019    1074    kadr    0       

О Unit-тестах замолвите слово. Часть 2 26

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 Абонемент ($m) Инструментарий разработчика

Пара практических примеров написания Unit-тестах с использованием фреймворка Vanessa-ADD.

1 стартмани

22.07.2019    2068    Сурикат    18       

Исправление ошибки при открытии внешнего отчета "Не удалось обновить вспомогательные данные расширений" 2

Статья Программист Стажер Нет файла v8 Россия Бесплатно (free) Тестирование и исправление

Способы исправления ошибки при открытии внешнего отчета "Не удалось обновить вспомогательные данные расширений. Обратитесь к администратору."

30.05.2019    1616    AlkB    4       

MS SQL Ошибка СУБД: Предоставленный поток статистики разрушен. Как решить проблему с разрушенной статистикой 17

Статья Системный администратор Нет файла v8 1cv8.cf Бесплатно (free) Тестирование и исправление

MS SQL Ошибка СУБД: Предоставленный поток статистики разрушен... Как решить проблему с разрушенной статистикой

16.04.2019    2447    ikorulev    1       

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

Статья Программист Нет файла v8 Россия Бесплатно (free) Тестирование и исправление

В статье описана возможность получить место возникновения исключения при работе пользователей без участия конфигуратора. Подробно описаны еще некоторые очень полезные приемы при работе в отладке.

17.01.2019    16255    PoZiTiFFF    52       

Восстановление базы 1С, ошибка источника потока 89

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Тестирование и исправление

Очередной кирпичик в основу решения проблемы восстановления работоспособности базы после динамического обновления.

09.01.2019    10619    idle    23       

Автоматизация тестирования 82

Статья Программист Нет файла Бесплатно (free) Тестирование и исправление

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

04.10.2018    7408    ivanov660    23       

Авто-восстановление "битых ссылок" при обменах с несколькими базами данных в режиме управляемых форм 6

Статья Системный администратор Программист Нет файла v8 v8::УФ 1cv8.cf Россия Бесплатно (free) Тестирование и исправление

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

31.07.2018    3749    SvkMaster    5       

1С: Сценарное тестирование 3.0. Запись и отладка интерактивного сценария 9

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Тестирование и исправление

Конфигурация «Сценарное тестирование 3.0» (далее СТ) позволяет записывать интерактивные действия пользователей и формировать на их основании сценарий тестирования, который в последующем можно использовать в тестах. Рассмотрим это на примере.

07.11.2017    11144    user759624    5       

Окно "Зарегистрировано 0 изменений из 1 на узле "Имя узла"" 14

Статья Системный администратор Программист Нет файла v8 1cv8.cf Бесплатно (free) Тестирование и исправление

Почему может появляться окно предупреждения "Регистрация изменений" с текстом " Зарегистрировано 0 изменений из 1 на узле "Имя узла" "" ? Как исправить проблему?

02.08.2017    15475    StudentM    3       

Рекурсия тестирования баз 1С. Когда однократного тестирования базы недостаточно 4

Статья Системный администратор Программист Нет файла v8 1cv8.cf Россия Windows Бесплатно (free) Тестирование и исправление

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

22.06.2017    7642    iskan    7       

Отладка не работает, или отладка фоновых заданий 15

Статья Системный администратор Программист Нет файла v8 1cv8.cf Бесплатно (free) Тестирование и исправление

На написание данной статьи вдохновила статья http://infostart.ru/public/633522/ Я разработчик старой формации, до сих пор обслуживаю клиентов на платформах 7.7, 8.1, 8.2, времени изучать все мануалы и отслеживать новые тенденции не хватает. Цель этой статьи помочь разработчикам, таким же людям, как и я. Если эта статья сэкономит, хотя бы, 1 человеко-час жизни, значит, написана не зря.

16.06.2017    16417    IvanovAV    22       

Когда перестает работать отладчик 105

Статья Системный администратор Программист Нет файла v8 Россия Windows Бесплатно (free) Тестирование и исправление

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

13.06.2017    21310    mickey.1cx    20       

Перенос данных из базы с поврежденными таблицами 15

Статья Системный администратор Программист Нет файла v8 БП2.0 Казахстан БУ УУ Бесплатно (free) Тестирование и исправление Обмен через XML Перенос данных из 1C8 в 1C8

У клиента что-то произошло с жестким диском, что потребовало восстановления данных на нем. Базу 1С вроде бы сохранили, и она даже открылась. Однако при попытке доступа к документу "Платежный ордер, списание денежных средств" база вылетает с ошибкой. Также при получении оборотов за период в целом и по декадам выводились разные цифры. Обработка переноса данных в идентичную конфигурацию не подошла, из-за того, что так же вылетала с ошибкой БД. Ниже опишу мои действия по созданию новой конфигурации.

06.06.2017    12312    ermek6    14       

Ошибка формата потока. Решение с описанием проблемы 103

Статья Системный администратор Нет файла v8 1cv8.cf Россия Бесплатно (free) Тестирование и исправление

Ошибка формата потока. Страшная, но симпатишная своей загадочностью. 1С ничего толком не объясняет и не подсказывает. Ниже решение, которое мне помогает решать данную проблему на 100%. Всё очень просто. Данная ошибка возникает (на моей практике) только у клиент серверного варианта. просто потому что с другим форматом не работаю. Рекомендация: Старайтесь избегать динамического обновления, особенно если у вас возможны кратковременные проблемы с 220 и LAN. Далее описание лечения:

25.04.2017    20723    juker    1       

Ошибка в 1С: Не удается вставить повторяющуюся строку ключа в объект 12

Статья Системный администратор Программист Нет файла v8 1cv8.cf Бесплатно (free) Тестирование и исправление

В 1С может появиться ошибка такого рода: Ошибка при чтении изменений при обмене РИБ: Ошибка при вызове метода контекста (ПрочитатьИзменения): Попытка вставки неуникального значения в уникальный индекс: Microsoft SQL Server Native Client 11.0: Не удается вставить повторяющуюся строку ключа в объект "dbo._AccRgAT118760" с уникальным индексом "_AccR118760_ByPeriod_TRRRRN". Повторяющееся значение ключа: (ноя 1 5999 12:00AM, 0xab52f3e52b35efa847b0cfef9c90ff9d, 0x95eb00112f2a1abf11dac09f12116a47, NULL, NULL, NULL, NULL, 0). HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=E, native=2601, line=1 Техническая информация: Ошибка при чтении изменений при обмене РИБ: {ОбщийМодуль.ПроцедурыОбменаДанными.Модуль(1559)}: Ошибка при вызове метода контекста (ПрочитатьИзменения): Попытка вставки неуникального значения в уникальный индекс: Для ее решения делаем следующее:

18.04.2017    16772    tonn12    11       

Автоматизированная проверка конфигураций… и пара слов о стандартах разработки 266

Статья Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Практика программирования Тестирование и исправление

Предлагаю познакомиться с инструментом "Автоматизированная проверка конфигураций" и получить практику его применения

18.01.2017    43499    3    Vladimir Litvinenko    20       

BDD 1С по душе 78

Статья Программист Нет файла v8 Россия Бесплатно (free) Тестирование и исправление

Размышляя над проблемой тестирования, а точнее над проблемой качества решений, умные и не очень люди, в основном ломают копья над следующим противоречием “надо тестировать, но надо разрабатывать, а не тестировать” (Алексей Лустин) www.silverbulleters.org

15.01.2017    20735    dima_tuzov    44       

Решение для серверной базы при возникновении ошибки "Нарушена целостность структуры конфигурации" 38

Статья Системный администратор Программист Нет файла v8 1cv8.cf Россия Windows Бесплатно (free) Тестирование и исправление

После динамического обновления перестал открываться конфигуратор. При попытке открытия возникала ошибка "Нарушена целостность структуры конфигурации", после чего предлагался перезапуск или завершение программы. Решено с использованием материалов из сети. Описание личного опыта решения проблемы для клиент-серверного варианта на базе MS SQL 2012 и 1С Предприятие 8.3 (8.3.8.1675) при наличии прав администратора на сервере и резервных копий конфигурации

17.12.2016    14847    Dot78    12       

Файловая база зависает при реструктуризации таблиц. 8.3 12

Статья Системный администратор Программист Нет файла v8 Windows Бесплатно (free) Тестирование и исправление

Файловая база УНФ 1.6, платформа 8.3.7.1790. База перестала проходить Тестирование и исправление (ТиИ), при реструктуризации зависала на таблице Присоединенные файлы, при этом можно было закрыть окно ТиИ по кнопке Закрыть и закрыть потом конфигуратор, но база оставалась в монопольном режиме, помогало только принудительное удаление файла блокировок.

18.11.2016    11950    de0nis    2       

Как объять необъятное, или советы по тестированию 42

Статья Программист Нет файла Бесплатно (free) Тестирование и исправление

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

18.10.2016    13357    nrukol    14       

Решение проблемы с открытием периода ТиС 0

Статья Системный администратор Нет файла v77::ОУ 1С7:ТиС Россия УУ Windows Бесплатно (free) Тестирование и исправление

Способ решения проблемы с открытием периода в конфигурации "Торговля и склад" версии 7.7 (вызванной регистром "Книга продаж")

05.06.2016    13461    zemskov    15       

Результаты обновления и дополнительная обработка данных 20

Статья Системный администратор Программист Нет файла v8 ERP2 Windows Бесплатно (free) Тестирование и исправление

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

1 стартмани

26.04.2016    22770    dsitiy    10       

Восстановление SQL базы данных после неудачного обновления 32

Статья Системный администратор Программист Нет файла v8 Windows Бесплатно (free) Тестирование и исправление

После добавления нескольких реквизитов справочника в момент обновления конфигуратор завис и благополучно вывалился с ошибкой.

26.03.2016    14315    BlaSo    11       

В процессе обновления информационной базы произошла критическая ошибка по причине: Ошибка SDBL: Тип поля Code несовместим с типом литерала STRING 17

Статья Системный администратор Программист Нет файла v8 Windows Бесплатно (free) Тестирование и исправление

В этой статье описан способ решения ошибки "В процессе обновления информационной базы произошла критическая ошибка по причине: Ошибка SDBL: Тип поля Code несовместим с типом литерала STRING". Сразу оговорюсь, что описанный метод больше похож на "танцы с бубнами", но, возможно, кому-нибудь сможет помочь или пригодится что-то из того, что я перепробовал. По крайней мере, поможет натолкнуть на правильную мысль, а также будут подняты другие проблемы, интересные к обсуждению.

16.03.2016    22027    Anesk    23       

Ошибка sdbl - Ожидается выражение (pos = 324) 14

Статья Системный администратор Программист Нет файла v8 БП2.0 Узбекистан Windows Бесплатно (free) Тестирование и исправление

В интернете нашли несколько вариантов исправления этой ошибки. Попробовали практически все. Некоторые оказались безуспешными. В итоге нашли самый простой способ решения этого вопроса.

06.01.2016    21595    Evgeniy.Pecheykin    15       

Ошибка "В процессе обновления информационной базы произошла критическая ошибка" 12

Статья Системный администратор Программист Нет файла Windows Бесплатно (free) Тестирование и исправление

При обновлении конфигурации может возникнуть очень неприятная вещь! В процессе обновления информационной базы произошла критическая ошибка по причине: Попытка вставки неуникального значения в уникальный индекс: Далее текст самой ошибки. Эту ошибку устранить довольно легко! А как, читайте дальше...

27.10.2015    27802    Xershi    7       

Один из способов спасти базу после вируса-шифратора 21

Статья Системный администратор Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Тестирование и исправление

К неудаче, на сервер пробралась программа шифратор, которая, как известно, все файлы зашифровала, добавив к наименованию в моем случае 1Cv8.1CD.id-{MVWMFZIOCVZRDVZDEIAESWASEIMESTYCDIMQ-07.10.2015 3@59@345085745}-email-vernutfiles@gmail.com-ver-4.0.0.0.cbf. У других id и почта могут быть другими, но суть в том, что расширение у фалов становится .cbf.

08.10.2015    29883    apostal86    62       

Как я восстанавливал разрушенную базу. АКТ 2 39

Статья Системный администратор Программист Нет файла v8 1cv8.cf Бесплатно (free) Тестирование и исправление

Приёмы, которые помогут тебе устранить рассинхронизацию данных и метаданнах (на уровне SQL)

31.08.2015    19502    METAL    15       

Как я восстанавливал разрушенную базу 45

Статья Системный администратор Программист Нет файла v8 1cv8.cf Бесплатно (free) Архивирование (backup) Распределенная БД (УРИБ, УРБД) Тестирование и исправление

УТ10.3 на Платформе 8.2 на базе MSSQL была разрушена после попытки её восстановить после неудачного динамического обновления. Таблица Config целевой базы была заменена на содержимое таблицы Config от другой рабочей базы. Но на самом деле конфигурации у них существенно отличались, поэтому после таких действий целевая база рухнула окончательно. Что же делать?

21.08.2015    23934    METAL    25       

Устранение ошибки "Объект не найден в Справочнике "ИдентификаторыОбъектовМетаданных" 14

Статья Системный администратор Программист Нет файла v8 1cv8.cf Бесплатно (free) Тестирование и исправление

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

25.06.2015    31967    ni_cola    15       

Ошибка SQL: Запись значения NULL в поле, не допускающее NULL 12

Статья Системный администратор Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Тестирование и исправление

При запуске тестировани и исправления появляется сообщение: В процессе обновления информационной базы произошла критическая ошибка по причине: Ошибка СУБД: Ошибка SQL: Запись значения NULL в поле, не допускающее NULL '_FLD891RREF' по причине: Ошибка SQL: Запись значения NULL в поле, не допускающее NULL '_FLD891RREF'

14.11.2014    24509    ptkrzy    10       

Could not continue scan with NOLOCK due to data movement в 1С:Предприятие 14

Статья Системный администратор Нет файла v8 1cv8.cf Бесплатно (free) Тестирование и исправление

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

07.11.2013    27926    Gilev.Vyacheslav    15       

Памятка на случай, когда слетела конфигурация поставщика (нет доступа к файлу .tmp) 22

Статья Системный администратор Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Тестирование и исправление

Слетела конфигурация поставщика 1С 8? (при попытке обновления выдает ошибку, что нет доступа к файлу .tmp, а если открыть конфигурацию поставщика, то она там девственно чиста)

11.10.2013    20805    alfaret    14       

Ошибка "Нарушена целостность структуры конфигурации" 62

Статья Системный администратор Нет файла v8 1cv8.cf Россия Windows Бесплатно (free) Тестирование и исправление

Один из многих вариантов решения ошибки "Нарушена целостность структуры конфигурации". Если Вам довелось столкнуться с этой ошибкой обратитесь к специалисту 1С однозначно. Вариантов решения много, но от ситуации и источника проблемы - решения совершенно разные.

07.10.2013    95017    olenaNT    59       

Ускорение реструктуризации таблиц 126

Статья Системный администратор Программист Нет файла Бесплатно (free) Инструментарий разработчика Администрирование данных 1С Тестирование и исправление

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

12.09.2013    47924    OLEG4120    32       

Исправление ошибок DBCC CHECKDB (1С, SQL) вручную 41

Статья Системный администратор Нет файла v7.7 1cv7.md Windows Бесплатно (free) Тестирование и исправление

Если Вы наблюдаете сообщение "could not continue scan with nolock" и подобные ему - значит эта статья для Вас. В статье рассказывается, как поправить ошибки выданные DBCC CHECKDB вручную.

01.07.2013    66829    Вадимко    3       

Восстановление файловой БД 28

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Тестирование и исправление

Напишу как я восстанавливал файловую БД, может кому пригодится..

09.06.2013    19016    Legolas    9       

Файловые базы *.1CD. Физическая структура. Восстановление. 515

Статья Системный администратор Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Сервисные утилиты Администрирование данных 1С Тестирование и исправление

Как устроены файловые базы? Что делать, если база упала? В статье приведены обзорные сведения об устройстве баз и возможностях восстановления. Приведено описание новых возможностей Tool_1CD.

06.06.2013    170528    awa    124       

Восстановление работоспособности файловой базы. 2. Лечение 85

Статья Системный администратор Программист Нет файла v8 1cv8.cf Бесплатно (free) Тестирование и исправление

Восстановление работоспособности разрушенной файловой базы. Этап 2. Лечим базу.

14.04.2013    36160    andrewks    28