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

1. 20.12.16 15:32 Сейчас в теме
Добрый день. Подскажите пожалуйста, элементарный отчёт в СКД. Выбираем Состав.Номенклатура и Состав.Количество. Как сделать, чтобы в печатной форме в одну строку выводило всю номенклатуру и количество? Т.е. чтобы в одной строке перечислялись все номеклатуры и их количество, примерно так: Хлеб - 4, Молоко - 6, творог - 10. Нашёл справку по функции СоединитьСтроки() и в Ресурсах СКД смог объединить номенклатуру в одну строку, но не смог привязать туда количество.
Найденные решения
11. spacecraft 20.12.16 18:53 Сейчас в теме
да простейшее решение. все просто.
Прикрепленные файлы:
ВнешнийОтчет1.erf
chiki-79; herfis; P1rate; +3 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. olenka-ul 3 20.12.16 15:39 Сейчас в теме
Можно прямо в запросе объединить эти поля.
3. herfis 452 20.12.16 17:22 Сейчас в теме
(2) Ну-ка, ну-ка? Готов накинуть стартманей за примерчик.
4. olegmedvedev 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. spacecraft 20.12.16 18:03 Сейчас в теме
(4) а теперь осталось мелочь, перечитать начальные требования.
Т.е. чтобы в одной строке перечислялись все номеклатуры и их количество, примерно так: Хлеб - 4, Молоко - 6, творог - 10
6. olegmedvedev 20.12.16 18:14 Сейчас в теме
а понял. ну ок. надо было В ОДНУ СТРОКУ ВСЯ НОМЕНКЛАТУРА выделить
7. spacecraft 20.12.16 18:18 Сейчас в теме
(6) я даже жирным выделил акцент требования. ВСЕ.
т.е. запрос должен вернуть всего одну строку, в которой перечислены все номенклатуры и их количество. Даже пример такой строки приведен.
9. herfis 452 20.12.16 18:38 Сейчас в теме
(6) "Эти поля" - это ж в контексте вопроса, иначе какой смысл?
А вопрос был в объединении всей номенклатуры и ее количества в одну строку конкретного формата.
И вопросы на форуме обычно предполагают ответ, применимый в продакшене.
Но так и быть, так как мое предложение не содержит ограничений, я готов отнестить к ответу, как к решению абстрактной олимпийской задачки.
И, так сказать, оплатить решение, хоть оно и не пригодится на практике.
Так что в путь :)
8. alex-l19041 8 20.12.16 18:34 Сейчас в теме
думаю, что это тот случай когда СКД не поможет... простеньким циклом преобразовать ТЗ в строку...
10. herfis 452 20.12.16 18:39 Сейчас в теме
(8) Не, мне кажется в СКД можно, просто сейчас нет времени экспериментировать...
11. spacecraft 20.12.16 18:53 Сейчас в теме
да простейшее решение. все просто.
Прикрепленные файлы:
ВнешнийОтчет1.erf
chiki-79; herfis; P1rate; +3 Ответить
13. P1rate 21.12.16 10:28 Сейчас в теме
(11)Благодарю за помощь. Ваше решение простое и 100% рабочее
15. XelOla 17 28.08.20 22:30 Сейчас в теме
(11)
Строка(Номенклатура.Наименование) + " " + Строка(Номенклатура.ЕдиницаИзмерения.Наименование)
почему мне пишет Неверные параметры "+"
12. starik-2005 2707 20.12.16 21:42 Сейчас в теме
Да, там примитивно все. К числу можно формат применить, засунуть с номенклатурой в таблицу и потом ее в строку с разделителем ",". Читайте справку - там все есть.
14. Katyushkaa 21.12.16 11:14 Сейчас в теме
Создать Ресурс: СоединитьСтроки(ТаблицаЗначений(Номенклатура,Количество))
Прикрепленные файлы:
СоединитьСтроки.xml
Оставьте свое сообщение
Вакансии
Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Автор новостей об 1С, налогах и бухучете на INFOSTART.RU
Санкт-Петербург
По совместительству

Программист 1С
Екатеринбург
зарплата от 50 000 руб.
По совместительству

Ведущий разработчик 1С (техлид внутреннего учета)
Новосибирск
зарплата от 230 000 руб.
Полный день

Программист 1С
Рязань
зарплата от 150 000 руб. до 250 000 руб.
Полный день