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