Имя: Пароль:
1C
1С v8
Группировка строк табличной части Товары
0 newtech77777
 
27.08.11
20:59
Имеется табличная часть с такими данными
N    Код    Номенклатура    Количество    Цена    Единица    К.    Сумма    Всего    ГТД
1    ЦБ165179    Глушитель 0219-01-07134P 4MAX    2,000    30,25    шт    1,000    60,50    60,50    
2    ЦБ165179    Глушитель 0219-01-07134P 4MAX    1,000    25,45    шт    1,000    25,45    25,45    
3    ЦБ154667    Глушитель 10049 ASMET    2,000    29,32    шт    1,000    58,64    58,64    
4    ЦБ154667    Глушитель 10049 ASMET    1,000    25,45    шт    1,000    25,45    25,45    
          6,000    Цена закупочная            170,04    170,04    

Написал такой код для группировки строк с одинаковой номенклатурой и вычислением средней цены., все прекрасно работает, но есть одно но., очищаются поля ЕДИНИЦА И КОЭФФИЦИЕНТ, как реализовать так , чтоб эти реквизиты оставались?

Процедура КоманднаяПанельТоварыКнопкаГруппировкаПоНаименованию(Кнопка)
Запрос = Новый Запрос;
Запрос.Текст =  "ВЫБРАТЬ
                 |К.Номенклатура,
                 |К.Количество,
                 |К.Цена
                 |ПОМЕСТИТЬ ТЧ
                 |ИЗ
                 |&ТЗ КАК К
                 |;
                 |
                                |////////////////////////////////////////////////////////////////////////////////
                 |ВЫБРАТЬ
                 |    ТЧ.Номенклатура,
                 |    СУММА(ТЧ.Количество) как Количество,
         |       СРЕДНЕЕ(ТЧ.Цена) как Цена
                 |ИЗ
                 |    ТЧ КАК ТЧ
                 |СГРУППИРОВАТЬ ПО
                 |    ТЧ.Номенклатура";
   Запрос.УстановитьПараметр("ТЗ",Товары.Выгрузить()); // Здесь мы передаем наши значения ТЧ во временную таблицу
   Товары.Загрузить(Запрос.Выполнить().Выгрузить());    // А здесь мы загружаем в ТЧ уже сгруппированные данные
КонецПроцедуры
1 Axel2009
 
27.08.11
21:02
сгруппировать по этим полям тоже?
2 Лефмихалыч
 
27.08.11
21:02
Товары.Свернуть("Номенклатура, Цена, Единица, Коэффициент, ГТД", "Количество,Сумма,Всего");
3 newtech77777
 
27.08.11
21:25
2 В данном случае группировка работает если строки совершенно одинаковы , а у меня цена номенклатуры в одной накладной может быть разная, мне нужно сгруппировать с вычислением средней цены,так же нужно учесть чтоб общая сумма всей накладной не менялась при округлении
4 newtech77777
 
27.08.11
21:47
(2)В общем удалил из кода ЦЕНА  и ГТД , все заработало., теперь как бы выполнить событие изменение суммы , для всех строк таблицы, для того чтоб пересчиталась цена., так как она в данном случае очистилась.
5 Лефмихалыч
 
27.08.11
21:49
(3) тогда единицу и кожффициент засовывай в ту же временную таблицу, из которой ты сейчас данные получаешь и бери от них максимум, минимум или среднее на выбор.
Только какой смысл получат среднюю температуру по больнице, включая морг, не понятно
6 newtech77777
 
27.08.11
22:03
(5) мы нашему поставщику заказываем одну и туже номенклатуру с разделением во времени, товар собирается у него на складе и он уже его отправляет одной накладной , но с разной ценой (так как он так же закупает с разницей, во времени). Наша конфигурация не понимает в одной накладной одинаковый товар по разной цене , потому и приходится вычислять среднее.
Ваш метод мне больше понравился и как бы даже работает, как пересчитать каждую строку сумма / количество?
7 Eugeneer
 
27.08.11
22:06
У всех все работает так же. Но одни вы решили что надо править конфигурацию. лол.
8 Лефмихалыч
 
27.08.11
22:09
(6) я разрешаю тебе в запросе использовать арифметические операции, если ты об этом. А вообще, это один из тех редчайших случаев. когда Eugeneer прав
9 newtech77777
 
27.08.11
22:15
(7) а как Вы решаете эту проблему?
10 newtech77777
 
27.08.11
23:37
(8)(7) вот результат , все работает

// Группирует строки по наименованию с вычислением  цены
Процедура КоманднаяПанельТоварыКнопкаГруппировкаПоНаименованию(Кнопка)
Запрос = Новый Запрос;
Запрос.Текст =  "ВЫБРАТЬ
               |    К.Номенклатура,
               |    К.Количество,
               |    К.Цена,
               |    К.ЕдиницаИзмерения,
               |    К.Коэффициент,
               |    К.Сумма,
               |    К.СуммаВсего
               |ПОМЕСТИТЬ ТЧ
               |ИЗ
               |    &ТЗ КАК К
               |;
               |
               |////////////////////////////////////////////////////////////////////////////////
               |ВЫБРАТЬ
               |    ТЧ.Номенклатура,
               |    СУММА(ТЧ.Сумма) / СУММА(ТЧ.Количество) КАК Цена,
               |    ТЧ.ЕдиницаИзмерения,
               |    ТЧ.Коэффициент,
               |    СУММА(ТЧ.Количество) КАК Количество,
               |    СУММА(ТЧ.Сумма) КАК Сумма,
               |    СУММА(ТЧ.СуммаВсего) КАК СуммаВсего
               |ИЗ
               |    ТЧ КАК ТЧ
               |
               |СГРУППИРОВАТЬ ПО
               |    ТЧ.ЕдиницаИзмерения,
               |    ТЧ.Коэффициент,
               |    ТЧ.Номенклатура";
   Запрос.УстановитьПараметр("ТЗ",Товары.Выгрузить()); // Здесь мы передаем наши значения ТЧ во временную таблицу
   Товары.Загрузить(Запрос.Выполнить().Выгрузить());    // А здесь мы загружаем в ТЧ уже сгруппированные данные
КонецПроцедуры
11 Amiralnar
 
28.08.11
06:34
>  конфигурация не понимает в одной накладной одинаковый товар по разной цене

Это то за чудо конфигурация?
12 Eugeneer
 
28.08.11
21:07
(11) я ткокпат! у него стоит регистрация цен. она не позволяет регистрировать один товар два раза!
13 Eugeneer
 
28.08.11
21:08
телепат....
ксати они по ебнутому работают. эта регистрация ваще накуй не нужна