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

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

Denov

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Денис Рыженков
Задача 1.16
« Ответ #15 : Август 08, 2011, 09:44:15 am »
На экзамене проверяется умение владеть всеми объектами конфигурации. В задаче четко определено «Считается, что для каждого стеллажа детали стандартные, т.е. одна и та же деталь может относиться к разным стеллажам.» - следовательно изобретать велосипед не следует, ИМХО, есть объект РС который специально под это условие заточен, который создает уникальность записей и т.п. структура его Измерения:Стеллаж (ведущее), Деталь (ведущее) / Ресурс: Количество.

 Меня этот вариант вполне устраивает.

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.16
« Ответ #16 : Август 08, 2011, 02:12:21 pm »
Предложенное вами решение абсолютно правильное тут нет сомнений.
 ( Стеллаж, Деталь , Количество)

 Вопрос в том можно применить вариант решения?
 Справочник
 Наименование – Стеллаж
 Стеллаж1
 Спецификация(Табличная часть)
 Деталь, Количество
 Болт, 8ед.
 Болт, 10ед.
 Стойка, 15ед.
 Уникальность стеллажа обеспечивает ссылка справочника, а уникальность деталей нам не нужна (Повторяющиеся записи сворачиваются методом свернуть() ПередЗаписью справочника).
 С точки зрения БД варианты, на мой взгляд, одинаковы. Создают две физических таблицы. Единственное что, в варианте с использованием справочником есть левая связь с таблицей спецификации, а с РС ее нужно будет настраивать в каждом запросе.

 Табличная часть справочника тоже объект конфигурации и ей тоже надо уметь пользоваться.

 Другой вопрос, что могут всплыть какие-то проблемы в процессе решения.
 Я лично планирую пробовать оба варианта. А применять на экзамене наиболее короткий и легкий вариант.


Denov

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Денис Рыженков
Задача 1.16
« Ответ #17 : Август 09, 2011, 09:34:25 pm »
DoctorRoza, в Вашем решении есть ошибка: следующий кусок запроса
 
Code

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


 может возвращать неверные результаты при поиске документов ПланЗакупки. Например на неделе мы ввели документ ПланПродаж_01 в табличной части которого будут следующие данные:
 Болт 1000
 Полка 100
 Сформируется документ ПланЗакупок_01
 Болт 900
 Полка 50
 Если через некоторое время на той же неделе Мы введем новый документ ПланПродаж_02 в табличной части которого будут следующие данные:
 Болт 1000
 Полка 100
 Стойка 1000
 То в вашем решении ничего с документом ПланЗакупок_01 не произойдет и новый документ не создастся.
 То же самое происходит и при изменении документа ПланПродаж_01, т.е. добавления в него иной номенклатуры ни к чему не приводит.

 Попробуйте мое решение...
Вложения:
Denov_1.16.dt
« Последнее редактирование: Август 09, 2011, 09:35:06 pm от Денис Рыженков »

DoctorRoza

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Алексей
Задача 1.16
« Ответ #18 : Август 10, 2011, 07:41:26 pm »
Denov,

 Мне кажется, Вы предлагаете, несколько усложненный вариант. Чем аргументирую:
 1.   Вы рассматриваете вариант с добавление на текущей неделе дополнительных документов «План продаж», но тут возникает вопрос, эти документы – это коррекция Плана продаж? Или это итоговые, недельные цифры?
 2.   Если это итоговые цифры, мыслю, что, если уже есть документ План продаж, то его нужно удалить .. а зачем он? Но если есть уже и План закупок, то и он системе уже не нужен .. его тоже удалять!
 3.   Видится логичным, что итоговые цифры Продаж и Закупок должны быть видны пользователю одним документом, а не 10-ками других документов, тем более проведенных! Поэтому у меня в План Продаж и вводится на начало недели, хотите что то изменить и оставить для истории, отмените поведение текущего и введите новый, План Закупок тогда скорректируются.
 У меня, в решение, идея задачи реализована, поэтому и спрашиваю, нужны ли подобные уточнения? Конечно, в реальной практике нужно то и это, но у нас не реальная практика, а 4 часа и 5 задач! smile
 p.s. Посмотрел Ваше решение, все нормально, только .. зачем Вы выносите СообщениеПользователю в отдельную процедуру? wink

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.16
« Ответ #19 : Август 12, 2011, 08:34:48 am »
В задании сказано «Каждую неделю в систему вводится документ «План продаж». Я так понял, что «План продаж» должен быть один на неделю.
 Как сделать так, чтобы нельзя было внести в одну неделю два документа «План продаж»?

Добавлено (12.08.2011, 08:34)
---------------------------------------------
Запись "Продажи оформляются документом «Расходная накладная», в которой приводится полный перечень отпускаемых комплектующих". Получается, что стеллажи выбирать нельзя. И нужна обработка, которая стеллажи переведет в комплектующие?

« Последнее редактирование: Август 11, 2011, 08:26:27 pm от Олег »

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.16
« Ответ #20 : Август 13, 2011, 01:03:13 pm »
В решении
 Комплектующие стеллажей храню в табличной части справочника.
 В расходной накладной и приходной запрещаю выбор стеллажей
 Чтобы обеспечить один док в неделю создаю РС Планирование с периодом День и подчиненным регистратору «ПланыПродаж». И в свойство «период» записываю дату конца недели в обработке ПередЗаписью.
 Ресурсы РС «Планирование» использую, чтобы контролировать наличие в данной неделе документов «ПланыПродаж» и «ПланыЗакупок».
 Документ «ПланыЗакупок» создается и удаляется только программно.
 Спасибо за комментарии и замечания.
Вложения:
kow19761.16.dt

Saipl

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Максим
Задача 1.16
« Ответ #21 : Сентябрь 05, 2011, 04:08:39 pm »
Потратил кучу времени для решения последнего условия "В том случае, если «План закупок» на эту неделю уже существует и отличается от предполагаемого, то он должен быть удален (помечен на удаление) и сформирован новый документ"
Вложения:
Saipl_1.16.dt

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.16
« Ответ #22 : Сентябрь 08, 2011, 08:28:07 am »
Saipl,

 Есть сомнения:
 1 В решении используете Группы номенклатуры в качестве номенклатуры. Так не пойдет. «Считается, что для каждого стеллажа детали стандартные, т.е. одна и та же деталь может относиться к разным стеллажам».Одну и туже номенклатуру не запихнуть в разные группы.
 2. Не указан параметр ссылка в РН
 3. Не записываете пустые наборы в РН (Свойство удалять движения в РН должно быть «Удалять автоматически при отмене проведения») на сколько, я понял для 1С это принципиально. Демонстрация понимания нового механизма проведения.
 4. При отказ равном истина, происходит лишняя запись в базу пустых наборов в РН
 5. В планеПродаж получаете данные из документов в процедуре ПередЗаписью. Не учитываете конец дня и конец последней секунды.
 7. Считаю, что блокировки ПланеПродаж не к чему так как оно не зависит от остатков товара, а зависит только от желания пользователя. В плане может быть номенклатура, которой нет на остатках, зачем ее блокировать?
 8. Используете два запроса все можно решить одним

 9 Применяете вложенный запрос. Лучше временная таблица.
 10 Данные из БД выгружаете в выборку потом в ТЗ потом в табличный документ. Зачем?
 11 ПланЗакупок считаю нужно запретить создавать пользователю
 12 В форме номенклатуры не выведена таблица СоставКомплектующих(нельзя задать количество каждого комплектующего т.е. по умолчанию оно 0ед)
 13 При формировании ПланаЗакупок не учитываются остатки товара в базе(ПланПродаж на 19 болтов на остатке их 50шт в ПланЗакупке болты не надо) «должен программно сформироваться документ «План закупок», в котором должны быть указаны недостающие комплектующие и их количество»

Saipl

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Максим
Задача 1.16
« Ответ #23 : Сентябрь 08, 2011, 07:08:18 pm »
Quote
kow1976
Спасибо за развернуты комментарий.
 1. Использую группы для облегчения выбора стеллажа и детали. В форме группы есть ТЧ в которой и указывается состав комплектующих (часть задачи перекочевала и из предыдущей про стеллажи поэтому забыл убрать условие отбора по родителю). Плюсы при этом в основном интерфейстные удобно манипулировать данными когда надо выбрать детали в реквизитах ставим выбор групп и элементов "элементы" когда стеллажи и детали "Группы и элементы" соответственно.
 2. Не понял где ?
 3. Спасибо учту в будущем.
 4. Опять не понял где ?
 5. Спасибо учту в будущем.
 6. Не согласен, если нам нужно посчитать остатки (не важно для чего) надо обеспечить неизменность данных на момент операции.
 8. Первый запрос создает перечень номенклатуры для блокировки и затем используется повторно.
 9. Чем лучше ? Это не утверждение, а вопрос. Временная таблица нужна если мы несколько раз к ней обращаемся а для одного раза мне кажется достаточным.
 10. Согласен нужно пересмотреть.
 11. Вопрос риторический !
 12. Ответ в п.1
 13. Не понял 2 стеллажа в которых по 20 ботов + 20 болтов отдельно Итого: 20*2+20-50 на складе План закупок 10шт.

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.16
« Ответ #24 : Сентябрь 08, 2011, 09:58:54 pm »
2 Введите расходную накладную и проведите её(выдаст ошибку нехватка параметров)
 4 Если
 Движения.Взаиморасчеты.Записывать = истина;
 и отказ=Истина то при выходе из процедуры будет записан пустой набор
 Нужно в конце процедуры
 Движения.Взаиморасчеты.Записывать = Ложь;
 9 Точно сказать не могу связано с трансляцией запроса в sql. В литературе рекомендуют временную таблицу
 13 Программно реализовано, а фактически не работает. Передаете в запрос МоментВремени() а нужно конец секунды конца недели. Иначе получаете не те остатки

 А с блокировками подумайте. Два документа в неделю не ввести от кого блокируем номенклатуру. Я не вижу конкуренции за ресурс?
 Блокировки нужны, чтобы избежать коллизий. Можете привести пример коллизий при одновременном проведении документов ПланПродаж?

 И все таки, мне не понятно как вы в разные группы внесете одну и ту же номенклатуру. Если можно выложите исправления.
« Последнее редактирование: Сентябрь 08, 2011, 10:13:06 pm от Олег »

Saipl

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Максим
Задача 1.16
« Ответ #25 : Сентябрь 10, 2011, 05:12:35 pm »
Quote
kow1976

 2. Исправил
 4. Насколько я понял при отказ=Истина НЕ происходит ЗафиксироватьТранзакцию() операции ОбработкаПроведения() которая начинается автоматически поэтому никакие записи не запишутся.
 13. "Передаете в запрос МоментВремени() а нужно конец секунды конца недели".
 В условии задачи написано "Каждую неделю в систему вводится документ «План продаж»" а в начале, конце или середине не указано поэтому не вижу основания ставить конкретные рамки.
 По поводу блокировок - опять читаем условие "При проведении этого документа происходит проверка наличия нужного количества комплектующих" соответственно если мы не заблокировали и после получения результата запроса кто-то более "шустрый" провел расходную накладную мы получим не правильные остатки.

 Я вношу детали не в группу а в табличную часть "СоставКомплектующих" у которой режим - Использование - Для группы. Создай новую группу все будет видно !

 Выложил исправление.
Вложения:
3833158.dt
« Последнее редактирование: Сентябрь 10, 2011, 05:25:10 pm от Максим »

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.16
« Ответ #26 : Сентябрь 10, 2011, 07:51:20 pm »
Saipl,

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

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

 По блокировкам
 Блокировки при проверке остатков держит «шуструю накладную» до тех пор, пока не произойдет запись первой накладной. «Шустрая накладная» получает правильные остатки и может получить отказ в проведении.

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

 1. В стеллаж А3 должен входить болт из стеллажа А4. Не пойму как это сделать в ваше базе?
 "одна и та же деталь может относиться к разным стеллажам"
 и не выполняется(не вводится в форме)
 "Стеллажи и их комплектующие указываются в одной табличной части"

Добавлено (10.09.2011, 19:51)
---------------------------------------------
1. Все понял. Хитро surprised

« Последнее редактирование: Сентябрь 10, 2011, 07:43:11 pm от Олег »

rnikinko

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: nikolay
Задача 1.16
« Ответ #27 : Октябрь 28, 2011, 04:14:27 pm »
У многих при программном создании документа план закупок , не учитываются предыдущие закупки думаю, что учитывать их надо, и про контроль отрицательных остатков в задаче ни че ни говорится. Мой вариант
Вложения:
1_16nik.dt
« Последнее редактирование: Октябрь 28, 2011, 04:14:57 pm от nikolay »

ErrorPro

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Вениамин
Задача 1.16
« Ответ #28 : Ноябрь 21, 2011, 09:42:48 pm »
Всем привет, гляньте мой вариант плз wink задача дурная wink
Вложения:
1Cv8Errorpro.dt

Sergey-K

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 1.16
« Ответ #29 : Декабрь 14, 2011, 10:52:29 am »
Вариант решения:
Вложения:
ksv_1_16.dt