Клиент выставил рекламацию, начал разбираться и получил алгоритмическое удовольствие.
Суть алгоритма заключалась в том что в базе было по одной позиции номенклатуры на каждую характеристику, например:
Ботинки Красные
Ботинки Зеленые
Ботинки Синие
А клиент хотел получить на выходе одну номенклатуру Ботинки с тремя характеристиками - Красные, Зеленые и Синие. При этом одна из позиций была главная (Ботинки Красные) и переименовывалась в Ботинки.
Так вот, когда алгоритм отрабатывал, он почему-то получал на выходе:
Ботинки, характеристика Красные
Ботинки, характеристика Красные
Ботинки, характеристика Красные
Но когда я отлаживал, было то всё окей. Начал разбираться почему, обнаружил забавный глюк.
Ботинки Зеленые заменялись на Ботинки, характеристика Зеленые
Ботинки Синие заменялись на Ботинки, характеристика Синие
И в этот момент начала отрабатывать замена Ботинки (бывшие Ботинки Красные) на Ботинки, характеристика Красные.
Но в документах то уже номенклатура была заменена на Ботинки и когда она встречала Ботинки, думала, что это элемент, которому нужно присвоить характеристику Красные.
В итоге убивала все уже проставленные характеристики.
Защита была очень простая - если в документе уже стоит характеристика, не трожь позицию, пропускай.
А тестировал-то я по отдельности элементы заменяемые, поэтому и не увидел.
Пользователь тоже догадался, что если сначала менять главную группу, а потом зависимые элементы всё окей. Но это было неудобно ему, я нашел корень зла и поправил.
Journal information