Сколько нюансов и тонкостей должен учитывать программист 1С при работе с конвертацией данных? Бесчисленное множество. Вот один из них, который может поставить в ступор любого опытного программиста:
Если включить 2 поля поиска у документа, дата и номер, то поиск по дате не будет осуществляться.
С чем же связана данная проблема?
Все дело в том, что в загрузке используется платформенный метод НайтиПоНомеру, который имеет 2 параметра, "НомерДокумента", "ДатаИнтервала". Причем ДатаИнтервала, это не точная дата, по которой будет осуществляться поиск, а дата из интервала, в котором проводится поиск по номеру. Сам интервал определяется как период уникальности номеров документа, в который входит указанная дата. Например, если номера документов уникальны в пределах месяца и задана дата 10 декабря 2001 года, то поиск будет проводиться в интервале с 01 по 31 декабря 2001 года. Из-за такого нюанса могут возникнуть сложности в поиске документа, например, когда документ с номером "0001" уже существует в базе, но его дата сильно отличается от даты загружаемого, хотя обе даты находятся в пределах одного года. И вместо того, чтобы создать новый документ с таким-же номером или выдать сообщение об ошибке, 1С модифицирует уже существующий документ.
Как обойти данную проблему?
Достаточно взвести в правиле конвертации свойств (ПКС) галочку "поиск по дате на равенство". Также, поможет использование ещё одного свойство для поиска, например, реквизита "сумма документа".
Что ещё нас может ждать?
К сожалению, 1С преподносит сюрпризы и здесь! Если в обработчиках ПКС будут какие-то алгоритмы, даже просто комментарии, то поиск по дате на равенство будет выгружен в файл выгрузки не на тот уровень.
Из-за этого, он проигнорируется при загрузке. Это больше похоже на ошибку конвертации 2.1.8.2, чем на логичное поведение системы. Чтобы избежать данную ошибку, достаточно вписать в обработчик ПКС "При выгрузке" следующий код:
УстановитьАтрибут(УзелСвойства , "ПоискПоДатеНаРавенство", Истина);