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

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

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.08
« Ответ #30 : Июль 26, 2011, 08:15:41 pm »
rnikinko,
 Средняя, считается неправильно.

 Прошу посмотреть и прокомментировать решение задачи.
 Задача на первый взгляд кажется не сложной, но есть несколько подводных камней связанных с расчетом средней в разрезе склада.
 За любые найденные ошибки спасибо.
Вложения:
kow19761.8.dt

DoctorRoza

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Алексей
Задача 1.08
« Ответ #31 : Июль 26, 2011, 08:40:05 pm »
kow1976, так-с ..
 НовДок.Дата=Дата-1; а вот это не айс!! такое не приемлемо .. а если есть другие документы? smile
 //////////////////////////////
 Скрин .. ошибка ..
 /////////////////////////////
 Зачем в справочнике реквизит Перемещение???
Вложения:
s3581861.jpg
« Последнее редактирование: Июль 26, 2011, 08:41:17 pm от Алексей »


kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.08
« Ответ #32 : Июль 26, 2011, 10:51:47 pm »
Quote (DoctorRoza)
НовДок.Дата=Дата-1; а вот это не айс!! такое не приемлемо .. а если есть другие документы?


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

 
Quote
Скрин .. ошибка

 Спасибо действительно косяк

 
Quote
Зачем в справочнике реквизит Перемещение???


 В справочнике реквизит «перемещения» использую, чтобы в расходной совсем нельзя было выбрать ОтделЗакупок. Чтоб запретить продажу с отдела закупок.
 В реквизите склад расходной накладной в свойстве
 «Параметры выбора» Отбор.Перемещение(Истина)

DoctorRoza

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Алексей
Задача 1.08
« Ответ #33 : Июль 27, 2011, 07:32:39 pm »
Quote (kow1976)
С датой пробовал и границу и МоментВремени не получается сделать так чтобы продажа была позднее перемещения( первым создается продажа на оси потом перемещение, а надо наоборот). Но по идее номенклатура по складу в транзакции заблокирована и попасть, в эту секунду, чтобы списать только что, перемещенный товар не выйдет.


 Забавно, в моем решении Вы как раз и указали на эту ошибку, но реализация решения не айс! smile В этом то и суть, что в начале должно быть перемещение, а уже потом списание!
Вложения:
5878232.dt
« Последнее редактирование: Июль 27, 2011, 07:34:03 pm от Алексей »

Denov

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Денис Рыженков
Задача 1.08
« Ответ #34 : Июль 28, 2011, 07:48:42 pm »
Посмотрите мое решение. По моему сделал очень оптимально...
Вложения:
_1.08.dt
« Последнее редактирование: Июль 28, 2011, 07:49:38 pm от Денис Рыженков »

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.08
« Ответ #35 : Июль 30, 2011, 07:19:34 pm »
Denov,

 1.Средняя считается не правильно тестовые данные : http://forum.chistov.pro/index.php?topic=977.msg3#msg3
 2. Блокируете всю номенклатуру по всем складам, а достаточно торг. точку и если надо склад закупки .
 3. Два запроса можно решить одним
 4. Накладную берете два раза из БД. Второй раз можно из ВТ
 5. Уничтожать ВТ нет смысла. Все ВТ уничтожаются по КонецПроцедуры. Если я правильно понял назначение этого уничтожения.
 6. Не уверен но думаю, что транзакция не нужна, так как Обработке проведения и так действует скрытая транзакция.
« Последнее редактирование: Июль 31, 2011, 08:48:37 am от Олег »

Denov

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Денис Рыженков
Задача 1.08
« Ответ #36 : Август 02, 2011, 08:31:14 pm »
kow1976, Спасибо...

Saipl

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Максим
Задача 1.08
« Ответ #37 : Август 25, 2011, 03:48:10 pm »
Прокомментируйте если не сложно !
 Вопросы по оптимальности решения
 1.Правильно отработают блокировки при установке списка значений в качестве источника значений ?
 
Code
    Отделы = Новый СписокЗначений;
  Отделы.Добавить(Справочники.Отделы.ОтделЗакупок);
  Если Не ВнутреннееПеремещение Тогда
   Отделы.Добавить(Отдел);
  КонецЕсли;  
  Блокировка = Новый БлокировкаДанных;
  ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
  ЭлементБлокировки.УстановитьЗначение("Отдел", Отделы);
 

 2. Как скажется на быстродействии системы и оптимальности с точки зрения решения
 строки в запросе
 
Code

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


 Или правильней для каждого отдела создать вложенный запрос ?

 Спасибо !
Вложения:
Saipl_1.8.dt

garden

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Наталья
Задача 1.08
« Ответ #38 : Октябрь 04, 2011, 10:16:46 am »
Хотелось бы услышать комментарии к моему решению. Делала сама, поэтому ошибок может быть много, но вроде все работает.
 smile
Вложения:
garden_1-08.dt

chernikovd

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Черников Дмитрий Иванович
Задача 1.08
« Ответ #39 : Ноябрь 13, 2011, 04:27:42 pm »
В задаче сказано "необходимо программно создавать ДОКУМЕНТ по перемещению недостающего товара из отдела закупок"
 я посмотрел несколько решений и не увидел реализации этого условия.. может я не прав... вот мой вариант решения
Вложения:
_1.8_Dim.dt

SEA

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Елена
Задача 1.08
« Ответ #40 : Ноябрь 24, 2011, 12:39:33 am »
Буду очень благодарна за критику
Вложения:
1-8.dt

garden

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Наталья
Задача 1.08
« Ответ #41 : Ноябрь 24, 2011, 09:35:31 am »
SEA,
 Задачка действительно замороченная, у Вас решение получилось проще чем у меня и работает все вроде верно. Отчета только нет.
 1.Немного не понятно зачем два реквизита в расходной: Склад и получатель, по-моему флаг перемещение и так говорит о том продажа это или перемещение, но это мне кажется не является ошибкой.
 2. Если продавать или перемещать товар, которого вообще нет (прихода нет), то сообщение об отсутствии товара не выдается, (при этом и в регистр ничего не пишется, т.е. система ведет себя правильно)
 Удачи!

SEA

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Елена
Задача 1.08
« Ответ #42 : Ноябрь 24, 2011, 03:34:15 pm »
garden, спасибо.Замечания учту

Добавлено (24.11.2011, 15:34)
---------------------------------------------

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

 .- Потому что этот вариант более приближен к реальности- если бы надо было б построить журнал с документами с отбором по ОтделуЗакупки - то в моем варианте не возникло никаких проблем или мало ли какие задачи еще нужно будет решить - всегда на будующее стараюсь продумать.А с помощьюФлага можно - автоматически открывать нужный справочник - а не выбирать сначала "Контрагенты"или "Склады". Это я в своем варианте не реализовала - но можно было. На данный момент только алгоритмы решения разбираю, а не красоту

LEOON

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Верютин Сергей
Задача 1.08
« Ответ #43 : Декабрь 18, 2011, 08:58:50 pm »
Решение сырое, на доработку времени жалко так что выкладывать не буду.
 Единственный совет, если кто не догадался, разнести Перемещение и Расход, при программном создании можно с помощью.
 ПолучитьОперативнуюОтметкуВремени().

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.08
« Ответ #44 : Декабрь 18, 2011, 10:14:47 pm »
LEOON,
 Интересная идея. Но функция дает на секунду больше а надо меньше. Это кроме оперативную отметку ставить в начале перемещению а потом переопределять дату текущего документа. Кроме этого придется отслеживать ситуацию перепроведения иначе документы будут все время перепрыгивать на оперативную отметку. А вреда от отнятой секунды вреда особо не видно.