v7: Перебрать запросом документы и получить цены номенклатуры из справочника цен. #719289


#0 by raykom
Надо перебрать документы по номенклатуре и получать цену не из документа, а из справочника цен на дату документа. Кто делал, подкиньте кусок кода . Пожалуйста.
#1 by raykom
Блин ... ТиС, файловая, черный запрос.
#2 by akaBrr
Обязательно запросом? Нередко выборка работает быстрее в 7.7.
#3 by raykom
Не обязательно, но надо таблицу строить потом, а итоги по группировкам и вообще, группировки проще в запросе.
#4 by welwel
В функции чёрного запроса можно использовать функцию из модуля. Может медленно работать, но логику упрощает.
#5 by welwel
+ Можно и к глПолучитЦену обратиться сразу
#6 by raykom
Ну да, пробовал уже. Как то тоже криво. Вот об ней то и речь. Сейчас вот вернулся к этому ...
#7 by welwel
но если есть аргументы не только из запроса, то к ф-и глоб. модуля придется обращаться через промежуточную ф-ю из модуля
#8 by raykom
Все из запроса. Вот что передаю в глобальную глПолучитьЦену(Номенклатура,СпрПоРекв("ТипыЦен","Код",Строка(Контрагент.ОсновноеСвойство.ЗначениеСвойства)),ДатаДок,Единица,Валюта,"1","1");
#9 by КонецЦикла
Не надо в запросе - будет жутко Смотри как получается цена в подборе, например
#10 by raykom
Блин, совсем разучился подглядывать. Верно ведь.
#11 by raykom
Вообщето вот такая конструкция получается без лишних подробностей Запрос = СоздатьОбъект("Запрос"); Вот если вот так То запрос отрабатывает и возвращает выборку, но в значениях СуммаБезСкидки - хер знает что, какие то цифры не могу понять как и получаются. Итоги какие то по группировкам, а какие - не соображу. А вот если так То выборка пустая.
#12 by raykom
Мало того, что как то по владельцу надо синхронизировать выборку и группировку, так еще хз, как на дату документа цену получить.
#13 by КонецЦикла
какая нахрен сумма? где группировка по строке документа? у тебя же задача получить цену для каждой номенклатуры в каждой строке? понятно что у 1с крыша едет... сделай перебором если не прет
#14 by raykom
С выборкой все понятно - но блевать охота от подсчета итогов и построения группировок.
#15 by КонецЦикла
... или сортировать ТЗ и извращаться... но тут противно действительно
#16 by raykom
Мне надо не из строки документа цену, а из справочника цен. Так что строка тут не при чем. Было бы из документа - не изгалялся бы
#18 by КонецЦикла
Так надо отделить строки чтобы не было каши У тебя 1с суммирует цены по номенклатуре... но номенклатура повторяется в одном/разных документах и т.п.
#19 by welwel
И выборка только строк документов - без Справочник...
#20 by raykom
Так у меня и нет группироввки по документу, что бы заморачиваться, что она сукка тупо не просуммирует цены по контрагенту ? Номенклатура то одна в пределах группирговки, функция суммирует по группировке, по логике. Куррва ...
#21 by КонецЦикла
Для этого надо выбрать различную номенклатуру и потом уже что-то там лепить и суммировать А вообще иди проспись, а то забанюнахрен
#22 by raykom
>ПолучитНужнуюЦену(Товар,Док) Вот эта ж0па есть глобальная, и она возвращает в такой конструкции цену верную, но функция тут суммирует какую то херню, как и в когда нет условия. А добавить условие - ПЦ, выборка пустая.
#23 by raykom
За баней решение есть ? о_О
#24 by raykom
Сам то че не спишь ... Или белорусы не спят ?
#25 by КонецЦикла
Настало время главного вопроса: зачем перебирать "документы по номенклатуре" если она и так известна и цена хранится не в документе?
#26 by raykom
>И выборка только строк документов - без Справочник... О ... На четверты день Зоркий Сокол увидел, что у сарая нет четвертой стены ... Попробую
#27 by raykom
)) Таки да ? Зачем ))
#28 by КонецЦикла
Если не известна - выборка номенклатуры из документов, свертка тз по номенклатуре и вперед, получать цены
#29 by welwel
А зачем цену суммировать просто так? Какой нужен итог?
#30 by КонецЦикла
от же сцуко
#31 by raykom
Потому, что надо выбрать и просуммировать номенклатуру в ореализациях за период
#32 by КонецЦикла
да он просто нагло троллирует
#33 by raykom
К стати да, нахера. Да ладно ... Не до этого. Туплю уже просто
#34 by welwel
значит нужно цену множить на количество
#35 by КонецЦикла
Что значит просуммировать номенклатуру? Ссылки что ли складывать?
#36 by raykom
Емае ... Ну надо пособирать скидки, вычислить их, получить сумму скидок по каждой номенклатуре. Сумму скидки надо определять через процент от нормальной цены по справочнику ...
#37 by raykom
Ну некоторые значения по номенклатуре просуммировать ...
#38 by raykom
Блят ... полпятого
#39 by raykom
Клянусь - завяжу с одинесом в течении полугода.
#40 by raykom
Блевать уже от нее охота .
#41 by raykom
Пошло оно все кобыле в трещину .... Пошол спать. Спасибо, за посильную помощь. Утро вечера, как говорится ...
#42 by welwel
Примерно так тогда: ....... в ПолучитьСуммуСкидки описать вычисление скидки а запрос все просуммирует
#43 by raykom
От враги ... Сами не спят и другим не дают. Щас попробую. Уже есть похожие конструкции
#44 by welwel
точнее так: |Функция СуммаСкидки = Сумма(Количество*ПолучитьСуммуСкидкиНаЕдиницу(Номенклатура, Реализация, Цена))
#45 by raykom
ага, вам тоже спать пора ... В Цена то, что будем передавать ? Значение то по владельцу да и периодический еще ...
#46 by welwel
Цена из документа, если нужна конечно
#47 by raykom
Не нужна, нужна из справочника
#48 by raykom
Потому и сыр бор весь
#49 by welwel
А из справочника цена берётся через вызов глполучитцену из нашей функции получитьсуммускидкинаединицу
#50 by welwel
Номенклатура и реквизиты шапки реализации все в ней есть
#51 by welwel
В получитьсуммускидкинаединицу можно передать из запроса еще единицу и валюту, если не брать дефолтные
#52 by МимохожийОднако
Посмотри как формируется скидка в печатной форме счета со скидками. Скомпилируй для своей задачи. Может быть, и прозреешь.
#53 by raykom
Не, парни, уже вторая ветка и меня уводят в сторону. Не будем вникать в несуществующие детали - что да почему.Нет у меня сведений о скидке в шапке и не могу я собирать данные по алгоритму формы счета со скидками - стандартный механизм скидок у меня не задействован ни как. Это фейковая скидка, которая обозначена только формальными признаками - типа реквизита - флажек, процент и датаОт. Все остальное происходит виртуально и приобретает значения уже в таблице выгрузки в другое информационное пространство. Но и там это уже реализуется в виде абсолютных цифр - цена, сумма, которые УЖЕ уменьшены на процент скидки. Есть только отметка о скидке, процент скидки в отдельном реквизите и реальная цена в справочнике товара. ТАк что - нужен ответ на сабж. Звиняйте.
#54 by welwel
Так вся инф-я из строк документа извлекается в запросе. Передаётся в функцию для расчёта. Да - будет тормозить на больших объёмах, но работать будет
#55 by raykom
Если производить расчет от обратного - от суммы документа - получим разность в округлениях на копейки, т.к. скидка расчитывалась от цены товара.
#56 by welwel
Делал подобный отчет по регистрам, сравнивал с ценами заданного пользователем типа цен.
#57 by raykom
Это же пестец ... Лучше б я и не углублялся в 1с. Так бы и думал, что зачетный софт. Вопрос то в том, что в запросе к справочнику нельзя получить значения периодического подчиненного реквизита ... Что тут ненужного в языке запросов по мнению разработчиков ?? Епланы ...
#58 by NS
При чем тут "зачетный софт"? На любом языке, чтоб что-нибудь написать - надо уметь писать.
#59 by NS
Убираешь цену из запроса. И получаешь её естественно при обходе группировок запроса.
#60 by raykom
Ну ... это я думаю справедливо отнести и к разработчикам ... Что такого необычного в моем пожелании к функционалу языка запросов ? Стандартное обращение к стандартному справочнику в стандартной конфигурации ... За каким хером ламеру надо выписывать какие то кренделя запросом, что бы добыть какие то значения из этой ситуации ? ... опять за рыбу деньги ... А итоги ? Опять счетчиком считать ??? Гамнописцы 1совские ... Так то я и сам своими кривымируками могу, но нахера такие качели то ?
#61 by Злопчинский
Про кренделя: потому что пери.реквизиты - это совсем другой справочник. Видно влом им было писать транслятор с чорного запроса в нормальный запрос... вот и получилсаь такая фигня.
#62 by NS
Это не обычное пожелание к языку запросов. Это неумение пользоваться языком. В любом языке есть ограничения, и нужно уметь пользоваться функционалом языка.
#63 by raykom
Ну так понимаю в принципе то ... Покажи мне функционал языка запросов для работы с периодическими реквизитами ?
#64 by NS
А он должен быть? Язык - встроенный язык 1С, и в нем есть полный функционал для работы с периодикой. Естественно не надо при этом пользоваться запросами.
#65 by raykom
А язык запросов - это встроенный в китайца язык ? > Естественно не надо при этом пользоваться запросами. С какого перепугу то такая нелогичная предопределенность то ??
#66 by NS
Язык запросов - это всего-лишь часть встроенного языка 1С. И в семерке, и в восьмерке, и в Аccess и т.д. - у языка запросов куча ограничений. И предназначен он для решения узкого класса задач и подзадач. Для решения любой задачи принято использовать те средства, которые для этого предназначены, и в любом случае программист должен использовать те средства при помощи которых задачу можно эффективно решить. Ничего нелогичного я вообще-то не вижу.
#67 by NS
О каком китайце идет речь?
#68 by NS
Кстати, для получения цены даже есть готовая функция у тебя в конфигурации. Если ты не умеешь использовать в запросе внешние функции - это опять-таки никак не проблема 1С.
#69 by raykom
Ну ... Это уже вопрос религии, по типу - почему винда все делает сама, а Линупс надо кодить выпучив глаза ... Линуксоиды - за эксюзабельность, а виндоводы - за френдабельность ... В итоге - это не логика которую подсказывает практика, а логика диктуемая разработчиком. А уж результатом чего она является - возможностями синтаксиса или представлениями разработчика о том, что ДОСТАТОЧНО программисту в тех или иных ситуациях - вопрос филосовский. Мое убеждение такое, что в моей ситуации неумение запроса работать с периодикой, в частности, ставит меня в затруднительное положение при выводе результатов в таблицы, так как выборки сложно группировать и суммировать, а так же адаптировать под макет печати. Т.е. разработчики решили свои проблеммы за мой счет. Казлы. Поскольку речь таки идет о работе с набором стандартных реквизитов. И о НЕСПОСОБНОСТИ механизма платформы получать из них значения. Не знаю, о любом. Это я к тому, что язык запросов - неотемлемая часть языка 1С. А не сторонняя приблуда. Знаю. Она работает только в функции запроса и таки отрабатывает криво, перемножает результат на количество вхождений в группировку. Причем по хер знает по какому то кривому алгоритму. Начинается как бе не с 1 го вхождения, а со второго и далее. Сижу вот сейчас разгадываю ... Опять надо или счетчик прикручивать и делить на него или по условию прекращать суммирование при значении счетчика более 1. Мы тут в дворницкой то тоже не пальцем деланы ...
#70 by NS
Ни у кого проблем нет, проблемы только у тебя, а виноват естественно язык :) Код, который ты выкладываешь, ни имеет ни малейших признаков логики, и аналогичный код не будет работать ни на одном языке. Проблема то не в языке, а в том что не всем дано писать. Не лучше ли найти вид деятельности к которому у тебя есть способности, и заниматься им?
#71 by raykom
Не имел логики. Счас вот выложу, что допилил и там с логикой порядок. Но и с ограничениями функционала - тоже все очевидно.
#72 by NS
По кругу идем. В любом языке функционал ограничен. И в любом языке со временем функционал развивается. Ты бы видел какие ограничения были в конструкторе запросов в Access на момент появления семерки.
#73 by raykom
Не ... Это ты по кругу. Я на старте - разрабы - ленивые казлы ...
#74 by raykom
Вот эта пидерсия отрабатывает правильно. Запрос = СоздатьОбъект("Запрос"); И скажите мне после этого, что я ленивый тупой ламер ...
#75 by raykom
Но так или иначе эту заразу я победил благодаря вашим пинкам и помощи, панове. Спасибо большое ))) Нужный мне результат получен.
#76 by NS
Конечно ламер. нафига ты складываешь ЦЕНУ??? |Функция СуммаБезСкидки=Сумма(глПолучитьЦену(Номенклатура,ТипЦены,ДатаДок,Единица,Валюта,Курс,Кратность)*КОЛИЧЕСТВО); Естественно решало все твои проблемы.
#77 by welwel
Зачем цену суммировать без перемножения на количество??!
#78 by welwel
+1
#79 by raykom
1.>Конечно ламер. нафига ты складываешь ЦЕНУ??? Это не я складываю, а функция запроса, потому как обращение к фнешней функции возможно только изФУНКЦИИ ЗАПРОСА и именно ИЗ СУММЫ. 2. Потому что СуммаБезСкидки суммируется не по КОЛИЧЕСТВУ товара, а по количеству ВХОЖДЕНИЙ в группировку. При чем тут вообще, количество товара ... Сам ты ... плохо меня понял. :D
#80 by welwel
Можно взять функцию запроса Среднее, чем делить на вхождения
#81 by raykom
Ну да, можно. Только я об этом не знал и тут никто не подсказал. Щас попробую.
#82 by NS
"2. Потому что СуммаБезСкидки суммируется не по КОЛИЧЕСТВУ товара, а по количеству ВХОЖДЕНИЙ в группировку. При чем тут вообще, количество товара ..." Это всё происходит на живой базе работающей фирмы?!
#83 by raykom
на копии. а что не так в моем утверждении ???
#84 by welwel
Цену-то итожить по номенклатуре для чего нужно?
#85 by raykom
Да где ты видишь, что я ее по номенклатуре то итожу ? Я цену перемноженную на количество итожить, так как надо все суммировать по этой номенклатуре и по контрику. Я пока только ДОБЫВАЮ ЦЕНУ !!!
#86 by welwel
Для цены функция запроса вовсе не нужна
#87 by raykom
епать  вы заколдованные что ли ? Из чего такой вывод  то ?? Мне цена нужна ИЗ СПРАВОЧНИКА
#88 by raykom
+а ее только через внешнюю функцию добыть можно (для NS об использовании ВСЕХ возможностей этого ушлепского языка), а доступ к ВНЕШНЕЙ функции - только из ФУНКЦИИ ЗАПРОСА ...
#89 by raykom
Так как она не нужна то ?
#90 by raykom
Да, еще раз спасибо. Среднее отрабатывает как надо. Ну так и быть ... Не криворукие разрабы ... Только одна рука у них кривая :D
#91 by welwel
цену итожить не надо, а значит и посчитать её можно уже на этапе обхода результата запроса перед выводом
#92 by raykom
пля ... А группировки как суммировать ? Счетчиком ??
#93 by Voronve
Ты не мудри, ты код покажи какой получился
#94 by welwel
а суммы суммировать функцией сумма. Получается Среднее лишним будет в запросе - цену можно получать той же внешней функцией уже на этапе обхода результата запроса.
#95 by NS
А просто функцию запроса "СуммаСоСкидкой" поделить на функцию запроса "Сумма(Количество)"?
#96 by welwel
Без разницы - главное,что этим не загромождать запрос
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С