Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Позиция движения в регистре не совпадает с поз. дока (число прочтений - 5179 )
Электроник
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 57
Зарегистрирован: 24. Июля 2009
Позиция движения в регистре не совпадает с поз. дока
08. Июня 2010 :: 07:12
Печать  
Привет. Реально ли сделать в 7-ке чтобы позиция движения регистра не совпадала с позицией документа? Может кто-то уже делал и не стоит париться? Заранее спасибо за любые советы.  Улыбка
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Позиция движения в регистре не совпадает с поз. дока
Ответ #1 - 08. Июня 2010 :: 07:37
Печать  
А зачем?
Если и сделаешь, то ТиИ всё сделает обратно Подмигивание
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Позиция движения в регистре не совпадает с поз. дока
Ответ #2 - 08. Июня 2010 :: 07:46
Печать  
Электроник писал(а) 08. Июня 2010 :: 07:12:
Привет. Реально ли сделать в 7-ке чтобы позиция движения регистра не совпадала с позицией документа? Может кто-то уже делал и не стоит париться? Заранее спасибо за любые советы.  Улыбка

Если у  регистра включена галка
быстые движения документа то эта позиция включена еще и в движения регистров.
Также есть еще и таблица ссылок документов и по регистрам также можно делать отборы.

Лучше опиши исходную задачу.

  
Наверх
 
IP записан
 
Электроник
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 57
Зарегистрирован: 24. Июля 2009
Re: Позиция движения в регистре не совпадает с поз. дока
Ответ #3 - 08. Июня 2010 :: 08:53
Печать  
Цитата:
Если и сделаешь, то ТиИ всё сделает обратно

Это понятно. В том-то и интерес, чтобы ТиИ все не сбросил.

Исходная задумка: хочу сделать в ТиС допроведение ЗаявокПокупателя на основе анализа табл. части дока. В этом случае надо видеть остатки и резервы не на документ, а на текущий момент. 7-ка этого не позволяет. Мне нужны итоги не по периодам документов, а по периодам их движений. Т.е., например есть регистр РезервыТМЦ (упрощенно):
- измерения:
 Номенклатура
- ресурсы:
 Количество
- реквизиты:
 ДатаВремяДвиж
В ДатаВремяДвиж (char(23)) сохраняется либо позиция документа из DATE_TIME_IDDOC, если док не был проведен, либо текущие ДатаВремя+"    0   " в 36-ом виде, если док перепроводится. Соответственно текущий резерв по номенклатуре хочу получать запросом вроде этого:
Код
Выбрать все
SELECT
	$РегРез.Номенклатура AS [Номенклатура $Справочник.Номенклатура],
	SUM(CASE регРез.debkred WHEN 0 THEN $РегРез.Количество
	                        WHEN 1 THEN -$РегРез.Количество END) AS [Количество $Число]
FROM $Регистр.РезервыТМЦ AS РегРез (NOLOCK)
INNER JOIN $Справочник.Номенклатура as СпрН (NOLOCK) ON СпрН.ID = $РегРез.Номенклатура
           AND $СпрН.ВидНоменклатуры NOT IN ($Перечисление.ВидыНоменклатуры.Работа, $Перечисление.ВидыНоменклатуры.Услуга)
WHERE $РегРез.Номенклатура IN (SELECT val FROM #ВремНомен)
      AND $РегРез.ДатаВремяДвиж <= :ДатаРасчета~
GROUP BY
	$РегРез.Номенклатура 


Проблему вижу в том, что выборка будет строиться только по таблице движений, т.к. естесственно нет таблицы итогов по полю ДатаВремяДвиж. Можно считать такие итоги и самому, например 1-го числа каждого месяца, но тогда придется следить за проведением/распроведением Заявок прошлых месяцев. Хочется узнать у опытных гуру - это вообще реально?
  
Наверх
 
IP записан
 
Электроник
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 57
Зарегистрирован: 24. Июля 2009
Re: Позиция движения в регистре не совпадает с поз. дока
Ответ #4 - 08. Июня 2010 :: 08:56
Печать  
Интересно, а есть такое в 8-ке? И если есть, то как сделано?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Позиция движения в регистре не совпадает с поз. дока
Ответ #5 - 08. Июня 2010 :: 09:16
Печать  
Цитата:
Исходная задумка: хочу сделать в ТиС допроведение ЗаявокПокупателя на основе анализа табл. части дока. В этом случае надо видеть остатки и резервы не на документ, а на текущий момент.

Помести ТА ( на конец года, квартала ) тогда остатки по ТА =
остатки на текущий момент потому что будущими числами не работают.
  
Наверх
 
IP записан
 
Электроник
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 57
Зарегистрирован: 24. Июля 2009
Re: Позиция движения в регистре не совпадает с поз. дока
Ответ #6 - 08. Июня 2010 :: 09:20
Печать  
Z1 писал(а) 08. Июня 2010 :: 09:16:
Помести ТА ( на конец года, квартала ) тогда остатки по ТА =
остатки на текущий момент потому что будущими числами не работают.

Не понял. При чем тут ТА. Кстати, она у нас и так всегда на 1-10 дней вперед от текущей даты.
  
Наверх
 
IP записан
 
Электроник
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 57
Зарегистрирован: 24. Июля 2009
Re: Позиция движения в регистре не совпадает с поз. дока
Ответ #7 - 08. Июня 2010 :: 10:31
Печать  
Неужели никто не пробовал реализовать допроведение в 1С 7.7?  Озадачен
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Позиция движения в регистре не совпадает с поз. дока
Ответ #8 - 08. Июня 2010 :: 12:03
Печать  
Электроник писал(а) 08. Июня 2010 :: 10:31:
Неужели никто не пробовал реализовать допроведение в 1С 7.7?  Озадачен

Что есть допроведение ?
Т.е. ты хочешь убрать галки Автоматическое удаление движений?
Если строк в документе будет больше 10 то на сам анализ и разбор
ситуации на языке 1с уйдет больше времени чем на обычное проведение.
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Позиция движения в регистре не совпадает с поз. дока
Ответ #9 - 08. Июня 2010 :: 12:06
Печать  
Имхо проще:
1. В доке добавить реквизит - ДатаВремяСоздания
2. Перепроводить док из формы просто так не давать.
3. Вместо этого для перепроведения делать так (суть в том, что сдвигаем док на текущую дату/время):
Код
Выбрать все
// В модуле формы дока
Процедура Перепроведение()
	тз = СоздатьОбъект("ТаблицаЗначений");
	ВыгрузитьТабличнуюЧасть(тз);
	Парам = СоздатьОбъект("СписокЗначений");
	Парам.Установить("Контекст", Контекст);
	Парам.Установить("Состав", тз);
	ОткрытьФорму("Обработка.Перепроведение", Парам);
КонецПроцедуры	// Перепроведение

// В обработке Перепроведение
Перем выбДок, состав;

Процедура ПриОткрытии()
	конт = Форма.Параметр.Получить("Контекст");
	состав = Форма.Параметр.Получить("Состав");
	выбДок = конт.ТекущийДокумент();
	конт.Форма.Закрыть(0);
	Форма.Закрыть();
КонецПроцедуры	// ПриОткрытии

Процедура ПриЗакрытии()
	Доки = СоздатьОбъект("Документ.ЗаявкаПокупателя");
	Успех=0;
	НачатьТранзакцию();
	Попытка
		Доки.НайтиДокумент(выбДок);
		Час=0;Минуты=0;Секунды=0;
		ТекущееВремя(Час, Минуты, Секунды);

		Доки.СделатьНеПроведенным();
		Если ПустоеЗначение(Доки.ДатаВремяСоздания) = 1 Тогда
			Доки.ДатаВремяСоздания = "" + Доки.ДатаДок + " " + Доки.ПолучитьВремя();
		КонецЕсли;
		Доки.ДатаДок=ТекущаяДата();
		Доки.УстановитьВремя(Час,Минуты,Секунды);
		Доки.ЗагрузитьТабличнуюЧасть(состав);
		Доки.Записать();
		Успех=Доки.Провести(0);
	Исключение
		Сообщить(ОписаниеОшибки());
	КонецПопытки;
	Если Успех=1 Тогда
		ЗафиксироватьТранзакцию();
	Иначе
		ОтменитьТранзакцию();
	КонецЕсли;
	ОткрытьФорму(выбДок);
КонецПроцедуры	// ПриЗакрытии
 


  
Наверх
 
IP записан
 
Электроник
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 57
Зарегистрирован: 24. Июля 2009
Re: Позиция движения в регистре не совпадает с поз. дока
Ответ #10 - 08. Июня 2010 :: 13:18
Печать  
Дело не во времени проведения, и двигать позицию документа тоже нельзя, т.к. он может быть двух-трехнедельной давности.
Пример. Менеджер набил Заявку для клиента, товар зарезервировался. Через некоторое время (напр., неделя) клиент звонит и говорит: "А добавьте-ка мне вот того-то еще 100 штучек". Менеджер смотрит на остатки и видит необходимое кол-во, увеличивает кол-во в Заявке и пытается провести. А ему облом, т.к. на момент Заявки столько не было, а через, допустим, 3 дня товар пришел или другой клиент отказался от него. Заявку перенести на текущую дату - тоже риск, т.к. другого товара из списка может не хватить. Вот в чем проблема. И вот почему я хочу делать резерв разными датами.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Позиция движения в регистре не совпадает с поз. дока
Ответ #11 - 08. Июня 2010 :: 13:48
Печать  
Электроник писал(а) 08. Июня 2010 :: 13:18:
Дело не во времени проведения, и двигать позицию документа тоже нельзя, т.к. он может быть двух-трехнедельной давности.
Пример. Менеджер набил Заявку для клиента, товар зарезервировался. Через некоторое время (напр., неделя) клиент звонит и говорит: "А добавьте-ка мне вот того-то еще 100 штучек". Менеджер смотрит на остатки и видит необходимое кол-во, увеличивает кол-во в Заявке и пытается провести. А ему облом, т.к. на момент Заявки столько не было, а через, допустим, 3 дня товар пришел или другой клиент отказался от него. Заявку перенести на текущую дату - тоже риск, т.к. другого товара из списка может не хватить. Вот в чем проблема. И вот почему я хочу делать резерв разными датами.

Что то я не понимаю
новый звонок новая заявка. За неделю могут и цены вырасти
с чего ради продавать по заниженным ценам.


Все пихать в один документ плохо с точки зрения 1с
Перепроведение документа происходит так
1.Открываем транзакцию
2.Блокируем монопольно всю таблицу _1sjourn ( до конца транзакции )
(так же блокируются все чего коснуться запросы )
3.Отменяем все текущие движения  документа из rg
удаляем все движения документа из ra
4.Выполняем модуль проведения
для каждого движения
изменяем rg и добавляем новую строку в ra.
5.Фиксируем транзакцию

Т.е.  чем больше строк тем больше время проведения ( а это критический ресурс ) причем зависимость явно не линейная а хуже.

Так что с точки зрения производительности два
документа на 70 и 30 строк лучше чем один на 100 строк.
Если изменения касаются только одного документа а это так как даты разные то два документа всегда лучше чем один.

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

  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Позиция движения в регистре не совпадает с поз. дока
Ответ #12 - 08. Июня 2010 :: 14:31
Печать  
Z1 писал(а) 08. Июня 2010 :: 13:48:
новый звонок новая заявка.

+много.
Гораздо проще и правильней, например, при выписке счета на основании заявки проверить какие еще есть не закрытые заявки на этого клиента(остатки) и предложить пользователю включить их в счет.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Позиция движения в регистре не совпадает с поз. дока
Ответ #13 - 08. Июня 2010 :: 14:45
Печать  
alexdd писал(а) 08. Июня 2010 :: 14:31:
Z1 писал(а) 08. Июня 2010 :: 13:48:
новый звонок новая заявка.

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

Ну это от бизнес процесса зависит.
Несколько ответов исходя из того что предоставил автор дано,
остальное слишком сложно домыслить - очень много от специфики зависит. ( У нас просто цены меняются каждый день иногда несколько раз в день.  писал ответ адаптирую к тому  что есть  у меня)
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Позиция движения в регистре не совпадает с поз. дока
Ответ #14 - 08. Июня 2010 :: 21:58
Печать  
Электроник писал(а) 08. Июня 2010 :: 13:18:
Заявку перенести на текущую дату - тоже риск, т.к. другого товара из списка может не хватить. Вот в чем проблема. И вот почему я хочу делать резерв разными датами.

Никакого риска. Все делается в транзакции, следовательно в момент между распроведением и проведением никто не вклиниться. А резервов хватит полюбому, тк при распроведении все что док ранее зарезервировал - аннулируется, и тут же снова зарезервируется при проведении.
На пальцах:
Док резервирует 10 штук. После этого свободный остаток на ТА - 0.
Распроводим док - свободный остаток снова 10.
Снова проводим - снова резервируем и все возвращается на круги своя.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать