Имя: Пароль:
1C
1С v8
Нарастающий текстовый итог в запросе 1С. КАК?
0 alf2006x
 
04.10.23
12:38
Всем доброго дня.

Что-то я тут никак не сварю ...
Вроде задача простая (с точки зрения клиента), но оч. смахивает на невыполнимую (ИМХО) ))

В УТ 11 есть регистр сведений РазмещениеНоменклатурыПоСкладскимЯчейкам.

Данные в нём примерно такие:

Номенклатура   Ячейка
Винт           А1
Винт           В3
Винт           Б7
Гайка          Ж4
Гайка          Н8
Гайка          С5
Гайка          Г2

Как сделать запрос (видимо с нарастающим итогом) чтобы на выходе получить такой результат:

Номенклатура   Ячейки
Винт           А1, В3, Б7
Гайка          Ж4, Н8, С5, Г2

Накалякал уже 10 разновидностей запросов - но никак в одну строку ячейки по одной номенклатуре собрать не могу.
Как-то они только попарно собираются и всё тут...

Помогите, кто чем может ))
1 vicof
 
04.10.23
12:43
В СКДшке можно
2 Волшебник
 
04.10.23
12:43
Просто запросом нельзя, но можно выражением СКД или программным кодом.
Надо вызвать функцию встроенного языка СтрСоединить()
3 Гипервизор
 
04.10.23
12:44
С точки зрения клиента не пофик ли как именно реализовано? Почему именно в запросе?
4 Franchiser
 
04.10.23
12:45
Если запрос, то запрос с итогами + обход результата
5 vicof
 
04.10.23
12:45
И это не нарастающий итог, а соединение строк.
6 Timon1405
 
04.10.23
12:48
(0) там есть отчет "СправочноеРазмещениеНоменклатуры",
за базу можно взять его, там внутри есть
СоединитьСтроки (Упорядочить(ТаблицаЗначений(Различные НоменклатураДополнительнойЯчейки, НоменклатураДополнительнойЯчейкиВНаличии, НоменклатураДополнительнойЯчейкиЕдИзм)), ", ", " ")
7 alf2006x
 
04.10.23
13:06
Тут главная цель - это показать в виде строки все ячейки где лежит товар прямо в форме списка справочника Номенклатура.
А там динозапрос.
Даж не знаю как тут СКД прикрутить.
8 Новиков
 
04.10.23
13:29
(7) Совсем плохая идея. Лучше - команда в форме списка, по которой вызывается отчет или отдельная обработка.
9 Михаил Козлов
 
04.10.23
13:42
(7) Чем штатный отчет по ячейкам не подходит?
10 НафНаф
 
04.10.23
13:45
Не увидел где тут нарастание. Увидел агрегирование ячеек посредством конкатенации наименований с группировкой по номенклатуре. А так ответ в (2)
11 НафНаф
 
04.10.23
13:47
(7) можно и так конечно. Я сделал отдельную таблицу. Показывает в ней остатки на складах и ячейки по текущей позиции товара
12 vde69
 
04.10.23
13:47
у меня есть подобная реализация, я сделал отдельное поле в которое при записи записываю собранную в коде строку, ну а в запросе просто ее использую без всяких заморочек.

в твоем случае возможно нужно сделать дополнительный регистр...
13 alf2006x
 
04.10.23
13:54
(8) Так та оно так... Но ведь человек ленив и ему надо чтобы "всё и сразу".
Сейчас имеется одтельная табличка в которой все ячейки отображаются при тыке на номенклатуру.
Но ведь "человек ленив"(с) ... и хоцца видеть всё как на ладони...
14 alf2006x
 
04.10.23
13:56
(9) Ну сложный вопрос. Ответ наверное в (13) - они хочуть видеть один инструмент и пользоваться им. В принципе вполне законно. А так придётся работать с номенклатурой из двух окон (справочник и отчет).
15 alf2006x
 
04.10.23
13:57
(11) читал и отвечал сверху вниз )
Моя солидарность с этим решением в посте 13
16 alf2006x
 
04.10.23
13:59
Есть "почти" решение. Делает то, что надо. Правда с производительностью может быть накладочка.

Вот это "почти решение":

ВЫБРАТЬ
    РазмещениеНоменклатурыПоСкладскимЯчейкам.Номенклатура.Код КАК Код,
    РазмещениеНоменклатурыПоСкладскимЯчейкам.Номенклатура КАК Номенклатура,
    РазмещениеНоменклатурыПоСкладскимЯчейкам.Ячейка.Наименование КАК Ячейка
ПОМЕСТИТЬ ВсеЯчейкиНоменклатуры
ИЗ
    РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам КАК РазмещениеНоменклатурыПоСкладскимЯчейкам
ИНДЕКСИРОВАТЬ ПО Код
;

ВЫБРАТЬ
    АВТОНОМЕРЗАПИСИ() КАК НомерПП,
    ВсеЯчейкиНоменклатуры.Номенклатура КАК Номенклатура,
    ВсеЯчейкиНоменклатуры.Ячейка КАК Ячейка
ПОМЕСТИТЬ ВсеЯчейкиНоменклатуры2
ИЗ
    ВсеЯчейкиНоменклатуры КАК ВсеЯчейкиНоменклатуры
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВсеЯчейкиНоменклатуры1.Номенклатура КАК Номенклатура,
    ВсеЯчейкиНоменклатуры1.Ячейка + ", " + ВсеЯчейкиНоменклатуры2.Ячейка + ", " + ВсеЯчейкиНоменклатуры3.Ячейка + ", " + ВсеЯчейкиНоменклатуры4.Ячейка
ИЗ
    ВсеЯчейкиНоменклатуры2 КАК ВсеЯчейкиНоменклатуры1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВсеЯчейкиНоменклатуры2 КАК ВсеЯчейкиНоменклатуры2
        ПО ВсеЯчейкиНоменклатуры1.Номенклатура = ВсеЯчейкиНоменклатуры2.Номенклатура
            И ВсеЯчейкиНоменклатуры1.НомерПП = ВсеЯчейкиНоменклатуры2.НомерПП + 1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВсеЯчейкиНоменклатуры2 КАК ВсеЯчейкиНоменклатуры3
        ПО ВсеЯчейкиНоменклатуры1.Номенклатура = ВсеЯчейкиНоменклатуры3.Номенклатура
            И ВсеЯчейкиНоменклатуры1.НомерПП = ВсеЯчейкиНоменклатуры3.НомерПП + 2
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВсеЯчейкиНоменклатуры2 КАК ВсеЯчейкиНоменклатуры4
        ПО ВсеЯчейкиНоменклатуры1.Номенклатура = ВсеЯчейкиНоменклатуры4.Номенклатура
            И ВсеЯчейкиНоменклатуры1.НомерПП = ВсеЯчейкиНоменклатуры4.НомерПП + 3
17 alf2006x
 
04.10.23
14:00
Блин с названиями таблиц плохо вышло. Сейчас перепишу.
18 alf2006x
 
04.10.23
14:02
ВЫБРАТЬ
    РазмещениеНоменклатурыПоСкладскимЯчейкам.Номенклатура.Код КАК Код,
    РазмещениеНоменклатурыПоСкладскимЯчейкам.Номенклатура КАК Номенклатура,
    РазмещениеНоменклатурыПоСкладскимЯчейкам.Ячейка.Наименование КАК Ячейка
ПОМЕСТИТЬ Размещение
ИЗ
    РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам КАК РазмещениеНоменклатурыПоСкладскимЯчейкам
ИНДЕКСИРОВАТЬ ПО Код
;

ВЫБРАТЬ
    АВТОНОМЕРЗАПИСИ() КАК НомерПП,
    Размещение.Номенклатура КАК Номенклатура,
    Размещение.Ячейка КАК Ячейка
ПОМЕСТИТЬ Пронумерованные
ИЗ
    Размещение КАК Размещение
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВсеЯчейкиНоменклатуры1.Номенклатура КАК Номенклатура,
    ВсеЯчейкиНоменклатуры1.Ячейка + ", " + ВсеЯчейкиНоменклатуры2.Ячейка + ", " + ВсеЯчейкиНоменклатуры3.Ячейка + ", " + ВсеЯчейкиНоменклатуры4.Ячейка
ИЗ
    Пронумерованные КАК ВсеЯчейкиНоменклатуры1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Пронумерованные КАК ВсеЯчейкиНоменклатуры2
        ПО ВсеЯчейкиНоменклатуры1.Номенклатура = ВсеЯчейкиНоменклатуры2.Номенклатура
            И ВсеЯчейкиНоменклатуры1.НомерПП = ВсеЯчейкиНоменклатуры2.НомерПП + 1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Пронумерованные КАК ВсеЯчейкиНоменклатуры3
        ПО ВсеЯчейкиНоменклатуры1.Номенклатура = ВсеЯчейкиНоменклатуры3.Номенклатура
            И ВсеЯчейкиНоменклатуры1.НомерПП = ВсеЯчейкиНоменклатуры3.НомерПП + 2
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Пронумерованные КАК ВсеЯчейкиНоменклатуры4
        ПО ВсеЯчейкиНоменклатуры1.Номенклатура = ВсеЯчейкиНоменклатуры4.Номенклатура
            И ВсеЯчейкиНоменклатуры1.НомерПП = ВсеЯчейкиНоменклатуры4.НомерПП + 3
19 alf2006x
 
04.10.23
14:04
Но есть проблемка...
На выходе вместо

Номенклатура   Ячейки
Винт           А1, В3, Б7
Гайка          Ж4, Н8, С5, Г2

Только

Номенклатура   Ячейки
Гайка          Ж4, Н8, С5, Г2

Видимо коджа номенклатура лежит в 3-х ячейках Конкатенация словила null и рубанула его.
20 alf2006x
 
04.10.23
14:05
Колдуем дальше... )
21 RomanYS
 
04.10.23
14:05
(18) это ж., а не почти решение: не будет 4 ячеек по номенклатуре - не увидишь ее совсем, будет больше 4х ячеек - получишь дубли
22 alf2006x
 
04.10.23
14:07
(21) В том то и прикол. Что если больше 4-х или меньше 4-х, то они не дублируются, а просто не выводятся.
23 alf2006x
 
04.10.23
14:07
Для 3-х соединений также получаю только номенклатуру с итоговой строкой с тремя ячейками.
24 RomanYS
 
04.10.23
14:08
(21) с первым можно (но не нужно) бороться левыми соединениями и ЕстьNULL. А второе в общем случае нерешаемо
25 alf2006x
 
04.10.23
14:08
Для 2-х соединений - только с двумя.
26 alf2006x
 
04.10.23
14:08
(24) Клянусь - никаких дублей не вижу! )))
27 alf2006x
 
04.10.23
14:11
А, нет.... вижу. Есть дубли, блин.
28 H A D G E H O G s
 
04.10.23
14:12
(18) А ты неплох!
29 alf2006x
 
04.10.23
14:13
(28) Да не, ерунда получается. Согласен с (21)
30 H A D G E H O G s
 
04.10.23
14:21
(29) Это было восхищение.
31 alf2006x
 
04.10.23
14:37
(30) с привкусом сарказма? )))
32 НафНаф
 
04.10.23
14:41
А нельзя просто взять отбор по номенклатуре к регистру. Итоги по номенклатуре и обходя детальные записи скокатенировать данные ячеек в коде? Можно даже их поместить в массив, а потом сделать СтрСоединить чтоб уж точно не работать с медленным выделением памяти на строки
33 alf2006x
 
04.10.23
14:48
Ну да ладно, хочу чтобы меня уже порвали тут как тузика.

План такой:
1. Сначала вычисляю итог по количеству номенклатуры в регистре. Максимум - это максимальное количество последующих соединений.
2. Затем в обратном порядке объединяю в итоговую таблицу результаты запросов по убыванию количества соединений. В каждом последующем соединении выкидываю номенклатуру уже ранее найденную в "старших" (с большим количеством ячеек) таблицах.

То есть в моём случае, если допускаем что у одного товара не может быть больше 4-х ячеек, то это будет 4 таблицы
А общее количество внутренних соединений: 4+3+2 = 9

Производительность офигеет? Или терпимо?
34 alf2006x
 
04.10.23
14:50
(32) Тут я немного не понял.
Динамический запрос на форме списка заменить таблицей?
Или как?
35 alf2006x
 
04.10.23
14:52
(32) А как запихнуть код в обход вывода детальных записей?
Я видел что такое работает в табличной части документа, например.
А в списке справочникане пробовал.
Это в каком методе надо прописать?
36 RomanYS
 
04.10.23
14:53
(33) замени внутренние на левые будет 4 достаточно. Но всё равно такое решение - (*)
37 RomanYS
 
04.10.23
15:00
Сейчас запросы поддерживают в ДС пакетные запросы, наверное можно передать собранные туда строки в ТЗ и соединить с ней в результирующем запросе.
Но тогда уж логичнее хранить собранные готовые строки где-нибудь в РС и сразу с ним соединять в запросе ДС
38 Timon1405
 
04.10.23
15:05
(35) https://wonderland.v8.1c.ru/blog/obrabotka-i-oformlenie-dannykh-dinamicheskogo-spiska/
ДС уже 7 лет как умеют приполученииданных. но лучше, конечно, считать отдельно)
39 alf2006x
 
04.10.23
15:08
(37) Отдельный РС - напряжно. Его создавать надо, за ним следить надо. Чтобы мало-ли-чего-где...
40 alf2006x
 
04.10.23
15:15
(38) Спасибо, попробую.
А почему лучше считать отдельно?
Какие минусы (/недостатки) у этого метода?
41 H A D G E H O G s
 
04.10.23
15:35
(33) Охереет. Динамический список еще наложит своих сортировок.
А потом придет RLS и постучит сапогом LazySpool в tempdb SQL.
42 H A D G E H O G s
 
04.10.23
15:35
(31) Я же говорил, что вы неплох.
43 H A D G E H O G s
 
04.10.23
15:36
(37) Нельзя.
44 alf2006x
 
04.10.23
15:42
(43) хм..  так как в итоге быть-то?
Какое самое оптимальное решение?
45 alf2006x
 
04.10.23
15:43
(44) (38)?
46 H A D G E H O G s
 
04.10.23
15:44
Если прям прям хочется сделать красиво:

1) Справочник "ГруппыСкладскихЯчеек". Реквизиты:
Наименование
ХешВложений (индексирован)
ТЧ Ячейки

ПередЗаписью() вычисляем хеш вложенных ячеек, пишем в реквизит.
2) РС РазмещениеНоменклатурыПоГруппамСкладскимЯчейкам - скопированный из исходного, ячейка заменена на группу ячеек.

3) В ПриЗаписи набора записей РазмещениеНоменклатурыПоСкладскимЯчейкам определяем в каких наборах ячеек находятся изменяемые Номенклатуры данного склада/помещения, вычисляем для наборов ячеек хеш, по хешу ищем группу, записываем/создаем ее в РС РазмещениеНоменклатурыПоГруппамСкладскимЯчейкам
47 H A D G E H O G s
 
04.10.23
15:45
(46) Справочник ГруппыСкладскихЯчеек в реквизит наименование записываем сконкатенированное наименование вложенных ячеек
48 H A D G E H O G s
 
04.10.23
15:48
Оптимально - развести 1С на реализацию поддержки STRING_AGG  

https://learn.microsoft.com/ru-ru/sql/t-sql/functions/string-agg-transact-sql?view=sql-server-ver16
49 alf2006x
 
04.10.23
15:49
(47) Спасибо. Буду пробовать.
50 alf2006x
 
04.10.23
15:50
(48) Ой, нет. Это уже незнакомые слова пошли )
51 alf2006x
 
04.10.23
15:51
"Развести 1С" - это клевать им мозг пока они это не добавят? ))
52 alf2006x
 
04.10.23
15:52
У них там дата каким годом заканчивается? 3999 ?
Вот к тому моменту они и разродятся на STRING_AGG
53 Garykom
 
04.10.23
16:03
(44) >Какое самое оптимальное решение?

Сделать обход групп и конкатенацию ячеек в одну строку программно кодом.
И не страдать непонятно чем пытаясь использовать неподходящий инструмент в виде запросов.
54 Garykom
 
04.10.23
16:05
(53)+ Допустим выяснится что ячеек в одной строке может быть не максимум 4 а 400
И?
55 alf2006x
 
04.10.23
16:06
(53) Не понял.
Обход групп в каком месте должен быть?
Приполученииданных ?
56 alf2006x
 
04.10.23
16:07
(54) Согласен. Хотя
в моём прикладном случае вероятность такого события "Крайне мала".
57 Garykom
 
04.10.23
16:09
(55) Смотря для чего это требуется
Неужели хочешь записи в регистр делать?
Так там можно вручную ТЗ обработать и передать
58 alf2006x
 
04.10.23
16:11
(57) Колонку с перечнем ячеек надо добавить в список справочника "Номенклатура".
59 Новиков
 
04.10.23
16:13
(55) Смотря где ты собрался это собирать. Если тебе для формы выбора, то есть смысл нарисовать свою форму и подменить ее. А там подкинуть не ДС, а обычную таблицу, которую уже по (53) заполнить. Скорее всего, так будет и проще и быстрее - там же можно какие-то отборы помутить и т.д.
60 Новиков
 
04.10.23
16:14
(58) я же тебе уже сказал, что в городить это в ДС - плохая идея. Ты либо делай отчетом, либо - подменяй форму на свою без ДС.
61 alf2006x
 
04.10.23
16:16
(60) Okk
62 Garykom
 
04.10.23
16:16
(58) чтобы не тормозило придется делать свой РС и обновлять его
63 Garykom
 
04.10.23
16:19
(62)+ создаешь свой РС (Номенклатура, Ячейки)
создаешь учетный механизм и добавляешь его в нужные документы
64 Garykom
 
04.10.23
16:20
(63)+ общий модуль не надо, весь код можно в своем РС прописать в модуле менеджера
65 Garykom
 
04.10.23
16:22
66 Новиков
 
04.10.23
16:23
(64) да возня все это. Ну сама задача не стоит выведенного яйца, сделал подключаемый отчет и подключил его. Как ты там сделал эту строчку - да клиенту плевать. Ну, кнопку нажать надо, да. Скорее всего, клиент поиграть 1 день и забудет про то.
67 alf2006x
 
04.10.23
16:29
(66) не соглашусь.
Проблема для них настолько серьёзная, что они даже в Паинте на скриншоте нарисовали эту колонку и написали как должны выглядеть данные в этой колонке.
За 10 лет это первая постановка задачи с картинкой такого уровня ))
Так что тут всё по-серьёзке.
68 Zapal
 
04.10.23
23:41
держи

ВЫБРАТЬ
	РазмещениеНоменклатурыПоСкладскимЯчейкам.Номенклатура КАК Номенклатура,
	РазмещениеНоменклатурыПоСкладскимЯчейкам.Ячейка КАК Ячейка
ПОМЕСТИТЬ ВсеЯчейкиНоменклатуры
ИЗ
	РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам КАК РазмещениеНоменклатурыПоСкладскимЯчейкам
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ВсеЯчейкиНоменклатуры1.Номенклатура КАК Номенклатура,
	ВсеЯчейкиНоменклатуры1.Ячейка КАК Ячейка,
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВсеЯчейкиНоменклатуры2.Ячейка) КАК НомерПП
ПОМЕСТИТЬ ЯчейкиНомера
ИЗ
	ВсеЯчейкиНоменклатуры КАК ВсеЯчейкиНоменклатуры1
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВсеЯчейкиНоменклатуры КАК ВсеЯчейкиНоменклатуры2
		ПО ВсеЯчейкиНоменклатуры1.Номенклатура = ВсеЯчейкиНоменклатуры2.Номенклатура
			И ВсеЯчейкиНоменклатуры1.Ячейка <= ВсеЯчейкиНоменклатуры2.Ячейка

СГРУППИРОВАТЬ ПО
	ВсеЯчейкиНоменклатуры1.Номенклатура,
	ВсеЯчейкиНоменклатуры1.Ячейка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ЯчейкиНомера.Номенклатура КАК Номенклатура,
	МАКСИМУМ(ВЫБОР
			КОГДА ЯчейкиНомера.НомерПП = 1
				ТОГДА ЯчейкиНомера.Ячейка
			ИНАЧЕ NULL
		КОНЕЦ) КАК Ячейка1,
	МАКСИМУМ(ВЫБОР
			КОГДА ЯчейкиНомера.НомерПП = 2
				ТОГДА ЯчейкиНомера.Ячейка
			ИНАЧЕ NULL
		КОНЕЦ) КАК Ячейка2,
	МАКСИМУМ(ВЫБОР
			КОГДА ЯчейкиНомера.НомерПП = 3
				ТОГДА ЯчейкиНомера.Ячейка
			ИНАЧЕ NULL
		КОНЕЦ) КАК Ячейка3,
	МАКСИМУМ(ВЫБОР
			КОГДА ЯчейкиНомера.НомерПП = 4
				ТОГДА ЯчейкиНомера.Ячейка
			ИНАЧЕ NULL
		КОНЕЦ) КАК Ячейка4
ПОМЕСТИТЬ ЯчейкиКолонки
ИЗ
	ЯчейкиНомера КАК ЯчейкиНомера

СГРУППИРОВАТЬ ПО
	ЯчейкиНомера.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ЯчейкиКолонки.Номенклатура КАК Номенклатура,
	естьnull(ЯчейкиКолонки.Ячейка1, "") + " " + естьnull(ЯчейкиКолонки.Ячейка2, "") + " " + естьnull(ЯчейкиКолонки.Ячейка3, "") + " " + естьnull(ЯчейкиКолонки.Ячейка4, "") КАК СтрокаЯчейки
ИЗ
	ЯчейкиКолонки КАК ЯчейкиКолонки
69 alf2006x
 
04.10.23
16:58
(68) Ого,.. спасибо. Я уже совсем смирился с общественным мнением что надо делать собственную форму вместо ДС.
В принципе так и буду делать. А пример обязательно попробую применить (с листа пока не понял как это работает).
70 H A D G E H O G s
 
04.10.23
17:06
(69) Попробуй на рабочей базе вместе с RLS помотать список где то до середины
71 Garykom
 
04.10.23
17:41
(70) В несколько сеансов одновременно причем, ибо не один пользователь в один момент времени может форму списка номенклатуры открыть ))
72 Garykom
 
04.10.23
17:42
(71)+ И получится что или выводить отчет по кнопочке или ваять свой РС и соединять с ним
73 Garykom
 
04.10.23
17:43
Или как вариант показывать на форме строку ячеек только для выбранной (текущей) номенклатуры
74 alf2006x
 
04.10.23
22:45
(68) Zapal, мега-респект. это именно то, о чем я спрашивал в посте. Работает безупречно. Просто удивительно.

Хотя, честно говоря, я так и не понял как это всё собирается. Через 20 минут изучения всех ВТ что-то хрустнуло в районе мозжичка и я понял, что не стоит так над собой издеваться.
)))

Завтра на свежую голову буду снова перечитывать текст запроса.
75 alf2006x
 
04.10.23
22:48
(68) Одно лишь хочу поправить.
Строку 3 текста.
Вместо:
РазмещениеНоменклатурыПоСкладскимЯчейкам.Ячейка КАК Ячейка
должно быть:
РазмещениеНоменклатурыПоСкладскимЯчейкам.Ячейка.Наименование КАК Ячейка

Иначе в пред=предпоследней строке они не сконкатенируются.
Оч. жаль, но преобразование типов в запросе скорее всего так никогда и не появится...
76 Новиков
 
05.10.23
09:24
(55)

Если решишься на ДС и код, то ответ на
Обход групп в каком месте должен быть? Приполученииданных ?

тут: https://xn----1-bedvffifm4g.xn--p1ai/news/2017-12-26-many-values-in-one-cell/
77 Zapal
 
05.10.23
09:40
(74) основной фокус во втором запросе, там где ВсеЯчейкиНоменклатуры1.Ячейка <= ВсеЯчейкиНоменклатуры2.Ячейка
он делает нумерацию ячеек в рамках каждой номенклатуры
78 mikecool
 
05.10.23
09:49
(77) ты еще не узнал про АвтоНомерЗаписи()?
79 alf2006x
 
05.10.23
10:28
Любителям поиздеваться над базами 1С посвящается...

Добавил вчера (68) в ДС.
Результат потрясный: быстро, дёшево, сердито.
список листается как и раньше, отличий в скоростях не заметил.
Пожалуй только добавлю ", ..." - когда ячеек будет больше 4-х.

РЛС и прочую магию пока включать не планирую, но на подкорку записал, что в нагрузку к включению ихних надо будет переделать сей конструкт через РС.

H A D G E H O G s, Garykom и др. - прошу прощения что ваши усилия не смогли перетянуть меня на сторону света.

Кстати, интересно, какой процент кодеров 1С используют неоптимальный, но приемлемый (по отношению к ситуации) код в своих доработках?
80 alf2006x
 
05.10.23
10:32
(76) в (38) утверждается что так лучше не делать.
Хотя по ссылке в статье читаю: "без потери производительности".

Тогда не понимаю почему же так не стоит делать?
Выглядит решение вполне приемлемым )