|
Создание документа 1С77 из 1С8 используя внешние источники данных | ☑ | ||
---|---|---|---|---|
0
woha
16.03.16
✎
20:00
|
Помогите, пожалуйста, с созданием документа 1С77 из базы 1С8 не используя OLE. Таблицы базы 1С77 подключены к 1С8 как внешние источники данных. Сложность в том, что за документ отвечают три таблицы (общий журнал документов, таблица шапки и табличной части). Спасибо.
|
|||
1
vip03
17.03.16
✎
04:17
|
в чем сложность?
1. пишешь в журнал. 2. пишешь заголовок документа. 3. пишешь ТЧ документа. |
|||
2
VladZ
17.03.16
✎
05:23
|
(0)
Вcемирный конгресс врачей. На трибуне американский врач: - Мы научились лечить СПИД! Аплодисменты, крики... На трибуне японский врач: - Мы научились предотвращать инфаркты! Крики, аплодисменты На трибуне русский врач: - А мы научились удалять гланды! В зале недоумении, шум. Русский продолжает: - Через ж0пу. Автогеном... |
|||
3
VladZ
17.03.16
✎
05:33
|
Варианты решений:
1. В глобальном модуле 7.7 делаем глобальную процедуру формирования нужных документов по нужным параметрам. Через Оле запускаем и формируем. Получается, что на стороне 8ки будет только запуск (ну и параметры какие-то нужно передать). Само формирование будет на стороне 7.7. 2. Если религия не позволяет использовать Оле: делаем промежуточную базу данных (допустим на SQL). Из 8ки туда пишем. На стороне 7.7 периодически запускаем робота и формируем нужные документы по данным нашей новой БД. И волки сыты и в колодец никто не наплевал! :) |
|||
4
PuhUfa
17.03.16
✎
06:45
|
(3) Зачем лишнюю базу? можно просто xml выгружать а 77 будет ее всасывать потом
|
|||
5
VladZ
17.03.16
✎
06:58
|
(4) Можно и так
|
|||
6
Rie
17.03.16
✎
07:33
|
(1) Сложность будет в п. 1 "пишешь в журнал".
|
|||
7
Mikeware
17.03.16
✎
07:39
|
а что, внешние источники данных научились и писать? не знал....
(6) да и тут сложности нет - залочил журнал, нашел максимальный ид по своему узлу распределенки (ну, или вызвал хранимку), записал хотя б пустышку с этим идом, разлочил. Ну а потом - пиши во все три таблицы |
|||
8
HawkEye
17.03.16
✎
08:08
|
(0) пожалуйста, пиши еще.
|
|||
9
woha
17.03.16
✎
08:25
|
(7) можно "да и тут сложности нет - залочил журнал, нашел максимальный ид по своему узлу распределенки (ну, или вызвал хранимку), записал хотя б пустышку с этим идом, разлочил. Ну а потом - пиши во все три таблицы" поподробней?
|
|||
10
Rie
17.03.16
✎
08:27
|
(7) Те, для кого это не сложно - не задают подобных вопросов.
|
|||
11
Rie
17.03.16
✎
08:29
|
(9) Что именно непонятно?
У документов есть первичный ключ IDDOC. Его надо создать. Уникальный. И такой, чтобы при виде его 1С не пришла в ужас. Данные документов хранятся в трёх таблицах - _1SJOURN, DH*, DT*. |
|||
12
Rie
17.03.16
✎
08:30
|
Для РИБ надо ещё записать документ для выгрузки (если это надо).
|
|||
13
Rie
17.03.16
✎
08:32
|
Другое непонятно. Есть ведь штатные способы интеграции - OLE, КД и т.д. Зачем при этом обязательно на лыжах и в гамаке?
|
|||
14
Mikeware
17.03.16
✎
08:54
|
(10) согласен. Но плох тот чайник, который не мечтает стать самоваром.
(12) при проведении система сама распределит по правилам миграции. (13) прямое создание - гораздо быстрее, чем оле. и синхронно, в отличие от кд и прочих. Хотя согласен насчет некоторой специфичнности данного вида секса... |
|||
15
woha
17.03.16
✎
09:00
|
(11) Как создать уникальный ключ?
|
|||
16
vip03
17.03.16
✎
09:06
|
(15) в DH ищешь максимальный ИД и прибавляешь к нему 1
если РИБ + префикс базы |
|||
17
vip03
17.03.16
✎
09:07
|
да. 1с хранит ид в 36 формате.
|
|||
18
Mikeware
17.03.16
✎
09:11
|
Функция ВернутьНовыйИдОбмена() Экспорт
НовыйИд=ЗапросСКЛ.ВыполнитьСкалярный("select ltrim(dbo.convert10to36(max(dbo.convert36to10(left (iddoc,6)))+1)+'CB ') from _1sjourn "); Возврат НовыйИд; КонецФункции |
|||
19
woha
17.03.16
✎
09:16
|
(16) (17) (18) Спасибо, попробую.
|
|||
20
Ёпрст
17.03.16
✎
09:17
|
(18) проще уж через sqllock + НовыйИД()
|
|||
21
woha
17.03.16
✎
09:17
|
(20) это как?
|
|||
22
Ёпрст
17.03.16
✎
09:17
|
Хотя, для снеговика, ему всё равно придётся делать это руками
|
|||
23
woha
17.03.16
✎
09:17
|
exec sp_executesql N'Insert into _1SJOURN values( P1,@P2,@P3,@P4,@P5,@P6,@P7,@P8,@P9,P10,P11,P12,P13,P14,P15,P16,P17,P18,P19,@P20,@P21,@P22,@P23,@P24,@P25,@P26,@P27,@P28,@P29,@P30,@P31,@P32,@P33,@P34,@P35,@P36,@P37,@P38,@P39,@P40)', N'P1 int,@P2 varchar(9),@P3 int,@P4 smallint,@P5 varchar(23),@P6 varchar(18),@P7 varchar(20),@P8 tinyint,@P9 bit,P10 int,P11 int,P12 bit,P13 bit,P14 bit,P15 bit,P16 bit,P17 bit,P18 bit,P19 bit,@P20 bit,@P21 bit,@P22 bit,@P23 bit,@P24 bit,@P25 bit,@P26 bit,@P27 bit,@P28 bit,@P29 bit,@P30 bit,@P31 bit,@P32 bit,@P33 bit,@P34 varchar(9),@P35 varchar(9),@P36 varchar(50),@P37 tinyint,@P38 tinyint,@P39 tinyint,@P40 tinyint', 0, ' 8XYCUOFC', 7671, 1, '2016031676IEV4 8XYCUOFC', ' 76712016 ', '88565819 ', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ' 0 ', ' 0 ', ' ', 0, 0, 0, 0
я так понимаю это инсерт в таблицу журнала |
|||
24
Mikeware
17.03.16
✎
09:24
|
(19) учти, что "CB " в (18) - это ид текущего узла рбд. если распределенки нет, тогда проще
Функция ВернутьНовыйИд() Экспорт НовыйИд=ЗапросСКЛ.ВыполнитьСкалярный("select ltrim(dbo.convert10to36(max(dbo.convert36to10(iddoc))+1)) from _1sjourn "); Возврат НовыйИд; КонецФункции |
|||
25
Ёпрст
17.03.16
✎
09:25
|
(24) ааа.. ща спросит еще, где текст хранимки convert10to36
) |
|||
26
Mikeware
17.03.16
✎
09:28
|
(25) мля...
|
|||
27
woha
17.03.16
✎
10:24
|
(24) "НовыйИд=ЗапросСКЛ.ВыполнитьСкалярный("select ltrim(dbo.convert10to36(max(dbo.convert36to10(iddoc))+1)) from _1sjourn "); "
без оле чем это можно выполнить? |
|||
28
Ёпрст
17.03.16
✎
10:26
|
(27) ado
|
|||
29
Ёпрст
17.03.16
✎
10:26
|
и.. в (24) нет оле, если что
|
|||
30
ДенисЧ
17.03.16
✎
10:29
|
(28) А что, адо это уже не оле? )))
|
|||
31
Mikeware
17.03.16
✎
10:35
|
(27) возьми сам текст запроса, да выполни..
|
|||
32
woha
17.03.16
✎
11:02
|
(31) Спасибо
|
|||
33
Mikeware
17.03.16
✎
11:10
|
(32) взлетело?
|
|||
34
woha
17.03.16
✎
13:42
|
(33) еще руки не дошли. как только доделаю, то обязательно отпишусь как сделал.
|
|||
35
woha
17.03.16
✎
13:44
|
(3) Все это должно работать в веб-клиенте, а оле у меня не под ним не заработало. К тому же оле 1С77 не сериализуется. Нужно постоянно инициализировать при каждом новом вызове сервера.
|
|||
36
mistеr
17.03.16
✎
13:48
|
(35) На сервере это должно работать, а не в веб-клиенте.
|
|||
37
woha
17.03.16
✎
13:50
|
немного опишу суть всего. имеется база 1С77 в которой создают заказы и происходят отгрузки. нужно сделать возможность удаленного создания заказов с контролем свободных остатков. 1С8 выполняет роль веб-клиента, которая берет данные из (внешние источники данных) 1С77 и в результате должна записать в 1С77 готовый заказ и сделать это как можно быстрее (информация по остаткам оперативно меняется).
|
|||
38
Serginio1
17.03.16
✎
13:53
|
(37) Есть вариант обмена через TCP/IP.
http://catalog.mista.ru/public/238584/ |
|||
39
mistеr
17.03.16
✎
13:54
|
(37) RDP не проще ли настроить?
|
|||
40
woha
17.03.16
✎
13:58
|
(39)на удаленной машине запускается только одно приложение написанное на java и больше никакого интерфейса.
|
|||
41
Serginio1
17.03.16
✎
14:02
|
(40) А зачем тебе 8 ка, если ты можешь на java написать Вэб сервис или HTTP клиента?
|
|||
42
Serginio1
17.03.16
✎
14:06
|
(40) Проще завести сервер терминалов. Дешевле будет.
|
|||
43
Mikeware
17.03.16
✎
14:22
|
(38) через TCP/IP - NetaInet и Rik_SQL прекрасно работают
|
|||
44
Serginio1
17.03.16
✎
14:35
|
(43) Дя я не против. Пусть использует, что хочет. Хоть Вэб сокеты. Только для его задачи проще использовать RDP
|
|||
45
Garykom
гуру
17.03.16
✎
14:41
|
(37) а может все таки изучить 1С 7.7 ? и внешнюю обработку к ней наваяти?
|
|||
46
woha
17.03.16
✎
16:21
|
(44) не запустится на удаленной машине RDP
|
|||
47
Serginio1
17.03.16
✎
21:30
|
(46) Это смотря как настроишь. Тут куча народу предпочитают терминальные сессии вместо вэб клиента
|
|||
48
Лефмихалыч
17.03.16
✎
21:49
|
(0) добавь в условия еще: "это надо делать ночью на болоте, стоя в гамаке с аквалангом" и пасьянс сойдется.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |