Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Выполнение Java script на сервере apache (Tomcat) из 1С

Выполнение Java script на сервере apache (Tomcat) из 1С
Я
   SuperMario
 
17.10.19 - 11:23
Всем привет!
Вот такая нестандартная задачка мне прилетела.
Заказчик просит силами 1С выгрузить в учетную систему данные по актам списания.
В PAI интерфейсе этой системы нет метода на данный вид документа.

Но в недрах самого сервера нашёл  jsp файл, в котором из csv файла можно загрузить эти акты.

private WriteoffDocument createWriteOffDocument(TableDataReader csvReader)
            throws IOException, ParseException {
            Properties row = csvReader.readRow();
            WriteoffDocument writeoffDocument =
                new WriteoffDocument(getDocumentNumber(DocumentType.WRITEOFF_DOCUMENT),
                    getDateIncoming(), getStore(), getAccount(true));
            String[] headers = csvReader.getHeader();
            while (row != null) {
                Product product =
                    getProduct(row.getProperty(headers[HEADER_ART]), row.getProperty(headers[HEADER_NAME]));
                if (product == null) {
                    row = csvReader.readRow();
                    continue;
                }
                BigDecimal amount = getAmount(row.getProperty(headers[HEADER_AMOUNT]));
                // TODO добавить поддержку размеров блюд ProductSize
                WriteoffDocumentItem item = writeoffDocument.addItem(product,
                    ProductSizeConstants.DEFAULT_PRODUCT_SIZE,
                    ProductSizeConstants.DEFAULT_AMOUNT_FACTOR,
                    amount);
                MeasureUnit amountUnit = getMeasureUnit(row.getProperty(headers[HEADER_UNITS]));
                checkUnitError(item, amountUnit);

                row = csvReader.readRow();
            }
            return writeoffDocument;



Вышеуказанным кодом можно воспользоваться из 1С?

Для интеграции с данной систему использую HTTP соединение.
Получаю ключ
и составляю get /post запросы с опред. параметрами подписывая их этим ключом.
В ответ получаю состояние выполнения
Если это get , то в теле ответа нужная мне инфа в виде xml или Json.
 
 
   Garikk
 
1 - 17.10.19 - 11:51
учитывая постановку задачи и ваши вопросы, правильный ответ: наймите специалиста
   Garykom
 
2 - 17.10.19 - 11:54
Разве это не форум об аниме (зачеркнуто) lsFusion?
   SuperMario
 
3 - 17.10.19 - 11:57
(1) понимаю.
Сам себе голову об коленку сломал.
   Garikk
 
4 - 17.10.19 - 12:14
(3) ничего особо сложного в вашей задаче нет, но она нерешаема в рамках форума путем 'советов'

p.s. ещё как минимум потому что язык у вас ещё и не javascript, а просто java
   fisher
 
5 - 17.10.19 - 12:15
Это не js, это java.
И этот метод лишь кусок того, что тебе надо в итоге.
Короче, если во внешнем API не предусмотрено, тады ой.
Ну или можешь каким-нить stunnel настроить прямой доступ в базу системы заказчика и курочить им там все направо и налево :)
   Garykom
 
6 - 17.10.19 - 12:17
(0) iiko ?
   Garikk
 
7 - 17.10.19 - 12:18
(6) iiko же вроде на C# была? (или переписали?)
   Garykom
 
8 - 17.10.19 - 12:19
(7) А что с блюдами и актами списания на java знаешь?
   SuperMario
 
9 - 17.10.19 - 12:21
(6) в точку!
   SuperMario
 
10 - 17.10.19 - 12:24
(5) не получится.
У iiko ,при запуске сервера, все документы, которые попадают по дате в период редактирования, выгружаются в память.
И на SQL запись происходит по мене накопления событий на изменение данных.

Т.о. если я в таблицы запишу эти документы, то сервер их тупо не увидит (придется его перезапускать постоянно)
   SuperMario
 
11 - 17.10.19 - 12:24
(7) нет. На Java она вся насквозь и до сих пор на ней
   Garykom
 
12 - 17.10.19 - 12:31
(9) Нехрен закрытую проприетарную гадость покупать.
Взяли бы 1С и горя не знали ))
   SuperMario
 
13 - 17.10.19 - 12:33
(12) согласен.
Но, как в том кино про Шурика: "красть ничего не надо. Все украдено уже до вас" ))
   SuperMario
 
14 - 17.10.19 - 12:34
(12) уходим по чуть с этого софта.
А пока приходится грызть этот кактус
   fisher
 
15 - 17.10.19 - 12:36
(12) Хм... А насколько она закрытая, как для джавы? Может все-таки ендпоинты там не проблема допилить?
   Garykom
 
16 - 17.10.19 - 12:39
(15) Не проблема только задолбаешься изучать где, что и главное как правильно допилить.
По дефолту оно умеет выгружать в 1С, а вот загружать из 1С (как впрочем и других внешних) почти не умеет.
   Garikk
 
17 - 17.10.19 - 12:40
(11) хмм..помню в 2011 гдето году её ставил, там везде .net был и ошибки дотнетовские
   fisher
 
18 - 17.10.19 - 12:41
(16) Ясно
(14) Сдается мне, что кто-нить знакомый с джавовским стеком не понаслышке, сможет покопавшись под капотом этого драндулета прикрутить нужную ручку, которую ты сможешь дергать из 1С.
   Garykom
 
19 - 17.10.19 - 12:54
(18) >покопавшись под капотом этого драндулета прикрутить нужную ручку, которую ты сможешь дергать из 1С

Как думаешь какой будет ценник на такого знакомого? Который без знания предметки полезет?
   Garykom
 
20 - 17.10.19 - 12:56
Имхо я бы напрямую в БД менял.

Делаем снимок базы, добавляем документу "акт списания" с одной-двумя строчками  и снова делаем снимок базы.
Изучаем что поменялось, важно чтоб больше никаких операций не было.
   Garykom
 
21 - 17.10.19 - 12:59
(20)+ Хотя лучше сначала документу с одной строчкой, снимок, затем еще одну строчку добавляем и снова снимок базы.
Т.е. увидеть разницу между одно и второй строчкой в каких таблицах оно.
   Cyberhawk
 
22 - 17.10.19 - 13:01
"интерфейсе этой системы нет метода" // На нет и суда нет
   SuperMario
 
23 - 17.10.19 - 14:19
(20) прочти (10)
>>Т.о. если я в таблицы запишу эти документы, то сервер их тупо не увидит (придется его перезапускать постоянно)
   Garykom
 
24 - 17.10.19 - 14:34
(23) Должен быть код который заставляет перечитать документы из базы.
Вот его уже как то дергать.
   SuperMario
 
25 - 17.10.19 - 14:34
+(23)  у сервера в файле Resto.Propertis 
есть строка 
db-period-length-days=40

он при старте ее прочитывает и выгружает в оперативку все доку менты текущей датой до -40 дней давности.

И далее к чтению данных с SQL не обращается. Он только пишет в него.
Читать начинает только если в отчете выбрали период >40 дней.
   Garykom
 
26 - 17.10.19 - 14:36
(25) Чушь это, такого не может быть если разрабы iiko не полные дятлы.
Потому что документов может быть тупо больше чем влезет в оперативку.

Другой вопрос что может держать ссылки на документы но не все их содержимое (тогда оперативки на много хватит доков).
Тогда вручную создаем документ, меняем его в базе и профит.
   SuperMario
 
27 - 17.10.19 - 14:45
>>Другой вопрос что может держать ссылки на документы
Может и так. Я подробностей не знаю.
В самой iiko нам говорили, что типа этот период он выгружает и держит в оперативе для быстроты работы.
А реально объект это или ссылки , не отвечу.
   SuperMario
 
28 - 17.10.19 - 14:52
(26) дружище, если честно то мне на iiko пофиг!
Суть в том, что сидят девчонки и ручками ХХХашат акты в iiko, когда они все тепленькие лежит в 1C.
   Garykom
 
29 - 17.10.19 - 14:56
(28) А нахрена они нужны в iiko?
   SuperMario
 
30 - 17.10.19 - 16:29
(29) а как же? Весь оперативный учет ведется в iiko. Себестоимость готовой продукции там же формируется.
 
 Рекламное место пустует
   Cyberhawk
 
31 - 17.10.19 - 17:54
(30) Переходи на 1С, там интеграция реализована как надо


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.