|
У товара 2 штрих кода. Как это склеить в одну строку? | ☑ | ||
---|---|---|---|---|
0
Beast42
21.03.16
✎
11:12
|
Имеется такая вот процедурка:
Процедура КнопкаВыполнитьНажатие(Кнопка) Табдок = Новый ТабличныйДокумент; Макет = ПолучитьМакет("Макет"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номен.Код КАК Код, | Номен.Артикул КАК Артикул, | Номен.Ссылка КАК Номенклатура, | ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | Номен.БазоваяЕдиницаИзмерения КАК ЕденицаИзмерения, | Штрихкоды.Штрихкод КАК Штрихкод, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток |ИЗ | Справочник.Номенклатура КАК Номен | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды | ПО (Штрихкоды.Владелец = Номен.Ссылка) | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки | ПО Номен.Ссылка = ТоварыНаСкладахОстатки.Номенклатура |ГДЕ | НЕ Номен.ЭтоГруппа | И ТоварыНаСкладахОстатки.КоличествоОстаток > 0"; Результат = Запрос.Выполнить(); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьСтрока= Макет.ПолучитьОбласть("Строка"); ТабДок.Очистить(); ТабДок.Вывести(ОбластьШапка); ТабДок.НачатьАвтогруппировкуСтрок(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ОбластьСтрока.Параметры.Заполнить(ВыборкаДетальныеЗаписи); ТабДок.Вывести(ОбластьСтрока, ВыборкаДетальныеЗаписи.Уровень()); КонецЦикла; ТабДок.ЗакончитьАвтогруппировкуСтрок(); ТабДок.Вывести(ОбластьСтрока); //ТабДок.Показать(); ТабДок.Записать(Путь ,ТипФайлаТабличногоДокумента.XLS); КонецПроцедуры Вопрос в следующем. У некоторых позиций по 2 штрих кода. И вот как мне сделать чтобы строчки не задваивались, а в поле штрих код, через запятую были эти 2 штрих кода. |
|||
1
vip03
21.03.16
✎
11:16
|
В цикле проверяй номенклатуру, если она не изменилась - добавляй штрихкод через запятую.
|
|||
2
Beast42
21.03.16
✎
11:19
|
(1) чего не могу понять как? Прям ступор у меня
|
|||
3
Beast42
21.03.16
✎
11:42
|
апп
|
|||
4
Записьдампа
21.03.16
✎
11:47
|
(3) Упорядочи и заведи текущую переменную. В цикле проверяй номенклатуру, если она не изменилась - добавляй штрихкод через запятую.
|
|||
5
Beast42
21.03.16
✎
12:05
|
(4) Так строки же задвоенные всё равно будет. только в одной будет 1 штрих код, а в другой уже 2 через запятую
|
|||
6
Sapiens_bru
21.03.16
✎
12:46
|
(1) Подсказал
(4) Разжевал (0) Пойми, что вывод результата запроса сразу в печать на экран это частный случай. Ты вполне можешь получить результаты, обработать их как угодно и затем вывести хоть полностью хоть по частям. |
|||
7
mehfk
21.03.16
✎
12:51
|
(0) У тебя левое соединение за счет условия в ГДЕ превратилось во внутреннее, ты либо исправь условие, либо убери вообще выборку из справочника.
|
|||
8
ejikbeznojek
21.03.16
✎
12:53
|
Что-нибудь в этом роде напиши
ТеНоменклатура = неопределено; ТекШК=""; ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Если ТекНоменклатура<>ВыборкаДетальныеЗаписи.номенклатура тогда ТекНоменклатура=ВыборкаДетальныеЗаписи; ТекШК=ВыборкаДетальныеЗаписи.ШтрихКод; ОбластьСтрока.Параметры.Заполнить(ВыборкаДетальныеЗаписи); ОбластьСтрока.Параметры.ШК=ТекШК; ТабДок.Вывести(ОбластьСтрока, ВыборкаДетальныеЗаписи.Уровень()); иначе ТекШк=ТекШК+ВыборкаДетальныеЗаписи.ШтрихКод+", "; конецесои КонецЦикла; |
|||
9
ejikbeznojek
21.03.16
✎
13:01
|
Только наоборот)
|
|||
10
Beast42
22.03.16
✎
06:54
|
Сделал так:
Процедура КнопкаВыполнитьНажатие(Кнопка) Табдок = Новый ТабличныйДокумент; Макет = ПолучитьМакет("Макет"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номен.Код КАК Код, | Номен.Артикул КАК Артикул, | Номен.Ссылка КАК Номенклатура, | ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | Номен.БазоваяЕдиницаИзмерения КАК ЕденицаИзмерения, | Штрихкоды.Штрихкод КАК Штрихкод, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток |ИЗ | Справочник.Номенклатура КАК Номен | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды | ПО (Штрихкоды.Владелец = Номен.Ссылка) | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки | ПО Номен.Ссылка = ТоварыНаСкладахОстатки.Номенклатура |ГДЕ | НЕ Номен.ЭтоГруппа | И НЕ Номен.ПометкаУдаления |ИТОГИ | МАКСИМУМ(ХарактеристикаНоменклатуры), | МАКСИМУМ(Остаток) |ПО | Номенклатура"; Результат = Запрос.Выполнить(); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьСтрока= Макет.ПолучитьОбласть("Строка"); ТабДок.Очистить(); ТабДок.Вывести(ОбластьШапка); ТабДок.НачатьАвтогруппировкуСтрок(); ВыборкаДетальныеЗаписиНоменклатура = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаДетальныеЗаписиНоменклатура.Следующий() Цикл ШК = ""; ВыборкаДетальныеЗаписиШК = ВыборкаДетальныеЗаписиНоменклатура.Выбрать(); Пока ВыборкаДетальныеЗаписиШК.Следующий() Цикл Если ШК = "" Тогда ШК = ВыборкаДетальныеЗаписиШК.Штрихкод Иначе ШК = ШК + ", " + ВыборкаДетальныеЗаписиШК.Штрихкод; КонецЕсли; КонецЦикла; ОбластьСтрока.Параметры.Заполнить(ВыборкаДетальныеЗаписиНоменклатура); ОбластьСтрока.Параметры.Штрихкод = ШК; ТабДок.Вывести(ОбластьСтрока, ВыборкаДетальныеЗаписиНоменклатура.Уровень()); КонецЦикла; ТабДок.ЗакончитьАвтогруппировкуСтрок(); ТабДок.Вывести(ОбластьСтрока); ТабДок.Записать(Путь ,ТипФайлаТабличногоДокумента.XLSX); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |