Форум Чистова. Подготовка к экзаменам 1С

Аттестация "1С:Специалист" => Аттестация "1С:Специалист по платформе 1С:Предприятие 8.3 и 8.2" => Тема начата: BelousovKirill от Июль 09, 2010, 07:16:10 pm

Название: Задача 1.19
Отправлено: BelousovKirill от Июль 09, 2010, 07:16:10 pm
Долго искал подходящую концепцию решения в сети))! Вот лучше этой пока не нашел,может кто знает как улучшить.
Вложения:
1.19.dt
Название: Задача 1.19
Отправлено: aworld от Август 21, 2010, 03:24:00 pm
мой вариант
 По Гилеву
Вложения:
8740235.dt
Название: Задача 1.19
Отправлено: SergTH000 от Октябрь 03, 2010, 01:43:12 pm
Все-таки заставил себя решить эту задачу =) В ветке 8.1 вроде как пришли к выводу что бесконечный уровень аналогов лежи на пользователе. Те при заполнении регистра АналогиТоваров если он хочет, чтобы при списании Товара1 списывался аналог1 а при списании аналога1 списывался аналог2 то пусть заполняет регистр так
 Товар1 - аналог1
 Товар1 - аналог2
 Читал сообщение сдающих кому попалась эта задача, именно это допущение использовали, иначе чтобы размотать всю цепочку аналогов нужно делать рекурсию..
 Основная поблема в том, что при списании аналога, нужно учесть, что этот аналог может быть в тч Расходной.Бегло просмотрел решение streght2008 в ветке 8.1..но не въехал smile Он создает пустую таблицу РеальныйОстатокТоваров, а потом как то хитро заполняет ее..Вообщем взял саму идею хранить реальные остатки в ТЗ и уменьшать ее количество при списании, получислось вроде не сложно, но времени все равно ушло 2 часа..Очень рад буду критике=)
Вложения:
1.19.dt
Название: Задача 1.19
Отправлено: SergTH000 от Октябрь 03, 2010, 02:13:49 pm
Черт как я не увидел то ее
 http://forum.chistov.pro/index.php?topic=1178.msg1#msg1

Добавлено (03.10.2010, 14:13)
 ---------------------------------------------
 aworld, вообще нет блокировок, BelousovKirill блокировка только по номенклатуре в ТЧ документа, аналоги в остатках не блокируются. Основное отличие моего решения, что ТЗ заполняется остатками товаров и аналогов до обхода запроса и при обходе ориентируемся на количество в этой ТЗ

Название: Задача 1.19
Отправлено: InSurgent от Октябрь 05, 2010, 12:10:49 pm
сделал с учётом вложенных аналогов
Вложения:
InSurgent-1.19.dt
Название: Задача 1.19
Отправлено: Zhora_Vlg от Октябрь 09, 2010, 12:08:57 am
Сделал по условию задачника, а не как в билете.

Добавлено (09.10.2010, 00:08)
---------------------------------------------
InSurgent, у тебя регистр остатков в минус уходит
 добавь в свою расходную 10 шариковых ручек, по регистру остатков спишется 11 а на остатке всего 10


Вложения:
Zhora_Vlg-1.19.dt
Название: Задача 1.19
Отправлено: SergTH000 от Октябрь 09, 2010, 01:25:57 am
Zhora_Vlg, а у меня не посмотрел?=)

Добавлено (09.10.2010, 01:25)
---------------------------------------------
просто я сам не тестировал особенно (если вообще тестировал=))

Название: Задача 1.19
Отправлено: InSurgent от Октябрь 09, 2010, 01:17:23 pm
Zhora_Vlg, спасибо, что заметил.

Кстати, я так понял, судя по правилам решений задач, всем измерениям регистров, по которым осуществляется отбор, нужно назначать индексирование ?


Вложения:
InSurgent-1.19_.dt
Название: Задача 1.19
Отправлено: SergTH000 от Октябрь 09, 2010, 01:46:25 pm
InSurgent, по полям, по которым будешь соединять, таблицы, которую будешь с регистром соединять
Название: Задача 1.19
Отправлено: artkor от Ноябрь 04, 2010, 06:42:42 pm
Мое скромное решение biggrin
Вложения:
Ticket_3.dt
Название: Задача 1.19
Отправлено: Dima1C от Ноябрь 18, 2010, 01:25:22 pm
Quote (aworld)
мой вариант
 По Гилеву
 Прикрепления: 8740235.dt(156Kb)

 В обработке проведения документа УстановкаАналогов в запросе похоже ошибка, наверное должно быть так УстановкаАналогов.Аналог = КластерАналога.Номенклатура
 Еще измерение НоменклатураПродажи нужно в регистр Продажи добавлять, иначе Регистр ОстаткиНоменклатуры не будет закрываться в ноль.
Название: Задача 1.19
Отправлено: pako_amadi от Декабрь 29, 2010, 03:01:06 pm
Думаю решение правильное , отчет не сделал )))) покопайтесь если кому не лень, буду рад критике
Вложения:
1_19.dt
Название: Задача 1.19
Отправлено: rus от Январь 21, 2011, 07:24:22 am
Мое решение
Вложения:
2075698.dt
Название: Задача 1.19
Отправлено: Danan от Март 05, 2011, 12:57:51 pm
С одной стороны логично определять аналогичность товаров с помощью рс. Но в задаче не сказано что решения должно быть построено именно на рс.
 Предлагаю иную концепцию определения аналогичности товаров:

Спр Аналоговые группы товаров. В спр Номенклатура добавить реквизит АналоговаяГруппаТовара.
 Допустим товар1 это аналог товара2, а товар3 является аналогом товара2. Логично предположить что все эти три товара являются аналогами друг друга, следовательно их можно объединить в одну некую аналоговую группу. В рамках одной группы все товары аналоги друг друга. Если реквизит АналоговаяГруппаТовара пустая ссылка, то это уникальный товар.

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


Вложения:
Task_1_19..dt
Название: Задача 1.19
Отправлено: Gulf_Stream от Апрель 03, 2011, 06:17:06 pm
Мое решение, списание в расходной при помощи таблицы значений
Вложения:
7786736.dt
Название: Задача 1.19
Отправлено: Lukashov_as от Май 19, 2011, 10:22:02 pm
Почитал статью Гилева, сделал с учетом что можно продавать аналог аналога
 сделал через кластеры и запоминание списанного в тз, все вроде логично когда аналог аналога продается а приоритет аналогов задает пользователь
 на документ назначения аналогов не замарачивался , кластеры которым принадлежит товар задаются в рс

вот как конечно в такои задаче блокировку поставить тут я теряюсь, заблокировать весь кластер


Вложения:
1_19_lukashov.dt
Название: Задача 1.19
Отправлено: pavig от Июнь 22, 2011, 05:27:37 pm
Вот мой вариант.
 Жажду объективной критики.
Вложения:
1_19_bpi.dt
Название: Задача 1.19
Отправлено: kow1976 от Сентябрь 04, 2011, 10:16:24 am
В решении ТЗ не использую.
 1 Создаю справочник ГруппаАналогов и в РС записываю Номенклатуру и к какой ГруппеАналогов она относиться;
 2. Списываю в начале, заданный товар;
 3. Определяю список товаров(аналогов) по которым возникли отрицательные остатки.
 4. Проверяю достаточность аналогов для списания, согласна задания.

 Спасибо за комментарии и замечания
Вложения:
kow19761.19.dt
Название: Задача 1.19
Отправлено: DoctorRoza от Сентябрь 05, 2011, 12:35:24 pm
kow1976, Мне понравилось Ваше решение, и, ИМХО, оно проще, чем решение с использованием ТЗ или по Гилеву! Но!! 3 запроса!!! Любой преподаватель скажет, что это не оптимально и всю информацию нужно получать по 1 запросу (или стремится к этому)! Может имеет смысл, сделать составной пакет одним запросом, допустим пакет 1 - общие остатки, пакет 2 - остатки основного товара, пакет 3 - остатки аналогов, чтобы проще было списывать. Как я понял, у Вас, все товары будут являться аналогами для товаров из группы ГруппаАналогов, что в свою очередь решает такую подводную проблему, как списание аналога аналога (тарабарщина, но иначе не скажешь ..), если его/их не хватает!
 Насчет же решения .. Мыслю, что лучше все-таки в самом начале проверить сумму общих остатков, и основного товара и аналогов! Если не хватает, то дальше можно и не идти. В качестве мелочи, в 1 запросе Склад в ВТ лишнее, он как параметр для РН из док-та, его всегда получить можно. Также, можно избавиться от 2 запроса. Объедините его с 3-им как ВТ! В целом, скажу, что Ваша идея самая простая, без заморочек, чем мне и понравилась. Поэтому, её быстрее будет реализовать на экзамене. Один вопрос .. запросы .. не снизят ли баллы за их количество?
Название: Задача 1.19
Отправлено: kow1976 от Сентябрь 06, 2011, 05:04:07 am
DoctorRoza,

 1. При решении использую менеджер временных таблиц, поэтому в принципе запрос один и к любой его части можно обратиться в пакете. Сам Евгений Гилев на своих уроках не стесняясь, разрывает запросы на такие мелкие (и как правило динамические) части, что порой не понятно где начало запроса где конец и какой текст запроса будет в разных ситуациях. А текст запроса рекомендует просматривать при отладке (Запрос.Выполнить().Текст).

 2. Проверить сумму остатков в одном запросе у меня не получается да и Евгений Гилев в своем решении предупреждает что эти остатки могут быть не правильные.

 Пример
 Остатки (Аналоги)
 Портсигар 3 ед
 Портсигар(имп) 5 ед
 Портсигар (отеч) 6 ед

 Нужно списать
 Портсигар 7 ед
 Портсигар(имп) 11 ед

 Остатки для Портсигар 3+5+6=14ед
 Остатки для Портсигар(имп) 5+3+6=14ед

 Поэтому я в начале, списываю остатки по основному заданию, в пределах, существующих в БД. Записываю результат в базу. Затем проверяю необходимость аналогов.

 К тому же четко не известно, на какую номенклатуру нужно накладывать блокировку. Если по основному заданию и их аналогам, то это избыточно, так как часть номенклатуры может списаться без проблем.
 
 У решения я вижу одно слабое место. Это количество записей в базу. Три записи в базу это конечно плохо. Но здесь, на мой взгляд, на некоторых наборах данных должна быть существенная экономия оперативной памяти процессорного времени, и количества заблокированной номенклатуры(увеличивается маштобируемость системы).

 Что лучше ТЗ с блокировкой всей номенклатуры и аналогов из РН или лишний метод Записать() с блокировкой всей номенклатуры из РН и блокировкой аналогов по той номенклатуре которой не хватило на остатках, это большой вопрос?

 3) На счет как лучше передавать параметр (склад) в запрос или использовать разыменование полей можно выделить достоинства и недостатки:
 Достоинства
 Возможность провести индексацию, что серьезно должно ускорить поиск в БД заданных значений
 Недостатки
 1. Левое соединение к табличной части реквизитов РН (практически вложенный запрос)
 2 Наличие заданного поля(склад). Т.е. практически целый столбец одного и того же значения. Явные потери оперативной памяти.
 Что лучше я точно не знаю. Нужно понимать sql. В решении ориентируюсь на требование индексирования полей от 1С
Название: Задача 1.19
Отправлено: Saipl от Сентябрь 09, 2011, 08:28:34 am
Quote
kow1976
Часто в твоих решения встречаю ненужное соединение ТабДок.Склад = ОстаткиНоменклатурыОстатки.Склад которое ты и так указываешь в параметрах виртуальных таблиц.

 Использование механизма соединения таблиц вместо того, чтобы задать значения параметров виртуальных таблиц - 0,5 – 1,0
Название: Задача 1.19
Отправлено: kow1976 от Сентябрь 09, 2011, 08:47:34 am
Saipl,

 Немножко не так
 Параметры виртуальных таблиц указываю обязательно.
 А соединение делаю, чтобы присутствовали записи из табДок даже если остатки нулевые.
Название: Задача 1.19
Отправлено: van_za от Сентябрь 11, 2011, 06:56:28 pm
Мне кажется что решение не должно быть сложным и при нахождении аналогов можно ограничиться первым уровнем зависимости.

 Буду рад конструктивной критики предложенного решения.
Вложения:
1Cv81_19.dt
Название: Задача 1.19
Отправлено: van_za от Сентябрь 11, 2011, 07:29:13 pm
Добавил оборотные регистр продажи для отчета
Вложения:
1Cv8__1_19_VAN_.dt
Название: Задача 1.19
Отправлено: Saipl от Сентябрь 14, 2011, 04:11:52 pm
Quote
kow1976
Для чего используется ГруппаАналогов ? Зачем промежуточный справочник ?Не уловил !
Название: Задача 1.19
Отправлено: kow1976 от Сентябрь 14, 2011, 06:51:33 pm
Saipl,

 Евгений Гелев в своем решении использует понятие «кластер» это группы, в которые объединяется номенклатура динамически (программно).

 Я использую тот же подход, только группы аналогов(кластеры) формирует пользователь. Т. е это список номенклатуры, который полностью взаимозаменяем

 Например:
 ГруппаАналогов – «Ботинки»
 В группу входят : Ботинки черные, Ботинки красные, Ботинки зеленые и т. д.
 Идея такая
 Нужно списать «ботинки зеленые». Если их не хватило. Определяем к какой группе они относиться «ГрппеАналогов» «ботинки» в данную группу входят «Ботинки черные, Ботинки красные»
Название: Задача 1.19
Отправлено: Saipl от Сентябрь 15, 2011, 05:35:19 am
Quote
kow1976
Не могу придумать ситуацию в которой ГруппаАналогов имела бы более практическую значимость по сравнению с левым соединением Номенклатура - Аналог.
Название: Задача 1.19
Отправлено: kow1976 от Сентябрь 15, 2011, 06:11:48 am
Saipl,
 Надо смотреть реализацию задачи. Возможно, ваше решение будет лучше. Меньше левых соединений. При решении приходится решать комплекс проблем, если где то выиграл, обязательно, что то, ухудшиться.
Название: Задача 1.19
Отправлено: Saipl от Сентябрь 15, 2011, 06:26:17 am
Quote
kow1976

 В обработке проведения преднамеренно не указываете РежимБлокировкиДанных ?
 Когда происходит вторая блокировка данных по аналогам вы добавляете новый ЭлементБлокировки, может имеет смысл создать новую блокировку тем самым "освободить" перечень номенклатуры из документа т.к. движение по регистрам мы уже сделали ?

 Делаем приход Big (капилярная) 3 по 5 р.шт., Делаем расход в одном документе на 3 Big (капилярная) по 10 р.шт. и 3 Big (капилярная) по 15 р.шт. - документ успешно проводится. (Самый первый запрос - группируешь по цене !)
Название: Задача 1.19
Отправлено: kow1976 от Сентябрь 15, 2011, 08:17:15 am
Saipl,

 Разблокировать смысла нет все равно мы все списали до нуля.

 С ценой действительно есть проблема. Но она носит интерфейсный характер. Не бывает у одной номенклатуры разных цен в одной приходной.
 Можно было бы использовать выручку (сумму), но тогда встает вопрос распределения выручки между заданным товаром и аналогами. Хлопотно решается проблема копеек.

 Но если пользователь все же ввел разные цены. Можно рассчитать среднею цену. И вводить в базу данные по средней цене, что обеспечит равенство заданной выручки с выручками по аналогам. Хотя операция деления не восстановима.

 По хорошему, нужен РС с ценами на номенклатуру на заданную дату.
Название: Задача 1.19
Отправлено: Saipl от Сентябрь 15, 2011, 01:16:45 pm
Quote
kow1976,
"Разблокировать смысла нет все равно мы все списали до нуля." А приход разве не будет блокироваться. Я не предираюсь так сказать в целях повышения образованности.
 Сделал с возможностью ввода разных цен в документе (никогда больше это повторять не буду тем более на экзамене, просто лень было переделывать).
 Вопрос: не будет ли являться ошибкой что мы одну и ту же цифру "Себестоимость" дублируем в 2 регистра ? smile
Вложения:
Saipl_1.19.dt
Название: Задача 1.19
Отправлено: kow1976 от Сентябрь 15, 2011, 06:02:51 pm
Saipl,

 1Приходы в принципе нам не создают коллизий. Приходы задним числом отслеживаются последовательностями.

 2Есть простая идея, как отследить разные цены по одинаковым номенклатурам. Сгруппировать по номенклатуре одну ВТ и сгруппировать по ценам другую ВТ сделать пакетный запрос. И сравнить количество строк в первом и втором пакете если не совпадает, то пусть пользователь исправляет ситуацию.
 Реализую и выложу исправления

 3 Не доложено в одном случае обороты в другом остатки. По остаточному регистру обороты строятся по физическим таблицам. А по оборотному регистру по таблице итогов. По идее цифра одна экономический смысл разный
Название: Задача 1.19
Отправлено: Saipl от Сентябрь 15, 2011, 06:32:23 pm
2. В типовых делается связь двух ТабличныхЧастей, Номенклатура = Номенклатура И НомерСтроки <> НомерСтроки
Название: Задача 1.19
Отправлено: ErrorPro от Ноябрь 23, 2011, 03:11:06 pm
kow1976 Ваше решение, РН списывает сколько хочет и откуда хочет, щедрый Вы biggrin З.Ы. Смотрю Ваше решение из поста #18.

 http://s54.radikal.ru/i145/1111/af/f940c7a30702.jpg
Название: Задача 1.19
Отправлено: kow1976 от Ноябрь 23, 2011, 03:33:56 pm
ErrorPro,
 Спасибо за комментарий.

 Честно для меня задача была очень сложная. Но, честно говоря, я думал, что все дырки закрыл.

 Если я правильно понял проблему, так решение себя ведет, если у номенклатуры не установлена группа.
 Запрет на не установленную группу я поставил. Но рекомендуемая номенклатура в базе осталась без группы. Поэтому это ошибка наверно пользовательская.

 Можно немножко подробней как вы получаете такую ошибку.
Название: Задача 1.19
Отправлено: ErrorPro от Ноябрь 23, 2011, 04:05:13 pm
Конечно можно, вот база. Добавил в группу аналовов "куртки" ручки свои, сделал по ним приход ( по каждой 1 шт.) и потом попытался списать 1 вид ручек 3 шт.
Вложения:
ForKow.dt
Название: Задача 1.19
Отправлено: kow1976 от Ноябрь 23, 2011, 06:16:54 pm
Спасибо в номенклатуре как я и предполагал просто не установлена группа аналогов
Название: Задача 1.19
Отправлено: ErrorPro от Ноябрь 23, 2011, 11:38:59 pm
Всем привет, жду комментарий, по поводу моего второго запроса - да, может быть можно чуть по другому, передать МВТ с списком номенклатуры сгруппированной и проверить на количесто, но на момент прозрения я уже почти дописал этот вариант и уже было тяжело побороть сон и усталость. делал замер , второй запрос хавает 6.7 % чистого времени. Спасибо, жду комментарий smile З.Ы. при решении отталкивался только от своего ИМХО, не чьи решения не палил smile
Вложения:
1Cv8ErrorPro.dt
Название: Задача 1.19
Отправлено: alexey55 от Февраль 17, 2012, 03:49:59 pm
взрыв мозга wacko . так и не могу сообразить как решить задачу.. sad
Название: Задача 1.19
Отправлено: Lazutin от Февраль 17, 2012, 03:54:45 pm
Очень интересная задача smile Где-то в этом разделе есть схожая задача, разница только в одном условии вроде, но решение отличается достаточно сильно smile
Название: Задача 1.19
Отправлено: ТатьянаЯ от Февраль 27, 2012, 07:35:10 pm
Проверьте пожалуйста мое решение. Две недели мучалась.
Вложения:
119.dt
Название: Задача 1.19
Отправлено: Lazutin от Февраль 27, 2012, 07:43:25 pm
ТатьянаЯ,
 Извините, проверить не смогу, но выложу свое решение для сравнения, как я решал эту задачу при подготовке к экзамену.
Вложения:
_1.19.dt
Название: Задача 1.19
Отправлено: ТатьянаЯ от Февраль 27, 2012, 08:07:54 pm
слово кластер вводит меня в ступор, поэтому я делала без них, просто с двумя измерениями РС. Мне бы хотелось знать, если попадется на экзамене, то мое решение на сколько баллов тянет..
Название: Задача 1.19
Отправлено: alexey55 от Февраль 27, 2012, 08:12:09 pm
ТатьянаЯ,
 Для выполнения отладки необходимо включить поддержку сетевого протокола TCP/IP
 другие базы нормально...
 с чем это связано?
Название: Задача 1.19
Отправлено: ТатьянаЯ от Февраль 27, 2012, 08:21:40 pm
эммм, это чей-то такое? моя база так говорит?

 может быть потому что у меня там запуск обычное+управляемое стоит
Название: Задача 1.19
Отправлено: alexey55 от Февраль 27, 2012, 08:23:05 pm
ТатьянаЯ, теперь похоже не только ваша)
 чет у меня с компом..
Название: Задача 1.19
Отправлено: Lazutin от Февраль 27, 2012, 08:24:42 pm
ТатьянаЯ, не думаю что смогу оценить в баллах ваше решение... Если не читали, то советую почитать эту ветку форума, тут можно найти обоснование необходимости использования кластеров. Кластер представляет собой своего рода группу аналогов, внутри которой все товары являются аналогами друг друга. В вашем решении нельзя завести аналоги следующего рода:
 Товар1 аналог Товара2
 Товар2 аналог Товара1.
 

 Во всяком случае у меня не получилось.
Название: Задача 1.19
Отправлено: ТатьянаЯ от Февраль 27, 2012, 09:13:27 pm
А так?
Вложения:
5448700.dt
Название: Задача 1.19
Отправлено: DoctorRoza от Февраль 27, 2012, 10:00:21 pm
ТатьянаЯ, если интересно, то посмотрите решение товарища kow1976 .. у него все аккуратно и без всяких прибомбасов .. тем более очень универсально получилось ..
Название: Задача 1.19
Отправлено: ТатьянаЯ от Февраль 28, 2012, 11:25:18 am
посмотрела решение kow1976.... Почему признак наличия аналогов для товара сделан обязательным? Если у товара не может быть аналогов, то его и записать в справочник нельзя. Это для каждого товара, у которого не будет аналогов будет лишняя запись в справочнике групп аналогов...
 Ну и если делать таким способом, через привязку к номенклатурной группе, то можно же обойтись и вовсе без регистра сведений.
 Скажите что-нибудь по моему решению.
Название: Задача 1.19
Отправлено: Lazutin от Февраль 28, 2012, 11:58:58 am
ТатьянаЯ,
 Последняя реализация также не тянет на достоверность, т.к. можно завести несколько подобных записей Товар1 аналог Товара2. Ладно если бы получался срез последних в запросе, но в запросе вы обращаетесь к физической таблице(регистр является периодическим), а значит появятся дубли строк(группировку я тоже увидел...).
 И вообще, я как-то против самого документа "Установка аналогов", но это мое личное мнение smile
Название: Задача 1.19
Отправлено: ТатьянаЯ от Февраль 28, 2012, 11:07:58 pm
Хорошо, убрала установку аналогов, сделала через группу но без регистра сведений. Посмотрите пожалуйста.
Вложения:
119_2.dt
Название: Задача 1.19
Отправлено: Lazutin от Февраль 29, 2012, 07:20:06 am
ТатьянаЯ,
 При такой реализации не учитывается то, что возможно номенклатура может относиться к разным группам аналогов. Т.е. при такой реализации все аналоги относятся к какой-то группе и к примеру если в одну группу поместить Тоавр1, Товар2 и Товар3 то они все будут аналогами друг друга, так?
 Тогда в таком случае не учитывается, что Товар1 может быть аналогом Товара2 и Товара3, а Товар2 не может быть аналогом Товара3. Для реализации такой ситуации нужно относить Товар2 и Товар3 к разным группам аналогов и в обе группы включать Товар1... В общем как-то так smile

 P.S. По-моему регистр сведений в любом случае сам напрашивается
Название: Задача 1.19
Отправлено: ТатьянаЯ от Февраль 29, 2012, 09:45:56 am
Lazutin, Вы меня уже совсем запутали
 Сначала вы говорите, что надо "группу аналогов, внутри которой все товары являются аналогами друг друга", теперь Товар2 не будет аналогом Товара3, если Товар2 является аналогом Товара1. Мне кажется именно что будет...Если Товар1 = Товар2, следовательно все что является аналогом Товара2 будет также аналогом Товара1, в том числе и Товар3. Если Товар3 является аналогом Товара1 а у него есть аналог Товар2, то Товар2 тоже аналог Товара3. Все в обе стороны по математическим правилам. Товар1 = Товар3, Товар1 = Товар2, следовательно Товар2=Товар3.
Название: Задача 1.19
Отправлено: Lazutin от Февраль 29, 2012, 10:14:52 am
Я уже и сам запутался smile
Название: Задача 1.19
Отправлено: bezplana от Март 09, 2012, 01:10:38 pm
А что за статья Гилева на тему данной задачи ? Можно ли ссылку получить ?
Название: Задача 1.19
Отправлено: ТатьянаЯ от Март 09, 2012, 04:59:05 pm
я так понимаю это http://www.nashe1c.ru/materials-view.jsp?id=318
Название: Задача 1.19
Отправлено: sv_mikh от Март 23, 2012, 10:45:35 am
Уже несколько дней думаю над этой задачей. В чем сложность: сложность в том, что это задача выборов. Выбор в начале выборки меняет ситуацию в конце. При этом для решения задачи необходимо помнить те выборы, что были с деланы в процессе обхода. Вижу 3 варианта решения:
 1. Заведомо неметодологичный. Обходим табличную часть, строим таблицу остатков в следующем виде: сверху товар, ниже аналоги по убыванию приоритета. Идем по выборке, списываем кол-во в строке, пишем в базу движения. Т.е. запрос к остаткам аналогов и запись по каждой строке. Самое бесхитростное решение.
 2. Развитие п.1. Перед обходом табл.части в таблицу значений выгружаем остатки по товарам ТЧ и их аналогам. Идем по срокам, пишем движения, убираем из ТЗ исчерпанные остатки товаров и их аналогов. Тоже не очень хорошо -- обработка ТЗ.
 3. Развитие п.2. Перед обходом выборки строк выбрать остатки товаров ТЧ и их аналогов во временную таблицу МВТ. Обход по строкам -- запрос как выборка из ВТ МВТ остатков аналогов на количество строки. Убираем из ВТ МВТ Остатки исчерпанные в запросе по строке товары. Пишем движения по строке. Т.е. в каждый проход по ТЧ идет запрос к ВТ МВТ. Т.е. как бы запрос в цикле, но не к остаткам, а к памяти кластера серверов. Не знаю насколько это зло с точки зрения 1С. Я думаю это не лучше п.2. Тот же запрос к памяти.. Но отлаживать такое решение сложнее, но вполне можно.

 Я склоняюсь к п.2 как наиболее простому в данном случае и способному реализовать задачу с одним лишь ограничением -- нет аналогов аналога. Т.е дерево аналогов ограничено уровнем 2.

 Если попробовать взглянуть на задачу шире, то можно сказать, что одним запросом задачу решить не возможно... Она уходит в область комбинаторики. Т.е. просчитать все выборы сверху до низу просчитать одним последовательным запросом не получается. И тут в любом случае придется нарушить методологию рекомендуемую 1С. Вариант п.2 наиболее прозрачен в данном случае для реализации... В обход по строкам можно при желании воткнуть и рекурсивный вызов, который будет так же исчерпывать данные ТЗ остатки товаров и их аналогов.
Название: Задача 1.19
Отправлено: Gyd от Март 23, 2012, 01:49:03 pm
sv_mikh, насколько я помню из постов участников форума, ТЗ разрешается в этой задаче.
Название: Задача 1.19
Отправлено: kow1976 от Март 23, 2012, 07:42:06 pm
sv_mikh,
 Если делаем один запрос с выгрузкой остатков в ТЗ то:(блокировки возможны только по заданному товару и необходимо постоянно находить заданную номенклатуру в ТЗ при алгоритме обхода списания)

 "Выгрузка результата запроса в промежуточную таблицу (например, в таблицу значений) без необходимости -1 балла"

 Если делаем запись в базу заданного товара, а потом получаем остатки по необходимым аналогам то:(блокировки возможны как по заданному товару так и по необходимым аналогам):

 Использование менее эффективной методики проведения документов -1балл

 Какая разница за что получать минус один балл.
 Третьего решения пока нет.
Название: Задача 1.19
Отправлено: Gyd от Март 23, 2012, 08:25:26 pm
kow1976, http://forum.chistov.pro/index.php?topic=912.msg11796#msg11796
Название: Задача 1.19
Отправлено: kow1976 от Март 23, 2012, 08:43:11 pm
С таким же успехом ("Как говорил Белоусов единственная задача, где эта выгрузка оправдана это 1.19") оправдана 2.29 тоже проблемное поле. И 2.28 эффективнейший решается через ТЗ.

 ТЗ - используем там где нужно изменять данные запроса. В запросе невозможно обращаться к данным строк которые находятся выше или ниже анализируемой.
Название: Задача 1.19
Отправлено: sv_mikh от Март 23, 2012, 08:44:00 pm
Quote (kow1976)
"Как говорил Белоусов единственная задача, где эта выгрузка оправдана это 1.19"

 А первоисточник бы... Вроде я таких слов в ветке по 1.19 не видел на девтренинге
Название: Задача 1.19
Отправлено: kow1976 от Март 23, 2012, 08:45:54 pm
Это по ссылки Gyd,
Название: Задача 1.19
Отправлено: sv_mikh от Март 23, 2012, 08:47:48 pm
Quote (kow1976)
Это по ссылки Gyd,

 Круто... Значит можно таки ТЗ тут использовать... А то я мучился... Думал как без нее. С ВТ МВТ можно... Но это почти те же ТЗ.
Название: Задача 1.19
Отправлено: kow1976 от Март 23, 2012, 09:07:12 pm
Я в этой задаче наверно все таки рискнул бы писать в базу три раза.

 Тут будет обязательно зависимость эффективности от количества записей в таб части РН. Обязательно будет такое количество записей при котором три раза записать в базу лучше чем тысячу раз выполнить поиск номенклатуры (это тоже цикл) в ТЗ.

 На малых количествах записей в таб. части только ТЗ. На больших лишняя запись в базу. В принципе это даже можно автоматизировать.
Название: Задача 1.19
Отправлено: RoMeL от Сентябрь 05, 2012, 12:04:45 pm
задача - жесть wacko но надо делать...
Название: Задача 1.19
Отправлено: Pavlyk от Сентябрь 05, 2012, 02:50:20 pm
Quote (RoMeL)
задача - жесть но надо делать...

 Сам только вчера её посмотрел, до этого проскачил т.к. в билетах её не было, теперь просматриваю все подряд , почитай гилева, я прочитал и вроде как все легко на самом деле.
Название: Задача 1.19
Отправлено: RoMeL от Сентябрь 06, 2012, 02:18:03 pm
Мое решение tongue через регистр сведений... без учета вложеных аналогов...
 -----------------------------------------------
 Регистр ОстаткиНоменклатуры
 ------------------
 Номенклатура
 Склад
 ------------------
 Количество
 Сумма
 -----------------------------------------------
 Регистр Продажи
 ------------------
 Номенклатура
 Аналог
 ------------------
 Количество
 Сумма
 Стоимость
 ------------------
 Два запроса...

 //№1 Выборка номенклатур в документе и их аналогов для упр. блок. регистра + для фильтра виртуальной таблицы регистра остатков

 //№2 Выборка остатков номенклатур и их аналогов

 + Использовал таблицу значений

    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("Аналог");
    ТЗ.Колонки.Добавить("СписаноКол");
    ТЗ.Колонки.Добавить("СписаноСумм");

 Для учитывания списаного количества и суммы при дальнейшем списании...

 Отчет "Продажи" очень простой.

 Списибо за комментарии и найдение ошыбки ... smile
Вложения:
RoMeL_1.19.dt
Название: Задача 1.19
Отправлено: Lazy от Сентябрь 10, 2012, 03:18:38 pm
Code
    |ВЫБРАТЬ
  |    НоменклатураИАналоги.Номенклатура
  |ИЗ
  |    НоменклатураИАналоги КАК НоменклатураИАналоги";
 


 Зачем нужно было делать еще один запрос? Нельзя было вместо
 
Code
|ВЫБРАТЬ
  |    ВЗ.Номенклатура
  |ПОМЕСТИТЬ НоменклатураИАналоги
  |ИЗ
 


 Написать
 
Code

 |ВЫБРАТЬ
  |    ВЗ.Номенклатура КАК Номенклатура
  |ИЗ
 
Название: Задача 1.19
Отправлено: RoMeL от Сентябрь 10, 2012, 03:40:41 pm
Lazy, попробуй убрать последнюю выборку и посмотри в отлатчике что получиться в "РезультатДляУБ"...

 P.S. в моем решении для таблицы "НоменклатураИАналоги" нужно еще добавить индексирование по полю "Номенклатура"
Название: Задача 1.19
Отправлено: Lazy от Сентябрь 10, 2012, 04:23:36 pm
Вроде тоже самое получается...

 А зачем нужно индексирование?
Название: Задача 1.19
Отправлено: RoMeL от Сентябрь 10, 2012, 04:45:51 pm
Lazy,
 В списке ошибок:
 "В задачах получения данных из информационной базы установка отборов по неиндексированным полям" - 0.5 баллов
Название: Задача 1.19
Отправлено: Dmitry1c от Сентябрь 13, 2012, 07:13:51 pm
Что-то в списке билетов её не видел. Она попадалась кому-то на экзамене?
Название: Задача 1.19
Отправлено: Pavlyk от Сентябрь 13, 2012, 07:58:02 pm
Нет, но сейчас билеты переделывают.
Название: Задача 1.19
Отправлено: Oliver от Сентябрь 14, 2012, 01:07:11 am
RoMeL, про индексирование всё верно. Отмечу в Ваших решениях часто встречаю неиндксированные измерения РН - не забывайте.
Название: Задача 1.19
Отправлено: AlexTimin от Март 11, 2013, 09:08:04 am
Чисто теоретически, если списать по новой методике? Списать номенклатуру вместе с аналогами и проверить в конце, где минус. Единственное, будет заморочка с выводом чего не хватило в случае списания.

Добавлено (11.03.2013, 09:08)
---------------------------------------------
А нет не прокатит так.

Название: Задача 1.19
Отправлено: leonid_kirienko от Апрель 13, 2013, 10:49:27 pm
Еще один вариант с использованием ТЗ. Чужие решения не смотрел.
 С аналогами не мудрил. У каждого элемента справочника в ТЧ "Аналоги" перечисляем что нужно. Думаю нет смысла рассматривать вариант с аналогами аналогов. Не очень гибко, но думаю пойдет.
Вложения:
6101604.dt
Название: Задача 1.19
Отправлено: TuMyP1985 от Июнь 18, 2013, 01:34:42 am
leonid_kirienko
 В вашем варианте решения, если в расходной накладной использовать аналог, то он спишется 2 раза. Например пришло 1 обычная ручка и 5 синих. Делаем расходную накладную на 6 синих и 1 обычную ручку. Спишется 5 синих и 2 (1+1) обычных ручки.

 Выкладываю свой вариант решения (запрос сложный получился, но по моему работает)
Вложения:
KTT_1_19.dt
Название: Задача 1.19
Отправлено: artfa от Июль 01, 2013, 08:36:59 pm
запрос в расходной написал быстро, но зато пол дня писал алгоритм списания на основании запроса, попытался сжать максимально.
 подглядел только структуру регистра Продажи, где добавил помимо измерения Номенклатура еще Аналог.
 аналоги сделал ч\з регистр сведений.

 
Цитата (TuMyP1985)
leonid_kirienko
 В вашем варианте решения, если в расходной накладной использовать аналог, то он спишется 2 раза. Например пришло 1 обычная ручка и 5 синих. Делаем расходную накладную на 6 синих и 1 обычную ручку. Спишется 5 синих и 2 (1+1) обычных ручки.

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

 P.S. кстати, почему-то многие забывают про последовательности, к\е так активно использовались в первых задачах по ОУ
Вложения:
1883634.dt
KTT_1_19_2vozvr.dt
Название: Задача 1.19
Отправлено: TuMyP1985 от Июль 01, 2013, 11:39:24 pm
Цитата (artfa)
artfa
Спасибо за замечание, исправил - добавил немного строк в алгоритм для того что бы исключить задвоение остатков, в запрос не стал лезть.
 Ваше решение посмотрел, не смог получить неверных результатов в программе, все хорошо)
Вложения:
1916026.dt
Название: Задача 1.19
Отправлено: bilateral от Июль 02, 2013, 07:17:42 pm
Hell Yeah !!!

 Не скажу что "сделал сам", но хоть понял как делать.

 Посмотрите пожалуйста кому не жаль времени - вроде все есть и блокировки и списание правильное smile Задача была изначально (для меня) трудной к восприятию, но все таки далась. Хотя по прежнему не уверен что вложился бы на экзамене во время.

 Есть точно ошибки в некоторых ВТ типа - не проиндексировал или переиндексировал поля, и не выбрал предстваление поля, для Сообщения, но на это уже не стал заморачиваться. Сильно задача показалась нелегкой... для понимания.

Добавлено (02.07.2013, 19:17)
---------------------------------------------

Цитата (TuMyP1985)
запрос сложный получился, но по моему работает

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

 З.Ы. По возможности от вас ожидаю взаимного тестирования моей базы.
Вложения:
bilateral_upr19.dt
Название: Задача 1.19
Отправлено: bilateral от Июль 02, 2013, 07:19:04 pm
База с ошибкой для TuMyP1985
Вложения:
1985_fixed.dt
Название: Задача 1.19
Отправлено: TuMyP1985 от Июль 03, 2013, 12:23:06 am
Благодарен за замечание. Нужно было просто добавить строчку в код "Если Списываем=0 Тогда Продолжить; КонецЕсли;" - избавиться от появления пустых движений.

 
Цитата (bilateral)
bilateral

 обработке проведения расходной накладной:
 1) у вас:
 Движения.Продажи.Очистить(); Движения.Продажи.Записать();, 
 я думаю хватит только Движения.Продажи.Записать(); (т.к. в "Движения" незачем очищать, там и так пусто)  (то же самое и для Движения.ОстаткиНоменклатуры)

 2) в блокировках у вас:
 ЭлементБлокировки.ИсточникДанных = Результат;
 ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
 ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Склад", "Склад");
 вот тут я не уверен, но написал бы вместо "ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Склад", "Склад");" - 
 "ЭлементБлокировки.УстановитьЗначение("Склад",Склад)" (у нас склад один и прописан он в шапке, если использовать как у вас, то если будет 100 строк номенклатур,
 то в них будет 100 раз прописан один и тот же склад).

 3) ну и немного "побурчу" по реализации аналогов.
 Мне тяжело было понять у вас суть аналогов.
 Как я понял вы создали отделый объект "справочник аналоги", у номенклатуры добавили реквизит "аналог". И вся номенклатура с одинаковым
 значением реквизита "аналог" - друг друга взаимозаменяет?
 Если так, то предположим, что есть номенклатура П1, П2, П3, у них одинаковый реквизит "аналог". Тогда получается, что П1,П2 и П3 взаимозаменяемы.
 А если заказчик хочет, что бы П2 было аналогом для П1 и П3, но П1 не являлось аналогом для П3(и наоборот), как это реализуется в вашей схеме?

 (можно было реализовать аналоги а) как табличные части номенклатуры или б) как у вас регистр сведений, только в измерении ГруппаАналогов тип данных номенклатура)

 (прикрепляю свою базу)
Вложения:
8315775.dt
Название: Задача 1.19
Отправлено: bilateral от Июль 03, 2013, 12:20:30 pm
1. Очистить тоже раньше не использовал. Но, сейчас начал смотреть курс Чистова по подготовке к спецу (новый за 2012 год) и там в нулевом блоке он обосновывает что надо Очистить и записать. Попробуйте сделать обычную форму, запуститься в обычном приложении и без очистить по перепроводить документы. Очистить надо для того, что бы решение работало и в обычном приложении. Я проверял. Сам Чистов говорит, что в требованиях не указано что надо это обеспечивать, но советовал очистить тоже писать.
 2.Результат - тоже из курса подсмотрел. Там предлагает 2 варианта блокировок - таб часть, и результат запроса.
 В моем случае, я формирую таблицу со складом, и используюю ее в блокировках и в отборе по таблице остатков. Вариант 
 
Код
(Номенклатура, Склад) В ( Выбрать ТабДок.Номенклатура, ТабДок.Склад Из ... )
лучше, чем 
 
Код
(Номенклатура) В ( Выбрать ТабДок.Номенклатура Из ... )
 И Склад = &Склад
3. Я исходил из того, что Н1 аналог Н2 аналог Н3. Значит, Н1  аналог Н3. Это как с номенклатурными группами. Объединяю товары с похожими характеристиками (взаимозаменяемые) в одну группу. Например (увидел эту идею в этой ветке, где то выше) "Ботинки синие","Ботинки красные","Ботинки черные". Почему синие нельзя заменять черными? В задаче написано
Цитата
" ...У некоторых товаров могут бытьаналоги - другие позиции номенклатуры с теми же потребительскими свойствами и
 ценой, причем таких аналогов у товара может быть несколько..."
у меня это вроде так и есть, а остальное на усмотрение решающего, если другого не сказано в условии. Мне показалось так легче для понимания, и логичнее. И запрос вроде более менее простой и короткий получается, что для экзамена важно (по времени).

 З.Ы. Спасибо за уделенное время.
Название: Задача 1.19
Отправлено: TuMyP1985 от Июль 03, 2013, 02:49:28 pm
smile значит нет замечаний при тестировании вашей базы.
 Нужно запомнить про ".очистить()" и "(Номенклатура, Склад) В ( Выбрать ТабДок.Номенклатура, ТабДок.Склад Из ... )" - постараюсь использовать при решении след. задач.

 P.S. Курсы скачены - на выходных их просмотрю)
Название: Задача 1.19
Отправлено: artfa от Июль 03, 2013, 06:06:02 pm
Цитата (TuMyP1985)
P.S. Курсы скачены - на выходных их просмотрю)

 не подскажите откуда скачали?
Название: Задача 1.19
Отправлено: TuMyP1985 от Июль 03, 2013, 07:36:42 pm
Цитата (artfa)
artfa
Конечно подскажу) вот тут качайте:
 http://xn----1-bedvffifm4g.xn--p1ai/free/
Название: Задача 1.19
Отправлено: artfa от Июль 03, 2013, 07:50:45 pm
Цитата (TuMyP1985)
Конечно подскажу) вот тут качайте:
 http://xn----1-bedvffifm4g.xn--p1ai/free/
спасибо, это у меня уже есть, bilateral упомянул про курсы Чистова
Название: Задача 1.19
Отправлено: TuMyP1985 от Июль 03, 2013, 08:15:45 pm
А я от туда скачал курсы, в том числе по разбору двух задач "Оперативный учет", вот думал он их и имел ввиду. Понятно.
Название: Задача 1.19
Отправлено: fimanich от Июль 07, 2013, 04:57:08 pm
решал после просмотра статьи и видеоурока Гилева. Соответственно, РС СоставКластера (измерение Номенклатура, ресурс Кластер), регистратор документ УстановкаАналога, он же задает наименование кластера. В РН Продажи - одно измерение - Номенклатура. В отчете в поле Номенклатура выводим Кластер, а если у номенклатуры
 нет аналогов - выводим номенклатуру. Критика приветствуется.

Вложения:
fimanich_01_19.dt
Название: Задача 1.19
Отправлено: manu от Июль 09, 2013, 03:27:58 pm
fimanich, я думаю отчет все же построить по 2 измерениям, так как изначально в расходной приоритетом идет указанная при продаже номенклатура, а уже если не хватает, то аналоги, в отчете задачника это и видно, правда по задачнику неточность с числами продажи аналогов
Название: Задача 1.19
Отправлено: fimanich от Июль 09, 2013, 09:29:59 pm
Цитата (manu)
изначально в расходной приоритетом идет указанная при продаже номенклатура, а уже если не хватает, то аналоги
Такой приоритет в моем решении соблюдается
Название: Задача 1.19
Отправлено: artfa от Июль 30, 2013, 03:17:24 pm
подправил
Вложения:
4768763.dt
Название: Задача 1.19
Отправлено: MKIV от Март 20, 2014, 01:32:02 pm
глянул в кратце варианты решения: вариант с использование табличной части и другого рода подчинения, мне кажется, неоптимальным из-за необходимости использования рекурсии для поиска аналогов аналогов аналогов и т.д..
 Перед тем как посмотреть как другие решают эту задачу, первой моей мыслью было использование характеристик номенклатуры (ПВХ), таким образом можно было бы привязать один и тот же набор характеристик разным позициям и потом по этому набору осуществлять поиск. с точки зрения жизни, мне кажется, это самое логичное (как поиск по хэш-тэгам). единственное но- придется потратить довольно много времени, т.к. в условии сказано, что характеристик несколько, соответственно придется организовать хранение остатков с учетом набора характеристик...
 Как мне  кажется, вариант с кластером не очень применим в жизни, но реализуется гораздо быстрее, поэтому скорее всего сделаю оба варианта, а на экзамене спрошу и если нет разницы- буду реализовывать с кластером...
Название: Задача 1.19
Отправлено: demos от Апрель 03, 2014, 09:36:55 pm
кому нужен кластер, про это в задаче ни слова.
 делаем регистр сведений с двумя измерениями - товар, аналог, типы номенклатура.
 регистр продажи - изм. товар, аналог, ресурсы - сумма, кол-во, себестоимость
 при списании соединяем аналоги, товары и списываем по группировкам товар, сортировка аналогов - артикул
Название: Задача 1.19
Отправлено: YFred от Май 08, 2014, 01:19:23 pm
Мое решение. Оцените smile
Вложения:
YFred_1.19.dt
Название: Задача 1.19
Отправлено: Олег_dell от Июнь 06, 2014, 11:22:38 pm
На самом деле, не очень ясно условие задачи. В задаче сказано, что если товара не хватает, то списываем его аналог. Я так полагаю, что загвоздка в условии, что один и тот же товар может являться аналогом различных ном. позиций. Мне кажется, что вполне себе можно использовать табличую часть справочника номенклатуры где и указать аналоги. Зачем делать рекурсию и искать аналогои аналогов? Пример: Есть товар на складе ручка 100 шт. у него есть аналог - карандаш 50 шт. А у карандаша, в свою очередь, есть аналог фломастер 10 шт. Если я продаю 160 ручек, то должны списаться все ручки, все карандаши и все фломастеры? Или документ не проводится, т.к. фломастер не является аналогом ручки? Хорошо, а если делать рекурсию, то условие выхода тогда какое? если у последнего аналога окажется аналог сам товар? wacko В общем не понятно...
Название: Задача 1.19
Отправлено: shlaev от Июль 08, 2014, 08:11:20 pm
Друзья, не надо лепить горбатого. Не надо никаких кластеров, никаких аналогов аналогов с бесконечной вложенностью (про это в задании ни слова). Demos сказал все правильно, нужен регистр сведений для связи номенклатуры с аналогом. Табличные части справочника использовать не нужно, т.к. при открытии справочника, с сервера будут передаваться данные и о табличной части с аналогами. Зачем вам это? Из тысячи товаров, товаров с аналогами будет несколько, можно и регистр сведений открыть и отредактировать.
Вложения:
shlaev_1_19.dt
Название: Задача 1.19
Отправлено: Qthylf от Декабрь 15, 2014, 02:10:49 pm
Интересная задача, решил таким образом:   
Название: Re: Задача 1.19
Отправлено: Nelli83 от Январь 21, 2015, 03:14:33 pm
Доброго времени суток!
Задачу решила. У меня получился 1 регистр сведений, 1 оборотный регистр по продажам (его я, в общем-то, только для отчета рисовала), и остаточный по товарам. Будем считать что решила верно.
Название: Re: Задача 1.19
Отправлено: Nelli83 от Январь 21, 2015, 03:19:03 pm
На самом деле, не очень ясно условие задачи. В задаче сказано, что если товара не хватает, то списываем его аналог. Я так полагаю, что загвоздка в условии, что один и тот же товар может являться аналогом различных ном. позиций. Мне кажется, что вполне себе можно использовать табличую часть справочника номенклатуры где и указать аналоги. Зачем делать рекурсию и искать аналогои аналогов? Пример: Есть товар на складе ручка 100 шт. у него есть аналог - карандаш 50 шт. А у карандаша, в свою очередь, есть аналог фломастер 10 шт. Если я продаю 160 ручек, то должны списаться все ручки, все карандаши и все фломастеры? Или документ не проводится, т.к. фломастер не является аналогом ручки? Хорошо, а если делать рекурсию, то условие выхода тогда какое? если у последнего аналога окажется аналог сам товар? <img src="http://s10.ucoz.net/sm/10/wacko.gif" border="0" align="absmiddle" alt="wacko" /> В общем не понятно...
Мне кажется, что для каждой номенклатуры должен определяться перечень аналогов, если в этот перечень входит 3 номенклатуры ( Например Ручка = Ручка красна, Ручка синяя и т.д.) то остатки мы ищем только по этому ограниченному перечню + сама номенклатура. А если ручка синяя имеет аналог ручка оранжевая, то она на остатки не проверяется. 
Название: Re: Задача 1.19
Отправлено: Odines от Январь 27, 2015, 04:15:30 pm
Доброго времени суток!
Задачу решила. У меня получился 1 регистр сведений, 1 оборотный регистр по продажам (его я, в общем-то, только для отчета рисовала), и остаточный по товарам. Будем считать что решила верно.
Не правильное решение у Вас. Если в табличной части РН будут 2 товара у которых совпадают аналоги то списание будет не правильным.
Название: Re: Задача 1.19
Отправлено: Odines от Январь 27, 2015, 09:53:13 pm
Решил проблему списания товаров с одинаковыми аналогами путем использования контейнера списанных аналогов в виде соответствия.
Название: Re: Задача 1.19
Отправлено: rusmosav от Сентябрь 09, 2015, 11:42:39 am
Прощу оценить.
Название: Re: Задача 1.19
Отправлено: venvlad от Октябрь 16, 2015, 07:26:35 pm
Решил так.
Название: Re: Задача 1.19
Отправлено: AlenkaInt от Ноябрь 05, 2015, 11:49:41 am
Всем привет! А что за видео материал по этом у билету? Это который Гилев выложил на инфостарте? А есть бесплатный вариант? Потому что у меня хватит только на 4 видео.. Или в каком видео основные моменты разобраны? Я только их и скачаю.
Название: Re: Задача 1.19
Отправлено: venvlad от Ноябрь 05, 2015, 12:08:59 pm
http://курсы-по-1с.рф/free/
Внизу этого сайта ссылка:
Учет аналогов Это статья и несколько видео.
 Ранее они уже выкладывалась на Nashe1C, но не все их там увидели.
55 Mb видео, длительность = 59 минут. Скачать: Analogs.rar (архив RAR, 55 Mb)   
Источник: ©Курсы-по-1С.рф
Название: Re: Задача 1.19
Отправлено: AlenkaInt от Ноябрь 05, 2015, 12:33:43 pm
Спасибо добрый человек! Буду изучать :-)
Название: Re: Задача 1.19
Отправлено: AlenkaInt от Ноябрь 10, 2015, 11:24:08 am
Все сделала как в видео. Но когда присоединяю к аналогам таблицу остатков номенклатуры то появляются записи с нулевым количеством. Что, в принципе, и правильно. Потому что не у всех аналогов есть остатки. И в движениях тоже появляются эти нулевые строки. А у Гилева нет таких строк. Подскажите, где моя ошибка.
Название: Re: Задача 1.19
Отправлено: Lenta от Июнь 07, 2016, 02:15:39 pm
Привет! Видео не смотрела, может написала чушь. Прошу посмотреть!
Название: Re: Задача 1.19
Отправлено: ВикторЕрмак от Март 11, 2017, 01:18:40 pm
Решил так.
1. Зачем у тебя в документе расходная накладная 2 блокировки друг за другом по одному регистру с разными записями?
2. получается ты блокируешь только по той номенклатуре что указана в ТЧ, а аналоги не блокируешь, хотя списывать их будешь тоже.
3. соединения внутренние везде.
4. Динамической таблицы "списано" нет, а значит списываешь не актуальный остатки.
В общем док проведение расходной не верный!
Название: Re: Задача 1.19
Отправлено: MariaVG от Июнь 05, 2017, 08:56:19 pm
Мое решение. Материалы с сайта Гилева еще не смотрела. Единственное, что радует в этой задаче после всех мучений - это отчет, который делается за две минуты.  Остальное заняло больше 4-х часов.
Название: Re: Задача 1.19
Отправлено: Alex1339 от Июль 04, 2017, 02:21:10 pm
Мое решение, правда я не знаю если правильно понял задачу. не ясно как списывать товары. Когда товара не достаточно на остатке списывать полностью аналог или списывать товар на сколько хватает и недостачу списывать из аналога?
Название: Re: Задача 1.19
Отправлено: jonik от Июль 11, 2017, 11:10:32 am
У кого есть ссылка на видео от Гилева, поделитесь плз, а то по адресу http://курсы-по-1с.рф/free/ уже ничего нет
Название: Re: Задача 1.19
Отправлено: jonik от Июль 13, 2017, 02:14:12 pm
Всем привет. Нашел на инфостарте рассуждения Гилева, делал по ним. Избавился от документа УстановкаАналога, создал справочник ГруппыАналогов(иерархический), регистр сведений (измерение Номенклатура, ресурс Группа). Т.к. "замечательное свойство регистра сведений – контроль уникальности записей", мы сможем единственным образом определить пару Номенклатура - ГруппаАналогов. Проведение РасходнойНакладной здесь возможно только по новой методике, т.к. контроль остатков работает правильно только для нее. В регистр Продажи для поля Номенклатура я записываю группу из которой произошло списание, т.к. данный регистр отвечает за количество и сумму проданного товара (какой конкретно товар - неважно). Отчет идентичен книжному.
Название: Re: Задача 1.19
Отправлено: eug351 от Август 14, 2017, 08:11:32 am
Всем привет.
Реализовал данную задачу следующим образом:
- Создал РС Аналоги с двумя измерениями Номенклатура и Аналог, ресурсов нет.
- При списании выбираю все аналоги(включая номенклатуру из документа), устанавливаю управляемую блокировку на аналоги
- Формирую таблицу значений тзВсеАналоги с колонками Номенклатура, КоличествоОстаток, СуммаОстаток
- Формирую запрос с итогами по номенклатуре и упорядочиваю по приоритету и артикулу
- Обхожу по номенклатуре, потом по аналогам, остатки аналогов ищю в таблице значений тзВсеАналоги, после списания корректируем остатки в таблице значений.

Прокомментируйте данное решение. При заполнении РС Аналоги мы должны самостоятельно перечислить все комбинации по аналогам, что наряду с гибкостью(например товар 1 является аналогом товара 2, но не наоборот) несет за собой достаточно большую трудоемкость по заполнению.


Название: Re: Задача 1.19
Отправлено: mxs89 от Сентябрь 04, 2017, 04:31:17 pm
Долго искал подходящую концепцию решения в сети))! Вот лучше этой пока не нашел,может кто знает как улучшить.<hr>Вложения:
<a href="./ucoz_attachments/9/1.19.dt">1.19.dt</a>

Плохое решение
Название: Re: Задача 1.19
Отправлено: mxs89 от Сентябрь 04, 2017, 04:31:48 pm
мой вариант
 По Гилеву<hr>Вложения:
<a href="./ucoz_attachments/9/8740235.dt">8740235.dt</a>

плохое решение!
Название: Re: Задача 1.19
Отправлено: mxs89 от Сентябрь 04, 2017, 04:45:39 pm
Всем привет.

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

по реализации проблема копеек.

это бегло посмотрел...
Название: Re: Задача 1.19
Отправлено: jonik от Декабрь 21, 2017, 11:27:46 am
Всем привет. Нашел на инфостарте рассуждения Гилева, делал по ним. Избавился от документа УстановкаАналога, создал справочник ГруппыАналогов(иерархический), регистр сведений (измерение Номенклатура, ресурс Группа). Т.к. "замечательное свойство регистра сведений – контроль уникальности записей", мы сможем единственным образом определить пару Номенклатура - ГруппаАналогов. Проведение РасходнойНакладной здесь возможно только по новой методике, т.к. контроль остатков работает правильно только для нее. В регистр Продажи для поля Номенклатура я записываю группу из которой произошло списание, т.к. данный регистр отвечает за количество и сумму проданного товара (какой конкретно товар - неважно). Отчет идентичен книжному.
Подкорректировал
Название: Re: Задача 1.19
Отправлено: alkon от Июль 12, 2019, 10:39:51 am
Всем привет. Нашел на инфостарте рассуждения Гилева, делал по ним. Избавился от документа УстановкаАналога, создал справочник ГруппыАналогов(иерархический), регистр сведений (измерение Номенклатура, ресурс Группа). Т.к. "замечательное свойство регистра сведений – контроль уникальности записей", мы сможем единственным образом определить пару Номенклатура - ГруппаАналогов. Проведение РасходнойНакладной здесь возможно только по новой методике, т.к. контроль остатков работает правильно только для нее. В регистр Продажи для поля Номенклатура я записываю группу из которой произошло списание, т.к. данный регистр отвечает за количество и сумму проданного товара (какой конкретно товар - неважно). Отчет идентичен книжному.
Подкорректировал

120 дней нет не одного сообщения, но все же. Задача решена не правильно. Гилев выложил 7 уроков по аналогам, кто столкнулся с этой задачей посмотрите их (ютюб в помощь).
Название: Re: Задача 1.19
Отправлено: Artem04041994 от Август 20, 2019, 10:49:29 am
Задача довольно интересная. Сложность в том, что все задачи до этой решались со снятием остатков в один запрос и руки чешутся сделать аналогично и в этой, дабы всё было ёмко и оптимизировано. Но здесь нам необходимо смотреть актуальные остатки каждый раз, как мы списываем очередную номенклатуру, потому что при очередном списыванию могут списаться остатки с номенклатуры аналога, который тоже будет присутствовать в документе. Очень много дискуссий по поводу аналогов, в задаче написано следующее: "..аналоги - другие позиции номенклатуры с теми же потребительскими свойствами и ценой", т.е. могут быть разные номенклатуры, но с одинаковым набором характеристик. Так как в задачи ничего не сказано про назначение и периодичность аналогов, то проще всего в номенклатуру добавить реквизит  с типом другого справочника, допустим "Аналоги".
Вариант моего решения во вложении. 
Название: Re: Задача 1.19
Отправлено: galexmvs от Август 24, 2020, 10:27:11 am
По-моему у меня задача решена идеально.
Не нашел в сети другого внятного решения данной задачи.
Учтены все условия по аналогам: "...причем таких аналогов у товара может быть несколько..." и "...Следует учитывать, что один и тот же товар может являться аналогом различных номенклатурных позиций..."
Жду с нетерпением комментарии.
Название: Re: Задача 1.19
Отправлено: Ильнур1975 от Август 26, 2020, 09:57:30 am
Сложность задачи в получении списка аналогов, который вкл в себя ВСЕ аналоги. А аналог это та же самая номенклатура и все её аналоги, при этом каждый аналог из этого списка имеет все те же аналоги любой номенклатуры из этого списка.
Поясню на цифрах: есть товар1, у него аналогов 1000 товаров. Тогда полный список номенклатур-аналогов должен включать 1001 товар, и у каждого товара из этого списка будет 1000 аналогов.
Само собой разумеется что дублирование в таком списке должно быть исключено.
В общем, для решения пишется сложный запрос, почти такой же как для решения задачи 1.4 сборника.
Название: Re: Задача 1.19
Отправлено: galexmvs от Август 26, 2020, 10:20:21 am
....при этом каждый аналог из этого списка имеет все те же аналоги любой номенклатуры из этого списка...

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

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

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

   Запрос.Текст =
      "ВЫБРАТЬ
      |   РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура,
      |   СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество,
      |   СУММА(РасходнаяНакладнаяСписокНоменклатуры.Сумма) КАК Сумма
      |ПОМЕСТИТЬ ТЧ
      |ИЗ
      |   Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
      |ГДЕ
      |   РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
      |
      |СГРУППИРОВАТЬ ПО
      |   РасходнаяНакладнаяСписокНоменклатуры.Номенклатура
      |
      |ИНДЕКСИРОВАТЬ ПО
      |   Номенклатура
      |;
      |
      |////////////////////////////////////////////////////////////////////////////////
      |ВЫБРАТЬ
      |   ТЧ.Номенклатура КАК Номенклатура,
      |   ТЧ.Количество КАК КоличествоВДокументе,
      |   ТЧ.Сумма КАК СуммаВДокументе,
      |   ТЧ.Номенклатура.Представление КАК НоменклатураПредставление,
      |   ОстаткиНоменклатурыОстатки.Партия КАК Партия,
      |   ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
      |   ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СтоимостьОстаток, 0) КАК СуммаОстаток,
      |   ВЫБОР
      |      КОГДА ОстаткиНоменклатурыОстатки.Партия = &Партия
      |         ТОГДА 0
      |      ИНАЧЕ 1
      |   КОНЕЦ КАК Порядок
      |ИЗ
      |   ТЧ КАК ТЧ
      |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(
      |            &МоментВремени,
      |            Номенклатура В
      |               (ВЫБРАТЬ
      |                  ТЧ.Номенклатура
      |               ИЗ
      |                  ТЧ КАК ТЧ)) КАК ОстаткиНоменклатурыОстатки
      |      ПО ТЧ.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура
      |
      |УПОРЯДОЧИТЬ ПО
      |   Порядок,
      |   ОстаткиНоменклатурыОстатки.Партия.МоментВремени" + СтрокаСортировки + "
      |ИТОГИ
      |   МАКСИМУМ(КоличествоВДокументе),
      |   МИНИМУМ(СуммаВДокументе),
      |   СУММА(КоличествоОстаток)
      |ПО
      |   Номенклатура";
   
   Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
   Запрос.УстановитьПараметр("Партия", Партия);
   Запрос.УстановитьПараметр("Ссылка", Ссылка);
Название: Re: Задача 1.19
Отправлено: Ильнур1975 от Август 26, 2020, 01:32:10 pm
Смешно даже. По логике должно быть понятно, раз товар А имеет аналог товар Б, то товар А уже является аналогом товара Б, независимо от того указываете Вы это где-то в системе или нет.
Название: Re: Задача 1.19
Отправлено: galexmvs от Август 26, 2020, 01:50:52 pm
Смешно даже. По логике должно быть понятно, раз товар А имеет аналог товар Б, то товар А уже является аналогом товара Б, независимо от того указываете Вы это где-то в системе или нет.

Совсем даже не смешно. В учете товаров законы математики не приемлемы. Такое встречается сплошь и рядом. Видимо, Вы всегда работали в сфере IT и никогда не работали в сфере Производства или Торговли (маркетинга). Приведу яркий пример: Если закачивается товар А (производитель Китай), то Покупатель разрешает его заменить на аналог - товар Б (производитель Италия). Но в то же время, если заканчивается товар Б (производитель Италия), то Покупатель КАТЕГОРИЧЕСКИ отказывается от замены его товаром А (производитель Китай). При этом товары А и Б могут иметь совершенно аналогичные характеристики и стоимость. И это связано не только с качеством изделия. Иногда Покупатель ограничен требованиями стандартов и спецификаций, в которых замена изделий (конкретное название или артикул, номенклатурный номер) не допускается либо совсем, либо в определенном порядке.
Название: Re: Задача 1.19
Отправлено: Ильнур1975 от Август 26, 2020, 04:41:20 pm
желание Покупателя в задаче не предусмотрено, как и выбор артикулов.
Название: Re: Задача 1.19
Отправлено: galexmvs от Август 26, 2020, 05:50:39 pm
желание Покупателя в задаче не предусмотрено...

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

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

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

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

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

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

Я не настаиваю, что мое решение единственно правильное, даже не настаиваю, что оно вообще правильное. Наверняка есть множество способов и какие-то из них более оптимальные.
Но... у меня такое ощущение, что у Вас уже есть готовое решение данной задачи именно тем способом (или где-то его видели), который Вы защищаете и ни о чем другом Вы и слышать не хотите.
Название: Re: Задача 1.19
Отправлено: Ильнур1975 от Август 27, 2020, 01:01:28 pm
Конечно, оставьте все на откуп пользователю. Заведет аналог, будет списано, не сделает запись в базе данных, нет аналогов, нет продаж.
 
Это задача на использование механизмов платформы, а не на додумывание хотелок покупателей с их стандартами и требованиями.
Мое мнение, вашу хотелку можно реализовать через реквизит "Страна происхождения" или "Изготовитель" номенклатуры и фильтруйте дальше как угодно. Но это не тема задачи.
Название: Re: Задача 1.19
Отправлено: galexmvs от Август 27, 2020, 01:42:56 pm
Конечно, оставьте все на откуп пользователю. Заведет аналог, будет списано, не сделает запись в базе данных, нет аналогов, нет продаж.

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

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

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

У меня в решении аналоги товаров вводятся в табличную часть "Список аналогов" элемента справочника "Номенклатура". Это позволяет ввести любое количество аналогов для любого товара. При этом сами аналоги также являются элементами справочника "Номенклатура" и могут являться аналогами для любого количества товаров. Что полностью соответствует условиям задачи и никаких противоречий я не вижу. Да, список аналогов нужно вводить вручную для каждого товара, но, по-моему, именно так и задумано автором задачи.
Название: Re: Задача 1.19
Отправлено: Ильнур1975 от Август 27, 2020, 06:09:48 pm
Вы вообще-то мое решение смотрели?

нет, чужими решениями не интересуюсь.
хранить аналоги в таб.части это очень плохо.
 
Название: Re: Задача 1.19
Отправлено: galexmvs от Август 28, 2020, 09:23:05 am
Вы вообще-то мое решение смотрели?

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

А-а-а! Я понял! К нам на минуточку спустился с небес Сенсей, Гуру, Непревзойденный Мастер! А я еще легкомысленно позволял себе с Вами спорить и высказывать крамольные мысли (о чем горько сожалею) ... Простите несчастного - не распознал!
Вы и на этот форум заходите лишь для того, чтобы посеять хоть малые крупицы Знания в наших серых головах.
Тогда, может быть, Великий Учитель снизойдет до нас и покажет нам свое (правильное) решение этой задачи. Чтобы все мы были поражены божественным светом Истины. Покорнийше просим!
Название: Re: Задача 1.19
Отправлено: Ильнур1975 от Август 28, 2020, 11:04:37 am
читайте умные книжки.
Название: Re: Задача 1.19
Отправлено: galexmvs от Август 28, 2020, 12:23:12 pm
читайте умные книжки.

А не подскажите (даже боюсь спросить) в какой умной книжке можно прочитать про организацию проводок документов при работе с АНАЛОГАМИ номенклатуры?
Название: Re: Задача 1.19
Отправлено: Ильнур1975 от Август 28, 2020, 05:31:24 pm
С вашим мышлением все ясно, Вам к психиатру, хамить и истерить здесь не надо.

Как вернется разум, читайте умные книжки, методические указания 1 С, записывайтесь на сертифицированные курсы 1С, смотрите видео от учебных центров 1С, в том числе видео автора этого сайта Чистова П. Расширяйте кругозор.
Все сведения как их приобрести есть в интернете.

А по теме задачи вот только некоторые цитаты из источников для размышления ( ведь смотрим в книгу видим фигу!!!), см. вложение.

С Вами все.
 


 
Название: Re: Задача 1.19
Отправлено: galexmvs от Август 29, 2020, 10:56:49 pm
С вашим мышлением все ясно, Вам к психиатру, хамить и истерить здесь не надо.

Как вернется разум...

Уважаемый Ильнур1975!
Я прошу Вас великодушно меня простить, если я Вас чем- то обидел!
PS. Никакого хамства на Ваш счёт я, по моему мнению,  не допускал. Напрасно Вы перешли к оскорблениям. Это никого не красит. Тем более Вы позволяете себе такие высказывания в адрес человека, который старше Вас (а мне 52 года). Видно, что Вы привыкли общаться со школотой желторотой. Мои ироничные формулировки - вполне, как мне кажется, оправданы. Вы ведёте себя слишком ВЫСОКОМЕРНО. Помните, что гордыня - один из смертных грехов... Нужно быть проще, и народ к Вам потянется.
PSS. Надеюсь, Вы также передо мной извинитесь за свое недостойное поведение. Но, впрочем, это Ваше дело...

 
Название: Re: Задача 1.19
Отправлено: san4ez342 от Октябрь 18, 2020, 10:45:18 am
Здравствуйте, не нашел каких либо правильных решений, как и какого либо описания подхода решения задач по аналогам. Мой вариант - списание с помощью соответствия 
Название: Re: Задача 1.19
Отправлено: Diarova от Сентябрь 19, 2021, 04:16:32 pm
По-моему у меня задача решена идеально.
Не нашел в сети другого внятного решения данной задачи.
Учтены все условия по аналогам: "...причем таких аналогов у товара может быть несколько..." и "...Следует учитывать, что один и тот же товар может являться аналогом различных номенклатурных позиций..."
Жду с нетерпением комментарии.

Красивое решение и понятное!
Название: Re: Задача 1.19
Отправлено: серж от Октябрь 17, 2021, 02:27:55 pm
согласен