v8: Решение задачи 1.19. Спец по платформе. #693654


#0 by wwwqwert2014
Решал задачу 1.19 из сборника по спецу по платформе. Вот интересует, насколько рационально я её решил. Что конкретно интересует. Модуль объекта РасходнаяНакладная. 1. Правильно ли я решал проблему "копеек" в РН Продажи (Обороты). 2. Интересует, рационально ли я вообще сделал обработку проведения РАсходнаяНакладная. Что конкретно смущает:
#1 by wwwqwert2014
вот условие задачи Задача 1.19. Компания занимается оптовой торговлей. У некоторых товаров могут быть аналоги - другие позиции номенклатуры с теми же потребительскими свойствами и ценой, причем таких аналогов у товара может быть несколько. Каждой номенклатурной позиции присваивается уникальный артикул, считается, что пользователь сам контролирует уникальность артикулов и назначает их вручную. Закупка товаров отражается документом «Приходная накладная», продажа - Расходная накладная». Учет остатков ведется в разрезе складов. В документах «Приходная накладная» и «Расходная накладная» склад только один (склад - реквизит шапки). Продажи оформляются документом «Расходная накладная». В случае нехватки товара автоматически должен списываться его аналог. В том случае, когда не хватает не только товара, но и всех его аналогов, документ не должен доводиться. Порядок списания аналогов определяется артикулом. Следует учитывать, что один и тот же товар может являться аналогом различных номенклатурных позиций. Себестоимость товаров рассчитывается как средняя по складу. Необходимо построить отчет по продажам товаров и их аналогов за период.
#2 by ИсчадиеADO
смотри на сайте у GROOVY
#3 by Лефмихалыч
найтиСтроки - это уже сразу не оптимальное решение
#4 by Лефмихалыч
А копейки решаются просто Движение.Себестоимость = ?(КоличествоСписать = КоличествоОстаток, СебестоимостьОстаток, СебестоимостьОстаток/КоличествоОстаток*КоличествоСписать)
#5 by GANR
Выгрузка результата запроса в таблицу значений - это сразу минус один балл, а уж если запрос в цикле в тех задачах - за это сразу с экзамена просто обязаны выгнать. Вот здесь требования к решению.
#6 by Лефмихалыч
запрос в цикле - это почему-то два балла всего. При условии, что других ошибок больше, чем на полбалла нет, с запросом в цикле можно сдать на трояк.
#7 by GANR
Будь я на месте преподавателя, на меня-бы такой запрос как красная тряпка на быка подействовал. Это явный сигнал, что человек не умеет пользоваться запросами, а это 70% дела в 1С.
#8 by Coldboy
а спецы в БП 2.0 почему то запросы в цикл загоняют и ниче ...
#9 by GROOVY
#10 by GROOVY
В регистре оборотов есть "проблема копеек"? - интересно...
#11 by etc
Я вот только одну магическую фразу не понял: "Порядок списания аналогов определяется артикулом." Приоритет определять сортировкой по буквенно-цифровому значению чтоли?
#12 by floody
для учебных целей, почему бы нет? у Гилева есть видео с решением задачи аналогов (если не смотрел) ТЗ в этой задаче нужна, в нее выгружается результат запроса, но не для того, чтобы по ней потом списывать товар, а чтобы хранить в ней количество УЖЕ списанное на предыдущих шагах цикла (как аналоги других товаров)
#13 by МастерВопросов
а как кашерно? В запросе к таб.части присоединять аналоги и остатки, а потом обход результата запроса по иерархии?
#14 by wwwqwert2014
То есть нет проблемы копеек в регистре оборотов? А как же такая ситуация: Хотим продать 11 позиций номенклатуры "Ручка шариковая". Сумма 11 позиций составляет 200 рублей. Причём на складе есть 7 "Ручка шариковая" и 4 "Ручка Bing". Они являются аналогами. Если не заморачиваться по поводу копеек, то получаются следующие записи в РН Продажи: Далее продаём аналог Таким образом, по двум движениям регистров получается, что общая сумма продажи составляет 199,99 руб. 1 копейка потерялась. Собственно поэтому и вопрос, как в оборотном РН Продажи ПРАВИЛЬНО решать проблема копеек
#15 by wwwqwert2014
Сорри чуть опечатался. Так правильно Движение1.Сумма = 200/11  * 7 = 127,27 руб.
#16 by Coldboy
а последнюю копейку ты повесил куда ?
#17 by floody
то, что вы описали, это не проблема проблема копеек - когда остаточный регистр не закрывается и пухнет
#18 by wwwqwert2014
я вообще для решения этого делал всегда так: Заподил переменную ОсталосьСписатьДенег и из общей сумма вычитал Движение.Сумма. И тогда всё тютелька в тютельку сходится. Всё работает, но вот только это лишние проверки и лишний код и лишнее время на экзамене. Как я понимаю из сообщения floody, по этому поводу можно не заморачиваться и никто баллы не снимет, так?
#19 by Alexman13
В оборотном регистре это не проблема. И вообще если правильно применять округление, то 200/11 * 4 = 72,73
#20 by Лефмихалыч
какая половая религия запрещает записать продажи одной строкой: ?
#21 by Лефмихалыч
это в остатках копейки могут засесть потому, что остатки надо по партиям раскидать
#22 by GANR
Запрос, конечно, можно загонять в цикл, но это надо делать умеючи - иногда запрос в цикле может работать и быстрее, так как INDEX SEEK быстрее, чем INDEX SCAN в плане запроса.
#23 by wwwqwert2014
потому что номенклатура разная
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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