Загрузка данных


Найти все документы которые читают и списывают из ПартииТоваров. 

Логика для всех документов у кого есть запись в ПартииТоваров(нужен регистр сведений (например название ДокументыДляУчетаОстатков) в котором есть сведения о каждом типе документа.  То есть если документ есть в этом регистре, то значит мы посчитали что он обладает функционалом записи в ПартииТоваров и он может делать резервы(как здесь сделать, галочку что участвует в резервировании или же сам факт нахождения документа в это регистре означает его участие в резервировании). Документ либо одиночный, либо составной. Две булевы взаимоисключающие галочки, если стоит галочка в одиночном то в составном стоять не может и наоборот. Если документ составной то в регистре для обоих стоит флаг составной (или как лучше?) (на примере ОказаниеУслуг + ЧекККТ).  


Для одиночных:
Пример РозничнаяПродажа. Он же при записи делает резерв в РН ТоварыВРезерве, при его же проведении резерв снимается. Так как он же делает списание с ПартииТоваров.

Для составных(типа ОказаниеУслуг + ЧекККТ):
ОказаниеУслуг при записи делает резерв в РН ТоварыВРезерве. А при проведении ЧекККТ резерв снимается. Потому что именно ЧекККТ делает списание с ПартииТоваров. 



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


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


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

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



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

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

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

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


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

При проведении:
если резерва нет
	новый документ без ссылки
	в подборе позиции с остатками по Алгоритму подбора партий на текущую дату и время или если пользователь уже ввел в поле даты свою дату и время, то используем ее. Дата документа на эту дату.
	Если для проведения нет остатка - сообщаем пользователю и подсвечиваем строки, документ не сохраняем.


	не новый документ с ссылкой
	в подборе позиции с остатками на дату документа по Алгоритму подбора партий.
	Если для проведения нет остатка - сообщаем пользователю и подсвечиваем строки, документ не сохраняем.


если резерв есть 
	не новый документ с ссылкой
	в подборе позиции с остатками на дату документа по Алгоритму подбора партий.
	Используем имеющийся резерв, если для проведения вместе с резервом нет остатка - сообщаем пользователю и подсвечиваем строки, документ не сохраняем, новый резерв не создаем.



Проведенный пометить на удаление
	отменяем проведение
	помечаем на удаление	

Проведенный распровести
	отменяем проведение

Непроведенный пометить на удаление
если резерва нет
	помечаем на удаление

если резерв есть
	снять резерв
	помечаем на удаление



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




При создании резерва создается документ РезервированиеТоваров, как сейчас уже и происходит.
У этого документа должны быть статусы.
-Завершено успешно проведением документа. В форме списка документа РезервированиеТовара должна быть колонка со статусом. Этот статус должен быть зеленым фоном.
-Завершено фоновым заданием. Подсвечивается в форме списка красным фоном. Это когда резерв просрочен.
-Другие статусы по логике. 
-Отмена резерва (допустим ОказаниеУслуг пометили на удаление или еще как-то продумать случаи...)

Алгоритм подбора партий с динамическим сдвигом даты записи
	Шаг 1
	1. Берем ВСЕ партии по отдельной номенклатуре, которые есть в наличии на текущий момент времени. 
	Если количества уже не хватает даже на текущую дату, то сообщаем пользователю, что на остатках не хватает товара.
	2. Если количества достаточно, то Проверяем остатки всех этих партий на дату и время документа.
	3. Если количества хватает уже на дату документа, то учитываем эти партии для резерва.
	Шаг 2
	Если на дату документа этих партий не хватает, то включаем механику добора.
	Нужно добрать из списка доступных на настоящий момент партий тот набор, который суммарно закроет всю потребность по количеству номенклатуры.
	Чтобы дата переноса получилась максимально ранней (ближе всего к дате документа), партии берутся по принципу: в первую очередь выбираем те партии из доступных сейчас, которые появились в системе раньше остальных.
	1. Определяем дату появления самой "свежей" партии из этого добранного набора.
	И так для каждой номенклатуры из списка товаров. 
	Из всех полученных дат готовностей выбираем самую позднюю.
	Именно в это время в системе впервые одновременно существуют самые ранние доступные комплекты для всех номенклатур документа. Предлагаем пользователю перенести документ на эту дату.