Бакшеев Никита | Руководитель отдела моб разработки на платформе 1С | 1С-Рарус

«Как разработать успешное моб приложение на платформе 1С.»

1. Идея и ее экономическая проверка 2. Стоимость, сроки, проектирование и техническая проверка 3. Горький опыт или грабли, на которые наступают все 4. Вывод на рынок и продвижение

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

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

Вакансии


Программист 1С
Москва
зарплата от 100 000 руб. до 200 000 руб.
Полный день

Преподаватель 1С
Санкт-Петербург
Полный день

Удаленный ИТ-журналист
Санкт-Петербург
По совместительству

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