В прикреплении файл
"настройки загрузки прайс-листа.mxlz" - настройка для загрузки из табличного документа, адаптированная под прилагаемый ранее в этой теме файл
"прайс лист для разработки.xls".
В обработке прописано выражение для вычисления производителя:
Код |
---|
Если ПустаяСтрока(СокрЛП(ТекстЯчейки)) Тогда
Иначе
Производитель = Справочники.Производители.НайтиПоНаименованию(СокрЛП(ТекстЯчейки),Истина);
Если ЗначениеЗаполнено(Производитель) Тогда
Результат = Производитель;
Иначе
НовыйПроизводитель = Справочники.Производители.СоздатьЭлемент();
НовыйПроизводитель.УстановитьНовыйКод();
НовыйПроизводитель.Наименование = СокрЛП(ТекстЯчейки);
НовыйПроизводитель.ОбменДанными.Загрузка = Истина;
НовыйПроизводитель.Записать();
Результат = НовыйПроизводитель.Ссылка;
КонецЕсли;
КонецЕсли; |
Для "Производителя" можно устанавливать режим "Искать", если все производители из файла уже есть в базе. Выражение - позволяет загрузить отсутствующих производителей (с долей риска превратить справочник в помойку, если в этой колонке будет что-то не то)
и выражение для вычисления номенклатуры в нашей базе:
Код |
---|
Производитель = ТекущиеДанные.Производитель;
Артикул = СокрЛП(ТекстЯчейки);
Сообщить(Артикул);
Если НЕ ПустаяСтрока(Артикул) Тогда
Если ЗначениеЗаполнено(Производитель) Тогда
ЗапросПоАртикулуИПроизводителю = Новый Запрос;
ЗапросПоАртикулуИПроизводителю.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| Номенклатура.Ссылка КАК Ном
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Артикул = &Артикул
| И Номенклатура.Производитель = &Производитель
| И НЕ Номенклатура.ЭтоГруппа
|
|СГРУППИРОВАТЬ ПО
| Номенклатура.Ссылка";
ЗапросПоАртикулуИПроизводителю.УстановитьПараметр("Артикул",Артикул);
ЗапросПоАртикулуИПроизводителю.УстановитьПараметр("Производитель",Производитель);
Результат = ЗапросПоАртикулуИПроизводителю.Выполнить();
Если НЕ Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Выборка.Следующий();
Номенклатура = Выборка.Ном;
Сообщить("Нашли по артикулу и производителю");
Сообщить(Номенклатура);
Иначе
Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",Артикул);
КонецЕсли;
Иначе
Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",Артикул);
КонецЕсли;
Результат = Номенклатура;
Иначе
Результат = Артикул;
КонецЕсли; |
Данные по соответствиям номенклатуры кодам поставщика, введенные вручную - не затираются при повторной загрузке, если в обработке стоит галка "Замещать имеющиеся записи".
Настройки остальных колонок - стандартные: искать или устанавливать, кто пользовался обработкой - разберется.
Это то что можно сделать достаточно быстро.
Чтобы сформулировать задачу для реализации в типовой коробке, нужно время, чтобы перевести "с русского на русский".