Установка правильных характеристик УНФ3
При загрузке заказа с сайта написанная мною функция поиска характеристики не учивала владельца, искала только по наименованию или артикулу. Функция была поправлена:
&НаСервере Функция НайтиХарактеристикуТовара(Товар, Наименование, Артикул) Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Т.Ссылка КАК Ссылка |ИЗ | Справочник.ХарактеристикиНоменклатуры КАК Т |ГДЕ | Т.Владелец = &Товар | И (Т.Наименование = &Наименование | И &Наименование <> """" | ИЛИ Т.Артикул = &Артикул | И &Артикул <> """") | И НЕ Т.ПометкаУдаления"; Запрос.УстановитьПараметр("Наименование", СокрЛП(Наименование)); Запрос.УстановитьПараметр("Товар", Товар); Запрос.УстановитьПараметр("Артикул", СокрЛП(Артикул)); РезультатЗапроса = Запрос.Выполнить(); Если Не РезультатЗапроса.Пустой() Тогда Выборка = РезультатЗапроса.Выбрать(); Выборка.Следующий(); Возврат Выборка.Ссылка; КонецЕсли; КонецФункции
Но она породила проблему, которую пользователи сначала приняли за то, что характеристики задублировались, потому что в отчете данные будто бы по разным характеристикам шли, потому что характеристика не соответствовала товару.
Пришлось написать небольшое исправление, благо замечено было быстро, запускал по чекам и по ОРП:
З = Новый Запрос( "ВЫБРАТЬ РАЗЛИЧНЫЕ Ссылка ИЗ Документ.ЧекККМ.Запасы КАК Т ГДЕ Т.Характеристика <> Значение(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) И Т.Характеристика.Владелец <> Т.Номенклатура И Ссылка.Проведен УПОРЯДОЧИТЬ ПО Т.Ссылка.Дата"); Выборка = З.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Сообщить(Выборка.Ссылка); ОО = Выборка.Ссылка.ПолучитьОбъект(); Для Каждого Строка ИЗ ОО.Запасы Цикл Если ЗначениеЗаполнено(Строка.Характеристика) И Строка.Характеристика.Владелец <> Строка.Номенклатура Тогда ИскХарактеристика = видс_С.НайтиХарактеристикуТовара(Строка.Номенклатура, Строка.Характеристика.Наименование,""); Если ЗначениеЗаполнено(ИскХарактеристика) Тогда Строка.Характеристика = ИскХарактеристика; Сообщить(" новая хар-ка: " + Строка.Характеристика); Иначе Сообщить(" ОШИБКА поиска хар-ки: " + Строка.Характеристика + " у товара: " + Строка.Номенклатура); КонецЕсли; КонецЕсли; КонецЦикла; Попытка ОО.Записать(РежимЗаписиДокумента.Проведение); Исключение Сообщить(" - не проведен: " + ОписаниеОшибки()); КонецПопытки; КонецЦикла;
Среда: УНФ 3.0.13.374 Объем: 0.5 час
