Автор Тема: 2.38  (Прочитано 18159 раз)

0 Пользователей и 1 Гость просматривают эту тему.

kastrtroy2006

  • Новичок
  • *
  • Сообщений: 4
  • ФИО: Веряскин Артем
2.38
« : Август 20, 2013, 11:55:19 am »
Строю по регистру товары на складах. Беру обороты с регистратором "Сборка товаров" в статусе "В работе". Выдает то, что нужно. Но правильно ли?

Nechipury

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Нечипоренко Евгений Александрович
2.38
« Ответ #1 : Август 20, 2013, 12:18:16 pm »
kastrtroy2006,  ну если показывает результат значит правильно))), так как несколько вариантов решения тут, я например вытаскивал из РН ТоварыОрганизаций  ГДЕ
 ТоварыОрганизаций.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
 И ТоварыОрганизаций.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
 И ТоварыОрганизаций.Регистратор.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСборокТоваров.ВРаботе)
 И ТоварыОрганизаций.Период МЕЖДУ &НачПериод И &КонПериод


 ЗЫ: Задача простая, хоть бы мне попалась на экзамене,ахаха


VaKiSe

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: VaKiSe
2.38
« Ответ #2 : Сентябрь 20, 2013, 12:27:32 am »
Предлагаю, на мой взгляд, более правильное решение:
  
 Так как в выше указанных решениях не эффективно используется
 регистр накопления:
 У kastrtroy2006 если в обрабатываемом периодебудет большое кол-во документов, то отчет будет долго формироваться.
 У Nechipury используетсяпараметры запроса «ГДЕ» и тоже обращение к каждой записи.
  
 Все эти ошибки упомянуты в требованиях к экзамену
  
 http://www.1c.ru/rus/partners/training/files/ATT_UT_Spec11.doc
  
 1.) Предлагаю создать Рег. Накопления «КомплектующиеВРаботе»(остатки) (не является ошибкой судя по требованиям)
 2.) При проведении документа «Сборка (разборка)
 товаров» в статусе «В работе» (через подписку на событие!!!!!!!) делается
 запись в регистр «+» на комплектующие.
  3.) При проведении
 этого же документа в статусе «Собрано», (опять же через подписку на событие!!!!)
 удаляем запись регистра по регистратору.
 4.) Отчет делается за 5 минут по регистру накопления!

AlexShubin87

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: AlexShubin
2.38
« Ответ #3 : Сентябрь 25, 2013, 12:51:35 pm »
Цитата (VaKiSe)
Все эти ошибки упомянуты в требованиях к экзамену

  
 Спорный вопрос, я не вижу ошибок этих... Если речь идет о

Добавлено (25.09.2013, 12:48)
---------------------------------------------

  • Ошибочным является стиль программирования, при котором получение любых показателей остатков производится складыванием оборотов или по реальным таблицам регистра.
     

Добавлено (25.09.2013, 12:49)
---------------------------------------------
Nechipury то такого и не предлагает, речь идет о выводе движений в разрезе регистратора,и "складывания" никакого там нет... А вот Вы предлагаете дублировать инфу еще в одном регистре, что может препод как раз таки и забраковать... Тут пока не узнаешь что хочет препод увидеть, не поймешь...

Добавлено (25.09.2013, 12:51)
---------------------------------------------
И вообще мне кажется какая то простая сильно задача... Может надо как то автоматизировать "процесс потери номенклатуры"... Может это требуется?? Что думаете??


VaKiSe

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: VaKiSe
2.38
« Ответ #4 : Сентябрь 25, 2013, 10:41:55 pm »
AlexShubin87, имелось ввиду из текста: 
 
  • Ошибочным является стиль работы с запросами, при котором вместо использования параметров виртуальных таблиц накладываются
     условия в разделе "Где", как неоправданно снижающий скорость
     работы программы.

     

 Спорного тут ничего нет, такое решение (с "ГДЕ") потянет на 3 максимум на 4, хотя я не настаиваю может кто-то еще проще решение предложит! И еще, я заметил, что задачи почти все несложные, только нужно понять их суть и верно реализовать с точки зрения поставленных требований к экзамену.

AlexShubin87

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: AlexShubin
2.38
« Ответ #5 : Сентябрь 26, 2013, 12:04:49 pm »
VaKiSe, не согласен с Вами. Условие "где" на вирт. таблицы - это вообще "досвидания")) Но здесь то речи нет о виртуальных таблицах... Это простой запрос с условием к простой таблице БД... А в вашем же решении вы получите большое ускорение только если НЕ хранить регистре собираемое изделие, а я полагаю, что пользователю нужно знать под какое изделие задействованы конкретные комплектующие, и то если изделие собирается более месяца, что бы итоги посчитались.

 Если вы будете хранить в регистре только изделие и задействованные под него комплектующие - то инфа в итоге будет весьма странной - например собираем два шкафа один с одной дверью другой с двумя дверями (в разных документах). В отчете получим шкаф - 3 двери. Но тут еще ваша схема оправданна - и то если период сборки болше периода пересчета итогов (т.е. месяца).

 А более того, я полагаю, что пользователю нужно знать под какую сборку задействованы те или иные комплектующие (это по сути и есть разрез "регистратор"). Т.е. он ("скорее всего", вот это то и надо уточнить у экзаменатора) захочет увидеть в отчете Шкаф (номенклатура) С одной дверью (комплектация, ну либо регистратор например), Дверь И 2ю запись - Шкаф, С двумя дверями, Дверь 2 шутки.

 А в задаче написано: "Задействованные под собираемое изделие" , а собираемое изделие - это даже не номенклатура а комплектация, т.е. почти раегистратор.

 Помимо всего прочего ваше решение попадает под это и это:

 Добавлено (26.09.2013, 12:04)
 ---------------------------------------------

 
    -В случае добавления новых регистров или реализации новых задач на существующих регистрах грубой ошибкой является неверное определение вида регистра накопления (остатки, когда нужны обороты или наоборот).

     - Плохо, когда ресурсы регистра остатков (один или все) изменяются документами только "в одну сторону" (только в "+" или только в "-"),

      

      

     ---

     Если уж будете делать по-своему, делайте хотя бы регистр оборотов.
« Последнее редактирование: Сентябрь 26, 2013, 03:30:25 pm от AlexShubin »

VaKiSe

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: VaKiSe
2.38
« Ответ #6 : Сентябрь 26, 2013, 10:52:32 pm »
AlexShubin87, я согласен по поводу изделия, скорее всего можно еще спецификацию в измерение добавить. Объясните как из оборотного регистра остаток получить по комплектующим?  А про движения в одну сторону смысл тут в том чтобы регистр по измерениям в ноль выходил, у меня это условие выполняется!

Добавлено (26.09.2013, 22:52)
---------------------------------------------
AlexShubin87, в условии сказано, что сборка занимает длительное время,а если год или два(сложный тех. процесс), то что обороты за весь период брать с Рождества Христова или начала регистрации данных в базу?! Я думаю решения предложенные с расчетом оборота неверное, так как требуется остаток комплектующих в работе на момент времени, а не оборот комплектующих за период! Хотя результат может быть одинаковым, но остаток все таки будет быстрее получить чем рассчитать обороты с момента начала регистрации данных в базу! Делайте как вы считаете правильным, я не настаиваю! smile При желании, если вы считаете, что регистратор это изделие можете его сделать измерением!


AlexShubin87

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: AlexShubin
2.38
« Ответ #7 : Сентябрь 27, 2013, 10:09:34 am »
Цитата (VaKiSe)
AlexShubin87, я согласен по поводу изделия, скорее всего можно еще спецификацию в измерение добавить. Объясните как из оборотного регистра остаток получить по комплектующим? А про движения в одну сторону смысл тут в том чтобы регистр по измерениям в ноль выходил, у меня это условие выполняется!


  
 Регистр остатков содержит таблицу "итогов", там хранится разница между приходом и расходом за месяц. Если "расходов" нет, то хранить эту инфу в БД - ошибка, вот о чем говорится в требовании к экзамену, о не только о том что б он вышел в ноль.
 Далее, если вы делаете движения только в одну сторону - это и есть обороты. Поэтому - только оборотный регистр. Ваши "остатки" - это не остатки на самом деле - а обороты - висящие в регистре пока документ в сборке.

Добавлено (27.09.2013, 10:09)
---------------------------------------------

Цитата (VaKiSe)
При желании, если вы считаете, что регистратор это изделие можете его сделать измерением!

  
 Дык я и пытаюсь донести, что если мы так сделаем, то таблица итогов будет хранить тоже что и таблица движений и то же что и таблица движений Товары на складах. Вот сколько таблиц в реальной БД идентичных мы наполдим, добавив один регистр.

VaKiSe

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: VaKiSe
2.38
« Ответ #8 : Сентябрь 27, 2013, 09:24:25 pm »
AlexShubin87, у меня такое впечатление, что Вы мое решение просто не поняли!
 Когда вы проводите документы в статусе "В работе" делается "+" тем самым пока статус не изменился вы увидите остатки по всем комплектующим(и делаете отчет исходя из требований), как только вы проводите документ в статусе "Собрано", запись из регистра удаляется (аналог расхода "-") и снова вы видите реальный остаткок комплектующих из регистра накопления!

 И еще я так и не понял как вы собираетесь из оборотного регистра получить остаток комплектующих?

SanPav

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Александр
2.38
« Ответ #9 : Октябрь 05, 2013, 10:54:04 am »
VaKiSe, Регистр накопления остатков использовать не стоит т.к.
 1. Нет явного расхода
 2. Храняться не нужные итоги.
  
 AlexShubin87, Регистр накопления оборотов также не стоит использовать,
 т.к. как определить за какой период брать обороты. Если с начала использования программы, то это слишком долго и не эффективно.
  
 На мой взгляд, не чего тут заморачиваться, лучше всего подходит регистр сведений.
 Через подписку на событие проведение документа при статусе "В работе" добавляем записи, при других удаляем.
  
 Ну и плюс еще делаем элементарнейший отчет по этому регистру на СКД за 5 минут.

SanPav

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Александр
2.38
« Ответ #10 : Октябрь 05, 2013, 12:34:43 pm »
Вот процедура и отчет:
  
  
 Процедура УчетКомплектующихОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
  
  Если Источник.ТипОперации = Перечисления.ТипыОперацийЗаказаНаСборку.СборкаИзКомплектующих И
    Источник.Статус = Перечисления.СтатусыСборокТоваров.ВРаботе Тогда
    
   НаборЗаписей = Источник.Движения.КомплектующиеВСборке;
   НаборЗаписей.Записывать = Истина;
   
   Для каждого ТекСтрока Из Источник.Товары Цикл
   
    Движение = НаборЗаписей.Добавить();
    ЗаполнитьЗначенияСвойств(Движение, ТекСтрока);
    Движение.Изделие = Источник.Номенклатура;
   
   КонецЦикла;
  КонецЕсли;  
  
 КонецПроцедуры
Вложения:
7141884.erf

reckoner

  • Новичок
  • *
  • Сообщений: 6
  • ФИО: reckoner
2.38
« Ответ #11 : Октябрь 05, 2013, 01:58:59 pm »
Подозрительно простая задача)

VaKiSe

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: VaKiSe
2.38
« Ответ #12 : Октябрь 07, 2013, 10:26:33 pm »
SanPav, почему остатки не нужны, а как же отчет?
 Я думаю в платформе 1С нет ничего лучше кроме как регистр накопления для получения остатков (в наше случае комплектующих). Я когда был на курсах Белоусова, он очень критично относился к решениям в которых регистры сведений использовали как средства накопления остатков.

Nathalie

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Nathalie
2.38
« Ответ #13 : Октябрь 28, 2013, 10:05:00 pm »
почему нужно всегда создавать подписку на событие, когда нужно изменить процедуру проведения документа?
 Есть такая рекомендация? Снимают балы, если редактировать модуль документа?

freefly

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: alex
2.38
« Ответ #14 : Октябрь 29, 2013, 09:35:52 am »
Nathalie, вы же знаете, что подписки позволяют реализовать доп.логику без изменения типовых модулей.
 Но можно и модули изменять. Никто не осудит.
 Реализация через подписки встретит больше симпатий со стороны проверяющих (думаю).