|
задача 1.2 из сборника спеца по платформе 8.2 | ☑ | ||
---|---|---|---|---|
0
Dmitry017
20.05.13
✎
21:58
|
Прорешиваю задачи из сборника на спеца по платформе. задача 8.2. Не могу создать отчёт № 2 как в задании. систему компоновки данных видимо криво настроил. Тыкаюсь - идеал никак не получается получить. Подскажете как?
Вот скрин того что надо получить http://i46.fastpic.ru/big/2013/0520/5c/af91e8f62c04036298424c6e8db8c45c.jpg и вот скрин того, что получилось http://i47.fastpic.ru/big/2013/0520/6b/15cfd1dfaede0f58f38ce23001b6036b.jpg Вот dt-шка. Можете глянуть? Может подскажете, какие я ошибки совершил, кроме того что блокировку не сделал и отчёт по времени не настроил (с 1 июля по 1 августа, например) http://zalil.ru/34518272 thank you |
|||
1
Dmitry017
20.05.13
✎
21:59
|
вот условие задачи 1.2:
Компания занимается оптовой торговлей. Поступление товаров отражается документом «Приходная накладная», продажа - «Расходная накладная». Помимо продажи товара, могут оказываться дополнительные услуги, например по доставке. И услуги и товары указываются в одной табличной части. Складской учет товаров не ведется. При проведении расходной накладной при нехватке товара необходимо выдавать соответствующее предупреждение с указанием количества нехватки и не позволять проводить документ. Списание себестоимости товаров должно быть организовано по партиям, а зависимости от текущего значения принятого на этот год в учетной политике метода списания себестоимости (FIFO или LIFO) и указанной в документе (в шапке документа) партии. Еще раз подчеркивается - учетная политика действует год. На следующий год метод списания может смениться. В первую очередь должен списываться товар из указанной в шапке партии. В случае, если товара по выбранной партии не хватает (или нет), то товар списывается в соответствии с текущей учетной политикой. Необходимо построить отчет по продажам товаров за период и остаткам товара на указанную дату. |
|||
2
EugeniaK
20.05.13
✎
23:07
|
(0) По отчету как-то много у тебя галочек в настройках. Снимаешь все и:
Ставишь в настройках "Расположение полей группировок: отдельно и только в итогах" Переименовываешь поля на закладке "Набор данных" Но вообще внешний вид не важен для экзамена. Главное, чтобы отчет выдавал данные в нужном разрезе. По коду достаточно неплохо. Из того, что бросается в глаза: В приходной забыл фильтр на тип товара. Приходуются услуги и зависают в остатках. В расходной: 1. Сортировка в расходной накладной не по Партия, а по Партия.МоментВремени. Поле "Партия" это ссылка, оно не связано с датой документа. 2. | РегистрНакопления.ОстаткиНоменклатуры.Остатки( | &МоментВремени, | Номенклатура В | (ВЫБРАТЬ | РасходнаяНакладнаяСписокНоменклатуры.Номенклатура | ИЗ | Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры | ГДЕ | РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка)) КАК ОстаткиНоменклатурыОстатки, | Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры Получается декартово произведение. Где связь между таблицами? Протестируй расходную с несколькими товарами. 3. Для ЛИФО, видимо, даже не тестировал. Вылетает запрос. Пробел добавь. 4. В запросе получается 2 одинаковые выборки из таблицы РасходнаяНакладнаяСписокНоменклатуры (одна получение данных, вторая для фильтра в виртуальной таблице). Желательно использовать временные таблицы. 5. Проверка наличия нужного количества товаров. На строке ВыборкаНоменклатура.Следующий() у тебя уже есть количесво, которое нужно списать ВыборкаНоменклатура.КоличествоПродаж и общее количество по всем партиям ВыборкаНоменклатура.КоличествоОстаток. Уже на этом уровне можно проверить, хватает ли товара. Если товара не хватает, то не нужно входить в цикл по партиям. Если ВыборкаНоменклатура.КоличествоОстаток < ВыборкаНоменклатура.КоличествоПродаж Тогда Отказ = Истина; Сообщить("Номенклатуры " + ВыборкаНоменклатура.Номенклатура + " не хватает на складе в количестве " + НехваткаНоменклатуры + " шт."); Возврат; КонецЕсли; "Возврат" делать не нужно. Может быть недостача по нескольким строкам, а не по одной. Нужно пройтись по всем строкам и выдать сообщение о каждой недостаче в документе. ВыборкаНоменклатура.Номенклатура - в данной переменной ссылка. Чтобы вывести сообщение система делает лишнее обращение к серверу. Желательно изначально отбирать из базы строку Представление(ВыборкаНоменклатура.Номенклатура) КАК ПредставлениеНоменклатура и выводить в сообщение строку, а не ссылку. 6. Движение.Количество = СписаноНоменклатуры; По-моему тут количество номенклатуры лишнее. Лучше пиши просто 0 или количество из документа по конкретной услуге. |
|||
3
Dmitry017
21.05.13
✎
19:57
|
Спасибо. И вот еще такой вопрос хотел задать. Вот нужно в запросе получить данные из табличной части текущего документа и дальше эти данные связать с другими таблицами.
Ну по сути надо прописать условие: | ГДЕ ПриходнаяНакладная.ТабличнаяЧастьТовары.Ссылка = Ссылка ну как-то так. Но только вот в чём вопрос. Когда пишешь: Запрос.УстановитьПараметр("Ссылка", Ссылка), то передаётся ссылка не на нужную табличную часть, а ссылка на документ. Как бы всё таким образом работает, и видел, что всегда именно так такие вещи и делаются, только немножко непонятно как данное сравнение вообще может производиться. Ну то есть, вот строка: ПриходнаяНакладная.ТабличнаяЧастьТовары.Ссылка = Ссылка Слева по сути Ссылка на тибличную часть документа, с права ссылка на документ (тип ДокументСсылка). Я наверно где-то здесь ошибся в рассуждениях. Можете поправить? |
|||
4
EugeniaK
21.05.13
✎
20:01
|
(3)
На сервере есть отдельная таблица ПриходнаяНакладная.ТабличнаяЧастьТовары со строками всех приходных накладных. Поле "Ссылка" табличной части это и есть ссылка на документ, которому эта табличная часть принадлежит. Т.е. условием ПриходнаяНакладная.ТабличнаяЧастьТовары.Ссылка = Ссылка ты выбираешь строки именно нужного тебе документа. Ключ строки это "ссылка на документ" + "номер строки". Отдельной "ссылки на строку табличной части" не существует. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |