Имя: Пароль:
1C
1С v8
Выполнение Java script на сервере apache (Tomcat) из 1С
0 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.
1 Garikk
 
17.10.19
11:51
учитывая постановку задачи и ваши вопросы, правильный ответ: наймите специалиста
2 Garykom
 
гуру
17.10.19
11:54
Разве это не форум об аниме (зачеркнуто) lsFusion?
3 SuperMario
 
17.10.19
11:57
(1) понимаю.
Сам себе голову об коленку сломал.
4 Garikk
 
17.10.19
12:14
(3) ничего особо сложного в вашей задаче нет, но она нерешаема в рамках форума путем 'советов'

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

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

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

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

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

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

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