7.7 Выбор из ТЗ одинаковых значений и суммирование их, при этом удалив старые строки

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем fate-computers, 12 янв 2016.

  1. TopicStarter Overlay
    fate-computers
    Offline

    fate-computers

    Регистрация:
    12 янв 2016
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Подскажите как реализовать такое:

    1. имеем ТЗ с наименованием ТМЦ.
    2. нужно перед печатью сделать выборку по наименованию.

    т.е. имеем больше одной строки с одинаковым названием, там нужно превратить их в 1 строку но суммировать данные по колонке.

    Буду признателен.
  2. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    403
    Симпатии:
    71
    Баллы:
    54
    Здравствуйте.
    Используйте метод Свернуть()
    man37 и fate-computers нравится это.
  3. TopicStarter Overlay
    fate-computers
    Offline

    fate-computers

    Регистрация:
    12 янв 2016
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Свернуть<<?>>(NameOfProduct, Quantity);
    {Документ.Инвойс.Форма.Модуль(24)}: Процедура не обнаружена (Свернуть)

    Я не уточнил, мы имеем таблицу значений, но все колонки в ней это реквизиты табличной части.
    При вводе документа на основании:

    // Заполняем таблицу с основного документа
    PackingList.ВыбратьСтроки();
    Пока PackingList.ПолучитьСтроку()=1 Цикл
    НоваяСтрока();
    NameOfProduct=PackingList.NameOfProduct;
    Quantity=PackingList.Quantity;
    Price=PackingList.NameOfProduct.Цена_Прод;
    TotalAmount=Price*Quantity;
    КонецЦикла;
    --- Объединение сообщений, 13 янв 2016 ---
    Так же и в другой вариации:

    PackingList.Свернуть(PackingList.NameOfProduct, PackingList.Quantity);
    {Документ.Инвойс.Форма.Модуль(14)}: Поле агрегатного объекта не обнаружено (Свернуть)
    --- Объединение сообщений, 13 янв 2016 ---
    Хотя я понимаю что оно должно работать через создание объекта

    //Табличная часть
    ТЗ = СоздатьОбъект("ТаблицаЗначений");
    ДокОсн.ВыгрузитьТабличнуюЧасть(ТЗ);
    ЗагрузитьТабличнуюЧасть(ТЗ);

    Но я не пойму как реализовать это тут. Мне то с основного документа нужно только 2 колонки, а не вся таблица
    Последнее редактирование: 13 янв 2016
  4. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    403
    Симпатии:
    71
    Баллы:
    54
    Выгрузите тогда табличную часть в таблицу значений, сверните и верните на место.
  5. TopicStarter Overlay
    fate-computers
    Offline

    fate-computers

    Регистрация:
    12 янв 2016
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    //Табличная часть
    ТЗ = СоздатьОбъект("ТаблицаЗначений");
    ВыгрузитьТабличнуюЧасть(ТЗ);
    ТЗ.Свернуть(NameOfProduct,Quantity);
    ЗагрузитьТабличнуюЧасть(ТЗ);


    Не работает :(
    --- Объединение сообщений, 13 янв 2016 ---
    Процедура ВводНаОсновании (PackingList)
    Seller=PackingList.Seller;
    Payer=PackingList.Payer;
    ОбщаяКолво=PackingList.ОбщаяКолво;

    // PackingList.Свернуть(PackingList.NameOfProduct, PackingList.Quantity);

    // Заполняем таблицу
    PackingList.ВыбратьСтроки();
    Пока PackingList.ПолучитьСтроку()=1 Цикл
    НоваяСтрока();
    NameOfProduct=PackingList.NameOfProduct;
    Quantity=PackingList.Quantity;
    Price=PackingList.NameOfProduct.Цена_Прод;
    TotalAmount=Price*Quantity;
    КонецЦикла;

    //Табличная часть
    ТЗ = СоздатьОбъект("ТаблицаЗначений");
    ВыгрузитьТабличнуюЧасть(ТЗ);
    ТЗ.Свернуть(NameOfProduct,Quantity);
    ЗагрузитьТабличнуюЧасть(ТЗ);

    Сумма = Итог("TotalAmount");
    КонецПроцедуры
    --- Объединение сообщений, 13 янв 2016 ---
    Получаем те же 3 одинаковые строки
  6. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    403
    Симпатии:
    71
    Баллы:
    54
    В кавычках названия колонок
    ТЗ.Свернуть("NameOfProduct","Quantity");
  7. TopicStarter Overlay
    fate-computers
    Offline

    fate-computers

    Регистрация:
    12 янв 2016
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Ой спасибо, но теперь пропал расчет :)

    Price=PackingList.NameOfProduct.Цена_Прод;
    TotalAmount=Price*Quantity;

    Этого нет :)
    --- Объединение сообщений, 13 янв 2016 ---
    т.е. строка теперь одна, но нет ни цены, ни общей суммы
    --- Объединение сообщений, 13 янв 2016 ---
    //Табличная часть
    ТЗ = СоздатьОбъект("ТаблицаЗначений");
    ВыгрузитьТабличнуюЧасть(ТЗ);
    ТЗ.Свернуть("NameOfProduct","Quantity");

    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
    Price=NameOfProduct.Цена_Прод;
    TotalAmount=Price*Quantity;
    КонецЦикла;

    ЗагрузитьТабличнуюЧасть(ТЗ);


    Данная попытка проблему не решила
    Последнее редактирование: 13 янв 2016
  8. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    403
    Симпатии:
    71
    Баллы:
    54
    При свертке надо указывать все колонки, которые хотите оставить, иначе они удаляются.
    Если они мешают правильной свертке, то добавьте в ТЗ их после сворачивания и заполните в цикле.
  9. TopicStarter Overlay
    fate-computers
    Offline

    fate-computers

    Регистрация:
    12 янв 2016
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    ТЗ.Свернуть("NameOfProduct","Quantity","Price","TotalAmount");
    {Документ.Инвойс.Форма.Модуль(27)}: Слишком много параметров передано при вызове функции/процедуры объекта
    --- Объединение сообщений, 13 янв 2016 ---
    Я прошу прощения, а можно пример?
  10. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    403
    Симпатии:
    71
    Баллы:
    54
    Должно быть всего два параметра.
    ТЗ.Свернуть("NameOfProduct,Quantity,Price","TotalAmount");
  11. TopicStarter Overlay
    fate-computers
    Offline

    fate-computers

    Регистрация:
    12 янв 2016
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Боюсь тут только этот вариант возможен, вот именно этот пример я и просил
    --- Объединение сообщений, 13 янв 2016 ---
    ТЗ.Свернуть("NameOfProduct,Price,TotalAmount","Quantity");

    Результата не дало, получаем снова 3 строки.
  12. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    403
    Симпатии:
    71
    Баллы:
    54
    Код:
    ТЗ = СоздатьОбъект("ТаблицаЗначений");
    ВыгрузитьТабличнуюЧасть(ТЗ);
    ТЗ.Свернуть("NameOfProduct","Quantity");
    ТЗ.НоваяКолонка("Price");
    ТЗ.НоваяКолонка("TotalAmount");
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
    ТЗ.Price=ТЗ.NameOfProduct.Цена_Прод;
    ТЗ.TotalAmount=ТЗ.Price*ТЗ.Quantity;
    КонецЦикла;
    
    ЗагрузитьТабличнуюЧасть(ТЗ);
  13. TopicStarter Overlay
    fate-computers
    Offline

    fate-computers

    Регистрация:
    12 янв 2016
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Спасибо большое. Проблема решена.

    -Kiss-
  14. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    403
    Симпатии:
    71
    Баллы:
    54
    Пожалуйста.
    Price можно сворачивать вместе с Name. Придется добавить только TotalAmount.
    Еще вариант: очистить колонку TotalAmount перед сверткой. Тогда будет правильно объединять
  15. TopicStarter Overlay
    fate-computers
    Offline

    fate-computers

    Регистрация:
    12 янв 2016
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Данное решение меня полностью устраивает. Спасибо еще раз.

Поделиться этой страницей