Имеется простой запрос, выбирающий данные из табличной части документа и соединящий их с другой таблицей, где хранится строковое представление модели телефона.
Модель телефона в документе задаётся тремя реквизитами ТЧ: Номенклатура, Цвет, Сертификация (все справочники).
Соответствие - ТЧ справочника где также есть Номенклатура, Цвет, Сертификация и Модель - строка длиной 200.
Запрос:
ВЫБРАТЬ
СУММА(ЗаказПоставщикуТовары.Количество) КАК Количество,
ЗаказПоставщикуТовары.Номенклатура,
ЗаказПоставщикуТовары.Цвет,
ЗаказПоставщикуТовары.Сертификация,
СоответствияПрайсовСоответствие.НаименованиеВПрайсе КАК Модель
ИЗ
Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СоответствияПрайсов.Соответствие КАК СоответствияПрайсовСоответствие
ПО ЗаказПоставщикуТовары.Номенклатура = СоответствияПрайсовСоответствие.Номенклатура
И ЗаказПоставщикуТовары.Цвет = СоответствияПрайсовСоответствие.Цвет
И ЗаказПоставщикуТовары.Сертификация = СоответствияПрайсовСоответствие.Сертификация
И (СоответствияПрайсовСоответствие.Ссылка = &СПрайса)
ГДЕ
ЗаказПоставщикуТовары.Ссылка.ПроработкаЗакупки = &ПроработкаЗакупки
И ЗаказПоставщикуТовары.Ссылка.ПроработкаЗакупки <> ЗНАЧЕНИЕ(Документ.ПроработкаЗакупки.ПустаяСсылка)
И НЕ ЗаказПоставщикуТовары.Ссылка.ПометкаУдаления
СГРУППИРОВАТЬ ПО
ЗаказПоставщикуТовары.Номенклатура,
ЗаказПоставщикуТовары.Цвет,
ЗаказПоставщикуТовары.Сертификация,
СоответствияПрайсовСоответствие.НаименованиеВПрайсе
Показать
Как видно, проблем не должно быть. Но, если убрать из запроса группировку по одной из моделей получается вот что:
5,000 | Xiaomi Mi 5X 64Gb | Gold | orig | Xiaomi Mi 5X 64Gb Gold
5,000 | Xiaomi Mi 5X 64Gb | Gold | orig | Xiaomi Mi 5x 64Gb Gold
строка из документа задвоилась, что верно потому, что в соответствии эта Номенклатура, Цвет, сертификация встречается 2 раза. Строковое же представление отличается одной буквой. Это маленькая латинская x. В первой строке она - большая, во второй - маленькая.
А вот если сделать запрос с группировкой, получается вот такая фигня:
10 | Xiaomi Mi 5X 64Gb | Gold | orig | Xiaomi Mi 5X 64Gb Gold
Т.е. оно почему-то не различает маленькую и большую x
Или же ввести в справочник СоответствияПрайсовСоответствие служебное поле "НаименованиеСЖесткимРазличиемЗаглавныхИСтрочныхБукв", которое определять при записи как
УказательЗаглавнойБуквы = "ччч";
Для к = 1 По СтрДлина(НаименованиеВПрайсе) Цикл
Символ = Сред(НаименованиеВПрайсе, к, 1);
НаименованиеСЖесткимРазличиемЗаглавныхИСтрочныхБукв = НаименованиеСЖесткимРазличиемЗаглавныхИСтрочныхБукв
+ ?(ЭтоЗаглавнаяБуква(Символ), УказательЗаглавнойБуквы ,"")
+ Символ;
КонецЦикла;
ВЫБРАТЬ
"гОрод" КАК Название
ПОМЕСТИТЬ ВТ
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"город"
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"город"
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"ГОРОД"
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"гОрод"
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
ВТ.Название
ИЗ
ВТ КАК ВТ
Показать
вернет 1 строку, самую первую
Ну и если использовать не группировку, а через ОБЪЕДИНИТЬ (без слова ВСЕ), то результат объединения будет тоже 1 строка
Или же ввести в справочник СоответствияПрайсовСоответствие служебное поле "НаименованиеСЖесткимРазличиемЗаглавныхИСтрочныхБукв", которое определять при записи как
УказательЗаглавнойБуквы = "ччч";
Для к = 1 По СтрДлина(НаименованиеВПрайсе) Цикл
Символ = Сред(НаименованиеВПрайсе, к, 1);
НаименованиеСЖесткимРазличиемЗаглавныхИСтрочныхБукв = НаименованиеСЖесткимРазличиемЗаглавныхИСтрочныхБукв
+ ?(ЭтоЗаглавнаяБуква(Символ), УказательЗаглавнойБуквы ,"")
+ Символ;
КонецЦикла;