Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Заполнение базы 1С (+) / 3 сообщений из 3, страница 1 из 1
16.02.2004, 18:51
    #32410987
Равиль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение базы 1С (+)
Пытаюсь сделать процедуру для заполения пустой базы 1С операциями из своих таблиц.
Застрял на записи ссылок на справочники товаров и контрагентов в табличной части накладных.
В 1С - новичек. Смотрите сами:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
CLEAR ALL  
  PUBLIC goV77, goTovar, goKlient, m.baza  
  m.baza= "c:\progra~1 \1cv77\fox"  
    
  goV77 = CREATEOBJECT('V77.Application') && Создаем объект и получаем ссылку на него  
  IF TYPE( "goV77" )# "O"   
  	WAIT WINDOW  "! Не удалось создать Объект 1С"  NOWAIT  
  	CANCEL  
  ENDIF  
  =goV77.Initialize(goV77.RMTrade, '/D' +m.baza+' /M', '') && Открытие базы данных  
    
  goTovar =goV77.EvalExpr('CreateObject("Reference.Номенклатура")') && Ссылка на справочник номенклатуры  
    
  goKlient=goV77.EvalExpr('CreateObject("Reference.Контрагенты")') && Ссылка на справочник контрагентов  
    
  WITH goTovar && Заполнение номенклатуры  
  	.НоваяГруппа()  
  	.Наименование =  "Моя новая группа товаров"   
  	.Записать()  
  	.ИспользоватьРодителя(.ТекущийЭлемент)  
  	FOR I= 1  TO  3   
  		.new() && Новая запись  
  		.Наименование =  "Мой товар "  + STR(I)  
  		.Цена =  10  + I  
  		.Себестоимость =  9  + I  
  		.Записать()  
  	ENDFOR  
  ENDWITH  
    
  WITH goKlient && Заполнение клиентуры  
  	FOR I= 1  TO  3   
  		.new() && Новая запись  
  		.ИНН =  "1234567890 " + ALLTRIM(STR(I))  
  		.Наименование =  "Мой Клиент "  + STR(I)  
  		.ПолнНаименование =  "Мой Клиент (полностью)"  + STR(I)  
  		.Записать()  
  	ENDFOR  
  ENDWITH  
    
  RELEASE goTovar, goKlient, goV77  && Выгрузка объектов  
 *******************************************************  
 *************** После выгрузки 1С *********************  
  CLOSE ALL  
  SET DEFAULT TO (m.Baza)  
  SELECT  0   
 ** Все же выгрузка занимает некоторое время ...  
 ** Нужно проверять освобождение 1С перед попыткой открытия ее таблиц  
  PUBLIC m.N_ACCESS  
  m.n_ACCESS= 0   
  ON ERROR DO Oshibki WITH ERROR()  
    
  USE SC656 && Таблица Номенклатура - проставляю тип= "Товар"  и ЕдИзм= "шт"   
  REPLACE ALL ;  
  	sp3804 WITH  "   2XJ" , ;  
  	sp2826 WITH  "     G"  ;  
  	FOR IsFolder# 1  NOOPTIMIZE && Эти коды определял экспериментально, что не есть хорошо !!  
  USE IN SC456  
    
  USE SC488 && Таблица Клиентура - проставляю тип= "Организация"   
  REPLACE ALL ;  
  	sp489 WITH  "    DI"  NOOP  
    
  CLOSE ALL  
  ON ERROR  
    
 ** После обработки справочников снова открываем 1С для создания операций  
  PUBLIC goV77, goDOC  
  goV77 = CREATEOBJECT('V77.Application') && Создаем объект и получаем ссылку на него  
  IF TYPE( "goV77" )# "O"   
  	WAIT WINDOW  "! Не удалось создать Объект 1С"  NOWAIT  
  	CANCEL  
  ENDIF  
  =goV77.Initialize(goV77.RMTrade, '/D' +m.baza+' /M', '') && Открытие базы данных  
  goDOC=goV77.EvalExpr('CreateObject("Документ.ПоступлениеТоваров")') && Создаем ПН  
  WITH goDoc  
  	FOR m.i= 1  TO  3   
  		.New()  
  		.DocNum= "ПН" +ALLTRIM(STR(m.i))  
  		.DocDate=DATE()- 30 +m.i  
 		**.Контрагент= "00000 "+ALLTRIM(STR(m.i)) && Эти варианты явно не катят  
 		**.Контрагент=PADL(ALLTRIM(STR(m.i)), 6 ) &&   
  		FOR m.k= 1  TO  3  && по  3  записи в каждой накладной  
  			.NewLine()  
 			**.Товар= "00000 "+ALLTRIM(STR( 4 +m.i)) && То же самое  
 			**.Товар=PADL(ALLTRIM(STR(m.i+ 4 )), 6 )  
  			.Количество= 10 *m.i  
  			.Цена=m.i  
  			.Сумма=.Количество*.Цена  
  			.Всего=.Количество*.Цена  
  			.НДС=ROUND(.Сумма* 18 /( 100 + 18 ), 2 ) && НДС в том числе  
  		NEXT  
  		.Write()   
  	NEXT  
  ENDWITH  
    
  RELEASE goDOC, goV77  && Выгрузка объектов  
 *******************************************  
    
  PROCEDURE OSHIBKI  
 	******************************************  
  	LPARAMETERS m.merror  
    
  	DO CASE  
    
  		CASE m.merror= 1705  OR m.merror= 109  OR m.merror= 111  OR m.merror= 108  OR m.merror= 101  && OR m.merror= 3   
 			** Проблемы при открытии и записи в таблицы  
  			m.N_ACCESS=m.n_ACCESS+ 1   
  			WAIT WINDOW  ".. Ожидание освобождения таблицы .. " +STR(m.n_ACCESS)+ "%"  TIMEOUT  0 . 1   
  			IF m.N_ACCESS< 100   
  				RETRY  
  			ELSE  
  				WAIT WINDOW  ".. Продолжение работы невозможно .. Файл заблокирован .."  NOWA  
  				CANCEL  
  			ENDIF  
  	ENDCASE

Справочники и операции реально создаются, но не определяются ссылки (не знаю как) на элементы справочников.
...
Рейтинг: 0 / 0
22.02.2004, 20:52
    #32418130
rst
rst
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение базы 1С (+)
Если уж заполняешь так
- т.е. код заполняется автоматом - оставь себе информацию о созданном коде элемента..
Потом при заполнении таблички делаешь так (привожу без обертки 1c код):
Код: plaintext
1.
2.
3.
4.
5.
спр=создатьобъект( "Справочник.Контрагент" );
// тут цикл начался ..
if спр.найтипокоду(КОД)= 0  then
//ERROR!
endif;
Накладная.Товар=спр.текущийэлемент();
...
Рейтинг: 0 / 0
24.02.2004, 09:22
    #32418850
Равиль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение базы 1С (+)
rst, спасибо, так и сделал.
При заполнении справочников 1С генерируемые ею коды запоминал в специальном поле своих справочников.
Хоть и сам до этого дошел, еще раз убедился, что двигаюсь в нужном направлении :)
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Заполнение базы 1С (+) / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]