8.х Суммируем только КГ в печатной форме

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Gineich, 31 янв 2011.

  1. TopicStarter Overlay
    Gineich
    Offline

    Gineich

    Регистрация:
    7 авг 2009
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    Уважаемые только понемногу начал учить 1с, подскажите как правильно в модуль (печатнаяформа)
    +++ Функция ПечатьДокумента --- прописать текст чтоб счтитало только -КГ-.
    в реализации есть и штучный и весовой товар (кг).
    добавил параметр в область "итого" и что-то никак...

    вот куча моего неправильно хлама:
    // Для Каждого текстрокаТОвары из Товары Цикл
    // если текстрокаТОвары.ЕдиницаИзмерения.Наименование = кг тогда
    // текстрокаТОвары.Количество = Сумма(СчитатьКг);
    // КонецЕсли;
    // КонецЦикла;
    //Если ТекСтрокаТовары.ЕдиницаИзмерения.наименование = "кг" тогда
    // Сумма(ТекСтрокаТовары.Количество)
    //КонецЕсли;
    // ОбластьМакета = Макет.ПолучитьОбласть(ОбластьИтого);
    // ОбластьМакета.Параметры.ИтогоКГ = считатьКГ;
    //
    //ЕстьКГ = ЗапросТовары.Количество()("ЕстьКГ") + ЗапросТовары.Итог("ЕстьКГ") <> 0;


    // Если ЕстьКГ Тогда
    // ОбластьМакета.Параметры.ИтогоКГ = ИтогоКГ;
    // ОбластьМакета.Параметры.ИтогоКГ = ВыборкаСтрокТовары.Сумма + ИтогоКГ;



    вообщем ничего не получается у меня с параметром +++ИтогоКГ---
    Прошу вашей помощи и заранее благодарен.

    8.1 УТ
  2. Diego
    Offline

    Diego Любитель 1С Команда форума

    Регистрация:
    3 апр 2009
    Сообщения:
    966
    Симпатии:
    2
    Баллы:
    29
    Что-то типа такого...

    Код:
    КоличествоИтого = 0;
    Для Каждого текстрокаТОвары из Товары Цикл
    Если текстрокаТОвары.ЕдиницаИзмерения.Наименование = "кг" тогда
    КоличествоИтого = КоличествоИтого+текстрокаТОвары.Количество;
    КонецЕсли;
    КонецЦикла;
    
    ОбластьМакета = Макет.ПолучитьОбласть(ОбластьИтого);
    ОбластьМакета.Параметры.ИтогоКГ = КоличествоИтого;
    
    
    
    
    
    Еще подумал, что поиск килограммов лучше сделать так:

    Код:
    Если текстрокаТОвары.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("Кг") Тогда
    
  3. cska-fanat-kz
    Offline

    cska-fanat-kz

    Регистрация:
    8 янв 2011
    Сообщения:
    41
    Симпатии:
    0
    Баллы:
    1
    А еще можно единицу измерения кг сделать предопределенной и писать

    Код:
    Если текстрокаТОвары.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.КГ Тогда
    
    
    Так надержнее...
  4. TopicStarter Overlay
    Gineich
    Offline

    Gineich

    Регистрация:
    7 авг 2009
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    ВСем здравстуйте, чего-то всеравно неполучается, проблему упростил. Добавил новый реквезит в табличную часть "Товары" и назвал его КоличествоКГ. при вводе в колонку Количество цыфры копируются и в клонку КоличествоКГ - то что мне и надо почти. вывел подвал, сумму подвала новой колонки КоличествоКГ, добавил парметр в макет и все выводится. почти 4+ ))). теперь проблемка иная, как мне подредактировать текст чтоб копировались цыфры только той номенклатуры которая принадлежит к весу (ЕДЕНИЦА ИЗМЕРЕНИЯ), т.е. КГ а не ШТ . вот мой текст:

    Процедура ТоварыКоличествоПриИзменении(Элемент)
    ПриИзмененииКоличестваТовары(Элемент);
    СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
    Если СтрокаТабличнойЧасти.ЕдиницаИзмерения = "кг" тогда

    // Если СтрокаТабличнойЧасти.ЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду(166) тогда

    СтрокаТабличнойЧасти.КоличествоКГ = СтрокаТабличнойЧасти.Количество;
    Иначе СтрокаТабличнойЧасти.КоличествоКГ = 0;
    КонецЕсли;


    КонецПроцедуры // ТоварыКоличествоПриИзменении()


    прошу всех кто знает подсказать как поправить кусок этого кода ++ = "кг" --

    УТ украина, 8.1.15.14

    конфа (2.3.3.4) . всем заранее спасибо
  5. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    А чем вас не устраивает ответ Diego
    Код:
    Если СтрокаТабличнойЧасти.ЕдиницаИзмерения.Наименование = "кг" тогда
    
    Код:
    Если СтрокаТабличнойЧасти.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("кг") тогда
    
    Можно еще и так:
    Код:
    Если СтрокаТабличнойЧасти.ЕдиницаИзмерения.Код = "166" тогда
    
    Код:
    Если СтрокаТабличнойЧасти.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоКоду("166") тогда
    
  6. Diego
    Offline

    Diego Любитель 1С Команда форума

    Регистрация:
    3 апр 2009
    Сообщения:
    966
    Симпатии:
    2
    Баллы:
    29
    ндя... вот это называется "мы не ищем легких путей...! :angry:
    А если потом вздумаете отдельно считать штуки, коробки, тонны и бутылки - для каждой единицы свой столбец будете добавлять?
  7. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Именно. Дело не только в столбцах, а дело в самой постановке задачи, ибо в общем случае непонятно что с чем должно суммироваться. В одной накладной товар может быть и в киллограммах и в тоннах и в граммах, да еще до кучи в штуках.
    Gineich, для чего вам это суммирование надо, задачу скажите?

    По теме:
    Не мудрите с добавлением колонок там всяких, два варианта:
    1) Либо сделайте запросом к ТЧ документа, где сгруппируйте по полю "ЕдиницаИзмерения", проссумировав количество.
    2) Либо просто сверните ТЧ по колонке "ЕдиницаИзмерения" (сумма так же, по "Количество").

    Потом пройдетесь по выборке либо по ТЗ (в зависимости от того каким вариантом сделаете), найдете нужную единицу и сделаете с результатом что там вам надо сделать.
  8. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Дополнение:
    Если у вас печатная форма - делайте запросом. Ненужно объект туда-сюда гонять.
  9. TopicStarter Overlay
    Gineich
    Offline

    Gineich

    Регистрация:
    7 авг 2009
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    >для чего вам это суммирование надо, задачу скажите?

    Для того что в одной накладной и консервы и кг сыров и кг мяса и шт кокаколы
  10. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Общий вес товара по накладной что-ли посчитать надо?

    Для каждой единицы измерения номенклатуры заполните справочник (проставьте вес). (Там где весовой, и отпускается в килограммах - единицу соответственно).
    Посчитайте общий вес по накладной запросом:
    Код:
    "ВЫБРАТЬ
    СУММА(РеализацияТоваровУслугТовары.Количество * РеализацияТоваровУслугТовары.ЕдиницаИзмерения.Вес) КАК ВесВКилограммах
    ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    ГДЕ
    РеализацияТоваровУслугТовары.Ссылка = &СсылкаНаОбъект"
    
    
    
  11. TopicStarter Overlay
    Gineich
    Offline

    Gineich

    Регистрация:
    7 авг 2009
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    вот последним вы меня в тупик вообще загнали )))


    а здесь

    Процедура ТоварыКоличествоПриИзменении(Элемент)


    ПриИзмененииКоличестваТовары(Элемент);
    СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
    ///////считает одну строку только, только в чем проблема непонимаю

    Если СтрокаТабличнойЧасти.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("кг") тогда
    СтрокаТабличнойЧасти.КоличествоКГ = СтрокаТабличнойЧасти.Количество;
    Иначе СтрокаТабличнойЧасти.КоличествоКГ = 0;
    КонецЕсли;




    КонецПроцедуры // ТоварыКоличествоПриИзменении()


    И списибо всем за старание
  12. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Вот вам функция, заполните как я вам сказал справочник и убирайте "НайтиПоНаименованию" и т.д.

    Код:
    Функция ВернутьВесТовараВНакладной(ДокументРТиУ)
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |	СУММА(РеализацияТоваровУслугТовары.Количество * РеализацияТоваровУслугТовары.ЕдиницаИзмерения.Вес) КАК ВесВКилограммах
    |ИЗ
    |	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    |ГДЕ
    |	РеализацияТоваровУслугТовары.Ссылка = &СсылкаНаОбъект";
    
    Запрос.УстановитьПараметр("СсылкаНаОбъект", ДокументРТиУ);
    
    ВыборкаДетальныеЗаписи = Запрос.Выполнить().Выбрать();
    ВыборкаДетальныеЗаписи.Следующий();
    
    Возврат ВыборкаДетальныеЗаписи.ВесВКилограммах;
    
    КонецФункции // ВернутьВесТовараВНакладной(Документ)
    
    
  13. TopicStarter Overlay
    Gineich
    Offline

    Gineich

    Регистрация:
    7 авг 2009
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    Все получилось - супер, все товара кг мне нужен біл чтоб взвешивать весовой товар (сір, мясо), а остальной товар потом просто в ящик сверху бросается - но сначало взвешивание.
    зделал как вы мне писали:
    в макет добавил параметр "КоличествоКГ"
    в функцию печать документа добавляю

    КоличествоКГ = 0;
    //Перед циклом Для каждого ВыборкаСтрокТовары из ЗапросТовары Цикл ........
    // в цикл вставляю
    Если ВыборкаСтрокТовары.ЕдиницаЦены = ("КГ") Тогда
    КоличествоКГ = КоличествоКГ+ВыборкаСтрокТовары.Количество;
    КонецЕсли;
    //после цикла есть такой код
    //ОбластьИтого = "Итого";
    //ОбластьМакета = Макет.ПолучитьОбласть(ОбластьИтого);
    //и добавляю ниже
    ОбластьМакета.Параметры.КоличествоКГ = КоличествоКГ;
    //все просто супер - СЧИТАЕТ )))

    единственная проблема была вот в чем, когда вы мне сказали писать так:
    //Если текстрокаТОвары.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("Кг") Тогда //то все время ругалось на ЕдиницыИзмерения. двигаясь дальше "ПЕРЕЙТИ ПО ОПРЕДЕЛЕНИЮ" понял что надо писать ЕдиницаЦены
    и все.
    ВСЕМ ВЕСЬМА ПРЕБЛАГОДАРЕН.
  14. TopicStarter Overlay
    Gineich
    Offline

    Gineich

    Регистрация:
    7 авг 2009
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    Забыл, в справочник КлассификаторЕденицИзмерения добавил предопределенный КГ с кодом 166.

    надеюсь кому это тоже понадобится - уже не составит столько мороки

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