powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Запрос - распределение суммы
32 сообщений из 32, показаны все 2 страниц
Запрос - распределение суммы
    #37536032
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть запрос, в нем получаем 3 строчки

товар сумма

а 33,33
а 33,33
а 33,33

Нужно каким-то образом добавить к любой из строчек 0,01. Чтобы сумма стала равна 100.

Нужно каким-то образом отличить одну строчку от других - но как? Специально для примера выбрал 3 полностью одинаковых строки.
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37536205
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1с, это хочется прям в запросе делать?
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37536220
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
покажи как получаешь в запросе?
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37536281
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitriyZ, да.



Получаю - стандартным запросом на печать в 11 торговле.

РасходнаяНакладнаяТовары.Ссылка - запрос на печать сразу по нескольким документам.
РасходнаяНакладнаяТовары.Номенклатура
РасходнаяНакладнаяТовары.Количество
РасходнаяНакладнаяТовары.Сумма
Левое соединение с подчиненным документов в котором нет суммы, а количество разбито по характеристикам.


Сумма 100 изначально стоит для товара А. По 33.33 я разбиваю, остаток 0.01 - тоже нахожу внутри запроса. А вот дальше... эти 0.01 не могу никуда приткнуть.

(Один товар - естественно для упрощения, товаров несколько и документов несколько)
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37536300
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сDmitriyZ, да.



Получаю - стандартным запросом на печать в 11 торговле.

РасходнаяНакладнаяТовары.Ссылка - запрос на печать сразу по нескольким документам.
РасходнаяНакладнаяТовары.Номенклатура
РасходнаяНакладнаяТовары.Количество
РасходнаяНакладнаяТовары.Сумма
Левое соединение с подчиненным документов в котором нет суммы, а количество разбито по характеристикам.


Сумма 100 изначально стоит для товара А. По 33.33 я разбиваю, остаток 0.01 - тоже нахожу внутри запроса. А вот дальше... эти 0.01 не могу никуда приткнуть.

(Один товар - естественно для упрощения, товаров несколько и документов несколько)
....далее - ОБЪЕДИНИТЬ ВСЕ
где построить еще одну запись, в которой измерения - те же, что в любой из записей результата (например, в первой),
а сумма есть разница между общим итогом (100) и итогом результата (99.99).

И это все - в итоговый запрос, с группировкой по измерениям и суммированием, чтобы эта разница присоединилась куда нужно.
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37536336
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pail, ты не понял. Я уже все сделал кроме раскидывания суммы 0.01.

Изначально в этом первоначальном документе товар А - 3 штуки сумма 100. А в подчиненном 3 строки с количеством 1 штука.
и к виду:

а 33,33
а 33,33
а 33,33

уже привел. И разницу 0.01 нашел. Весь вопрос в том что ее нужно теперь добавить к одной из строк. Но ТОЛЬКО к одной.

Текст запроса можно простейший

товар
сумма
из &Табл(3 строчки с 33.33)
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37536368
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1с, вот что я имел в виду:

Код: plaintext
1.
2.
3.
4.
5.
6.
выбрать НомерСтроки,Номенклатура,сумма(Сумма) из
(выбрать НомерСтроки,Номенклатура,Сумма из &Табл 
объединить все
выбрать первые  1  НомерСтроки,Номенклатура, 0 . 01  как сумма 
из &Табл
) как ит
сгруппировать по НомерСтроки,Номенклатура

без дополнительного измерения (НомерСтроки) здесь не обойтись - чтобы явно сказать, куда именно разницу присоединять, если Номенклатура имеет одно значение во всех записях.
"Куда-нибудь" не получится, сервер вольностей не понимает.
Значение разницы 0.01 тоже откуда-то берется, но фантазировать не стал - написал так, заменить реальным источником проблем,думаю,не будет.
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37536392
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1с,
....или Характеристики использовать в качестве измерения - раз уж они есть, и есть различные в подчиненном документе
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37536449
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pailПрограммист 1с, вот что я имел в виду:

Код: plaintext
1.
2.
3.
4.
5.
6.
выбрать НомерСтроки,Номенклатура,сумма(Сумма) из
(выбрать НомерСтроки,Номенклатура,Сумма из &Табл 
объединить все
выбрать первые  1  НомерСтроки,Номенклатура, 0 . 01  как сумма 
из &Табл
) как ит
сгруппировать по НомерСтроки,Номенклатура

без дополнительного измерения (НомерСтроки) здесь не обойтись - чтобы явно сказать, куда именно разницу присоединять, если Номенклатура имеет одно значение во всех записях.
"Куда-нибудь" не получится, сервер вольностей не понимает.
Значение разницы 0.01 тоже откуда-то берется, но фантазировать не стал - написал так, заменить реальным источником проблем,думаю,не будет.Ок - возьмем 2 товара
а 33,33
а 33,33
а 33,33

б 33,33
б 33,33
б 33,33

Как здесь сделать? "Первые" уже пролетают. Характеристика - хм в принципе - да они разные. Тогда

а 33,33 характеристика А1
а 33,33 характеристика А2
а 33,33 характеристика А3

б 33,33 характеристика Б1
б 33,33 характеристика Б2
б 33,33 характеристика Б3

Допустим возьмем Максимум (характеристика) - для каждого товара - это одна строка и потом можем уже прибавить к этой строке 0.01. В принципе может и получится - попробую.
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37536547
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо pail за ценное замечание что характеристи разные. Кидаю пример запроса как распределить по сумму по характеристикам в запросе:

товары количество суммаа 3 100б 13 149.99
По характеристикам

Товар характеристика количествоа А1 1а А2 1а А3 1б Б1 2б Б2 5б Б3 6

Запрос Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура,
| ВложенныйЗапрос.Количество,
| ВложенныйЗапрос.Сумма
|ПОМЕСТИТЬ ТаблицаНоменклатура
|ИЗ
| (ВЫБРАТЬ
| ""а"" КАК Номенклатура,
| 3 КАК Количество,
| 100 КАК Сумма
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ""б"",
| 13,
| 149.99) КАК ВложенныйЗапрос
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура,
| ВложенныйЗапрос.Количество,
| ВложенныйЗапрос.Характеристика
|ПОМЕСТИТЬ ТаблицаХарактеристик
|ИЗ
| (ВЫБРАТЬ
| ""а"" КАК Номенклатура,
| 1 КАК Количество,
| ""А1"" КАК Характеристика
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ""а"",
| 1,
| ""А2""
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ""а"",
| 1,
| ""А3""
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ""б"",
| 2,
| ""Б1""
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ""б"",
| 5,
| ""Б2""
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ""б"",
| 6,
| ""Б3"") КАК ВложенныйЗапрос
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТаблицаНоменклатура.Номенклатура,
| ТаблицаХарактеристик.Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаХарактеристик.Количество, 0) = 0
| ТОГДА ТаблицаНоменклатура.Количество
| ИНАЧЕ ТаблицаХарактеристик.Количество
| КОНЕЦ КАК Количество,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаХарактеристик.Количество, 0) = 0
| ТОГДА ТаблицаНоменклатура.Сумма
| ИНАЧЕ ВЫРАЗИТЬ(ТаблицаНоменклатура.Сумма * (ТаблицаХарактеристик.Количество / ТаблицаНоменклатура.Количество) КАК ЧИСЛО(15, 2))
| КОНЕЦ КАК Сумма
|ПОМЕСТИТЬ ТаблицаСРаспределеннойСуммойПоХарактеристикам
|ИЗ
| ТаблицаНоменклатура КАК ТаблицаНоменклатура
| ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаХарактеристик КАК ТаблицаХарактеристик
| ПО ТаблицаНоменклатура.Номенклатура = ТаблицаХарактеристик.Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура,
| СУММА(ВложенныйЗапрос.Сумма) КАК Сумма
|ПОМЕСТИТЬ ТаблицаНераспределенныхОстатков
|ИЗ
| (ВЫБРАТЬ
| ТаблицаНоменклатура.Номенклатура КАК Номенклатура,
| ТаблицаНоменклатура.Сумма КАК Сумма
| ИЗ
| ТаблицаНоменклатура КАК ТаблицаНоменклатура
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТаблицаСРаспределеннойСуммойПоХарактеристикам.Номенклатура,
| -ТаблицаСРаспределеннойСуммойПоХарактеристикам.Сумма
| ИЗ
| ТаблицаСРаспределеннойСуммойПоХарактеристикам КАК ТаблицаСРаспределеннойСуммойПоХарактеристикам) КАК ВложенныйЗапрос
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Номенклатура
|
|ИМЕЮЩИЕ
| СУММА(ВложенныйЗапрос.Сумма) <> 0
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТаблицаХарактеристик.Номенклатура,
| МАКСИМУМ(ТаблицаХарактеристик.Характеристика) КАК Характеристика
|ПОМЕСТИТЬ ТаблицаХарактеристикВыбранаОднаМаксимальнаяХарактеристика
|ИЗ
| ТаблицаХарактеристик КАК ТаблицаХарактеристик
|
|СГРУППИРОВАТЬ ПО
| ТаблицаХарактеристик.Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТаблицаСРаспределеннойСуммойПоХарактеристикам.Номенклатура,
| ТаблицаСРаспределеннойСуммойПоХарактеристикам.Характеристика,
| ТаблицаСРаспределеннойСуммойПоХарактеристикам.Количество,
| ТаблицаСРаспределеннойСуммойПоХарактеристикам.Сумма + ВЫБОР
| КОГДА ТаблицаХарактеристикВыбранаОднаМаксимальнаяХарактеристика.Характеристика ЕСТЬ NULL
| ТОГДА 0
| ИНАЧЕ ЕСТЬNULL(ТаблицаНераспределенныхОстатков.Сумма, 0)
| КОНЕЦ КАК Сумма
|ИЗ
| ТаблицаСРаспределеннойСуммойПоХарактеристикам КАК ТаблицаСРаспределеннойСуммойПоХарактеристикам
| ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаХарактеристикВыбранаОднаМаксимальнаяХарактеристика КАК ТаблицаХарактеристикВыбранаОднаМаксимальнаяХарактеристика
| ПО ТаблицаСРаспределеннойСуммойПоХарактеристикам.Номенклатура = ТаблицаХарактеристикВыбранаОднаМаксимальнаяХарактеристика.Номенклатура
| И ТаблицаСРаспределеннойСуммойПоХарактеристикам.Характеристика = ТаблицаХарактеристикВыбранаОднаМаксимальнаяХарактеристика.Характеристика
| ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаНераспределенныхОстатков КАК ТаблицаНераспределенныхОстатков
| ПО ТаблицаСРаспределеннойСуммойПоХарактеристикам.Номенклатура = ТаблицаНераспределенныхОстатков.Номенклатура";
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37536808
sWinTyz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если делить сумму надо будет не на три кучки , а случай будет общий?
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37536812
sWinTyz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кроме того в общем случае остаток от деления может быть не равен единице

а вообще проблема из-за того что все крутиться вокруг СКД?
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37536833
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В данном примере количество "кусков" деления не играет роли. А все суммы правильно округляются до 15.2.
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37537132
Zerro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сВ данном примере количество "кусков" деления не играет роли. А все суммы правильно округляются до 15.2.
как вариант отбирать последние строки и делать их равными сумма - все до него. теоретически можно запростом..но гемор будет))
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37537247
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZerroПрограммист 1сВ данном примере количество "кусков" деления не играет роли. А все суммы правильно округляются до 15.2.
как вариант отбирать последние строки и делать их равными сумма - все до него. теоретически можно запростом..но гемор будет))А как ты их отберешь - что у тебя будет идентификатором последней строки?
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37537270
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эту задачу проще решить не в запросе, а после, обработать результат выполнения запроса в коде.

Разность суммы документа и суммы строк добавить к строке с максимальной суммой.
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37537350
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HoBTIDЭту задачу проще решить не в запросе, а после, обработать результат выполнения запроса в коде.

Разность суммы документа и суммы строк добавить к строке с максимальной суммой.Выполнять промежуточные операции с выборкой? А если они загружаются в регистр:

Движения.РасходПоНакладнымПокупателю.Загрузить(Запрос.Выполнить().Выгрузить());

Или вместо этой строчки - десяток строчек с анализом выборки, добавлением построчно записей в регистр и тд. Производительность будет сильно уменьшаться.

Я же пишу не для удобства программиста - да второй случай гораздо проще код смотреть, а для максимальной скорости проведения документа. Один моно запрос явно выигрывает.
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37537376
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сВыполнять промежуточные операции с выборкой? А если они загружаются в регистр:

Движения.РасходПоНакладнымПокупателю.Загрузить(Запрос.Выполнить().Выгрузить());

Или вместо этой строчки - десяток строчек с анализом выборки, добавлением построчно записей в регистр и тд. Производительность будет сильно уменьшаться.

Я же пишу не для удобства программиста - да второй случай гораздо проще код смотреть, а для максимальной скорости проведения документа. Один моно запрос явно выигрывает.

Один запрос выиграет, если получится хорошо (с точки зрения оптимизатора SQL) его написать, в данном случае, сомневаюсь, что это возможно.

При построчной обработке ТЗ, в данном случае, не будет обращений к базе в цикле, поэтому замедление произойдет небольшое, по сравнению с записью движений регистра 1-5%

С учетом невозможности оптимизации одним запросом весьма хороший вариант, как мне кажется.
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37537445
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HoBTID,

1. С чего взято что нельзя оптимизировать одним запросом? Пример написан выше. Добавьте индексы.
2. А вы учли что метода заполнить нет для регистров накопления, и придется писать каждое поле отдельно?
3. Вы учил что sql и 1с сервер - это 2 разных машины? И логика реализованная на sql будет выполнятся на машине которая обычно гораздо менее загружена.
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37537694
shurikvz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сСпасибо pail за ценное замечание что характеристи разные. Кидаю пример запроса как распределить по сумму по характеристикам в запросе:

товары количество суммаа 3 100б 13 149.99
По характеристикам

Товар характеристика количествоа А1 1а А2 1а А3 1б Б1 2б Б2 5б Б3 6




Программист 1с , а таких начальных условий не допускаешь?
Товар характеристика количествоа А1 1а А3 1а А3 1б Б1 2б Б2 5б Б3 6

Лучше ИМХО использовать не характеристику, а НомерСтроки. Тем более если будет проведение по регистрам, там ведь в любом случае номер строки участвует.
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37537907
Zerro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сZerroпропущено...

как вариант отбирать последние строки и делать их равными сумма - все до него. теоретически можно запростом..но гемор будет))А как ты их отберешь - что у тебя будет идентификатором последней строки?
максимум)))))) куча запросов... но можно
1 узнать максимальные строки в каждом доке
2. отобрать эти строки
3 отобрать без этих строк
4 без этих которые -им суммы посчитать
5 с этими - вычесть из общих сумм эти (4) и все
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37538246
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shurikvz, допускаю и такой вариант. Вот только зачем печатать 2 одинаковых строки? Если юзер их вбил - то скорее всего ошибся и не объединил в одну. Так что такая ситуация обрабатывается группировкой объединяющей обе строки. Думал над этим - но встерчаются ситуации в 1с когда сбита нумерация строк. При тестировании так и выдает. И все строчки например - номер строки=0. Встанет проблема - а здесь ее нет. Мы же разбиваем не по номерам строк, а по характеристикам. Если бы разбивали по номерам - то согласился бы с Вами.
2. Номера строк - 1с не даст сделать в регистре 2 строчки с одинаковыми номерами, всеравно будет сдвиг, поэтому в данном случае они бессмысленны с информационной точки зрения.
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37538266
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZerroПрограммист 1спропущено...
А как ты их отберешь - что у тебя будет идентификатором последней строки?
максимум)))))) куча запросов... но можно
1 узнать максимальные строки в каждом доке
2. отобрать эти строки
3 отобрать без этих строк
4 без этих которые -им суммы посчитать
5 с этими - вычесть из общих сумм эти (4) и всеУ меня порядок действий чуть другой - но можно и так.

1. Распределяем суммы по всем строчкам.
2. Находим остатки нераспределенных сумм.
3. Выбираем максимальную характеристику.
4. К максимальной характеристики добавляем отстаток нерапсределенной суммы.


ps Не претендую на абсолютную истину - эти пункты можно тасовать в различных вариациях, может кто-то оттестирует и напишет алгоритм как нужно правильно писать с учетом планов запросов и тд.
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37538299
shurikvz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сshurikvz, допускаю и такой вариант. Вот только зачем печатать 2 одинаковых строки? Если юзер их вбил - то скорее всего ошибся и не объединил в одну.
Согласен, такая ситуация редко может встретиться, но как раз таки больше вероятность того, что если их так вбили, то на это есть причина (при стандартном подборе ведь они и так автоматически объединяются).
И кроме того (УТ релиза 11.0.7.8 честно говоря пока даже не открывал, не знаю что и как туда добавили, поэтому скажу исходя из УТ 10.3), но характеристики различные это одно, а если вышеприведенные мной данные будут связаны с тем, что разные ГТД? Т.е. две строки, характеристики номенклатуры у них одинаковые, а вот ГТД-шки разные?

Программист 1сДумал над этим - но встерчаются ситуации в 1с когда сбита нумерация строк. При тестировании так и выдает. И все строчки например - номер строки=0.
Честно говоря с таким не сталкивался, но оспаривать не буду. Все возможно.

Программист 1с2. Номера строк - 1с не даст сделать в регистре 2 строчки с одинаковыми номерами, всеравно будет сдвиг, поэтому в данном случае они бессмысленны с информационной точки зрения
А нам не нужно две строчки с одинаковым номером. Это то же самое что МАКСИМУМ(ТаблицаХарактеристик.Характеристика), только тут соответственно будет МАКСИМУМ(ТаблицаХарактеристик.НомерСтроки)



И кроме того, еще такая мысль, я вот смотрю на исходные данные, а почему вы исходите из того, что на товары с различной Характеристикой номенклатуры будет обязательно одинаковая цена? Это так и надо?
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37538394
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shurikvz, думаю надо пояснить саму задачу. Есть отдельно одна таблица номенклатура с суммами и вторая таблица номенклатура без сумм, но с характеристиками гтд или еще чем угодно. И необходимо сумму полностью разбросать по второй таблице.

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

Мне важен был только принцип - дальше можна наращивать и изменять как угодно. (В моей задачи характеристики равноценны, если бы были не равноценны то было 2 отдельных строчки в первой таблицы с суммами. Конфигурация не 11 торговля. Из нее взято парочку модулей - все остальное мое.)

ps Не претендую что максимум характеристика правильно. Но если 2 строки в которых одинаковые номера строк... Либо как вариант - у меня 1 документ с суммами, и куча документов присоединенных к нему без сумм но с характеристиками. Пусть даже нумерация правильная - легко найти вариант когда встретятся 2 разных характеристики, но у них будет номер строки одинаковый (Как пример в главном документе 1 товар, а подчиненных - два документа и в них под одной строчке с этим товаром но разными характеристиками. Любое действие с номером строки здесь будет ошибочным).
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37538533
shurikvz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверил еще раз пример запроса, на следующих данных:

товары количество суммаа 3 100б 13 149.99
По характеристикам

Товар характеристика количествоа А1 1а А2 1а А3 1а А4 1б Б1 2б Б2 5б Б3 6


Результат получился:
а А1 1 33.33а А2 1 33.33а А3 1 33.33а А4 1 0.01б Б1 2 23.08б Б2 5 57.69б Б3 6 69.22
?


Программист 1сps Не претендую что максимум характеристика правильно. Но если 2 строки в которых одинаковые номера строк... Либо как вариант - у меня 1 документ с суммами, и куча документов присоединенных к нему без сумм но с характеристиками. Пусть даже нумерация правильная - легко найти вариант когда встретятся 2 разных характеристики, но у них будет номер строки одинаковый (Как пример в главном документе 1 товар, а подчиненных - два документа и в них под одной строчке с этим товаром но разными характеристиками. Любое действие с номером строки здесь будет ошибочным).

Если я правильно понял суть задачи, это что-то вроде распределения доп. расходов по количеству?
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37538565
sWinTyz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы первую таблицу не поправили?
там вроде теперь
товары количество сумма а 4 100 б 13 149.99
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37538587
shurikvz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sWinTyz , точно забыл.
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37538649
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВЫБРАТЬ
ВложенныйЗапрос.Номенклатура,
ВложенныйЗапрос.Количество,
ВложенныйЗапрос.Сумма
ПОМЕСТИТЬ ТаблицаНоменклатура
ИЗ
(ВЫБРАТЬ
"а" КАК Номенклатура,
3 КАК Количество,
100 КАК Сумма

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
"б",
13,
149.99) КАК ВложенныйЗапрос
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВложенныйЗапрос.Номенклатура,
ВложенныйЗапрос.Количество,
ВложенныйЗапрос.Характеристика
ПОМЕСТИТЬ ТаблицаХарактеристик
ИЗ
(ВЫБРАТЬ
"а" КАК Номенклатура,
1 КАК Количество,
"А1" КАК Характеристика

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
"а",
1,
"А2"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
"а",
1,
"А3"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
"б",
2,
"Б1"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
"б",
5,
"Б2"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
"б",
6,
"Б3") КАК ВложенныйЗапрос
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ТаблицаХарактеристик.Номенклатура,
ТаблицаХарактеристик.Характеристика,
ТаблицаХарактеристик.Количество КАК Количество,
СУММА(ТаблицаХарактеристик1.Количество) КАК КоличествоНакопительно
ПОМЕСТИТЬ Накопительная
ИЗ
ТаблицаХарактеристик КАК ТаблицаХарактеристик
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаХарактеристик КАК ТаблицаХарактеристик1
ПО ТаблицаХарактеристик.Номенклатура = ТаблицаХарактеристик1.Номенклатура
И ТаблицаХарактеристик.Характеристика >= ТаблицаХарактеристик1.Характеристика

СГРУППИРОВАТЬ ПО
ТаблицаХарактеристик.Номенклатура,
ТаблицаХарактеристик.Количество,
ТаблицаХарактеристик.Характеристика
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Накопительная.Номенклатура,
Накопительная.Характеристика,
Накопительная.Количество,
(ВЫРАЗИТЬ(ТаблицаНоменклатура.Сумма * Накопительная.КоличествоНакопительно / ТаблицаНоменклатура.Количество КАК ЧИСЛО(15, 2))) - (ВЫРАЗИТЬ(ТаблицаНоменклатура.Сумма * (Накопительная.КоличествоНакопительно - Накопительная.Количество) / ТаблицаНоменклатура.Количество КАК ЧИСЛО(15, 2))) КАК Сумма
ИЗ
Накопительная КАК Накопительная
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаНоменклатура КАК ТаблицаНоменклатура
ПО Накопительная.Номенклатура = ТаблицаНоменклатура.Номенклатура
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37538710
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shurikvzЕсли я правильно понял суть задачи, это что-то вроде распределения доп. расходов по количеству?Да. В принципе подойдет и для каких нибудь распределений расходов по счетам при закрытии месяца.

А у меня как я уже сказал учет характеристик идет только количественный, поэтому и нужно иногда для печати делать суммовой.
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37538738
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сHoBTID,

1. С чего взято что нельзя оптимизировать одним запросом? Пример написан выше. Добавьте индексы.
2. А вы учли что метода заполнить нет для регистров накопления, и придется писать каждое поле отдельно?
3. Вы учил что sql и 1с сервер - это 2 разных машины? И логика реализованная на sql будет выполнятся на машине которая обычно гораздо менее загружена.
Бессмысленно рассуждать о том, что я откуда взял, и что учел.
Поскольку нет структуры таблиц и тестовых данных, разговор беспредметный.

Могу ответить разве что по пункту 2.
Есть процедура ЗаполнитьЗначенияСвойств(...)
...
Рейтинг: 0 / 0
Запрос - распределение суммы
    #37538794
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HoBTID,

1 - согласен нужно смотреть. НО в моем запросе фактически также как и в запросе без распределения точно также 2 запроса к реальным таблицам, а вся остальная логика выполняется только с виртуальными таблицами. Или мы будем рассуждать что с виртуальными таблицами - "фиговенько" выполняется запрос? Не думаю. Во вторых на 2 разных компах 2 разных плана запроса - так что бессмысленно обсуждать равнение ауди и мерсов. Только 2 модели ауди еще можно было бы сравнить.
2. Не использую - очень медленно. Но согласен для простоты кода сойдет.
3. Вы не согласны что 1с сервер потребляет несравнимо больше ресурсов чем sql? Странно - можно хотябы один пример.
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / [игнор отключен] [закрыт для гостей] / Запрос - распределение суммы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]