![]() |
![]() |
![]() |
|
Вывод в ТД | ☑ | ||
---|---|---|---|---|
0
myr4ik07
13.12.14
✎
18:33
|
добрій вечер. помогите будьте добры с логикой.
есть код МассивШК = Новый Массив; Пока ВыборкаНоменклатура.Следующий() Цикл Если Результат.Пустой() Тогда Прервать; КонецЕсли; ОбластьНоменклатура.Параметры.Заполнить(ВыборкаНоменклатура); ТабДок.Вывести(ОбластьНоменклатура, ВыборкаНоменклатура.Уровень()); ВыборкаШтрихкод = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаШтрихкод.Следующий() Цикл ОбластьШтрихкод.Параметры.Заполнить(ВыборкаШтрихкод); МассивШК.Добавить(ВыборкаШтрихкод.Штрихкод); Если НЕ МассивШК.Количество() > 1 Тогда ТабДок.Вывести(ОбластьШтрихкод, ВыборкаШтрихкод.Уровень()); ВыборкаДетальныеЗаписи = ВыборкаШтрихкод.Выбрать(); КонецЕсли; Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи); ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень()); КонецЦикла; КонецЦикла; МассивШК.Очистить(); КонецЦикла; после обхода получаю http://gigaline.no-ip.biz/owncloud/public.php?service=files&t=ae266c0ea61945293a713d0ff6bebde9 а я бы хотел, что бы, если в номенклатуры есть два и более штрихкода были выведены все эти штрихкоды один за одным, типа Шк1, Шк2 через запятую например, а потом уже детальные записи. Я применил здесь Массив потому как получал раньше таблицу типа Товар№1 Шк1 = Склад количество 10 Склад количество 5 Шк2 = Склад количество 10 Склад количество 5 что тоже не устраивало, а хотелось бы Товар№1 Шк1, Шк2, Шк3 Склад количество 10 Склад2 количество 5 |
|||
1
ShoGUN
13.12.14
✎
18:53
|
(0) Я бы заморочился и использовал СКД и агрегатную функцию "Массив" оттуда. А в данном случае придётся два обхода делать - сначала по уровню штрих-кодов, лепя свой массив, а потом уже выводить строку и делать обход по детальным строкам(не выводя строки штрих-кодов).
|
|||
2
myr4ik07
13.12.14
✎
18:57
|
(1) будьте добры приведите пример...
|
|||
3
myr4ik07
13.12.14
✎
19:02
|
(1) и что это за агр . функци "массив"?)))
|
|||
4
myr4ik07
13.12.14
✎
19:15
|
(1) я вот думаю, а что бы я применил в данном случаи в тексте запроса и т.д. в скд коль мне нужно полюбому получить все штрихкоды, а потом уже я должен решать есть ли 2 штрихкода для одной номенклатуры или нет...
...мысли в слух... |
|||
5
ShoGUN
13.12.14
✎
19:18
|
(2) (2) ВыборкаШтрихкод = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаШтрихкод.Следующий() Цикл МассивШК.Добавить(ВыборкаШтрихкод.Штрихкод); КонецЦикла; ВыборкаШтрихКод.Сбросить() Пока ВыборкаШтрихкод.Следующий() Цикл ОбластьШтрихкод.Параметры.Заполнить(ВыборкаШтрихкод); ВыборкаДетальныеЗаписи = ВыборкаШтрихкод.Выбрать(); Если ЗначениеЗаполнено(МассивШК) И НЕ МассивШК.Количество() > 1 Тогда ТабДок.Вывести(ОбластьШтрихкод, ВыборкаШтрихкод.Уровень()); ИначеЕсли ЗначениеЗаполнено(МассивШК) Тогда СтрокаШтрихКодов = ""; Для Каждого ШтрихКодСтрока Из МассивШК Цикл СтрокаШтрихКодов = СтрокаШтрихКодов + ?(СтрокаШтрихКодов = "", ШтрихКодСтрокой, ", "+ШтрихКодСтрокой); КонецЦикла; ОбластьШтрихкод.Параметры.Штрихкод = СтрокаШтрихКодов; //Тут в зависимости от того, как параметр в ТД называется. ТабДок.Вывести(ОбластьШтрихкод, ВыборкаШтрихкод.Уровень()); МассивШК = Неопределено; //Чтобы выводить только 1 раз(см. условие) КонецЕсли; Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи); ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень()); КонецЦикла; КонецЦикла; |
|||
6
ShoGUN
13.12.14
✎
19:19
|
(3) Узнаю 1С-ника, знать полезные вещи - не знаем, но поржать надо...
v8: Практическое применение новых возможностей СКД |
|||
7
myr4ik07
13.12.14
✎
19:20
|
(5) ру, очень благодарен, ознакомливаюсь ...
|
|||
8
ShoGUN
13.12.14
✎
19:20
|
Пардон за форматирование, вставилось так. Ну и синтаксические ошибки не проверял, звыняйте. Надеюсь, идея понятна.
|
|||
9
myr4ik07
13.12.14
✎
19:21
|
(6) да ниче ) все очень нормально, спасибо за идею и за ссылку, читаю ...
|
|||
10
ShoGUN
13.12.14
✎
19:21
|
А, только массив не =Неопределено, а очищать, наверное, лучше...
|
|||
11
ShoGUN
13.12.14
✎
19:26
|
Да, и агрегатные функции я перепутал, там "Строка()"
Строка() - Если в качестве параметра передан массив, то функция возвращает строку, содержащую строковые представления всех элементов массива, разделенных символами "; ". Если в качестве параметра передана таблица значений, то функция возвращает строку, содержащую строковые представления всех строк таблицы значений, причем представления ячеек каждой строки разделяются символами "; ", а строки — смиволом перевода строки. Если у какого либо элемента строковое представление пустое, то вместо его представления выводится строка. |
|||
12
myr4ik07
13.12.14
✎
19:38
|
(11) а где это "там"?)) что то не могу разобрать где нужно заменить ((
|
|||
13
ShoGUN
13.12.14
✎
19:40
|
(12) Я про вариант с СКД. Код из (5) и так должен работать.
|
|||
14
myr4ik07
13.12.14
✎
19:46
|
(13) ай красота, то что хотел, вы асс )) спасибо от души, мне конечно еще до такой логики учиться и учиться
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |