Функция Счётчик сейчас подсчитывает кол-во товаров во всех документах вошедших в запрос. Если убираю переменную ТовСумм - начинает считать кол-во документов, но тогда соответственно не могу сумму по накладным получить. Как сделать так чтобы Суммы получать и Счётчиком кол-во документов подсчитывать?
(2) счетчик считает правильно в зависимости от сделанной группировки. Так что все что надо - подумать над правильным выбором группировки, что и было приведено на мисте
(1) то есть ты по-прежнему упорствуешь ;-)
Чем не понравился код, который дает количество документов, который я тебе дал в последнем посте в ветке на мисте? Или тебя по прежнему ломает тупо скопипастить и проверить? Или тебе нужно мультик записать в видео который продемонстрирует что приведенный в последнем потсте на мисте код дает правильный результат?
(3) CheBurator, то как там написано (в плане счётчика) я уже пробовал и до и после того как ты это написал. Не считает он кол-во документов - считает только кол-во товаров в табличной части. Кстати в твоём коде группировка - документ, а переменной такой нету. В остальном группировки тут не причём, я пробовал кроме группировки по контрагенту добавлять группировку по документам - результат тот же. Счётчик начинал считать не товары а документы только когда я удалял переменную ТовСумм (в твоём коде - Печеньки), а мне её удалять не надо, мне нужно чтобы одновременно считались общая сумма и количество документов, если такое вообще возможно в одном запросе.
(3) CheBurator, да, действительно, всё работает. Здесь я и правда тупанул - не обратил внимания сначала на то как обработка запроса происходит (о счётчике думал)). Спасибо за совет.
(19) не, запрос считает неправильно, и выдает количество строк в первом документе, попавшем в выборку - что по случайности совпало с количеством документов в выборке. Мой запрос - тоже неправильный по той же причине.
надо подумать
ага, получилось.
вариант (19) - неправильный, Запрос.Группировка(1) - позиционируется на первом значении группировки, то есть возвращает итоги для первого документа в выборке.
На мисте не видел ребят. дайте ссылку. но счас в голову пришло запрос выгрузить в тз свернуть как надо - накрайняк
только после выгрузить добавить колонку наверное и единички туда впихнуть
там можно вообще по любому полю посчитать уникальное колво
(12) chel-new, я знаю, уже подправил - сейчас всё считает. Я Запрос.Группировка не пробовал использовать, вот чего чего оказывается не хватало. Теперь правда не совсем правильно - количество на 1 больше выдаёт.
(17) Kaijsu, покажи структуру твоего документа и текст кода который в итоге модификации используешь, как предположение: в запросе обрабатываешь не "шапку" а "многострочную часть" документа, отсюда если строк в документе 2, то в выгрузке сгруппируются в 3, а Счетчик насчитает 4
А нет, всё равно неправильно - это просто совпало. Сейчас проверил на другом контрагенте по которому одна накладная - действительно считает кол-во строк табличной части, а не документы.
(29) твоя функция будет криво считать если попадется документ с пустой табличной частью. Сумма сумм посчитается правильно, а количество документов - налажает. Мой код - посчитает правильно даже если документ с пустой табличной частью.
(31) CheBurator,
Нет не будет, вставь проверку на НомерСтроки <> 0.
Это рабочий код, и давно работает. К тому-же проведенные документы без табличной части...не имееют смысла и к тому-же не проводятся)
По запросу там используются только проведенные документы...и такая поверка избыточна сама по себе. Смысл проверки по нуль нужна если выбираются все документы
К тому-же смысл в документах без табличной части, сам подумай. Не какого! Поэтому они просто отсекаются как не нужные)
(33) фигня.в общем случаем запросто могут быть документы с пустой табличной частью. и несущие вполне вменяемый функционал - самое тупое: корректировочная заявка с пустой табличной частью в ТИС - порождает туеву хучу движений.
так что у тебя - в общем случае считает криво - не учитыывает доки с пустой табличной частью.
а условие НомерСтроки <2 - как раз посчитает все верно.
а проведенные/непроведенные- это уже тонкости. Впрочем и документ с пустой ТЧ можно тоже рассматривать как тонкость.
(34) CheBurator,
Насчет в реализации повторное проведение это да. Но не я это делал в свое время такой механизм, а они так уже привыкли. Я делал всего-лишь отчет по тому что есть)
Еще раз повторюсь криво нечего не работает, работает все по моему умыслу) В данном случае такая проверка излишняя , так как документы которые с пустой табличной частью не учитываются вообще. ТАК и НУЖНО!
(36) "ТАК и НУЖНО!" - в твоем запросе да. в задаче автора - искуственно занижаются исходные данные. Но это уже не суть, потому что понятно как это разрулить в запросе.
(39) CheBurator,
В принципе и так можно, но лучше не надо. Я посмотрел его задание у него то-же проведенные, получится такая-же фигня количество документов с пустой табличной частью подсчитывать, а они нужны, а в твоем случае будут считаться такие документы. Документы с пустой табличной частью, это ошибка оператора. И их учитывать не надо. Поэтому НомерСтроки = 1 достаточно то-же. И правильней.
Я отвечал на его вопрос, твоего не видел ответа. Но приятно, что есть еще люди которые понимают в ТиС)
(41) Что достаточно и правильней - определяется условиями задачи. При неполном обозначении исходных условий в наилучшем случае надо исходить по возможности из самых общих условий. закладываясь сразу на НомСтроки=1 - мы сразу потенциально заужаем область исходных данных, хотя права на это не имеем. зауженные исходные данные оставляют "за боротом" массу инфы - нужна она или нет - НЕ ВИДЯ ЭТОЙ ИНФЫ - ВЫВОД СДЕЛАТЬ НЕВОЗМОЖНО. В итоге - получаем недостоверные данные.
Решая общую задачу - получаем полный набор данных. Видя что в нем есть несущественные данные - вводим поправку в исходные данные и ТОЛЬКО ПОТОМ заужаем решение.
Это - принципиальный подход.
При выборе решать общую задачу с предсказуемым набором данных или частную задачу с зауженными - определяем стоимость решения. если стоимость высокая - не потянем - решаем узкую сразу по принципу "правильные данные получим - получим!" и втайне надеясь что оставшиеся за бортом невыявленные "неправильные" данные не БАБАХНУТ в самый неподходящий момент.
В данном случае стоимость общего решения - мизерная. Поэтому - если обратишь внимание - у меня в запросе - нет ни проверко на проведенные, удаленные - общая задача.
Заузить можно всегда (палку напополам разрубить не проблема) - это чистая технология. А вот с зауженной перейти к общей (из двух половинок сделать целую палку) - это уже искусство (могут получитьяс нунчаик, которые в лобешник лепят будь здоров самому себе ;-)
Попутно выясняя - что у на операторы часто косячат (все что делают руками все плохо), поэтому внедряем "защиты от дураков" (у меня такими защитам туева хуча мест обвешана).
Я тут понаписал конечно много - и хотелось бы и самому так работать как написал - но не всегда получается (хотя я и юзаю разработку "сверху вниз").
мы сразу потенциально заужаем область исходных данных, хотя права на это не имеем
Ну сколько я работаю...всегда накладные с пустой табличной частью игнорирую. Это оператор либо забыл либо затупил и создал новый закрыв этот. И не какой полезной нагрузки этот документ не несет, а только портит статистику своим присутствием, если он попадет в запрос. Канечно не спорю есть фирмы которые возможно как-то иначе введут учет, но это скорее исключение, чем правило. А под такие правила, сам разработчик должен приспосабливать то что ему дают как исходный код для примера.
Я еще успел за это время публикацию забабахать, модераторы одобрят - прения можно будет туда перенести. Бо задачка оказалась полезной. ссылка (пока неактивная) http://infostart.ru/public/485039/
самое тупое: корректировочная заявка с пустой табличной частью в ТИС - порождает туеву хучу движений.
и такой документ, например, тоже надо считать - потому что это может быть вполне себе легитимная хозоперация которую надо учесть. В рамках постановки задачи "Как сделать так чтобы Суммы получать и Счётчиком кол-во документов подсчитывать" (даже с учетом условий на проведенность документа в исходном запросе) - пустые доки надо учитывать, потому как это не протворечит возможностям системы - а на какой автор работает - хз (думал ли автор про пустые доки или нет - нам неведомо ;-)
в плане осмысления неосмысленного:
кстати, очень было бы интересно посмотреть как отработает что получится в итоге в тексте скульного запроса на такую твою конструкцию
в когда: ТекущийДокумент.КоличествоСтрок()
- думаю (но неуверен) что будет сгенерено какое-то соединение с таблицей скуля для табличной части документа для подсчета количества строк документа.. что утяжеляет запрос.
это мое примечание несущественно - просто не сильно рублю в скулях.
У меня, например, часть торг12 и счф выписываются в бухбазе по каким-либо неосновным (не)торговым операциям. Под эти буховские документы в торгбазе тупо резервируются документы-болванки. Это проще, чем тянуть в торговую прогу бухгалтерские заморочки.
А так да - особенностей учета - везде хватает. И зачастую это даже не особенности, а костыльки.