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

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

Tolyas

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Анатолий
Задача 1.24
« : Октябрь 08, 2010, 02:01:33 pm »
Критикуем! smile
Вложения:
1.24.dt

AS

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Alexander
Задача 1.24
« Ответ #1 : Октябрь 10, 2010, 09:31:16 pm »
Tolyas, похоже, что в твоем варианте не обрабатывается ситуация когда для одной номенклатуры может быть указано несколько складов в табличной части расходной накладной.
 Допустим
 Ном1 10 шт. Склад1 20 шт.
 Ном1 10 шт. Склад2 5 шт.
 В этом случае списание должно произойти следующим образом:
 Ном1 Склад1 - 15 шт.
 Ном1 Склад2 - 5 шт.

Эта задача очень похожа на 1.4. которая решена в задачнике, только там вместо складов - партии.



AS

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Alexander
Задача 1.24
« Ответ #2 : Октябрь 10, 2010, 10:41:42 pm »
Советую посмотреть задачу 1.4 и ее решение от 1С-ников (в задачнике). Похоже запрос должен быть почти такой же как и в 1.4. Там есть один подводный камень, который в здешних решениях не обрабатывается.

Tolyas

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Анатолий
Задача 1.24
« Ответ #3 : Октябрь 26, 2010, 10:31:46 am »
Quote (AS)
Tolyas, похоже, что в твоем варианте не обрабатывается ситуация когда для одной номенклатуры может быть указано несколько складов в табличной части расходной накладной.

 Читай внимательнее условие. В табличной части указывается только один склад - с него перового идет списание. Далее по приоритетам. У меня так и реализовано.

AS

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Alexander
Задача 1.24
« Ответ #4 : Ноябрь 13, 2010, 08:37:45 pm »
Еще раз прочитал условие, написано, "В первую очередь товар списывается со склада, указанного для данного товара в табличной части документа" - это вовсе не означает, что для конкретной номенклатуры можно указать только один склад. В условии явно не сказано, что указывается только один склад.

Dima1C

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Дмитрий
Задача 1.24
« Ответ #5 : Ноябрь 24, 2010, 11:19:42 am »
Quote (AS)
Еще раз прочитал условие, написано, "В первую очередь товар списывается со склада, указанного для данного товара в табличной части документа" - это вовсе не означает, что для конкретной номенклатуры можно указать только один склад. В условии явно не сказано, что указывается только один склад.

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

ut2k5

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Максим
Задача 1.24
« Ответ #6 : Ноябрь 24, 2010, 11:54:22 am »
AS, на каждую строчку табличной части один склад, не надо придумывать и усложнять задачу..., она и без того за час не напишется на экзамене...

Юлия

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Юлия
Задача 1.24
« Ответ #7 : Май 31, 2011, 10:46:34 am »
Решение. Блокировки и проблему копеек в решении не прописывала преднамеренно.
Вложения:
7896650.dt

kitaets

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Виталий
Задача 1.24
« Ответ #8 : Июль 03, 2011, 10:59:19 am »
Вариант с вложенным оператором ВЫБОР.
Вложения:
1_24_1Cv8.dt

DoctorRoza

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Алексей
Задача 1.24
« Ответ #9 : Июль 27, 2011, 11:29:27 pm »
мое решение .. хорошая задача .. подобие 1.4
Вложения:
DoctorRoza_1_24.dt

DoctorRoza

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Алексей
Задача 1.24
« Ответ #10 : Июль 29, 2011, 06:09:10 pm »
Выложу измененный вариант, решил применить ВыполнитьПакет() для решения .. для разнообразия! smile
Вложения:
3934661.dt

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.24
« Ответ #11 : Сентябрь 16, 2011, 08:52:18 am »
Такой вариант решения. Спасибо за комментарии и замечания.
 Немножечко модернизировал запросик из 1.4
Вложения:
kow1976.1.24.dt

LEOON

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Верютин Сергей
Задача 1.24
« Ответ #12 : Ноябрь 21, 2011, 05:07:34 pm »
Исходил из того, что дубли недопустимы.
 Контроль дублей в модуле формы(сделан неоптимально "перебором", но запросом нужно тащиться на сервер). Может кто аккуратней сделает.

 Не захотел заморачиваться насчет допущения дублей. Сунулся в консоль и понял что там без приличного пакетного запроса не обойтись. Так что соглашусь с ut2k5 и Tolyas ' ом.
Вложения:
0970732.dt

LEOON

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Верютин Сергей
Задача 1.24
« Ответ #13 : Ноябрь 21, 2011, 10:43:14 pm »
Посидел, посидел, не удержался и сделал с учетом дублей.
 Небольшой запрос сложной структуры. Особо не отлаживал. Единственное к чему можно придраться(что заметил) это возможность не сгруппированных движений.
Вложения:
1.24_2.dt

ErrorPro

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Вениамин
Задача 1.24
« Ответ #14 : Декабрь 02, 2011, 04:08:14 pm »
Всем привет.
 kow1976, код не смотрел, единственное для чего смотрел Вашу базу для вот этого
 http://s017.radikal.ru/i436/1112/f8/d9925088c97e.jpg , сижу сейчас ломаю голову как запрос построить
 DoctorRoza, смотрел первый вариант для того же что и у Кова, вот что Ваш вариант пишет
 http://s017.radikal.ru/i412/1112/b3/e2964ade700d.jpg

Добавлено (02.12.2011, 16:08)
---------------------------------------------
DoctorRoza, второй вариант так же ругается, причем он ругается даже если склады заполнены , может я что -то не так делаю?

 http://i021.radikal.ru/1112/d1/bd5460d3b135.jpg


kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.24
« Ответ #15 : Декабрь 02, 2011, 04:41:04 pm »
Спасибо. Действительно косяк.
Вложения:
kow1976_.1.24.dt
« Последнее редактирование: Декабрь 02, 2011, 05:27:13 pm от Олег »

alexey55

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Алексей
Задача 1.24
« Ответ #16 : Февраль 19, 2012, 04:21:09 pm »
Мое решение, запрос как 1.4
 Согласен с ut2k5, за час ее сложно решить) ну это пока..

alexey55

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Алексей
Задача 1.24
« Ответ #17 : Февраль 19, 2012, 04:21:35 pm »
забыл прикрепить
Вложения:
alexey55-1.24.dt

Lazutin

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Лазутин Илья
Задача 1.24
« Ответ #18 : Февраль 20, 2012, 07:32:43 am »
alexey55,
 Очень уж большой получился запрос в документе "Расходная накладная". Его можно сократить как минимум в двое. По-моему, достаточно сначала считать данные из ТЧ документа во временную таблицу, а потом присоединить таблицы с остатками, где будет общий остаток по всем складам и отдельно по каждому складу...

alexey55

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Алексей
Задача 1.24
« Ответ #19 : Февраль 20, 2012, 09:22:39 am »
Lazutin,
 согласен, запрос получился немаленький)
 вся сложность заключается в том, что в табчасти может быть одна и та же номенклатура с разными складами.. если бы не это, то было бы на много проще..

Lazy

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: Lazy
Задача 1.24
« Ответ #20 : Ноябрь 07, 2012, 03:21:01 pm »
Подскажите, плиз, делал сам, другие решения не смотрел. Как сделать проверку на количество остатка на складе не прибегая к запросу в цикле?
 Когда в табличной части одна номенклатура с разными складами.
Вложения:
Lazy_1_24-1-.dt

Obamo

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Валера
Задача 1.24
« Ответ #21 : Январь 16, 2013, 05:10:55 pm »
Решил без упрощения, что дублей по номенклатуре в табличной части быть не может.
 Запрос простой, методика списания немного сложней. Взял выборку по номенклатуре и складу из заказа и две таблицы значений с остатками, одна с общими по номенклатуре для проверки, вторая с разбивкой по складам.
 Методика делится на две части если в таб части заполнен склад то списываем с него и меняем значение в таблице значений, далее если не все списали, обходим таблицу методом для каждого из и списываем оставшеесе.
 Оказалось просто, я голову дня два ломал, все хотел в одну выборку засунуть, а это гораздо сложней, и большой запрос отлаживать сложно.
 Жду комментариев!  wink
Вложения:
Obamo_1.24.dt
« Последнее редактирование: Январь 16, 2013, 05:11:26 pm от Валера »

kyafnsum

  • Гость
Задача 1.24
« Ответ #22 : Январь 29, 2013, 06:03:32 pm »
Аналогично, без упрощения по отсутствию дублей номенклатуры с различными складами в ТЧ.
 Задача показалась не солжной. В запросе две сортировки - по складу в ТЧ и приоритету склада из регистра. Ну и 2 группировки - По номенклатуре (общие остатки), по складу в документе (так проще списывать, когда одна и та же номенклатура списывается с раных складов), ну и соответственно 3 цикла по группировкам (последний по детальным записям).
 ++++++++++++++++++++++++++
 Хотя, не учел проблему с блокировками - по каким складам ее устанавливать - не известно заранее, а если по всем - то это как-то топорно слишком. Нужно доработать запрос, в общем.

 Добавлено (29.01.2013, 18:03)
 ---------------------------------------------
 Obamo, особо не вникал в Ваше решение, но разве за Результат.Выгрузить() не снижают балл? Это ж на производительность влияет вроде как. И в отчете у Вас группировка по вирт.таблице, она вроде как там не нужна))
Вложения:
kyafnsum_1.24.dt
« Последнее редактирование: Январь 29, 2013, 06:12:41 pm от Роман »

Maxus

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Max
Задача 1.24
« Ответ #23 : Апрель 23, 2013, 01:29:17 pm »
Мой вариант решения.
Вложения:
1.24_mbs_2.dt

Lkmaksimka

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Максим
Задача 1.24
« Ответ #24 : Июнь 09, 2013, 08:30:30 pm »
Цитата (Maxus)
Мой вариант решения.Прикрепления: 1.24_mbs_2.dt(146Kb)
в Вашем решении  если реализовывать к примеру "Bosch KGS 3760 IE" 10 шт с Розничного склада и добавить вторую строку "Bosch KGS 3760 IE" 10 шт с Оптового склада , то в и постореть отчет"Движение товаров" то списывется всего 10 шт.

Maxus

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Max
Задача 1.24
« Ответ #25 : Июнь 10, 2013, 10:21:27 am »
Lkmaksimka
 я решал без учета дублей, поэтому такая картинка в отчете.

Lkmaksimka

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Максим
Задача 1.24
« Ответ #26 : Июнь 11, 2013, 12:12:27 pm »
А Кто знает как праивльно , с учетом дублей или без ?

TuMyP1985

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Тимур
Задача 1.24
« Ответ #27 : Июнь 21, 2013, 02:27:20 pm »
Мой вариант
Вложения:
_1_24.dt

bilateral

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Алексей
Задача 1.24
« Ответ #28 : Июль 04, 2013, 05:14:41 pm »

Код
ВЫБРАТЬ
    РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура,
    РасходнаяНакладнаяСписокНоменклатуры.Склад КАК Склад,
    СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество,
    СУММА(РасходнаяНакладнаяСписокНоменклатуры.Сумма) КАК Сумма
 ПОМЕСТИТЬ ТабСписания
 ИЗ
    Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
 ГДЕ
    РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка

 СГРУППИРОВАТЬ ПО
    РасходнаяНакладнаяСписокНоменклатуры.Номенклатура,
    РасходнаяНакладнаяСписокНоменклатуры.Склад
  ИНДЕКСИРОВАТЬ ПО
    Номенклатура,
    Склад
 ;

 ////////////////////////////////////////////////////////////////////////////////
 ВЫБРАТЬ
    ТабСписания.Номенклатура КАК Номенклатура,
    СУММА(ТабСписания.Количество) КАК Количество,
    СУММА(ТабСписания.Сумма) КАК Сумма
 ПОМЕСТИТЬ ТабСписанияБезПартий
 ИЗ
    ТабСписания КАК ТабСписания

 СГРУППИРОВАТЬ ПО
    ТабСписания.Номенклатура

 ИНДЕКСИРОВАТЬ ПО
    Номенклатура
 ;

 ////////////////////////////////////////////////////////////////////////////////
 ВЫБРАТЬ
    ОстаткиНоменклатурыОстатки.Номенклатура КАК Номенклатура,
    ОстаткиНоменклатурыОстатки.Склад КАК Склад,
    ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
    ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СуммаОстаток, 0) КАК СуммаОстаток
 ПОМЕСТИТЬ ОстаткиПоСкладм
 ИЗ
    РегистрНакопления.ОстаткиНоменклатуры.Остатки(
          &МоментВремени,
          Номенклатура В
             (ВЫБРАТЬ
                ТабСписания.Номенклатура
             ИЗ
                ТабСписания КАК ТабСписания)) КАК ОстаткиНоменклатурыОстатки

 ИНДЕКСИРОВАТЬ ПО
    Номенклатура,
    Склад
 ;

 ////////////////////////////////////////////////////////////////////////////////
 ВЫБРАТЬ
    ТабСписания.Номенклатура КАК Номенклатура,
    ТабСписания.Склад КАК Склад,
    ВЫБОР
       КОГДА ТабСписания.Количество >= ОстаткиПоСкладм.КоличествоОстаток
          ТОГДА ОстаткиПоСкладм.КоличествоОстаток
       ИНАЧЕ ТабСписания.Количество
    КОНЕЦ КАК Количество,
    ВЫБОР
       КОГДА ТабСписания.Количество >= ОстаткиПоСкладм.КоличествоОстаток
          ТОГДА ОстаткиПоСкладм.СуммаОстаток
       КОГДА ТабСписания.Количество <> 0
          ТОГДА ТабСписания.Количество / ОстаткиПоСкладм.КоличествоОстаток * ОстаткиПоСкладм.СуммаОстаток
       ИНАЧЕ 0
    КОНЕЦ КАК Сумма,
    1 КАК ПриоритетРаспределения
 ПОМЕСТИТЬ РаспределенныеПартии
 ИЗ
    ТабСписания КАК ТабСписания
       ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиПоСкладм КАК ОстаткиПоСкладм
       ПО ТабСписания.Номенклатура = ОстаткиПоСкладм.Номенклатура
          И ТабСписания.Склад = ОстаткиПоСкладм.Склад
 ГДЕ
    ВЫБОР
          КОГДА ТабСписания.Количество >= ОстаткиПоСкладм.КоличествоОстаток
             ТОГДА ОстаткиПоСкладм.СуммаОстаток
          КОГДА ОстаткиПоСкладм.КоличествоОстаток <> 0
             ТОГДА ТабСписания.Количество / ОстаткиПоСкладм.КоличествоОстаток * ОстаткиПоСкладм.СуммаОстаток
          ИНАЧЕ 0
       КОНЕЦ > 0

 ИНДЕКСИРОВАТЬ ПО
    Номенклатура,
    Склад
 ;

 ////////////////////////////////////////////////////////////////////////////////
 ВЫБРАТЬ
    Таб.Номенклатура КАК Номенклатура,
    Таб.Склад КАК Склад,
    СУММА(Таб.Количество) КАК Количество,
    СУММА(Таб.Сумма) КАК Сумма,
    МАКСИМУМ(2) КАК ПриоритетРаспределения
 ПОМЕСТИТЬ НеРаспределенныеПартии
 ИЗ
    (ВЫБРАТЬ
       ОстаткиПоСкладм.Номенклатура КАК Номенклатура,
       ОстаткиПоСкладм.Склад КАК Склад,
       ОстаткиПоСкладм.КоличествоОстаток КАК Количество,
       ОстаткиПоСкладм.СуммаОстаток КАК Сумма
    ИЗ
       ОстаткиПоСкладм КАК ОстаткиПоСкладм
     
    ОБЪЕДИНИТЬ ВСЕ
     
    ВЫБРАТЬ
       РаспределенныеПартии.Номенклатура,
       РаспределенныеПартии.Склад,
       -РаспределенныеПартии.Количество,
       -РаспределенныеПартии.Сумма
    ИЗ
       РаспределенныеПартии КАК РаспределенныеПартии) КАК Таб

 СГРУППИРОВАТЬ ПО
    Таб.Склад,
    Таб.Номенклатура

 ИМЕЮЩИЕ
    СУММА(Таб.Количество) > 0

 ИНДЕКСИРОВАТЬ ПО
    Склад,
    Номенклатура
 ;

 ////////////////////////////////////////////////////////////////////////////////
 ВЫБРАТЬ
    РаспределенныеПартии.Номенклатура КАК Номенклатура,
    РаспределенныеПартии.Склад КАК Склад,
    РаспределенныеПартии.Количество,
    РаспределенныеПартии.Сумма,
    РаспределенныеПартии.ПриоритетРаспределения
 ПОМЕСТИТЬ ПартииВместе
 ИЗ
    РаспределенныеПартии КАК РаспределенныеПартии

 ОБЪЕДИНИТЬ ВСЕ

 ВЫБРАТЬ
    НеРаспределенныеПартии.Номенклатура,
    НеРаспределенныеПартии.Склад,
    НеРаспределенныеПартии.Количество,
    НеРаспределенныеПартии.Сумма,
    НеРаспределенныеПартии.ПриоритетРаспределения
 ИЗ
    НеРаспределенныеПартии КАК НеРаспределенныеПартии

 ИНДЕКСИРОВАТЬ ПО
    Номенклатура,
    Склад
 ;

 ////////////////////////////////////////////////////////////////////////////////
 ВЫБРАТЬ
    ТабСписанияБезПартий.Номенклатура КАК Номенклатура,
    ТабСписанияБезПартий.Количество КАК КоличествоСписания,
    ТабСписанияБезПартий.Сумма КАК СуммаСписания,
    ПартииВместе.Склад КАК Склад,
    ПартииВместе.Склад.Приоритет КАК СкладПриоритет,
    ЕСТЬNULL(ПартииВместе.Количество, 0) КАК КоличествоОстаток,
    ЕСТЬNULL(ПартииВместе.Сумма, 0) КАК СуммаОстаток
 ИЗ
    ТабСписанияБезПартий КАК ТабСписанияБезПартий
       ЛЕВОЕ СОЕДИНЕНИЕ ПартииВместе КАК ПартииВместе
       ПО ТабСписанияБезПартий.Номенклатура = ПартииВместе.Номенклатура

 УПОРЯДОЧИТЬ ПО
    ПартииВместе.ПриоритетРаспределения,
    ПартииВместе.Склад.Приоритет
 ИТОГИ
    МАКСИМУМ(КоличествоСписания),
    МАКСИМУМ(СуммаСписания),
    СУММА(КоличествоОстаток),
    СУММА(СуммаОстаток)
 ПО
    Номенклатура
  
   
 Один в один как 1.4 только там партии а тут склады. Задачи взаимозаменяемые. Самое сложное это этот запрос, остальное просто сидеть и печатать стандартные штуки smile

artfa

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Артур
Задача 1.24
« Ответ #29 : Июль 05, 2013, 02:22:11 pm »
Цитата (TuMyP1985)
Мой вариант
у вас ошибки, можно списать больше чем есть на складах, не настроен отчет.
 при решении использовал алгоритм подобный задаче 1.22 (мой вариант), вроде все ОК, протестил с различными вариантами, ошибок не обнаружил
Вложения:
6679111.dt

TuMyP1985

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Тимур
Задача 1.24
« Ответ #30 : Июль 05, 2013, 04:48:08 pm »
Цитата (artfa)
у вас ошибки, можно списать больше чем есть на складах
Спасибо, поправил.
 Моя база
Вложения:
KTT_1_24.dt

TuMyP1985

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Тимур
Задача 1.24
« Ответ #31 : Июль 05, 2013, 04:50:05 pm »
Цитата (artfa)
Прикрепления: 6679111.dt
При проведении РН возникла ошибка деления на 0, эту базу прикрепил.

 А так тоже протестил - все списывает правильно, по приоритетам.
Вложения:
6679111_1.dt
« Последнее редактирование: Июль 05, 2013, 04:54:18 pm от Тимур »

artfa

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Артур
Задача 1.24
« Ответ #32 : Июль 05, 2013, 06:02:19 pm »
Цитата (TuMyP1985)
При проведении РН возникла ошибка деления на 0, эту базу прикрепил.
спасибо за замечание, ошибки возникли из-за того что копипастил из задачи 1.22, исправил
Вложения:
2555057.dt

artfa

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Артур
Задача 1.24
« Ответ #33 : Июль 30, 2013, 06:43:05 pm »
ваша (моя) база с тестовыми данными теперь не ругается

 Добавлено (30.07.2013, 18:43)
 ---------------------------------------------
 подправил
Вложения:
vozvrTest.dt
« Последнее редактирование: Июль 30, 2013, 06:43:28 pm от Артур »

Alexander

  • Пользователь
  • **
  • Сообщений: 33
  • ФИО: Kulikov Alexander
Задача 1.24
« Ответ #34 : Январь 07, 2014, 04:41:23 am »
Мой вариант. То же самое что и 1.4. Добавлю маленький комментарий. Идея запроса - переформировать все остатки по складам таким образом чтобы сначала шли данные по складам, указанным в документе и в достаточном количестве (ВТ Совпадение), а затем остальные остатки (которые в данном случае отсортированы по приоритету складов). Все условия задачи выполнены, включая дубли строк.
 --------------
 В принципе, TuMyP1985 реализует ту же идею. С той лишь разницей, что я блокирую движения перед записью пустого движения в начале процедуры проведения так как у меня стоит галка разрешения разделения итогов в РН Остатки номенклатуры, что вроде как рекомендуется.
Вложения:
kul_1_24.dt
« Последнее редактирование: Январь 07, 2014, 05:08:22 am от Kulikov Alexander »

Public_enemy

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Анатолий
Задача 1.24
« Ответ #35 : Февраль 21, 2014, 05:24:46 pm »
Критика приветствуется.
Вложения:
Task_1.24.dt

YFred

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: YFred
Задача 1.24
« Ответ #36 : Май 14, 2014, 02:03:24 pm »
Критикуйте
Вложения:
YFred_1.24.dt

Demy

  • Пользователь
  • **
  • Сообщений: 21
  • ФИО: Demy
Задача 1.24
« Ответ #37 : Май 14, 2014, 02:59:24 pm »
YFred, посмотрел твое решение. В расходной у тебя неправильно списывается товар, думаю тут требуется решать как в примере прилагаемом к задачнику. Базу прилагаю.
Вложения:
YFred_1.24_E1.dt

YFred

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: YFred
Задача 1.24
« Ответ #38 : Май 15, 2014, 12:30:33 am »
в чем конкретно ошибка? Помоему все списывается правильно

Demy

  • Пользователь
  • **
  • Сообщений: 21
  • ФИО: Demy
Задача 1.24
« Ответ #39 : Май 15, 2014, 11:01:21 pm »
Цитата YFred ()
в чем конкретно ошибка? Помоему все списывается правильно
Почему-то приложенная мною база не открывается. sad Тогда опишу словесно.
 Остатки товаров на момент проведения документа:
 Big (капилярная) | Склад1 | 5
 Big (капилярная) | Склад2 | 5
 Big (капилярная) | Склад3 | 5

 Приоритеты остаються как у тебя (а то писать лень).
 Список номенклатуры расходной накладной:
 Big (капилярная) | Склад2 | 4
 Big (капилярная) |            | 11
 Движения выполненные документом:
 Big (капилярная) | Склад1 | 4
 Big (капилярная) | Склад2 | 5
 Big (капилярная) | Склад3 | 5

 Повторно прилагаю базу с этим примером.
Вложения:
YFred_1.24_E2.dt

Demy

  • Пользователь
  • **
  • Сообщений: 21
  • ФИО: Demy
Задача 1.24
« Ответ #40 : Май 15, 2014, 11:32:37 pm »
Не хочу быть непоследовательным, но приложу свое решение этой задачи.
Вложения:
Demy_1_24.dt

YFred

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: YFred
Задача 1.24
« Ответ #41 : Май 16, 2014, 08:36:34 am »
На самом деле немного не правильно списывалось, не учел один нюанс.
 Подправил немного, теперь все правильно.
Вложения:
6039353.dt

YFred

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: YFred
Задача 1.24
« Ответ #42 : Май 16, 2014, 08:46:06 am »
Demy, посмотрел твое решение (в конфигураторе не смотрел). Посмотри пример в файле выгрузки, у тебя не правильно списывается товар.
Вложения:
1.24Demy.dt

Demy

  • Пользователь
  • **
  • Сообщений: 21
  • ФИО: Demy
Задача 1.24
« Ответ #43 : Май 16, 2014, 09:52:35 am »
Цитата YFred ()
Demy, посмотрел твое решение (в конфигураторе не смотрел). Посмотри пример в файле выгрузки, у тебя не правильно списывается товар.
Недоглядел!!! Исправил, спасибо за замечание.
Вложения:
Demy_1_24_1.dt

YFred

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: YFred
Задача 1.24
« Ответ #44 : Май 16, 2014, 10:08:17 am »
Разобрал твой запрос, это жесть. У меня намного проще. Ну не уверен, что правильнее с точки зрения экзаменаторов.

Demy

  • Пользователь
  • **
  • Сообщений: 21
  • ФИО: Demy
Задача 1.24
« Ответ #45 : Май 16, 2014, 10:32:02 am »
YFred, посмотрел твое решение, все равно списывается неправильно. Тут вся соль в том чтобы разделить остатки, затребованные напрямую с расходника, с остатками, которые покрывают недостаток на складе. Посмотри выгрузку.

Добавлено (16.05.2014, 10:32)
---------------------------------------------

Цитата YFred ()
Разобрал твой запрос, это жесть.
Я когда в примере этот запрос разбирал тоже сначала ужаснулся, но на самом деле в нем нет ничего сложного.
Цитата YFred ()
Ну не уверен, что правильнее с точки зрения экзаменаторов.
Эта задача очень похожа на задачу 1.4, решение которой в качестве примера дается с задачником. На основании запроса написанного там я и сделал свой. Не будут же экзаменаторы критиковать свое же решение?!! smile
Вложения:
YFred_1.24_E3.dt

YFred

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: YFred
Задача 1.24
« Ответ #46 : Май 16, 2014, 12:18:32 pm »
Demy
 я сдался smile . Переделаю как в задачнике, через ОГРОМНЫЙ запрос.

Odines

  • Проверенный
  • ***
  • Сообщений: 112
  • ФИО: Odines
Re: Задача 1.24
« Ответ #47 : Февраль 06, 2015, 08:53:38 pm »
Без подготовки на экзамене не решил бы

Сеня

  • Новичок
  • *
  • Сообщений: 6
Re: Задача 1.24
« Ответ #48 : Февраль 23, 2015, 11:49:23 am »
Только начал готовиться. Написал запрос для расходной накладной, учитываю приоритеты складов, все работает - списывает с учетом приоритетов, но не знаю как учесть ситуацию, когда у нас в табличной части фигурирует одинаковый товар, но при этом указаны разные склады? У меня запрос обрабатывает только первую строку в ТЧ, списывает, а все что ниже игнорирует.
Запрос = Новый Запрос;
   Запрос.Текст =
    "ВЫБРАТЬ
    |   СписокНоменклатуры.Номенклатура КАК Номенклатура,
    |   СУММА(СписокНоменклатуры.Количество) КАК Количество,
    |   СписокНоменклатуры.Склад КАК Склад,
    |   СУММА(СписокНоменклатуры.Сумма) КАК Сумма
    |ПОМЕСТИТЬ ТЧСписание
    |ИЗ
    |   Документ.РасходнаяНакладная.СписокНоменклатуры КАК СписокНоменклатуры
    |ГДЕ
    |   СписокНоменклатуры.Ссылка = &Ссылка
    |
    |СГРУППИРОВАТЬ ПО
    |   СписокНоменклатуры.Номенклатура,
    |   СписокНоменклатуры.Склад
    |
    |ИНДЕКСИРОВАТЬ ПО
    |   Номенклатура
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |   ТЧСписание.Номенклатура КАК Номенклатура,
    |   ТЧСписание.Количество КАК ДокументКоличество,
    |   ТЧСписание.Сумма КАК ДокументСумма,
    |   ОстаткиНоменклатурыОстатки.Склад,
    |   ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
    |   ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СтоимостьОстаток, 0) КАК СтоимостьОстаток,
    |   ВЫБОР
    |      КОГДА ОстаткиНоменклатурыОстатки.Склад = ТЧСписание.Склад
    |         ТОГДА 0
    |      ИНАЧЕ 1
    |   КОНЕЦ КАК ПорядокСортировки
    |ИЗ
    |   ТЧСписание КАК ТЧСписание
    |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(
    |            &МоментВремени,
    |            Номенклатура В
    |               (ВЫБРАТЬ
    |                  РасходнаяНакладная.Номенклатура
    |               ИЗ
    |                  ТЧСписание КАК РасходнаяНакладная)) КАК ОстаткиНоменклатурыОстатки
    |         ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПриоритетыСкладов.СрезПоследних(&МоментВремени) КАК ПриоритетыСкладовСрезПоследних
    |         ПО ОстаткиНоменклатурыОстатки.Склад = ПриоритетыСкладовСрезПоследних.Склад
    |      ПО ТЧСписание.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура
    |
    |УПОРЯДОЧИТЬ ПО
    |   ПорядокСортировки,
    |   ПриоритетыСкладовСрезПоследних.Приоритет
    |ИТОГИ
    |   МАКСИМУМ(ДокументКоличество),
    |   СУММА(ДокументСумма),
    |   СУММА(КоличествоОстаток),
    |   СУММА(СтоимостьОстаток)
    |ПО
    |   Номенклатура";
   
   Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
   Запрос.УстановитьПараметр("Ссылка"       , Ссылка);


Odines

  • Проверенный
  • ***
  • Сообщений: 112
  • ФИО: Odines
Re: Задача 1.24
« Ответ #49 : Февраль 23, 2015, 12:11:12 pm »
Только начал готовиться. Написал запрос для расходной накладной, учитываю приоритеты складов, все работает - списывает с учетом приоритетов, но не знаю как учесть ситуацию, когда у нас в табличной части фигурирует одинаковый товар, но при этом указаны разные склады? У меня запрос обрабатывает только первую строку в ТЧ, списывает, а все что ниже игнорирует.

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

Сеня

  • Новичок
  • *
  • Сообщений: 6
Re: Задача 1.24
« Ответ #50 : Февраль 23, 2015, 01:15:34 pm »
спасибо, уже увидел, смотрю)

Сеня

  • Новичок
  • *
  • Сообщений: 6
Re: Задача 1.24
« Ответ #51 : Февраль 23, 2015, 01:59:33 pm »
Только начал готовиться. Написал запрос для расходной накладной, учитываю приоритеты складов, все работает - списывает с учетом приоритетов, но не знаю как учесть ситуацию, когда у нас в табличной части фигурирует одинаковый товар, но при этом указаны разные склады? У меня запрос обрабатывает только первую строку в ТЧ, списывает, а все что ниже игнорирует.

Посмотри мое решение, или в сборнике задач пример решения задачи по оперативному учету (в конце). Там для партий пример но он аналогичен и складам.
Посмотрел решение, не мог бы ты дать комментарий, почему именно так определяются количество и сумма? зачем два запроса в ВТ_ВсеОстатки?
Запрос1
Количество:

ВЫБОР
   КОГДА ВТ_ВсеОстатки.КолОст > ВТ_Товары.КолДок
      ТОГДА ВТ_Товары.КолДок
   ИНАЧЕ ВТ_ВсеОстатки.КолОст
КОНЕЦ

Сумма:

ВЫБОР
   КОГДА ВТ_ВсеОстатки.КолОст > ВТ_Товары.КолДок
      ТОГДА ВТ_Товары.КолДок / ВТ_ВсеОстатки.КолОст * ВТ_ВсеОстатки.СуммаОст
   ИНАЧЕ ВТ_ВсеОстатки.СуммаОст
КОНЕЦ

Запрос2
Количество:

ВЫБОР
   КОГДА ВТ_ВсеОстатки.КолОст > ВТ_Товары.КолДок
      ТОГДА ВТ_ВсеОстатки.КолОст - ВТ_Товары.КолДок
   ИНАЧЕ 0
КОНЕЦ

Сумма:

ВЫБОР
   КОГДА ВТ_ВсеОстатки.КолОст > ВТ_Товары.КолДок
      ТОГДА ВТ_ВсеОстатки.СуммаОст - ВТ_Товары.КолДок / ВТ_ВсеОстатки.КолОст * ВТ_ВсеОстатки.СуммаОст
   ИНАЧЕ 0
КОНЕЦ


Odines

  • Проверенный
  • ***
  • Сообщений: 112
  • ФИО: Odines
Re: Задача 1.24
« Ответ #52 : Февраль 23, 2015, 02:21:25 pm »
Только начал готовиться. Написал запрос для расходной накладной, учитываю приоритеты складов, все работает - списывает с учетом приоритетов, но не знаю как учесть ситуацию, когда у нас в табличной части фигурирует одинаковый товар, но при этом указаны разные склады? У меня запрос обрабатывает только первую строку в ТЧ, списывает, а все что ниже игнорирует.

Посмотри мое решение, или в сборнике задач пример решения задачи по оперативному учету (в конце). Там для партий пример но он аналогичен и складам.
Посмотрел решение, не мог бы ты дать комментарий, почему именно так определяются количество и сумма? зачем два запроса в ВТ_ВсеОстатки?

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

Albert

  • Пользователь
  • **
  • Сообщений: 29
  • ФИО: Альберт
Re: Задача 1.24
« Ответ #53 : Апрель 22, 2015, 06:39:07 pm »
Без подготовки на экзамене не решил бы
Посмотрел решение - вопросов нет,хорошее. Как по времени , долго?

SvitlaChek1c

  • Новичок
  • *
  • Сообщений: 1
Re: Задача 1.24
« Ответ #54 : Июль 31, 2015, 02:09:17 pm »
Здравствуйте!
Делюсь версией решения.
//У справочника "Склад" есть реквизит "Приоритет", обратите внимание на его свойства (по моему приоритет не может быть отрицательным и начинаться с нуля).
Также, жду критику по модулю "Расходной накладной", а именно интересует запрос.

rusmosav

  • Проверенный
  • ***
  • Сообщений: 137
Re: Задача 1.24
« Ответ #55 : Август 19, 2015, 09:56:31 am »
Прощу оценить.

alex_1980

  • Новичок
  • *
  • Сообщений: 4
  • ФИО: Алексей
Re: Задача 1.24
« Ответ #56 : Июнь 09, 2016, 03:16:08 pm »
Попытался написать свой запрос, получилось попроще, 4 выборки. Меньше вроде не видел

alfalume

  • Проверенный
  • ***
  • Сообщений: 103
Re: Задача 1.24
« Ответ #57 : Июль 19, 2016, 02:43:56 pm »
покртикуйте пожалуйста

Wal

  • Пользователь
  • **
  • Сообщений: 12
Re: Задача 1.24
« Ответ #58 : Сентябрь 26, 2016, 12:30:25 am »
Если в расходной указать две строки с одинаковой номенклатурой и разными складами, то не правильно списывает.

jonik

  • Проверенный
  • ***
  • Сообщений: 135
Re: Задача 1.24
« Ответ #59 : Июль 20, 2017, 05:12:50 pm »
Мда, задача и вправду непростая :-\ В принципе можно сделать 2-мя запросами по пустому складу и нет, но это двойное обращение к БД, а это не приветствуется. 9-ти этажный запрос конечно поражает, но без него никак. Единственное - делал по новой методике с сайта Чистова(задача 1.6), т.е. сначала записывал, поэтому код "вырос", но это правильно.

П.С. Как в отчет убрать имена колонок для ресурсов(чтобы было как в книжке)?
« Последнее редактирование: Июль 20, 2017, 05:24:18 pm от jonik »

jonik

  • Проверенный
  • ***
  • Сообщений: 135
Re: Задача 1.24
« Ответ #60 : Январь 25, 2018, 01:04:48 pm »
Мда, задача и вправду непростая :-\ В принципе можно сделать 2-мя запросами по пустому складу и нет, но это двойное обращение к БД, а это не приветствуется. 9-ти этажный запрос конечно поражает, но без него никак. Единственное - делал по новой методике с сайта Чистова(задача 1.6), т.е. сначала записывал, поэтому код "вырос", но это правильно.

П.С. Как в отчет убрать имена колонок для ресурсов(чтобы было как в книжке)?
Подкорректировал

НатальяЮГ

  • Пользователь
  • **
  • Сообщений: 33
Re: Задача 1.24
« Ответ #61 : Март 20, 2018, 11:12:26 am »
Миленькая задачка, два дня просидела, кучу вариантов испробовала. Это самый близкий к оптимальному решению, с моей точки зрения. Запрос получился в три этажа, сортировка приоритетов при помощи массивов.
 
П.С. Как в отчет убрать имена колонок для ресурсов(чтобы было как в книжке)?
Сделала вариант отчета с заголовками полей в Вашей базе, посмотрите; если вопросы останутся, пишите (все расписывать долго, на конкретные непонятки можно ответить быстрее

Lzrnk

  • Пользователь
  • **
  • Сообщений: 13
Re: Задача 1.24
« Ответ #62 : Март 20, 2018, 12:33:42 pm »
Миленькая задачка, два дня просидела, кучу вариантов испробовала. Это самый близкий к оптимальному решению, с моей точки зрения. Запрос получился в три этажа, сортировка приоритетов при помощи массивов.
 
Это вы перемудрили. Все задачи однотипные и довольно простые. Такое решение точно не пройдёт. Посмотрите как обычно это делают.
Не отлаживал, но провёл первую накладную. Движения можете посмотреть прямо в документе.

НатальяЮГ

  • Пользователь
  • **
  • Сообщений: 33
Re: Задача 1.24
« Ответ #63 : Март 20, 2018, 04:33:46 pm »
По условию задачи:

1.   В первую очередь товар списывается со склада, указанного для данного товара в табличной части документа,

2.   далее со склада с минимальным приоритетом, потом со следующего склада с большим приоритетом и т.д., пока не спишется все необходимое количество

3.   Если склад не указан, то происходит списание со складов, согласно их приоритету,

В Вашем варианте (рис. 1) я не вижу такого порядка списания п. 2, только по возрастанию. Упрощение?

Lzrnk

  • Пользователь
  • **
  • Сообщений: 13
Re: Задача 1.24
« Ответ #64 : Март 20, 2018, 04:45:03 pm »
По условию задачи:

1.   В первую очередь товар списывается со склада, указанного для данного товара в табличной части документа,

2.   далее со склада с минимальным приоритетом, потом со следующего склада с большим приоритетом и т.д., пока не спишется все необходимое количество

3.   Если склад не указан, то происходит списание со складов, согласно их приоритету,

В Вашем варианте (рис. 1) я не вижу такого порядка списания п. 2, только по возрастанию. Упрощение?
Именно так и списывается.

НатальяЮГ

  • Пользователь
  • **
  • Сообщений: 33
Re: Задача 1.24
« Ответ #65 : Март 20, 2018, 05:57:03 pm »
Возможно. я неправильно поняла условие задачи  :( .

Спасибо!

igarh

  • Новичок
  • *
  • Сообщений: 8
Re: Задача 1.24
« Ответ #66 : Июнь 17, 2018, 05:11:03 pm »
Миленькая задачка, два дня просидела, кучу вариантов испробовала. Это самый близкий к оптимальному решению, с моей точки зрения. Запрос получился в три этажа, сортировка приоритетов при помощи массивов.
 
Это вы перемудрили. Все задачи однотипные и довольно простые. Такое решение точно не пройдёт. Посмотрите как обычно это делают.
Не отлаживал, но провёл первую накладную. Движения можете посмотреть прямо в документе.

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

igarh

  • Новичок
  • *
  • Сообщений: 8
Re: Задача 1.24
« Ответ #67 : Июнь 17, 2018, 05:27:24 pm »
сделал так

НатальяЮГ

  • Пользователь
  • **
  • Сообщений: 33
Re: Задача 1.24
« Ответ #68 : Июль 03, 2018, 02:15:10 pm »
Миленькая задачка, два дня просидела, кучу вариантов испробовала. Это самый близкий к оптимальному решению, с моей точки зрения. Запрос получился в три этажа, сортировка приоритетов при помощи массивов.
 
Это вы перемудрили. Все задачи однотипные и довольно простые. Такое решение точно не пройдёт. Посмотрите как обычно это делают.
Не отлаживал, но провёл первую накладную. Движения можете посмотреть прямо в документе.

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


Согласна, не учла такой вариант.
Переделала с учетом того, что в тбл части могут быть строки  с одинаковой номенклатурой но разными или пустым складами.

НатальяЮГ

  • Пользователь
  • **
  • Сообщений: 33
Re: Задача 1.24
« Ответ #69 : Июль 03, 2018, 02:35:48 pm »
сделал так


Попробовала сделать в Вашей базе пару своих расходных накладных,
как то не хочет списывать с тех складов, которые  в строках указаны.  :(

igarh

  • Новичок
  • *
  • Сообщений: 8
Re: Задача 1.24
« Ответ #70 : Сентябрь 11, 2018, 09:31:24 pm »
сделал так


Попробовала сделать в Вашей базе пару своих расходных накладных,
как то не хочет списывать с тех складов, которые  в строках указаны.  :(

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