Переключение на Главную Страницу Страницы: 1 ... 14 15 [16] 17 18 19 ОтправитьПечать
Очень популярная тема (более 25 ответов) Движения одного документа у другого (число прочтений - 71753 )
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Движения одного документа у другого
Ответ #225 - 23. Апреля 2010 :: 13:23
Печать  
Z1 писал(а) 23. Апреля 2010 :: 12:27:
счетчик только по регистрам

и периодическим (_1sconst)
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Движения одного документа у другого
Ответ #226 - 23. Апреля 2010 :: 13:25
Печать  
alexdd писал(а) 23. Апреля 2010 :: 13:23:
Z1 писал(а) 23. Апреля 2010 :: 12:27:
счетчик только по регистрам

и периодическим (_1sconst)

Могу проверить. Может напишешь здесь как их надо двигать в документе а то я не помню синтаксиса по ним.
  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Движения одного документа у другого
Ответ #227 - 23. Апреля 2010 :: 13:40
Печать  
Улыбка

УстановитьРеквизитСправочника(<?>,,,,,,);
Синтаксис:
>,<ДатаУстановки>,<ИмяТипа>,<Длина>,<Точность>)
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Движения одного документа у другого
Ответ #228 - 23. Апреля 2010 :: 13:58
Печать  
alexdd писал(а) 23. Апреля 2010 :: 13:23:
Z1 писал(а) 23. Апреля 2010 :: 12:27:
счетчик только по регистрам

и периодическим (_1sconst)

Переодичские значения справочников учитываются в общем количестве движений
Вот модуль проведения
Код
Выбрать все
Процедура ОбработкаПроведения()
	Спр1 = СоздатьОбъект("Справочник.Скидка");
	ФлСкидка =Спр1.НайтиПоКоду("1",0);
	Если ФлСкидка <= 0 Тогда
		Сообщить("ОШИБКА Не нашли элемент скидка !!!");
	КонецЕсли;
	ВыбратьСтроки();
	Пока ПолучитьСтроку() = 1 Цикл
		Если ПустоеЗначение(Товар) = 1 Тогда Продолжить; КонецЕсли;
		Операция.НоваяПроводка();
		Операция.Дебет.Счет =СчетПоКоду("00");
		Операция.Кредит.Счет =СчетПоКоду("41");
		Операция.Кредит.Товары =Товар;
		Операция.Сумма = Сумма;
		Операция.Количество = Колво;
		//Предупреждение("Ждем !!!");

		Регистр.ОстаткиТоваров.Товар = Товар;
		Регистр.ОстаткиТоваров.Колво = Колво;
		Регистр.ОстаткиТоваров.ДвижениеПриходВыполнить();
		Если НомерСтроки = 2 Тогда
			Если ФлСкидка  > 0 Тогда
				УстановитьРеквизитСправочника(Спр1.ТекущийЭлемент(),"ЦенаСкидки",777,,,,);
			КонецЕсли;

			Регистр.ОстаткиТоваров.Товар = Товар;
			Регистр.ОстаткиТоваров.Колво = Колво * 100;
			Регистр.ОстаткиТоваров.ДвижениеПриходВыполнить();
		КонецЕсли;

	КонецЦикла;			  
	Операция.Записать();
КонецПроцедуры
 



В документе две строки
после проведения в RA
iddoc  lineno_ actno debkred    Товар колво
1        0         1       0              
1        0         2       0
1        0         4       0

В таблице _1sjourn у этого документа
поле  actcnt = 4

В таблице _1sconst
docid = 1  actno = 3  lineno_ = 0

Так что придеться менять обработку чтобы это учесть

Сейчас запустил на этой базе обработку 1.9.03
правильное проведение воспринялось как неправильное потому что сейчас нет учета переодических элементов двигаемых документом.


запустил на этой базе обработку 1.9.04
Все правильно отрабатывается


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


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Движения одного документа у другого
Ответ #229 - 28. Апреля 2010 :: 05:10
Печать  
noxxx писал(а) 23. Апреля 2010 :: 12:13:
1.9.03 - также не работает. Ошибка - "Arithmetic overflow error converting expression to data type int."
Документы двигают регистры и делают бух. проводки.

Ну что удалось что нибудь сделать с базой ?
Бери последнюю версию 1.9.05 ( в ней учтены замечания и добавлены новые контроли пункт 7 значительно расширен ).

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


1c++ rocks 8)

Сообщений: 239
Местоположение: Москва
Зарегистрирован: 24. Августа 2007
Пол: Мужской
Re: Движения одного документа у другого
Ответ #230 - 28. Апреля 2010 :: 05:46
Печать  
Прошу прощения за задержки с ответами.
Сделал в чистой базе две строки в документе - обработка отработала верно.
Запустил 1.9.05:
7.1 Ок
7.2 Ок
7.3 - 25 ошибок. Преобладают в основном документы "Закрытие месяца". Что это и как это лечить?
7.4 - как и в прошлый раз выдает ошибку.
  
Наверх
ICQ  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Движения одного документа у другого
Ответ #231 - 28. Апреля 2010 :: 06:00
Печать  
Для одного документа где выдает ошибки выведи здесь все ACTNO
всех движений этого документа.

для 7.4 либо сюда запиши точно какая ошибка либо сюда ошибку помести через  картинку. Даже не представляю как такое может быть.
  
Наверх
 
IP записан
 
noxxx
Full Member
***
Отсутствует


1c++ rocks 8)

Сообщений: 239
Местоположение: Москва
Зарегистрирован: 24. Августа 2007
Пол: Мужской
Re: Движения одного документа у другого
Ответ #232 - 28. Апреля 2010 :: 06:28
Печать  
Для одного из документов (двигает только периодические реквизиты) Перемещение ОС:

Код
Выбрать все
all_iddoc	all_actno
  GXTTCEN	27
  GXTTCEN	28
  GXTTCEN	29
  GXTTCEN	30
  GXTTCEN	31
  GXTTCEN	32
  GXTTCEN	33
  GXTTCEN	34
  GXTTCEN	35
  GXTTCEN	36
  GXTTCEN	37
  GXTTCEN	38
  GXTTCEN	39
  GXTTCEN	53
  GXTTCEN	54
  GXTTCEN	55
  GXTTCEN	56
  GXTTCEN	57
  GXTTCEN	58
  GXTTCEN	59
  GXTTCEN	60
  GXTTCEN	61
  GXTTCEN	62
  GXTTCEN	63
  GXTTCEN	64
  GXTTCEN	65
 



Для другого - Расходный кассовый ордер (регистры+проводки):
Код
Выбрать все
all_iddoc	all_actno
  JEJPCEN	1
  JEJPCEN	3
  JEJPCEN	2
  JEJPCEN	1
  JEJPCEN	2
  JEJPCEN	3
 




Когда делаем 7.4, обработка говорит:
Код
Выбрать все
Не смогли выполнить запрос для рег = select  * from (
select  all_iddoc,sum(all_actno)as val0 ,min(all_actno) as val1, max(all_actno) as val2 ,( (max(all_actno) + min(all_actno))*(max(all_actno) - min(all_actno) + 1 )/2  -sum(all_actno) ) as val3   from (
select docid as all_iddoc, actno  as all_actno from _1sconst  where docid <> '     0   '
union all
select iddoc , actno from ra3887
union all
select iddoc , actno from ra3906
union all
select iddoc , actno from ra17104
union all
select iddoc , actno from ra3824
union all
select iddoc , actno from ra4001
union all
select iddoc , actno from ra4198
union all
select iddoc , actno from ra16558
union all
select iddoc , actno from ra4202
union all
select iddoc , actno from ra17080
union all
select iddoc , actno from ra15078
union all
select iddoc , actno from ra15141
union all
select iddoc , actno from ra16658
union all
select iddoc , actno from ra16665
union all
select iddoc , actno from ra17196
union all
select iddoc , actno from ra21375
union all
select iddoc , actno from ra32778
union all
select iddoc , actno from ra32794
union all
select iddoc , actno from ra32806
union all
select iddoc , actno from ra32812
union all
select iddoc , actno from ra32817
union all
select iddoc , actno from ra37038
union all
select iddoc , actno from ra38919
union all
select iddoc , actno from ra38973
union all
select iddoc , actno from ra39168
union all
select iddoc , actno from ra39181
union all
select iddoc , actno from ra39498
union all
select iddoc , actno from ra39822
union all
select iddoc , actno from ra40276
union all
select iddoc , actno from ra40323
 ) as x1 group by all_iddoc
) as x2
 inner join _1sjourn on _1sjourn.iddoc = x2.all_iddoc
 and  x2.val3 <> 0 



Если этот код выполнить в консоли запросов, в ответ получаем " State 22003, native 8115, message [Microsoft][ODBC SQL Server Driver][SQL Server]Arithmetic overflow error converting expression to data type int."
  
Наверх
ICQ  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Движения одного документа у другого
Ответ #233 - 28. Апреля 2010 :: 06:45
Печать  
для пункта 7.4 в qa попробуй
вместо
(max(all_actno) + min(all_actno))*(max(all_actno) - min(all_actno) + 1 )/2

поставить
cast ( (max(all_actno) + min(all_actno))*(max(all_actno) - min(all_actno) + 1 )/2  as int)
  
Наверх
 
IP записан
 
noxxx
Full Member
***
Отсутствует


1c++ rocks 8)

Сообщений: 239
Местоположение: Москва
Зарегистрирован: 24. Августа 2007
Пол: Мужской
Re: Движения одного документа у другого
Ответ #234 - 28. Апреля 2010 :: 06:48
Печать  
Z1 писал(а) 28. Апреля 2010 :: 06:45:
для пункта 7.4 в qa попробуй
вместо
(max(all_actno) + min(all_actno))*(max(all_actno) - min(all_actno) + 1 )/2

поставить
cast ( (max(all_actno) + min(all_actno))*(max(all_actno) - min(all_actno) + 1 )/2  as int)


То же самое
  
Наверх
ICQ  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Движения одного документа у другого
Ответ #235 - 28. Апреля 2010 :: 06:52
Печать  
А что происходит если проверки запустить на переф базе ?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Движения одного документа у другого
Ответ #236 - 28. Апреля 2010 :: 06:55
Печать  
для all_iddoc      all_actno
  JEJPCEN      1
  JEJPCEN      3
  JEJPCEN      2
  JEJPCEN      1
  JEJPCEN      2
  JEJPCEN      3
добавь еще lineno_
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Движения одного документа у другого
Ответ #237 - 28. Апреля 2010 :: 07:02
Печать  
Ситуацию как в #236 я у себя смоделировал так
У документа две строки
                      ACTNO  LINENO_
Движ1  + 10     1            1
Движ1  + 15     2            2
Добавил текст в модуль проведения
           
           Колво_Х = Колво_Х + 1;
           ПривязыватьСтроку(НомерСтроки);
           Если Колво_Х = 2 Тогда
                 Сообщить("12345 777 Отменяем Транзакцию !!!");
                 rc = СоздатьОбъект("ODBCRecordSet");
               rc.ВыполнитьСкалярный("rollback");
                 ПривязыватьСтроку(НомерСтроки + 100); // Без этой строки 1с валиться на уникальности индекса по таблице ra primary key
           КонецЕсли;
               Сделал движение

После этого получил в ra
                      ACTNO  LINENO_
Движ1  + 10     1            1
Движ1  + 15     2            2
Движ1  + 15     2            102

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

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


1c++ rocks 8)

Сообщений: 239
Местоположение: Москва
Зарегистрирован: 24. Августа 2007
Пол: Мужской
Re: Движения одного документа у другого
Ответ #238 - 28. Апреля 2010 :: 07:11
Печать  
Z1 писал(а) 28. Апреля 2010 :: 06:55:
для all_iddoc      all_actno
 JEJPCEN      1
 JEJPCEN      3
 JEJPCEN      2
 JEJPCEN      1
 JEJPCEN      2
 JEJPCEN      3
добавь еще lineno_


Код
Выбрать все
docid	actno	lineno_
  JEJPCEN	1	0
  JEJPCEN	3	0
  JEJPCEN	2	0
  JEJPCEN	1	0
  JEJPCEN	2	0
  JEJPCEN	3	0
 

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


1c++ rocks 8)

Сообщений: 239
Местоположение: Москва
Зарегистрирован: 24. Августа 2007
Пол: Мужской
Re: Движения одного документа у другого
Ответ #239 - 28. Апреля 2010 :: 07:14
Печать  
Z1 писал(а) 28. Апреля 2010 :: 07:02:
Т.е. roolback вернул старые движения и так как модуль не остановился то добавилось еще и движение по второй строке.
в rg после этого естественно мусор по этим измерениям начиная с периода документа.


Этот роллбэк откуда берется, если его нет в модуле?
Сейчас запустил на периферийной базе обработку - посмотрим что скажет там.
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 14 15 [16] 17 18 19
ОтправитьПечать