Переключение на Главную Страницу Страницы: [1] 2 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Как отредактировать движения документов по регистрам остатков? (число прочтений - 11588 )
nop
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Местоположение: Украина, Харьков
Зарегистрирован: 14. Сентября 2011
Как отредактировать движения документов по регистрам остатков?
14. Сентября 2011 :: 06:41
Печать  
Как реализовать такую задачу?
  • Выбрать все движения по регистру
  • Удалить все движения
  • Написать новые движения под документы (список док-тов из п.1)

Все нужно сделать не перепроводя документы. FAQ почитал, ничего для себя по этим 3м пунктам не почерпнул.
Киньте пожалуйста примеры запросов для каждого из пунктов.
Структура регистра: Измерения Контрагент, БухСчет, Договор, Валюта Ресурсы Сумма, ВалСумма
  
Наверх
ICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как отредактировать движения документов по регистрам остатков?
Ответ #1 - 14. Сентября 2011 :: 09:11
Печать  
Если "штатненько", без запроса, то так:
примерчик
а так, просто delete + insert, или update, если только изменить что-то.
Тока потом еще итоги надо пересчитывать один хрен.
Можно тоже, прямым запросом.
  
Наверх
 
IP записан
 
nop
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Местоположение: Украина, Харьков
Зарегистрирован: 14. Сентября 2011
Re: Как отредактировать движения документов по регистрам остатков?
Ответ #2 - 14. Сентября 2011 :: 09:18
Печать  
Eprst писал(а) 14. Сентября 2011 :: 09:11:
Если "штатненько", без запроса, то так:
<..cut..>
а так, просто delete + insert, или update, если только изменить что-то.
Тока потом еще итоги надо пересчитывать один хрен.
Можно тоже, прямым запросом.


Привет, Ёпрст! Спасибо, посмотрю.
P.S. Сменю пожалуй отображаемый ник Улыбка
  
Наверх
ICQ  
IP записан
 
nop
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Местоположение: Украина, Харьков
Зарегистрирован: 14. Сентября 2011
Re: Как отредактировать движения документов по регистрам остатков?
Ответ #3 - 27. Сентября 2011 :: 08:15
Печать  
Помогите с запросом INSERT.
Например нужно вставить запись в регистр остатков РегХ (измерение "Х" - справочник.контрагенты, ресурс - "сумма")

Как записать такой запрос, установить параметры и регистратор (документ к которому подколоть это движение) ?
  
Наверх
ICQ  
IP записан
 
nop
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Местоположение: Украина, Харьков
Зарегистрирован: 14. Сентября 2011
Re: Как отредактировать движения документов по регистрам остатков?
Ответ #4 - 27. Сентября 2011 :: 08:25
Печать  
удалось угадать таблицу и получить её структуру и данные Улыбка

Код
Выбрать все
	Ком			= oledb.СоздатьКоманду();
	ТекстСКЛ	= "SELECT	*
	|	FROM
	|	$Регистр.Взаиморасчеты as Vzr";
	х = Ком.ВыполнитьИнструкцию(ТекстСКЛ);
	тзф.Загрузить(х);
 



Можно пробовать делать INSERT теперь
  
Наверх
ICQ  
IP записан
 
nop
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Местоположение: Украина, Харьков
Зарегистрирован: 14. Сентября 2011
Re: Как отредактировать движения документов по регистрам остатков?
Ответ #5 - 27. Сентября 2011 :: 08:59
Печать  
а почему так ничего не выбирает, х = 0, а описание ошибки пустое?

Код
Выбрать все
	RS		= СоздатьОбъект("ODBCRecordSet");
	RS.УстБД1С();
	ТекстСКЛ	= "SELECT	*
	|	FROM
	|	$Регистр.Взаиморасчеты as Vzr";
	х = RS.Выполнить(ТекстСКЛ);
	Сообщить(х);
	Сообщить(RS.ПолучитьОписаниеОшибки());
	RS.ПолучитьРезультатыВ_ТЗ(тзф)
 



ВыполнитьИнструкцию() и Открыть() ведут себя так же Печаль
  
Наверх
ICQ  
IP записан
 
nop
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Местоположение: Украина, Харьков
Зарегистрирован: 14. Сентября 2011
Re: Как отредактировать движения документов по регистрам остатков?
Ответ #6 - 27. Сентября 2011 :: 12:01
Печать  
надо было вот так
Код
Выбрать все
	ODBCDB		= СоздатьОбъект("ODBCDataBase");
	ODBCDB.ПрисоединитьИБ(КаталогИБ());

	RS		= СоздатьОбъект("ODBCRecordSet");
	RS.УстБД(ODBCDB);
	ТекстСКЛ	= "SELECT	*
	|	FROM
	|	$Регистр.Взаиморасчеты as Vzr";
	х = RS.ВыполнитьИнструкцию(ТекстСКЛ);
	RS.ПолучитьРезультатыВ_ТЗ(х);
	тзф.Загрузить(х);
 


+ скачать VFPODBC
Решение найдено на ODBCdatabase вообще работает с Provider=VFPOLEDB.1
  
Наверх
ICQ  
IP записан
 
nop
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Местоположение: Украина, Харьков
Зарегистрирован: 14. Сентября 2011
Re: Как отредактировать движения документов по регистрам остатков?
Ответ #7 - 27. Сентября 2011 :: 12:39
Печать  
а можно делать запрос, не зная имен колонок, а только по порядку?
например
Код
Выбрать все
	ТекстСКЛ	= "SELECT	 1	as [Контрагент $Справочник.Контрагенты]
	|	FROM
	|	$Регистр.Взаиморасчеты as Vzr";
 



вместо

Код
Выбрать все
	ТекстСКЛ	= "SELECT	 sp16782	as [Контрагент $Справочник.Контрагенты]
	|	FROM
	|	$Регистр.Взаиморасчеты as Vzr";
 


?


И как типизировать поле iddoc ?
Код
Выбрать все
	ТекстСКЛ	= "SELECT	iddoc	as [Регистратор $Документ.*]
	|	FROM
	|	$Регистр.Взаиморасчеты as Vzr";
 



В таком виде получаю State 42000, native 200, message [Microsoft][ODBC Visual FoxPro Driver]Syntax error.

А вот в таком как ни странно, получаю что хочу на первый взгляд, причем там не только БанковскаяВыписка, все типы решены
Код
Выбрать все
	ТекстСКЛ	= "SELECT	iddoc	as [Регистратор $Документ.БанковскаяВыписка]
	|	FROM
	|	$Регистр.Взаиморасчеты as Vzr";
 

  
Наверх
ICQ  
IP записан
 
nop
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Местоположение: Украина, Харьков
Зарегистрирован: 14. Сентября 2011
Re: Как отредактировать движения документов по регистрам остатков?
Ответ #8 - 28. Сентября 2011 :: 07:42
Печать  
пробовал типизировать регистратора так
Код
Выбрать все
	ТекстСКЛ	= "SELECT	 *	FROM $Регистр.Взаиморасчеты as Vzr
	|LEFT JOIN 1Sjourn  as X ON	Vzr.iddoc =  X.iddoc";
 


за 25 мин 4 Гб сожрано оперативы, прервал.
ЧЯДНТ ?
  
Наверх
ICQ  
IP записан
 
nop
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Местоположение: Украина, Харьков
Зарегистрирован: 14. Сентября 2011
Re: Как отредактировать движения документов по регистрам остатков?
Ответ #9 - 28. Сентября 2011 :: 08:35
Печать  
Удалось. Время выполнения хорошее, типизирует.  Очень довольный
Код
Выбрать все
	ТекстСКЛ	= "SELECT	 journ.iddoc as [Doc $Документ], journ.idDocDef AS Doc_Kind	FROM	$Регистр.Взаиморасчеты as Vzr
	|LEFT JOIN 1Sjourn as journ ON vzr.iddoc = journ.IDDOC";
 


Взято с Помогите с типизацией документа по журналу..., не могу понять как ее сделать
  
Наверх
ICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как отредактировать движения документов по регистрам остатков?
Ответ #10 - 29. Сентября 2011 :: 04:28
Печать  
тут
http://www.1cpp.ru/forumfiles/Attachments/mod_002.zip
и тут
http://www.1cpp.ru/forum/YaBB.pl?num=1148038411

большинство ответов на твои вопросы
  
Наверх
 
IP записан
 
nop
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Местоположение: Украина, Харьков
Зарегистрирован: 14. Сентября 2011
Re: Как отредактировать движения документов по регистрам остатков?
Ответ #11 - 29. Сентября 2011 :: 06:09
Печать  
Eprst писал(а) 29. Сентября 2011 :: 04:28:
тут
http://www.1cpp.ru/forumfiles/Attachments/mod_002.zip и тут http://www.1cpp.ru/forum/YaBB.pl?num=1148038411 большинство ответов на твои вопросы

Спасибо, очень хороший FAQ. Но теперь у меня другие проблемы (займусь после обеда). INSERT не удается.
Код
Выбрать все
	ТекстСКЛ	= "INSERT INTO	 $Регистр.Взаиморасчеты
	|	осрочки,Сумма,ВалСумма,НомПров)
	|	VALUES
	|	(?,?,?,?,?,?,?,?,?,?,?,?)
	|";
	RS.Подготовить(ТекстСКЛ);
				Пока Движения.ПолучитьСтроку() = 1 Цикл
					//rs.ДобПараметр(1, DBType, Len, Prec)
					rs.УстПараметр(1,тзДокИд.DocID);//ДокИД
					rs.УстПараметр(2,0);//НомСтрДок =
					rs.УстПараметр(3,Движения.НомерСтроки);//НомДвиж
					rs.УстПараметр(4,?(Движения.ПриходРасход="+", 0, 1));//ПриходРасход
					rs.УстПараметр(5,Движения.Контрагент);//Контрагагент
					rs.УстПараметр(6,Движения.БухСчет);//БухСчет
					rs.УстПараметр(7,Движения.Договор);//Договор
					rs.УстПараметр(8,Движения.Валюта);//Валюта
					rs.УстПараметр(9,ТекущаяДата());//ДатаПросрочки
					rs.УстПараметр(10,Движения.Сумма);//Сумма
					rs.УстПараметр(11,Движения.ВалСумма);//ВалСумма
					rs.УстПараметр(12,Движения.НомерПроводки);//НомПров
					Если RS.Выполнить(ТекстСКЛ) = 0 Тогда
						х = 0/0;
					КонецЕсли;
					Сообщить("ок");
				КонецЦикла;
 


ПостроитьПараметры() почему то возвращало 0, начал переделывать под ДобПараметр(), позднее продолжу
  
Наверх
ICQ  
IP записан
 
nop
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Местоположение: Украина, Харьков
Зарегистрирован: 14. Сентября 2011
Re: Как отредактировать движения документов по регистрам остатков?
Ответ #12 - 14. Октября 2011 :: 07:46
Печать  
Код
Выбрать все
	ODBCDB	= СоздатьОбъект("ODBCDataBase");
	ODBCDB.ПрисоединитьИБ(КаталогИБ());
	RS		= СоздатьОбъект("ODBCRecordSet");
	RS.УстБД(ODBCDB);	  //lineno,actno,debkred,sp16782,sp16783,sp16784,sp16852,sp16785,sp16853,sp16787
	ТекстСКЛ	= "INSERT INTO	 $Регистр.Взаиморасчеты
	|	осрочки,Сумма,ВалСумма,НомПров)
	|	VALUES
	|	(?,?,?,?,?,?,?,?,?,?,?,?)
	|";
	Сообщить("Подготовить: " + Строка(RS.Подготовить(ТекстСКЛ)));

	rs.ДобПараметр(1,	14, 21, 0);	//ДокИД
	rs.ДобПараметр(2,	14, 21, 0);//НомСтрДок =
	rs.ДобПараметр(3,	14, 21, 0);//НомДвиж
	rs.ДобПараметр(4,	14, 21, 0);//ПриходРасход
	rs.ДобПараметр(5,	14, 21, 0);//Контрагагент
	rs.ДобПараметр(6,	14, 21, 0);//БухСчет
	rs.ДобПараметр(7,	14, 21, 0);//Договор
	rs.ДобПараметр(8,	14, 21, 0);//Валюта
	rs.ДобПараметр(9,	14, 21, 0);//ДатаПросрочки
	rs.ДобПараметр(10,	14, 21, 0);//Сумма
	rs.ДобПараметр(11,	14, 21, 0);//ВалСумма
	rs.ДобПараметр(12,	14, 21, 0);//НомПров
...

				Движения.ВыбратьСтроки();
				Пока Движения.ПолучитьСтроку() = 1 Цикл

					rs.УстПараметр(1,тзДокИд.DocID);//ДокИД
					rs.УстПараметр(2,0);//НомСтрДок =
					rs.УстПараметр(3,Движения.НомерСтроки);//НомДвиж
					rs.УстПараметр(4,?(Движения.ПриходРасход="+", 0, 1));//ПриходРасход
					rs.УстПараметр(5,Движения.Контрагент);//Контрагагент
					rs.УстПараметр(6,Движения.БухСчет);//БухСчет
					rs.УстПараметр(7,Движения.Договор);//Договор
					rs.УстПараметр(8,Движения.Валюта);//Валюта
					rs.УстПараметр(9,ТекущаяДата());//ДатаПросрочки
					rs.УстПараметр(10,Движения.Сумма);//Сумма
					rs.УстПараметр(11,Движения.ВалСумма);//ВалСумма
					rs.УстПараметр(12,Движения.НомерПроводки);//НомПров
					Если RS.Выполнить(ТекстСКЛ) = 0 Тогда
						Сообщить(". " + rs.ПолучитьОписаниеОшибки());  // State HYC00, native 0, message [Microsoft][ODBC Visual FoxPro Driver]Driver not capable
						х = 0/0;
					КонецЕсли;
					Сообщить("ок");
				КонецЦикла;

 


Какого х#ра?? State HYC00, native 0, message [Microsoft][ODBC Visual FoxPro Driver]Driver not capable


Как вставить движения в регистр остатков? DBF
  
Наверх
ICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как отредактировать движения документов по регистрам остатков?
Ответ #13 - 14. Октября 2011 :: 07:53
Печать  
ага, зачет.
Фоксовый провайдер использовать вестимо.
  
Наверх
 
IP записан
 
nop
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Местоположение: Украина, Харьков
Зарегистрирован: 14. Сентября 2011
Re: Как отредактировать движения документов по регистрам остатков?
Ответ #14 - 14. Октября 2011 :: 08:01
Печать  
Eprst писал(а) 14. Октября 2011 :: 07:53:
ага, зачет.
Фоксовый провайдер использовать вестимо.


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