Автор Тема: Задача 1.19  (Прочитано 34332 раз)

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

jonik

  • Проверенный
  • ***
  • Сообщений: 135
Re: Задача 1.19
« Ответ #120 : Декабрь 21, 2017, 11:27:46 am »
Всем привет. Нашел на инфостарте рассуждения Гилева, делал по ним. Избавился от документа УстановкаАналога, создал справочник ГруппыАналогов(иерархический), регистр сведений (измерение Номенклатура, ресурс Группа). Т.к. "замечательное свойство регистра сведений – контроль уникальности записей", мы сможем единственным образом определить пару Номенклатура - ГруппаАналогов. Проведение РасходнойНакладной здесь возможно только по новой методике, т.к. контроль остатков работает правильно только для нее. В регистр Продажи для поля Номенклатура я записываю группу из которой произошло списание, т.к. данный регистр отвечает за количество и сумму проданного товара (какой конкретно товар - неважно). Отчет идентичен книжному.
Подкорректировал
« Последнее редактирование: Январь 21, 2018, 01:16:16 pm от jonik »

alkon

  • Новичок
  • *
  • Сообщений: 7
  • ФИО: Александр
Re: Задача 1.19
« Ответ #121 : Июль 12, 2019, 10:39:51 am »
Всем привет. Нашел на инфостарте рассуждения Гилева, делал по ним. Избавился от документа УстановкаАналога, создал справочник ГруппыАналогов(иерархический), регистр сведений (измерение Номенклатура, ресурс Группа). Т.к. "замечательное свойство регистра сведений – контроль уникальности записей", мы сможем единственным образом определить пару Номенклатура - ГруппаАналогов. Проведение РасходнойНакладной здесь возможно только по новой методике, т.к. контроль остатков работает правильно только для нее. В регистр Продажи для поля Номенклатура я записываю группу из которой произошло списание, т.к. данный регистр отвечает за количество и сумму проданного товара (какой конкретно товар - неважно). Отчет идентичен книжному.
Подкорректировал

120 дней нет не одного сообщения, но все же. Задача решена не правильно. Гилев выложил 7 уроков по аналогам, кто столкнулся с этой задачей посмотрите их (ютюб в помощь).


Artem04041994

  • Новичок
  • *
  • Сообщений: 1
Re: Задача 1.19
« Ответ #122 : Август 20, 2019, 10:49:29 am »
Задача довольно интересная. Сложность в том, что все задачи до этой решались со снятием остатков в один запрос и руки чешутся сделать аналогично и в этой, дабы всё было ёмко и оптимизировано. Но здесь нам необходимо смотреть актуальные остатки каждый раз, как мы списываем очередную номенклатуру, потому что при очередном списыванию могут списаться остатки с номенклатуры аналога, который тоже будет присутствовать в документе. Очень много дискуссий по поводу аналогов, в задаче написано следующее: "..аналоги - другие позиции номенклатуры с теми же потребительскими свойствами и ценой", т.е. могут быть разные номенклатуры, но с одинаковым набором характеристик. Так как в задачи ничего не сказано про назначение и периодичность аналогов, то проще всего в номенклатуру добавить реквизит  с типом другого справочника, допустим "Аналоги".
Вариант моего решения во вложении. 

galexmvs

  • Новичок
  • *
  • Сообщений: 8
Re: Задача 1.19
« Ответ #123 : Август 24, 2020, 10:27:11 am »
По-моему у меня задача решена идеально.
Не нашел в сети другого внятного решения данной задачи.
Учтены все условия по аналогам: "...причем таких аналогов у товара может быть несколько..." и "...Следует учитывать, что один и тот же товар может являться аналогом различных номенклатурных позиций..."
Жду с нетерпением комментарии.

Ильнур1975

  • Пользователь
  • **
  • Сообщений: 37
Re: Задача 1.19
« Ответ #124 : Август 26, 2020, 09:57:30 am »
Сложность задачи в получении списка аналогов, который вкл в себя ВСЕ аналоги. А аналог это та же самая номенклатура и все её аналоги, при этом каждый аналог из этого списка имеет все те же аналоги любой номенклатуры из этого списка.
Поясню на цифрах: есть товар1, у него аналогов 1000 товаров. Тогда полный список номенклатур-аналогов должен включать 1001 товар, и у каждого товара из этого списка будет 1000 аналогов.
Само собой разумеется что дублирование в таком списке должно быть исключено.
В общем, для решения пишется сложный запрос, почти такой же как для решения задачи 1.4 сборника.

galexmvs

  • Новичок
  • *
  • Сообщений: 8
Re: Задача 1.19
« Ответ #125 : Август 26, 2020, 10:20:21 am »
....при этом каждый аналог из этого списка имеет все те же аналоги любой номенклатуры из этого списка...

Откуда такой вывод? С чего Вы взяли? Зачем "изобретать" то, чего нет? Следуя условию задачи, у каждого товара список аналогов индивидуальный и должен формироваться вручную для каждого товара. Если товары А и Б являются аналогами товара В, то это совсем не значит, что товар А является аналогом товара Б. Этого в условии задачи нет. Зачем все усложнять?

...В общем, для решения пишется сложный запрос, почти такой же как для решения задачи 1.4 сборника.

А в чем сложность запроса в задаче 1.4? По-моему, все решается достаточно простым запросом (см. ниже):

   Запрос.Текст =
      "ВЫБРАТЬ
      |   РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура,
      |   СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество,
      |   СУММА(РасходнаяНакладнаяСписокНоменклатуры.Сумма) КАК Сумма
      |ПОМЕСТИТЬ ТЧ
      |ИЗ
      |   Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
      |ГДЕ
      |   РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
      |
      |СГРУППИРОВАТЬ ПО
      |   РасходнаяНакладнаяСписокНоменклатуры.Номенклатура
      |
      |ИНДЕКСИРОВАТЬ ПО
      |   Номенклатура
      |;
      |
      |////////////////////////////////////////////////////////////////////////////////
      |ВЫБРАТЬ
      |   ТЧ.Номенклатура КАК Номенклатура,
      |   ТЧ.Количество КАК КоличествоВДокументе,
      |   ТЧ.Сумма КАК СуммаВДокументе,
      |   ТЧ.Номенклатура.Представление КАК НоменклатураПредставление,
      |   ОстаткиНоменклатурыОстатки.Партия КАК Партия,
      |   ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
      |   ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СтоимостьОстаток, 0) КАК СуммаОстаток,
      |   ВЫБОР
      |      КОГДА ОстаткиНоменклатурыОстатки.Партия = &Партия
      |         ТОГДА 0
      |      ИНАЧЕ 1
      |   КОНЕЦ КАК Порядок
      |ИЗ
      |   ТЧ КАК ТЧ
      |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(
      |            &МоментВремени,
      |            Номенклатура В
      |               (ВЫБРАТЬ
      |                  ТЧ.Номенклатура
      |               ИЗ
      |                  ТЧ КАК ТЧ)) КАК ОстаткиНоменклатурыОстатки
      |      ПО ТЧ.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура
      |
      |УПОРЯДОЧИТЬ ПО
      |   Порядок,
      |   ОстаткиНоменклатурыОстатки.Партия.МоментВремени" + СтрокаСортировки + "
      |ИТОГИ
      |   МАКСИМУМ(КоличествоВДокументе),
      |   МИНИМУМ(СуммаВДокументе),
      |   СУММА(КоличествоОстаток)
      |ПО
      |   Номенклатура";
   
   Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
   Запрос.УстановитьПараметр("Партия", Партия);
   Запрос.УстановитьПараметр("Ссылка", Ссылка);

Ильнур1975

  • Пользователь
  • **
  • Сообщений: 37
Re: Задача 1.19
« Ответ #126 : Август 26, 2020, 01:32:10 pm »
Смешно даже. По логике должно быть понятно, раз товар А имеет аналог товар Б, то товар А уже является аналогом товара Б, независимо от того указываете Вы это где-то в системе или нет.

galexmvs

  • Новичок
  • *
  • Сообщений: 8
Re: Задача 1.19
« Ответ #127 : Август 26, 2020, 01:50:52 pm »
Смешно даже. По логике должно быть понятно, раз товар А имеет аналог товар Б, то товар А уже является аналогом товара Б, независимо от того указываете Вы это где-то в системе или нет.

Совсем даже не смешно. В учете товаров законы математики не приемлемы. Такое встречается сплошь и рядом. Видимо, Вы всегда работали в сфере IT и никогда не работали в сфере Производства или Торговли (маркетинга). Приведу яркий пример: Если закачивается товар А (производитель Китай), то Покупатель разрешает его заменить на аналог - товар Б (производитель Италия). Но в то же время, если заканчивается товар Б (производитель Италия), то Покупатель КАТЕГОРИЧЕСКИ отказывается от замены его товаром А (производитель Китай). При этом товары А и Б могут иметь совершенно аналогичные характеристики и стоимость. И это связано не только с качеством изделия. Иногда Покупатель ограничен требованиями стандартов и спецификаций, в которых замена изделий (конкретное название или артикул, номенклатурный номер) не допускается либо совсем, либо в определенном порядке.

Ильнур1975

  • Пользователь
  • **
  • Сообщений: 37
Re: Задача 1.19
« Ответ #128 : Август 26, 2020, 04:41:20 pm »
желание Покупателя в задаче не предусмотрено, как и выбор артикулов.

galexmvs

  • Новичок
  • *
  • Сообщений: 8
Re: Задача 1.19
« Ответ #129 : Август 26, 2020, 05:50:39 pm »
желание Покупателя в задаче не предусмотрено...

При чем здесь желание Покупателя?

...как и выбор артикулов.

Не понял, что Вы имеете ввиду? При чем здесь артикул? Зачем их выбирать? Назначение артикула в данной задаче - установить порядок списания товаров-аналогов при выбытии какого-либо товара, если его количества не хватает и списываются аналоги. Больше артикулы в данной задаче никак не используются.

В условии задачи ЧЕТКО написано: "У некоторых товаров могут быть аналоги – другие позиции номенклатуры с теми же потребительскими свойствами и ценой, причем таких аналогов у товара может быть несколько.", а также "...один и тот же товар может являться аналогом различных номенклатурных позиций."

Где здесь про то, что нужно создавать какой-то ОБЩИЙ список аналогов в котором все товары будут взаимозаменяемы? Ведь написано - "... у некоторых товаров..." Значит нужно к некоторым позициям номенклатуры "привязать" товары-аналоги (которых может быть несколько и они могут быть аналогами некоторых других товаров).
Например:
ТОВАР А: Аналоги - ТОВАР Б, В, Г.
ТОВАР Е: Аналоги - ТОВАР Б, Ж, З.
ТОВАР Ж: Аналогов нет.
....
ТОВАР Я: Аналог - ТОВАР З

Если бы в условии имели ввиду, что нужно создавать ГРУППЫ ВЗАИМОЗАМЕНЯЕМЫХ ТОВАРОВ, то так бы и написали.

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

Ильнур1975

  • Пользователь
  • **
  • Сообщений: 37
Re: Задача 1.19
« Ответ #130 : Август 27, 2020, 01:01:28 pm »
Конечно, оставьте все на откуп пользователю. Заведет аналог, будет списано, не сделает запись в базе данных, нет аналогов, нет продаж.
 
Это задача на использование механизмов платформы, а не на додумывание хотелок покупателей с их стандартами и требованиями.
Мое мнение, вашу хотелку можно реализовать через реквизит "Страна происхождения" или "Изготовитель" номенклатуры и фильтруйте дальше как угодно. Но это не тема задачи.

galexmvs

  • Новичок
  • *
  • Сообщений: 8
Re: Задача 1.19
« Ответ #131 : Август 27, 2020, 01:42:56 pm »
Конечно, оставьте все на откуп пользователю. Заведет аналог, будет списано, не сделает запись в базе данных, нет аналогов, нет продаж.

А как же иначе? По-моему именно так и задумано автором задачи... Именно пользователь и должен "заводить" аналоги для товаров.

Мое мнение, вашу хотелку можно реализовать через реквизит "Страна происхождения" или "Изготовитель" номенклатуры и фильтруйте дальше как угодно. Но это не тема задачи.

Что-то я не пойму, о чем это Вы. Вы вообще-то мое решение смотрели?

У меня в решении аналоги товаров вводятся в табличную часть "Список аналогов" элемента справочника "Номенклатура". Это позволяет ввести любое количество аналогов для любого товара. При этом сами аналоги также являются элементами справочника "Номенклатура" и могут являться аналогами для любого количества товаров. Что полностью соответствует условиям задачи и никаких противоречий я не вижу. Да, список аналогов нужно вводить вручную для каждого товара, но, по-моему, именно так и задумано автором задачи.

Ильнур1975

  • Пользователь
  • **
  • Сообщений: 37
Re: Задача 1.19
« Ответ #132 : Август 27, 2020, 06:09:48 pm »
Вы вообще-то мое решение смотрели?

нет, чужими решениями не интересуюсь.
хранить аналоги в таб.части это очень плохо.
 

galexmvs

  • Новичок
  • *
  • Сообщений: 8
Re: Задача 1.19
« Ответ #133 : Август 28, 2020, 09:23:05 am »
Вы вообще-то мое решение смотрели?

нет, чужими решениями не интересуюсь.

А-а-а! Я понял! К нам на минуточку спустился с небес Сенсей, Гуру, Непревзойденный Мастер! А я еще легкомысленно позволял себе с Вами спорить и высказывать крамольные мысли (о чем горько сожалею) ... Простите несчастного - не распознал!
Вы и на этот форум заходите лишь для того, чтобы посеять хоть малые крупицы Знания в наших серых головах.
Тогда, может быть, Великий Учитель снизойдет до нас и покажет нам свое (правильное) решение этой задачи. Чтобы все мы были поражены божественным светом Истины. Покорнийше просим!

Ильнур1975

  • Пользователь
  • **
  • Сообщений: 37
Re: Задача 1.19
« Ответ #134 : Август 28, 2020, 11:04:37 am »
читайте умные книжки.