Документ однозначно задается номером и датой, поэтому не вижу особого смысла хранить его штрих-код.
Некоторые пояснения:
Штрих-код у меня состоит из полей: 2 символа - код документа (вряд ли в базе свыше 99 видов документов)-задает разработчик, 2 символа - код фирмы (вряд ли в одной базе ведут свыше 99 своих фирм)- я беру его из кода карточки фирмы, дата-пояснений не нужно, номер документа - поставлен в конец, т.к. в моей базе есть документы с разной длиной номера, плавает длина-номер в конце - проще разбор. Еще момент - от номера отсекается префикс документов (у нас префикс задается по фирме) для универсальности - некоторые виды штрих-кодов не понимают литер, а так - только цифры. Префикс однозначно восстанавливается (у меня) по фирме. Если применяются более сложные префиксы (пр-р по подразделениям), то проще перед номером добавить 2 символа с кодировкой префиксов.
Вторая функция позволяет найти документ по сканированному штрих-коду, а дальше по фантазии...
//формирование штрих-кода
Функция мирПолучитьШтрихКодПоДокументу(ДокСсылка) Экспорт
стрНомерДокумента=Прав(СокрП(ДокСсылка.Номер),7);
стрДата=""+Формат(ДокСсылка.Дата,"ДФ=yyyy")+?(Месяц(ДокСсылка.Дата)<10,"0"+Месяц(ДокСсылка.Дата),Месяц(ДокСсылка.Дата))+Лев(ДокСсылка.Дата,2);
ВидДок=ТипЗнч(ДокСсылка);
Если ВидДок=Тип("ДокументСсылка.ЗаказНаряд") Тогда // для заказ-наряда
КодДокумента="01";
ИначеЕсли ВидДок=Тип("ДокументСсылка.РеализацияАвтомобилей") Тогда
КодДокумента="02";
ИначеЕсли ВидДок=Тип("ДокументСсылка.СчетНаОплатуЗаАвтомобили") Тогда
КодДокумента="03";
ИначеЕсли ВидДок=Тип("ДокументСсылка.ПриходныйКассовыйОрдер") Тогда
КодДокумента="04";
ИначеЕсли ВидДок=Тип("ДокументСсылка.РасходныйКассовыйОрдер") Тогда
КодДокумента="05";
ИначеЕсли ВидДок=Тип("ДокументСсылка.СчетНаОплату") Тогда
КодДокумента="06";
ИначеЕсли ВидДок=Тип("ДокументСсылка.РеализацияТоваров") Тогда
КодДокумента="07";
Иначе
Возврат "";
КонецЕсли;
КодФирмы=Число(Прав(СокрП(ДокСсылка.Организация.Код),2));
СтрФирма=?(КодФирмы<10,"0"+КодФирмы, Строка(КодФирмы));
ШтрихКод=КодДокумента+СтрФирма+стрДата+стрНомерДокумента;
Возврат ШтрихКод;
КонецФункции
//получение документа
Функция мирПолучитьДокументПоШтрихКоду(ШтрихКод) Экспорт
ШтрихКод=СокрЛ(ШтрихКод);
КодДокумента=Лев(ШтрихКод,2);
Если КодДокумента="01" Тогда
ВидДок="ЗаказНаряд";
ИначеЕсли КодДокумента="02" Тогда
ВидДок="РеализацияАвтомобилей";
ИначеЕсли КодДокумента="03" Тогда
ВидДок="СчетНаОплатуЗаАвтомобили";
ИначеЕсли КодДокумента="04" Тогда
ВидДок="ПриходныйКассовыйОрдер";
ИначеЕсли КодДокумента="05" Тогда
ВидДок="РасходныйКассовыйОрдер";
ИначеЕсли КодДокумента="06" Тогда
ВидДок="СчетНаОплату";
ИначеЕсли КодДокумента="07" Тогда
ВидДок="РеализацияТоваров";
Иначе
Возврат Неопределено;
КонецЕсли;
ДатаДок=Дата(Сред(ШтрихКод,5,4),Сред(ШтрихКод,9,2),Сред(ШтрихКод,11,2));
КодФирмы="000000"+Сред(ШтрихКод,3,2);
Организация=Справочники.Организации.НайтиПоКоду(КодФирмы);
Префикс=Организация.Префикс;
НомерДок=Префикс+Сред(ШтрихКод,13);
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| Документ.Ссылка
|ИЗ
| Документ."+ВидДок+" КАК Документ
|ГДЕ
| Документ.Номер = &Номер
| И Документ.Дата >= &ДатаНач";
Запрос.УстановитьПараметр("ДатаНач",НачалоДня(ДатаДок));
Запрос.УстановитьПараметр("Номер",НомерДок);
Выборка=Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Ссылка;
КонецЕсли;
Возврат Неопределено;
КонецФункции