Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Как объединить регист с документом? (число прочтений - 5036 )
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как объединить регист с документом?
Ответ #15 - 25. Октября 2011 :: 14:28
Печать  
Выложи описание структуры метаданных регистра Партии и документа ПриходныйОрдер.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
elle
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 15
Зарегистрирован: 21. Октября 2011
Re: Как объединить регист с документом?
Ответ #16 - 26. Октября 2011 :: 06:14
Печать  
Регистр остатков (Быстрая обработка движений- нет) идентификатор - Партии, Измерения - Фирма (Справочник.Фирмы), Счет (Счет.Основной), МестоХранения (Справочник), ТМЦ (Справочник.ТМЦ), Поставщик(Справочник.Контрагенты), Поставка(Документ), ПрихДокумент(Документ).
Ресурсы - ОстатокТовара(Число), Стоимость(Число), ПродСтоимость(Число).
Реквизиты - КодОперации(Строка).
Документ ПриходныйОрдер - Реквизиты шапки - МестоХранения(Правочник.МестаХранения), Реквизиты табличной части - ТМЦ(Справочник.ТМЦ), МВЗ(Справочник.МВЗ).
Было реализовано вот так:
Код
Выбрать все
Запрос = СоздатьОбъект("Запрос");
	ТекстЗапроса =
	"//{{ЗАПРОС(СформироватьТЗПартий)
	|с КонПериода по КонПериода;
	|Без итогов;
	|МестоХранения = Регистр.Партии.МестоХранения;
	|ТМЦ = Регистр.Партии.ТМЦ;
	|ПрихДокумент = Регистр.Партии.ПрихДокумент;
	|ОстатокТовара = Регистр.Партии.ОстатокТовара;
	|Стоимость = Регистр.Партии.Стоимость;
	|ТекущийДокумент = Регистр.Партии.ТекущийДокумент;
	|Функция ОТ_КонОст = КонОст(ОстатокТовара);
	|Функция С_КонОст = КонОст(Стоимость);
	|Группировка МестоХранения Без Групп;
	|Группировка ТМЦ Без Групп;
	|Группировка ПрихДокумент;
	|";
	Если ПустоеЗначение(ВыбМестоХранения) = 1 Тогда
		ТекстЗапроса=ТекстЗапроса+	"Условие (МестоХранения в СЗ);
		|";
	Иначе
		Если ВыбМестоХранения.ЭтоГруппа()=1 Тогда
			ТекстЗапроса=ТекстЗапроса+	"Условие(МестоХранения В ВыбМестоХранения);
			|";
		Иначе
			ТекстЗапроса=ТекстЗапроса+	"Условие(МестоХранения = ВыбМестоХранения);
			|";
		КонецЕсли;
	КонецЕсли; 


Потом выгражала список партий с этого запроса и уже искала нужные документы:
Код
Выбрать все
Запрос = СоздатьОбъект("Запрос");
	ТекстЗапроса =
	"//{{ЗАПРОС(СформироватьТЗПартий)
	|с (КонПериода-2000) по КонПериода;
	|Без итогов;
	|Док = мент;
	|МестоХранения = нения;
	|ТМЦ = Документ.ПриходныйОрдер.ТМЦ,Документ.АктОприходованияТМЦ.ТМЦ;
	|МВЗ = Документ.ПриходныйОрдер.МВЗ,Документ.АктОприходованияТМЦ.МВЗ;
	|Кво = Документ.ПриходныйОрдер.Кво,Документ.АктОприходованияТМЦ.Кво;
	|Группировка МестоХранения Без Групп;
	|Группировка ТМЦ Без Групп;
	|Группировка Док;
	|Группировка МВЗ Без Групп;
	|Группировка СтрокаДокумента;
	|Условие (Док в Партии);
	|";
	Если ПустоеЗначение(ВыбПоступленияИздержки) = 0 Тогда
		ТекстЗапроса=ТекстЗапроса+	"Условие(СтатьяБДДС = ВыбПоступленияИздержки);
		|";
	КонецЕсли; 


Еще проблема бывает что в приходном ордере в табл. части две одинаковые ТМЦ с разными МВЗ, тогда в одну строку записывала два МВЗ. Запустив отчет поиска по всем партиям нужного МВЗ можна было уходить на пол часа, а МВЗ у нас штук 30 Смущённый
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как объединить регист с документом?
Ответ #17 - 26. Октября 2011 :: 06:33
Печать  
Не вкурил, а какое отношение приход денег имеет к Партиям ??
  
Наверх
 
IP записан
 
elle
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 15
Зарегистрирован: 21. Октября 2011
Re: Как объединить регист с документом?
Ответ #18 - 26. Октября 2011 :: 07:55
Печать  
а где вы увидели приход денег? мвз-места возникновения затрат Улыбка
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как объединить регист с документом?
Ответ #19 - 26. Октября 2011 :: 08:34
Печать  
ПриходныйОрдер всегда был для приёма денег.
Какое отношение к партиям тмц он имеет ?
  
Наверх
 
IP записан
 
elle
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 15
Зарегистрирован: 21. Октября 2011
Re: Как объединить регист с документом?
Ответ #20 - 26. Октября 2011 :: 08:47
Печать  
У нас приход от поставщиков оформляется на склад как приходный ордер + приходная накладная в бухгалтерию.
"Организация складского ордерного учета
Организация складского учета с использованием ордеров позволяет в разные моменты времени фиксировать в автоматизированной системе движения ТМЦ в количественном измерении и отражение этих движений в суммовом выражении. Документы, которыми оформляют движения ТМЦ по складу, называют ордера-ми на товары («Приходный ордер на товары», «Расходный ордер на товары»). "
А приход денег по касе как раз приходным кассовым ордером.
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как объединить регист с документом?
Ответ #21 - 26. Октября 2011 :: 13:21
Печать  
Код
Выбрать все
	ТекстЗапроса = "-- qryMaker:Отчет1.2011.10.26.16.24.32
		|SELECT ПартииОстатки.МестоХранения [ПартииОстаткиМестоХранения $Справочник]
		|	, ПартииОстатки.ТМЦ [ПартииОстаткиТМЦ $Справочник.ТМЦ]
		|	, ПартииОстатки.Поставка [Поставка $Документ]
		|	, ПартииОстатки.ОстатокТовараОстаток
		|	, ПартииОстатки.СтоимостьОстаток
		|	, Подзапрос.МВЗ [МВЗ $Справочник.МВЗ]
		|FROM (SELECT
		|			  ($ВидДокумента36.ПриходныйОрдер + ПриходныйОрдер.IDDOC) Поставка
		|			, $ПриходныйОрдер.МестоХранения МестоХранения
		|			, $ПриходныйОрдерСтроки.ТМЦ ТМЦ
		|			, $ПриходныйОрдерСтроки.МВЗ МВЗ
		|		FROM $Документ.ПриходныйОрдер AS ПриходныйОрдер With (NOLOCK)
		|			INNER JOIN $ДокументСтроки.ПриходныйОрдер AS ПриходныйОрдерСтроки With (NOLOCK) ON ПриходныйОрдер.IDDOC = ПриходныйОрдерСтроки.IDDOC
		|		UNION ALL
		|		SELECT
		|			  ($ВидДокумента36.АктОприходованияТМЦ + АктОприходованияТМЦ.IDDOC)
		|			, $АктОприходованияТМЦ.НовоеМестоХранения
		|			, $АктОприходованияТМЦСтроки.ТМЦ
		|			, $АктОприходованияТМЦСтроки.МВЗ
		|		FROM $Документ.АктОприходованияТМЦ AS АктОприходованияТМЦ With (NOLOCK)
		|			INNER JOIN $ДокументСтроки.АктОприходованияТМЦ AS АктОприходованияТМЦСтроки With (NOLOCK) ON АктОприходованияТМЦ.IDDOC = АктОприходованияТМЦСтроки.IDDOC) AS Подзапрос
		|	INNER JOIN $РегистрОстатки.Партии(:КонДата ~,,
		|		(МестоХранения = :ВыбМестоХранения),
		|		(МестоХранения, ТМЦ, Поставка),
		|		(ОстатокТовара, Стоимость)) AS ПартииОстатки ON Подзапрос.ТМЦ = ПартииОстатки.ТМЦ AND Подзапрос.Поставка = ПартииОстатки.Поставка
		|WHERE (Подзапрос.МВЗ = :ВыбМВЗ)
		|";
 

  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
elle
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 15
Зарегистрирован: 21. Октября 2011
Re: Как объединить регист с документом?
Ответ #22 - 27. Октября 2011 :: 08:08
Печать  
Спасибо  Улыбка, но ТЗ у меня пустая, хотя запрос работает, в чем может быть причина?
После запроса делаю
Код
Выбрать все
RS.УстановитьТекстовыйПараметр("КонДата", КонПериода);
	RS.УстановитьТекстовыйПараметр("ВыбМестоХранения", ВыбМестоХранения);
	RS.УстановитьТекстовыйПараметр("ВыбМВЗ", ВыбМВЗ);
	RS.Отладка(1);
	ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);
	ТЗНаФорме.Загрузить(ТЗ); 

  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как объединить регист с документом?
Ответ #23 - 27. Октября 2011 :: 09:17
Печать  
Я ошибся в условии. Должно быть:
Код
Выбрать все
|		(МестоХранения = :ВыбМестоХранения ~), 

  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
elle
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 15
Зарегистрирован: 21. Октября 2011
Re: Как объединить регист с документом?
Ответ #24 - 27. Октября 2011 :: 09:22
Печать  
ОГОГО, как все меняет крохотный символ ~, ЗАРАБОТАЛО, УРАААА Очень довольный Как динамично условие (МестоХранения = :ВыбМестоХранения ~) менять чтобы например равно справочнику или пренадлежало списку или групе справочника?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как объединить регист с документом?
Ответ #25 - 27. Октября 2011 :: 09:29
Печать  
Код
Выбрать все
МестоХранения IN (SELECT $ВидСправочника36.МестаХранения + val FROM #МестаХранения) 



Код
Выбрать все
RS.УложитьСписокОбъектов(СписокИлиГруппа, "#МестаХранения", "МестаХранения"); 

  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
elle
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 15
Зарегистрирован: 21. Октября 2011
Re: Как объединить регист с документом?
Ответ #26 - 27. Октября 2011 :: 12:06
Печать  
Улыбка, как посоветуеш решыть проблему - по одной партии приходного ордера возможный приход одинакого ТМЦ по разным МВЗ, по факту например товара А 100 шт. по разным МВЗ, сформировав отчет по одному МВЗ покажет 100 шт., потом по другому МВЗ и опять 100 шт. и в итоге выйдет 200 шт, а в реале только 100.
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как объединить регист с документом?
Ответ #27 - 27. Октября 2011 :: 12:19
Печать  
Проблема не имеет смысла, если нет привязки к МВЗ в расходных документах. А если такая привязка есть - нужно добавить МВЗ как измерение регистра.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
elle
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 15
Зарегистрирован: 21. Октября 2011
Re: Как объединить регист с документом?
Ответ #28 - 27. Октября 2011 :: 12:35
Печать  
Я понимаю что ето полная ерунда выходить без измерения в регистре, но даже если сделать реквизитом МВЗ, старые документы не перепроведеш. Раньше я выдавала по ТМЦ где 2 разных МВЗ предуприждение, что б в ручном режыме проверить на правильность, в запросе можна ето сделать?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как объединить регист с документом?
Ответ #29 - 27. Октября 2011 :: 13:01
Печать  
Можно сложить данные документов во временную таблицу и получать оттуда списки МВЗ по мере обхода остатков.

http://oldskola1.narod.ru/Rus1.htm#p34
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 
ОтправитьПечать