| 
    
        
     
     | 
    
  | 
Выполнение 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С, там интеграция реализована как надо     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |