Представление в запросе табличной части документа одним строковым полем

09.09.19

Разработка - Запросы

Поставили задачу: "Получить в одно поле, всю таблицу товаров документа "Реализации товаров и услуг" через запятую". Поля таблицы товаров интересны заказчику были только наименование, количество и единица измерения. Конечно данный вариант проще сделать в обработке результата или в выражениях СКД, но моё мнение, что в запросе результат будет получен быстрее. Механизм не универсальный, в данном примере рассматривается таблица максимум с 20-ью строками и количество с типом Число (8,3). Комплексная Автоматизация 1.1

Добрый день.

Если кому-то потребуется некую табличную часть в запросе преобразовать в одно строковое поле, которое будет содержать перечисление всех строк таблицы, тогда вам будет интересно это прочитать. Не спорю, что возможно это "жесть".

Первая трудность - Нельзя в запросе преобразовать Число в Строку

В запросе 1С, нельзя сложить в одну строку значения типа Строка и Число, точнее нет возможности преобразовать Число в Строку. Благодаря данному сайту нашел отличное относительно универсальное решение - //infostart.ru/public/331805/ , единственное, что я добавил это убрал нули, т.е. приведенный запрос из 0,5 типа Числа(8,3) вернул бы строку 00000000,500.

Вторая трудность - Строки в столбцы

Трудность была относительной, опять же прочитав где-то в комментариях форума выше упомянутого автора ildarovich про необходимость использовать номер строки, решение пришло само собой. Но решение получилось так же не совсем универсальным. Если с числом ещё понятно, что оно определяется в конфигураторе, то ограничение на количество строк определить не возможно, товаров ведь может быть вбито хоть +100500... проверил, за шесть лет работы компании, максимальное количество строк в таблице товаров было 22 один раз, другие разы не превышало16 и крайне редко... Пришел к мнению, что пока сделаю на 20 строк.

Второй вариант запроса:

(Данный вариант был скорректирован и осмыслен после написания статьи, оптимизация, спасибо всем за советы :))

ВЫБРАТЬ
    РеализацияТоваровУслугТовары.Ссылка,
    РеализацияТоваровУслугТовары.Номенклатура,
    ПОДСТРОКА("0123456789", РеализацияТоваровУслугТовары.Количество / 100000 + 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) 
    + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, РеализацияТоваровУслугТовары.Количество * 6000)) / 6 + 1, 1) КАК КоличествоСтрокой,
    РеализацияТоваровУслугТовары.Количество,
    РеализацияТоваровУслугТовары.ЕдиницаИзмерения,
    РеализацияТоваровУслугТовары.НомерСтроки
ПОМЕСТИТЬ ЧислоВСтроку
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
    РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
    И РеализацияТоваровУслугТовары.Ссылка.Проведен = ИСТИНА
;

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
    НКЕ.Ссылка,
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 1 ТОГДА НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) +
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 2 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 3 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 4 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 5 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 6 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 7 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 8 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 9 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 10 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 11 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 12 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 13 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) +
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 14 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 15 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 16 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 17 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) +
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 18 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 19 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 20 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 21 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) +
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 22 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 23 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 24 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
    МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 25 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) +
    МАКСИМУМ(".") КАК ТаблицаТоварыВСтроку
ИЗ
    НКЕ КАК НКЕ

СГРУППИРОВАТЬ ПО
    НКЕ.Ссылка

 

Первый вариант запроса:

Магия жести

 

запросы табличная часть таблица

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159888    876    399    

862

Запросы Программист Бесплатно (free)

Увидел cheatsheet по SQL и захотелось нарисовать подобное, но про запросы.

18.10.2024    10014    sergey279    18    

64

Запросы Программист Платформа 1С v8.3 Запросы Конфигурации 1cv8 Бесплатно (free)

Столкнулся с интересной ситуацией, которую хотел бы разобрать, ввиду её неочевидности. Речь пойдёт про использование функции запроса АВТОНОМЕРЗАПИСИ() и проблемы, которые могут возникнуть.

11.10.2024    5242    XilDen    36    

80

Запросы Программист Запросы Бесплатно (free)

Отлаживая взаимодействие с базой данных, мы регулярно сталкиваемся с зависающими или подозрительно долго выполняющимися обращениями, негативно влияющими на производительность. О том, как в PostgreSQL выявить подозрительные запросы, основываясь на доступной о них информации, расскажем в статье.

16.08.2024    7978    user1840182    5    

28

Математика и алгоритмы Запросы Программист Платформа 1С v8.3 Запросы Бесплатно (free)

Рассмотрим быстрый алгоритм поиска дублей с использованием hash функции по набору полей шапки и табличных частей.

08.07.2024    2417    ivanov660    9    

22

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

Часто при разработке отчетов в СКД возникает ситуация, когда не совсем понятно, почему отчет выводит не те данные, которые нужны, либо не выводит вовсе. Возникает потребность увидеть конечный запрос, который формирует СКД. Как это сделать, рассмотрим в этой статье.

15.05.2024    8773    implecs_team    6    

47

Запросы Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Часто поступают задачи по произвольному распределению общих сумм. После распределения иногда пропадают копейки. Суть решения добавить АвтоНомерЗаписи() в ВТ распределения, и далее используя функции МАКСИМУМ или МИНИМУМ можем положить разницу копеек в первую или последнюю строку знаменателя распределения.

11.04.2024    3402    andrey_sag    10    

36
Отзывы
1. ixijixi 1913 09.06.17 11:03 Сейчас в теме
Что-то правда реальная жесть... Не проще вот так было?
МАКСИМУМ(ВЫБОР ТЧ.НомерСтроки КОГДА 1 ТОГДА ТЧ.Номенклатура ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР ТЧ.НомерСтроки КОГДА 2 ТОГДА "; " + ТЧ.Номенклатура ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР ТЧ.НомерСтроки КОГДА 3 ТОГДА "; " + ТЧ.Номенклатура ИНАЧЕ "" КОНЕЦ) +
	МАКСИМУМ(ВЫБОР ТЧ.НомерСтроки КОГДА 4 ТОГДА "; " + ТЧ.Номенклатура ИНАЧЕ "" КОНЕЦ) КАК Номенклатура
user1316759; tolyan_ekb; AleksKol; shalimski; psih12; rpgshnik; +6 Ответить
2. Dream_kz 129 09.06.17 11:09 Сейчас в теме
ВычислитьВыражениеСГруппировкойМассив() - проще и быстрее.
Interrupted; echo77; +2 Ответить
17. rpgshnik 3795 15.06.17 10:49 Сейчас в теме
(1) Сегодня выдалась минутка и решил оптимизировать)))
Вам конечно отдельное спасибо, не знал о такой возможности использовать "Максимум".

Запрос вышел более лаконичный, так же некоторые другие моменты сократил:

ВЫБРАТЬ
	РеализацияТоваровУслугТовары.Ссылка,
	РеализацияТоваровУслугТовары.Номенклатура,
	ПОДСТРОКА("0123456789", РеализацияТоваровУслугТовары.Количество / 100000 + 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) 
	+ ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, РеализацияТоваровУслугТовары.Количество * 6000)) / 6 + 1, 1) КАК КоличествоСтрокой,
	РеализацияТоваровУслугТовары.Количество,
	РеализацияТоваровУслугТовары.ЕдиницаИзмерения,
	РеализацияТоваровУслугТовары.НомерСтроки
ПОМЕСТИТЬ ЧислоВСтроку
ИЗ
	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
	РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
	И РеализацияТоваровУслугТовары.Ссылка.Проведен = ИСТИНА
;

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	НКЕ.Ссылка,
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 1 ТОГДА НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) +
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 2 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 3 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 4 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 5 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 6 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 7 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 8 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 9 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 10 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 11 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 12 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 13 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) +
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 14 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 15 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 16 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 17 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) +
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 18 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 19 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 20 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 21 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) +
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 22 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 23 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 24 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 25 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) +
    МАКСИМУМ(".") КАК ТаблицаТоварыВСтроку
ИЗ
	НКЕ КАК НКЕ

СГРУППИРОВАТЬ ПО
	НКЕ.Ссылка
Показать
Bukaska; ixijixi; +2 Ответить
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ixijixi 1913 09.06.17 11:03 Сейчас в теме
Что-то правда реальная жесть... Не проще вот так было?
МАКСИМУМ(ВЫБОР ТЧ.НомерСтроки КОГДА 1 ТОГДА ТЧ.Номенклатура ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР ТЧ.НомерСтроки КОГДА 2 ТОГДА "; " + ТЧ.Номенклатура ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР ТЧ.НомерСтроки КОГДА 3 ТОГДА "; " + ТЧ.Номенклатура ИНАЧЕ "" КОНЕЦ) +
	МАКСИМУМ(ВЫБОР ТЧ.НомерСтроки КОГДА 4 ТОГДА "; " + ТЧ.Номенклатура ИНАЧЕ "" КОНЕЦ) КАК Номенклатура
user1316759; tolyan_ekb; AleksKol; shalimski; psih12; rpgshnik; +6 Ответить
3. rpgshnik 3795 09.06.17 11:22 Сейчас в теме
17. rpgshnik 3795 15.06.17 10:49 Сейчас в теме
(1) Сегодня выдалась минутка и решил оптимизировать)))
Вам конечно отдельное спасибо, не знал о такой возможности использовать "Максимум".

Запрос вышел более лаконичный, так же некоторые другие моменты сократил:

ВЫБРАТЬ
	РеализацияТоваровУслугТовары.Ссылка,
	РеализацияТоваровУслугТовары.Номенклатура,
	ПОДСТРОКА("0123456789", РеализацияТоваровУслугТовары.Количество / 100000 + 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) 
	+ ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, РеализацияТоваровУслугТовары.Количество * 6000)) / 6 + 1, 1) КАК КоличествоСтрокой,
	РеализацияТоваровУслугТовары.Количество,
	РеализацияТоваровУслугТовары.ЕдиницаИзмерения,
	РеализацияТоваровУслугТовары.НомерСтроки
ПОМЕСТИТЬ ЧислоВСтроку
ИЗ
	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
	РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
	И РеализацияТоваровУслугТовары.Ссылка.Проведен = ИСТИНА
;

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	НКЕ.Ссылка,
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 1 ТОГДА НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) +
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 2 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 3 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 4 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 5 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 6 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 7 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 8 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 9 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 10 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 11 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 12 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 13 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) +
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 14 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 15 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 16 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 17 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) +
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 18 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 19 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 20 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 21 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) +
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 22 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 23 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 24 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) + 
	МАКСИМУМ(ВЫБОР НКЕ.НомерСтроки КОГДА 25 ТОГДА "; " + НКЕ.НоменклатураКоличествоЕдиница ИНАЧЕ "" КОНЕЦ) +
    МАКСИМУМ(".") КАК ТаблицаТоварыВСтроку
ИЗ
	НКЕ КАК НКЕ

СГРУППИРОВАТЬ ПО
	НКЕ.Ссылка
Показать
Bukaska; ixijixi; +2 Ответить
18. kasper076 110 15.06.17 11:53 Сейчас в теме
(1) При разрядности числа 10 знаков, 3 после запятой
ПОДСТРОКА(Ц, СЕКУНДА(ДОБАВИТЬКДАТЕ(О, СЕКУНДА, &Число * 6000)) / 6 + 1, 1)
выдает пустую строку.
Из-за того, что получается слишком большое число &Число * 6000.
19. rpgshnik 3795 19.06.17 12:23 Сейчас в теме
(18) вы правы, по всей видимости потолок для числа (7,3) из-за предела дат в 1С... до 3999 года
В данному случае это выходит крайне заоблачное количество и моим задачам вполне хватает
20. kasper076 110 19.06.17 14:37 Сейчас в теме
(19) Тут объяснили, как решит проблему.
rpgshnik; +1 Ответить
22. rpgshnik 3795 20.06.17 03:53 Сейчас в теме
2. Dream_kz 129 09.06.17 11:09 Сейчас в теме
ВычислитьВыражениеСГруппировкойМассив() - проще и быстрее.
Interrupted; echo77; +2 Ответить
4. ixijixi 1913 09.06.17 12:01 Сейчас в теме
(2) Ну так ведь автор оговорился, что хочет решить задачу чистым запросом.
rpgshnik; +1 Ответить
5. Dream_kz 129 09.06.17 12:06 Сейчас в теме
(4) Мотивируясь, что будет быстрее

что в запросе результат будет получен быстрее
6. alex-l19041 8 09.06.17 12:20 Сейчас в теме
(5) такой (!) запрос... будет ли быстрее ?
8. Dream_kz 129 09.06.17 12:22 Сейчас в теме
(6) Это мнение автора, не моё)
7. Serj1C 483 09.06.17 12:20 Сейчас в теме
Для 20 строк разница во времени не будет заметна. А для 1000, этот алгоритм уже не отработает.
Многие бы поспорили с вашим мнением, что запросом будет быстрее. А сколько времени вы отлаживали этот запрос? Это время гораздо дороже стоит...
10. rpgshnik 3795 09.06.17 16:56 Сейчас в теме
(7) я больше времени искал как число сделать в строку. Отладка была равна скорости набора текста.

Выражениями в скд делал, здесь больше вопрос и интерес стоял к реализации в запросе разом, давно думал про такое. Некая попытка лжецикла...
11. Serj1C 483 11.06.17 10:00 Сейчас в теме
(10) вместо одного цикла на уровне приложения 1С вы породили 20+ циклов на уровне СУБД...
dj_serega; корум; kiruha; wolfsoft; dnikolaev; +5 Ответить
12. kiruha 388 14.06.17 16:27 Сейчас в теме
Бедный майкрософт . Пишут
-- Syntax for SQL Server and Azure SQL Database

WHILE Boolean_expression
{ sql_statement | statement_block | BREAK | CONTINUE }

видать не знают что правильные программисты пишут все в запросе
rpgshnik; +1 Ответить
13. v3rter 14.06.17 17:47 Сейчас в теме
Высокое искусство, однако. Эстетично, непрактично, но звездану за искусство )
rpgshnik; +1 Ответить
14. lvictor58 137 14.06.17 21:38 Сейчас в теме
Или я в написании запросов полный профан, или автор что-то курнул, чтобы сотворить подобное...
dj_serega; rpgshnik; DrAku1a; +3 Ответить
15. DrAku1a 1745 15.06.17 02:59 Сейчас в теме
(14) Однозначно курнул. Но всё-же звездану ему.
dj_serega; rpgshnik; +2 Ответить
16. mort64ram 24 15.06.17 06:17 Сейчас в теме
Плюс за картинку публикации, проорал
rpgshnik; +1 Ответить
21. пользователь 19.06.17 16:10
Сообщение было скрыто модератором.
...
23. пользователь 21.06.17 10:03
Сообщение было скрыто модератором.
...
24. user753110 21.06.17 12:40 Сейчас в теме
Здравствуйте! Очень рад что откликнулись на мой вопрос. Спасибо за вашу помощь очень вам благодарен
25. vano-ekt 124 04.08.17 13:43 Сейчас в теме
плюс за Сашу :-D
за жесть - воздержусь
dj_serega; rpgshnik; +2 Ответить
29. dj_serega 393 09.10.17 15:24 Сейчас в теме
26. German_Tagil 43 10.09.17 20:48 Сейчас в теме
27. Светлый ум 416 08.10.17 11:44 Сейчас в теме
Оформление статьи достойно звезды
rpgshnik; +1 Ответить
28. rpgshnik 3795 08.10.17 11:45 Сейчас в теме
30. nvv1970 22.10.17 12:15 Сейчас в теме
Инфостарт изобилует большим количеством решений, где алгоритм ради алгортима. Есть масса коротких и простых решений, но вот на радость публике решение с помощью серпа и молота... потому что это возможно. Ну да так тоже можно. Но зачем???? ДАЖЕ если вы выиграете какие-то наносекунды, то баланс между производительностью и сложностью (или даже возможностью) модификации/сопровождения кода не соблюден. При первой же возможности все будет закомменчено.
Почему было не решить эту задачу с помощью СКД? Можно и в строку преобразовать и в массив загнать. Все крайне просто и элегантно. И кода, кроме программного выполнения самого СКД, считай нет. Все в схеме с минимумом настроек.
Автор в заголовке пишет, что то же это понимает, но к чему такие публикации, какая польза? Нужен отдельный раздел "смотрите как я умею".
Tyler Durden; IVC_goal; +2 Ответить
31. rpgshnik 3795 23.10.17 09:11 Сейчас в теме
32. DenisCh 23.10.17 09:22 Сейчас в теме
Я бы сделал ещё проще.... Строку в документ и при записи туда формировать строку в нужном виде ))))
ILNIK; Vova_Di; +2 Ответить
Оставьте свое сообщение