IE 2017

СКД СоединитьСтроки() Номенклатура + количество

1. Андрей Турбин (P1rate) 20.12.16 15:32 Сейчас в теме
Добрый день. Подскажите пожалуйста, элементарный отчёт в СКД. Выбираем Состав.Номенклатура и Состав.Количество. Как сделать, чтобы в печатной форме в одну строку выводило всю номенклатуру и количество? Т.е. чтобы в одной строке перечислялись все номеклатуры и их количество, примерно так: Хлеб - 4, Молоко - 6, творог - 10. Нашёл справку по функции СоединитьСтроки() и в Ресурсах СКД смог объединить номенклатуру в одну строку, но не смог привязать туда количество.
Найденные решения
11. Oleg Space (spacecraft) 20.12.16 18:53 Сейчас в теме
да простейшее решение. все просто.
Прикрепленные файлы:
ВнешнийОтчет1.erf
herfis; P1rate; +2 Ответить 1
Остальные ответы
2. Циля Аскерман (olenka-ul) 2 20.12.16 15:39 Сейчас в теме
Можно прямо в запросе объединить эти поля.
3. Сан Саныч (herfis) 130 20.12.16 17:22 Сейчас в теме
(2) Ну-ка, ну-ка? Готов накинуть стартманей за примерчик.
4. Олег Медведев (olgerd666) 38 20.12.16 17:55 Сейчас в теме
(3)я сделал) где мои стартмани?
ВЫБРАТЬ
	ЦеныНоменклатурыСрезПоследних.Номенклатура,
	ПОДСТРОКА("0123456789", ЦеныНоменклатурыСрезПоследних.Цена / 10000000 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ЦеныНоменклатурыСрезПоследних.Цена * 0.000006)) / 6 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ЦеныНоменклатурыСрезПоследних.Цена * 0.00006)) / 6 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ЦеныНоменклатурыСрезПоследних.Цена * 0.0006)) / 6 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ЦеныНоменклатурыСрезПоследних.Цена * 0.006)) / 6 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ЦеныНоменклатурыСрезПоследних.Цена * 0.06)) / 6 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ЦеныНоменклатурыСрезПоследних.Цена * 0.6)) / 6 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ЦеныНоменклатурыСрезПоследних.Цена * 6)) / 6 + 1, 1) + "." + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ЦеныНоменклатурыСрезПоследних.Цена * 60)) / 6 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ЦеныНоменклатурыСрезПоследних.Цена * 600)) / 6 + 1, 1) КАК ЦенаСтрока,
	ЦеныНоменклатурыСрезПоследних.Цена
ПОМЕСТИТЬ ВРТаб
ИЗ
	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Лата, ) КАК ЦеныНоменклатурыСрезПоследних
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВРТаб.Номенклатура,
	ВРТаб.Цена,
	ВЫБОР
		КОГДА НЕ ПОДСТРОКА(ВРТаб.ЦенаСтрока, 1, 1) = "0"
			ТОГДА ПОДСТРОКА(ВРТаб.ЦенаСтрока, 1, 10)
		КОГДА НЕ ПОДСТРОКА(ВРТаб.ЦенаСтрока, 2, 1) = "0"
			ТОГДА ПОДСТРОКА(ВРТаб.ЦенаСтрока, 2, 9)
		КОГДА НЕ ПОДСТРОКА(ВРТаб.ЦенаСтрока, 3, 1) = "0"
			ТОГДА ПОДСТРОКА(ВРТаб.ЦенаСтрока, 3, 8)
		КОГДА НЕ ПОДСТРОКА(ВРТаб.ЦенаСтрока, 4, 1) = "0"
			ТОГДА ПОДСТРОКА(ВРТаб.ЦенаСтрока, 4, 7)
		КОГДА НЕ ПОДСТРОКА(ВРТаб.ЦенаСтрока, 5, 1) = "0"
			ТОГДА ПОДСТРОКА(ВРТаб.ЦенаСтрока, 5, 6)
		КОГДА НЕ ПОДСТРОКА(ВРТаб.ЦенаСтрока, 6, 1) = "0"
			ТОГДА ПОДСТРОКА(ВРТаб.ЦенаСтрока, 6, 5)
		КОГДА НЕ ПОДСТРОКА(ВРТаб.ЦенаСтрока, 7, 1) = "0"
			ТОГДА ПОДСТРОКА(ВРТаб.ЦенаСтрока, 7, 4)
		КОГДА НЕ ПОДСТРОКА(ВРТаб.ЦенаСтрока, 8, 1) = "0"
			ТОГДА ПОДСТРОКА(ВРТаб.ЦенаСтрока, 8, 3)
		КОГДА НЕ ПОДСТРОКА(ВРТаб.ЦенаСтрока, 9, 1) = "0"
			ТОГДА ПОДСТРОКА(ВРТаб.ЦенаСтрока, 9, 2)
		ИНАЧЕ ПОДСТРОКА(ВРТаб.ЦенаСтрока, 10, 1)
	КОНЕЦ КАК ЦенаСтрокой,
	ВРТаб.Номенклатура.Наименование + " " + ВЫБОР
		КОГДА НЕ ПОДСТРОКА(ВРТаб.ЦенаСтрока, 1, 1) = "0"
			ТОГДА ПОДСТРОКА(ВРТаб.ЦенаСтрока, 1, 10)
		КОГДА НЕ ПОДСТРОКА(ВРТаб.ЦенаСтрока, 2, 1) = "0"
			ТОГДА ПОДСТРОКА(ВРТаб.ЦенаСтрока, 2, 9)
		КОГДА НЕ ПОДСТРОКА(ВРТаб.ЦенаСтрока, 3, 1) = "0"
			ТОГДА ПОДСТРОКА(ВРТаб.ЦенаСтрока, 3, 8)
		КОГДА НЕ ПОДСТРОКА(ВРТаб.ЦенаСтрока, 4, 1) = "0"
			ТОГДА ПОДСТРОКА(ВРТаб.ЦенаСтрока, 4, 7)
		КОГДА НЕ ПОДСТРОКА(ВРТаб.ЦенаСтрока, 5, 1) = "0"
			ТОГДА ПОДСТРОКА(ВРТаб.ЦенаСтрока, 5, 6)
		КОГДА НЕ ПОДСТРОКА(ВРТаб.ЦенаСтрока, 6, 1) = "0"
			ТОГДА ПОДСТРОКА(ВРТаб.ЦенаСтрока, 6, 5)
		КОГДА НЕ ПОДСТРОКА(ВРТаб.ЦенаСтрока, 7, 1) = "0"
			ТОГДА ПОДСТРОКА(ВРТаб.ЦенаСтрока, 7, 4)
		КОГДА НЕ ПОДСТРОКА(ВРТаб.ЦенаСтрока, 8, 1) = "0"
			ТОГДА ПОДСТРОКА(ВРТаб.ЦенаСтрока, 8, 3)
		КОГДА НЕ ПОДСТРОКА(ВРТаб.ЦенаСтрока, 9, 1) = "0"
			ТОГДА ПОДСТРОКА(ВРТаб.ЦенаСтрока, 9, 2)
		ИНАЧЕ ПОДСТРОКА(ВРТаб.ЦенаСтрока, 10, 1)
	КОНЕЦ КАК КонкатенацияНомЦена
ИЗ
	ВРТаб КАК ВРТаб
...Показать Скрыть

может можно и проще. я пока придумал только это/ и этот запрос сделан чисто из спортивного интереса, чем является ответом на вопрос ТС
Прикрепленные файлы:
5. Oleg Space (spacecraft) 20.12.16 18:03 Сейчас в теме
(4) а теперь осталось мелочь, перечитать начальные требования.
Т.е. чтобы в одной строке перечислялись все номеклатуры и их количество, примерно так: Хлеб - 4, Молоко - 6, творог - 10
6. Олег Медведев (olgerd666) 38 20.12.16 18:14 Сейчас в теме
а понял. ну ок. надо было В ОДНУ СТРОКУ ВСЯ НОМЕНКЛАТУРА выделить
7. Oleg Space (spacecraft) 20.12.16 18:18 Сейчас в теме
(6) я даже жирным выделил акцент требования. ВСЕ.
т.е. запрос должен вернуть всего одну строку, в которой перечислены все номенклатуры и их количество. Даже пример такой строки приведен.
8. Алекс Кон (alex-l19041) 9 20.12.16 18:34 Сейчас в теме
думаю, что это тот случай когда СКД не поможет... простеньким циклом преобразовать ТЗ в строку...
9. Сан Саныч (herfis) 130 20.12.16 18:38 Сейчас в теме
(6) "Эти поля" - это ж в контексте вопроса, иначе какой смысл?
А вопрос был в объединении всей номенклатуры и ее количества в одну строку конкретного формата.
И вопросы на форуме обычно предполагают ответ, применимый в продакшене.
Но так и быть, так как мое предложение не содержит ограничений, я готов отнестить к ответу, как к решению абстрактной олимпийской задачки.
И, так сказать, оплатить решение, хоть оно и не пригодится на практике.
Так что в путь :)
10. Сан Саныч (herfis) 130 20.12.16 18:39 Сейчас в теме
(8) Не, мне кажется в СКД можно, просто сейчас нет времени экспериментировать...
11. Oleg Space (spacecraft) 20.12.16 18:53 Сейчас в теме
да простейшее решение. все просто.
Прикрепленные файлы:
ВнешнийОтчет1.erf
herfis; P1rate; +2 Ответить 1
12. Sergey Andreev (starik-2005) 1130 20.12.16 21:42 Сейчас в теме
Да, там примитивно все. К числу можно формат применить, засунуть с номенклатурой в таблицу и потом ее в строку с разделителем ",". Читайте справку - там все есть.
13. Андрей Турбин (P1rate) 21.12.16 10:28 Сейчас в теме
(11)Благодарю за помощь. Ваше решение простое и 100% рабочее
14. Екатерина Люфт (Katyushkaa) 21.12.16 11:14 Сейчас в теме
Создать Ресурс: СоединитьСтроки(ТаблицаЗначений(Номенклатура,Количество))
Прикрепленные файлы:
СоединитьСтроки.xml
Оставьте свое сообщение