Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как создать отчет с суммой по отдельной позиции табличной части расходных накладных в 1С 7.70.003 торговля склад для Украины
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
ZUBR
Здравствуйте. Нужна подсказка. Есть определенное количество проведенных расходных накладных с различным товаром. Кроме того, есть еще услуги, которые также отображаются в табличной части. Я, например, хочу знать, на какую общую сумму были оказаны услуги, скажем, за месяц. Услуга в справочнике имеет название "Ремонт". В некоторых расходных накладных она присутствует, в некоторых нет. Каким методом лучше всего произвести выборку и просуммировать услугу Ремонт по всем расходным накладным за указанный период и присвоить значение результата какой-то переменной? Можно ли сделать это путем создания отчета, не изменяя сам модуль документа РасходнаяНакладная? Трудность в том, что услуга Ремонт - не идентификатор табличной части документа, а элемент справочника. Не могу ничего придумать...
Спасибо большое!
Pepe
Перебором документов за период или копайте в сторону запрса.
ZUBR
Pepe @ Вчера, 17:14 необходимо зарегистрироваться для просмотра ссылки ,
Пробовал через запрос. Пока не получается никак. Слишком сложно. Может, эту задачу проще решить на этапе создания документов через регистры?
volodya1122
ZUBR @ Сегодня, 0:25 необходимо зарегистрироваться для просмотра ссылки ,

Крім слова "Ремонт"в навзві, в карточці товару є ще поле "ВидТовару" . Ви проставляєте там вид "товар" або "Услуга"?
mut
Конечно запросом, что тут думать?! Запрос по документам за период с отбором по номенклатуре, отбор нужно делать по элементу справочника, а не по названию. Если покажете структуру документа, могу подсказать пример запроса smile.gif
ZUBR
mut @ Сегодня, 11:39 необходимо зарегистрироваться для просмотра ссылки , структура документа - обычная штатная расходная накладная. Я заполняю ее табличную часть данными из справочника, имеющими вид товара "Товар" и в конце вношу некоторые элементы справочника, имеющие вид товара "Услуга" К таковым относится, например, "Ремонт". Мне нужно просуммировать численные значения "Ремонт" по всем расходным накладным за указанный период с тем, чтобы потом вычислять определенный процент из этой суммы, сравнивать с другими данными и т.п. Короче, мне нужно по всем расходным накладным, например, за месяц, просуммировать "Ремонт" , который идет, как товар, прописанный в справочнике с численным значением и видом товара "Услуга". Если подскажете пример запроса, буду весьма признателен. Спасибо!


volodya1122 @ Сегодня, 10:52 необходимо зарегистрироваться для просмотра ссылки , звичайно, проставляю. Товар має вид "Товар", а "Ремонт", "Чистка" та інші види робіт мають вид "Услуга".
mut
Цитата(ZUBR @ 02.09.19, 19:55) необходимо зарегистрироваться для просмотра ссылки
Если подскажете пример запроса


ТекстЗапроса = 
    "
    |Период с НачДата по КонДата;
    |ОбрабатыватьДокументы Проведенные;
    |Товар = Документ.РасходнаяНакладная.Товар;
    |СуммаСНДС = Документ.РасходнаяНакладная.СуммаСНДС;
    |Функция Сум = Сумма(СуммаСНДС);
    |Группировка Товар Без Групп;
    |Условие (Товар = НужныйТовар);";
    Запрос.Выполнить(ТекстЗапроса);
    Пока Запрос.Группировка(1) = 1 Цикл
        СуммаУслуг = Запрос.Сум;
    КонецЦикла;


ваши параметры - НачДата, КонДата, НужныйТовар (это элемент справочника, услуга, по которой нужно отобрать)

результат в переменной СуммаУслуг
volodya1122
mut @ Сегодня, 21:03 необходимо зарегистрироваться для просмотра ссылки ,
Немного не то. Человеку нужно выбрать по всех товарах название которых начинается с "Ремонт". Незнаю, есть ли в семёрочных запросах функция "Подобно". В данном случае она бы очень подошла. А так убрать из запроса условие, и перебором пройтись и проверять на ЛЕВ(Товар,6)="Ремонт".
ZUBR
volodya1122 @ Сегодня, 22:29 необходимо зарегистрироваться для просмотра ссылки , нет, мне как раз нужна сумма по конкретной позиции. То есть, конкретно по "Ремонт". Ну, и по некоторым другим. Но это будет другая сумма. Мне главное понять суть написания запроса. А дальше дело техники. Спасибо за участие!)


mut @ Сегодня, 21:03 необходимо зарегистрироваться для просмотра ссылки ,

Процедура Сформировать()
    
    Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
    "
    |Период с НачДата по КонДата;
    |ОбрабатыватьДокументы Проведенные;
    |Товар = Документ.РасходнаяНакладная.Товар;
    |СуммаСНДС = Документ.РасходнаяНакладная.СуммаСНДС;
    |Функция Сум = Сумма(СуммаСНДС);
    |Группировка Товар Без Групп;
    |Условие (Товар = Ремонт);";
    Запрос.Выполнить(ТекстЗапроса);
    Пока Запрос.Группировка(1) = 1 Цикл
        СуммаУслуг = Запрос.Сум;
        
    КонецЦикла;
Сообщить("Сумма:"+СуммаУслуг);


КонецПроцедуры


Вот так я сделал, чтобы проверить работу. Программа выдает ошибку, что переменная Ремонт не определена. Почему она воспринимает Ремонт, как переменную? Что я пропустил? Не могу же я объявить Ремонт, как переменную! Услуга Ремонт в справочнике и в табличной части документов присутствует. Вместо Ремонт пробовал прописывать другой товар. Все равно воспринимает как переменную. В чем моя ошибка?
Макс1С
ZUBR @ Сегодня, 23:25 необходимо зарегистрироваться для просмотра ссылки ,
переменную "ремонт" нужно определить до запроса.

Ремонт = СоздатьОбъект("Справочник.ТМЦ");
   Ремонт.НайтиПоНаименованию("Ремонт");


только в торговле по-моему справочник "Товары"
ZUBR
Макс1С @ Сегодня, 23:41 необходимо зарегистрироваться для просмотра ссылки , я уже это понял и сделал.

Процедура Сформировать()   
    НужныйТовар = Константа.НужныйТовар;
    
    Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
    "
    |Период с НачДата по КонДата;
    |ОбрабатыватьДокументы Проведенные;
    |Товар = Документ.РасходнаяНакладная.Товар;
    |СуммаСНДС = Документ.РасходнаяНакладная.СуммаСНДС;
    |Функция Сум = Сумма(СуммаСНДС);
    |Группировка Товар Без Групп;
    |Условие (Товар = НужныйТовар);";
    Запрос.Выполнить(ТекстЗапроса);
    Пока Запрос.Группировка(1) = 1 Цикл
        СуммаУслуг = Запрос.Сум;
        
    КонецЦикла;
Сообщить("Сумма:"+СуммаУслуг);


КонецПроцедуры


После этого заработало. Поспешил с вопросом))
volodya1122
Макс1С @ Сегодня, 23:41 необходимо зарегистрироваться для просмотра ссылки ,

Або краще на форму звіту вставити поле введення (реквизит диалога) з типом справочник.Номенклатура І ідентифікатор для нього прописати "нужныйТовар"
ZUBR
Думаю, через константу будет лучше. Пользователь сможет сам определять товар. Можно даже сделать несколько нужных констант. Потому что если зашить это в код, то пользователь будет вынужден использовать только определенные слова для названия товара.)))
volodya1122
ZUBR @ Вчера, 23:59 необходимо зарегистрироваться для просмотра ссылки ,

На формі звіту користувач вибипає потрібний товар, і формує звіт по ттому товару що йому потрібно. Непотрібно плодити констант, це погана ідея
ZUBR
volodya1122 @ Вчера, 23:58 необходимо зарегистрироваться для просмотра ссылки , так, как Вы предлагаете, еще лучше, чем через константу. А константу тоже можно использовать. В ней можно задать услугу или товар, наиболее часто используемый для запросов и отчетов, и сделать его по умолчанию).
П.С. Я просто не встиг прочитати вашу відповідь. Різниця в часі менше хвилини, тому це не було відповіддю Вашому повідомленню.
Макс1С
Цитата(volodya1122 @ 02.09.19, 23:58) необходимо зарегистрироваться для просмотра ссылки
Або краще на форму звіту вставити поле введення (реквизит диалога) з типом справочник.Номенклатура І ідентифікатор для нього прописати "нужныйТовар"

Да, это оптимальное решение
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.