Здравствуйте. Нужна подсказка. Есть определенное количество проведенных расходных накладных с различным товаром. Кроме того, есть еще услуги, которые также отображаются в табличной части. Я, например, хочу знать, на какую общую сумму были оказаны услуги, скажем, за месяц. Услуга в справочнике имеет название "Ремонт". В некоторых расходных накладных она присутствует, в некоторых нет. Каким методом лучше всего произвести выборку и просуммировать услугу Ремонт по всем расходным накладным за указанный период и присвоить значение результата какой-то переменной? Можно ли сделать это путем создания отчета, не изменяя сам модуль документа РасходнаяНакладная? Трудность в том, что услуга Ремонт - не идентификатор табличной части документа, а элемент справочника. Не могу ничего придумать...
Спасибо большое!
Перебором документов за период или копайте в сторону запрса.
Pepe @ Вчера, 17:14
,
Пробовал через запрос. Пока не получается никак. Слишком сложно. Может, эту задачу проще решить на этапе создания документов через регистры?
ZUBR @ Сегодня, 0:25
,
Крім слова "Ремонт"в навзві, в карточці товару є ще поле "ВидТовару" . Ви проставляєте там вид "товар" або "Услуга"?
Конечно запросом, что тут думать?! Запрос по документам за период с отбором по номенклатуре, отбор нужно делать по элементу справочника, а не по названию. Если покажете структуру документа, могу подсказать пример запроса
mut @ Сегодня, 11:39
, структура документа - обычная штатная расходная накладная. Я заполняю ее табличную часть данными из справочника, имеющими вид товара "Товар" и в конце вношу некоторые элементы справочника, имеющие вид товара "Услуга" К таковым относится, например, "Ремонт". Мне нужно просуммировать численные значения "Ремонт" по всем расходным накладным за указанный период с тем, чтобы потом вычислять определенный процент из этой суммы, сравнивать с другими данными и т.п. Короче, мне нужно по всем расходным накладным, например, за месяц, просуммировать "Ремонт" , который идет, как товар, прописанный в справочнике с численным значением и видом товара "Услуга". Если подскажете пример запроса, буду весьма признателен. Спасибо!
volodya1122 @ Сегодня, 10:52
, звичайно, проставляю. Товар має вид "Товар", а "Ремонт", "Чистка" та інші види робіт мають вид "Услуга".
ТекстЗапроса =
"
|Период с НачДата по КонДата;
|ОбрабатыватьДокументы Проведенные;
|Товар = Документ.РасходнаяНакладная.Товар;
|СуммаСНДС = Документ.РасходнаяНакладная.СуммаСНДС;
|Функция Сум = Сумма(СуммаСНДС);
|Группировка Товар Без Групп;
|Условие (Товар = НужныйТовар);";
Запрос.Выполнить(ТекстЗапроса);
Пока Запрос.Группировка(1) = 1 Цикл
СуммаУслуг = Запрос.Сум;
КонецЦикла;
mut @ Сегодня, 21:03
,
Немного не то. Человеку нужно выбрать по всех товарах название которых начинается с "Ремонт". Незнаю, есть ли в семёрочных запросах функция "Подобно". В данном случае она бы очень подошла. А так убрать из запроса условие, и перебором пройтись и проверять на ЛЕВ(Товар,6)="Ремонт".
volodya1122 @ Сегодня, 22:29
, нет, мне как раз нужна сумма по конкретной позиции. То есть, конкретно по "Ремонт". Ну, и по некоторым другим. Но это будет другая сумма. Мне главное понять суть написания запроса. А дальше дело техники. Спасибо за участие!)
mut @ Сегодня, 21:03
,
Процедура Сформировать()
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"
|Период с НачДата по КонДата;
|ОбрабатыватьДокументы Проведенные;
|Товар = Документ.РасходнаяНакладная.Товар;
|СуммаСНДС = Документ.РасходнаяНакладная.СуммаСНДС;
|Функция Сум = Сумма(СуммаСНДС);
|Группировка Товар Без Групп;
|Условие (Товар = Ремонт);";
Запрос.Выполнить(ТекстЗапроса);
Пока Запрос.Группировка(1) = 1 Цикл
СуммаУслуг = Запрос.Сум;
КонецЦикла;
Сообщить("Сумма:"+СуммаУслуг);
КонецПроцедуры
ZUBR @ Сегодня, 23:25
,
переменную "ремонт" нужно определить до запроса.
Ремонт = СоздатьОбъект("Справочник.ТМЦ");
Ремонт.НайтиПоНаименованию("Ремонт");
Макс1С @ Сегодня, 23:41
, я уже это понял и сделал.
Процедура Сформировать()
НужныйТовар = Константа.НужныйТовар;
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"
|Период с НачДата по КонДата;
|ОбрабатыватьДокументы Проведенные;
|Товар = Документ.РасходнаяНакладная.Товар;
|СуммаСНДС = Документ.РасходнаяНакладная.СуммаСНДС;
|Функция Сум = Сумма(СуммаСНДС);
|Группировка Товар Без Групп;
|Условие (Товар = НужныйТовар);";
Запрос.Выполнить(ТекстЗапроса);
Пока Запрос.Группировка(1) = 1 Цикл
СуммаУслуг = Запрос.Сум;
КонецЦикла;
Сообщить("Сумма:"+СуммаУслуг);
КонецПроцедуры
Макс1С @ Сегодня, 23:41
,
Або краще на форму звіту вставити поле введення (реквизит диалога) з типом справочник.Номенклатура І ідентифікатор для нього прописати "нужныйТовар"
Думаю, через константу будет лучше. Пользователь сможет сам определять товар. Можно даже сделать несколько нужных констант. Потому что если зашить это в код, то пользователь будет вынужден использовать только определенные слова для названия товара.)))
ZUBR @ Вчера, 23:59
,
На формі звіту користувач вибипає потрібний товар, і формує звіт по ттому товару що йому потрібно. Непотрібно плодити констант, це погана ідея
volodya1122 @ Вчера, 23:58
, так, как Вы предлагаете, еще лучше, чем через константу. А константу тоже можно использовать. В ней можно задать услугу или товар, наиболее часто используемый для запросов и отчетов, и сделать его по умолчанию).
П.С. Я просто не встиг прочитати вашу відповідь. Різниця в часі менше хвилини, тому це не було відповіддю Вашому повідомленню.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua