Кстати, хорошая идея появилась. После каждого утверждения вместо оповещения вносить "Код ПХП" на изменение имеющегося или добавление нового текстового файла (записываемого в заданную папку) с названием утверждаемого документа, а в сам файл - этап выполнения.
Например, перед тем, как документ попадет на утверждение директора будет создан (или изменен имеющийся) файл "Заказ покупателя № 00000437.тхт" в котором будет записана (или изменена с прежнего состояния) строчка: "Утверждается у директора".
Тогда (подключившись по фтп и прочитав этот файл) в 1с можно будет получить текущий статус документа. И если статус конечный (заданный в бизнес-процессе, а значит известный нам) после считки и внесения изменений в 1с (что бы этот документ стал виден в 1с снабженцев) файл можно удалять...
сопровождаю блог об 1С Предприятие 8.3, где публикую материалы по администрированию, настройке и сопровождению типовых конфигураций
Почитал высланный файл с описанием бизнес-процессов, в принципе все понятно:
Так бизнес-процесс запускается:
Цитата
// Код шаблона бизнес-процесса (при создании запускаемого БП будет нам известен) $workflowTemplateId = 12;
// Бизнес-процесс запускается для документа - элемента инфоблока с кодом 358 (вот тут надо разобраться, как файлу, который по задумке, должен попасть в Битрикс из 1С, - присваивается код и как его узнать) $documentId = array("iblock", "CIBlockDocument", 358);
Как считать статус тоже ясно. Зададим новый параметр, в котором будут храниться статусы и при изменении статусы будем присваивать этому параметру. Считываются параметры командами:
Цитата
$rootActivity = $this->GetRootActivity(); if ($rootActivity->IsPropertyExists("MyProperty")) $val = $rootActivity->MyProperty;
Вывод: осталось не выясненным только, как файлу, который по задумке, должен попасть в Битрикс из 1С, - присваивается код инфоблока.
сопровождаю блог об 1С Предприятие 8.3, где публикую материалы по администрированию, настройке и сопровождению типовых конфигураций
Из 1с документ сохранять во временную папку компьютера в формате *.xls, а потом (так же средствами 1с) по ФТП переносить файл в конкретную папку нужного инфоблока с документами подобного типа (к которой будет прикреплен нужный бизнес-процесс утверждения), но не знаю как работает механизм регистрации документов и присвоения кодов и какими функциями можно получить присвоенный документу код.
К тому же если не получится по ФТП, то можно подключить сетевой диск папки документов инфоблока и переносить сохраненный из 1с файл в неё.
Но вопрос открыт - как получить присвоенный документу код? Можно сделать по первобытному запрос к нужной таблице MySQL (только эту таблицу нужно сначала разыскать), но думаю, что есть более цивилизованный способ - через API. Покопаюсь в документации...
сопровождаю блог об 1С Предприятие 8.3, где публикую материалы по администрированию, настройке и сопровождению типовых конфигураций
Хм. Так вы хотите подключить к библиотеке документов какое-то файловое хранилище (папку) просто, и надеетесь, что битрикс всё это дело всосёт? Не выйдет, в таком режиме бизнес-процессы будут недоступны, некоторые свойства и тп, так как не задействованы инфоблоки, это просто интерфейс к физической папке на диске и всё. Потому и спросил. Так просто фокус не удастся. Тут надо будет работать с полноценной "библиотекой документов" на инфоблоках и опять же действовать через API. Я бы вообще, наверное, смотрел в данном случае в сторону веб-сервисов, вроде как в 1С 8 веб-сервисы создавать довольно просто. Хотя можно реализовывать и по-другому. В любом случае будет требоваться код, который будет создавать элемент инфоблока в библиотеке документов с заполнением соответствующих полей. В нём же вы и сможете получить ид созданного элемента и уже проводить с ним дальнейшие манипуляции (в т.ч. запуск БП).
Я может не так выразился, но ход мыслей у меня такой...
1) Создаем новый инфоблок, например, "Документы заявки" (по типу как "Документы руководства"). 2) Подключаем к этому Инфоблоку бизнес-процессы и пишем новый бизнес-процесс утверждения заявки. 3) Папку с файлами Инфоблока подключаем через сетевой диск (в проводнике - Подключить сетевой диск... и т.д.) 4) При записи документа в 1с создаём Экселовский файл и помещаем его в созданный сетевой диск подключенного инфоблока. Как я понимаю - при помещении файла в инфоблок таким способом в Битриксе он всё-таки регистрируется и ему присваивается код. Это было бы логично! Я прав или нет? 5) Через 1с делаем обращение к скрипту с передачей параметра - Имя документа, который помещен в сетевой диск в п. 4). 6) Выполняется скрипт, который по имени файла должен найти присвоенный файлу Код и через указанные выше функции запустить бизнес-процесс. 7) В бизнес-процессе на каждом шаге утверждения использовать элемент БП "Код ПХП", который бы создавал файл txt (в любом установленном нами файловом хранилище - откуда он будет считываться 1с), с именем = названию файла, и в этот файл бы записывал текущий статус выполнения заявки. При изменении статуса - этот файл следует перезаписывать, т.е. изменять содержимое файла, содержащего название текущего статуса. 8) В 1с через каждые минут 30 (можно и чаще при необходимости) делать сканирование папки, где хранится созданный файл Название_документа.тхт и со статусом утверждения внутри. Примечание: Для утверждаемого документа следует создать новый реквизит для указания статуса, в который записывать статус из текстового файла. И соответственно этот реквизит начать выводить в отчетах по заявкам, что бы создавшие заявку пользователи видели на каком этапе исполнения она сейчас находится. 9) После всех утверждений, заявка становится видна в Снабжении и приобретает статус - "На исполнении в снабжении". Когда по этой заявке будут делаться заказы поставщикам, то из этого документа будет считываться дата поступления товара на предприятие, и статус по заказанным номенклатурным позициям будет меняться на "Ожидается поступление дд.мм.гггг".
Я вижу решение этой задачи как-то так. Что неверно в этой схеме?
сопровождаю блог об 1С Предприятие 8.3, где публикую материалы по администрированию, настройке и сопровождению типовых конфигураций
Икар пишет: 4) При записи документа в 1с создаём Экселовский файл и помещаем его в созданный сетевой диск подключенного инфоблока. Как я понимаю - при помещении файла в инфоблок таким способом в Битриксе он всё-таки регистрируется и ему присваивается код. Это было бы логично! Я прав или нет?
а, понял. да, в битриксе создастся элемент инфоблока в этом случае. только его айдишник при помещении файла в папку вы никак не получите, только поиском по инфоблоку выцеплять (причём поиск скорее всего придётся выполнять только по названию файла, с реквизитами там не особо, простенький сериализованный массив только). Но я бы не использовал наверное такой способ, не внушает он мне доверия =)
4) При записи документа в 1с создаём Экселовский файл и помещаем его в созданный сетевой диск подключенного инфоблока. Как я понимаю - при помещении файла в инфоблок таким способом в Битриксе он всё-таки регистрируется и ему присваивается код. Это было бы логично! Я прав или нет?
а, понял. да, в битриксе создастся элемент инфоблока в этом случае. только его айдишник при помещении файла в папку вы никак не получите, только поиском по инфоблоку выцеплять (причём поиск скорее всего придётся выполнять только по названию файла, с реквизитами там не особо, простенький сериализованный массив только).
Ведь это вполне подходит: 5) Через 1с делаем обращение к скрипту с передачей параметра - Имя документа, который помещен в сетевой диск в п. 4). 6) Выполняется скрипт, который по имени файла должен найти присвоенный файлу Код и через указанные выше функции запустить бизнес-процесс.
Функции обращения к массиву не подскажешь?
Цитата
nukemonk пишет: Но я бы не использовал наверное такой способ, не внушает он мне доверия =)
А какие есть ещё варианты? Прямое помещение файла в этот каталог через ФТП даст файлу ID?
сопровождаю блог об 1С Предприятие 8.3, где публикую материалы по администрированию, настройке и сопровождению типовых конфигураций
Икар пишет: Функции обращения к массиву не подскажешь?
К какому массиву? Если это про сериализованный с атрибутами файла - то он не нужен, я чот его так упомянул, по инерции =) Поиска по названию (имени файла) там будет вполне достаточно, имя же уникальное будет, как я понял, всё в одном каталоге? Поиск стандартный инфоблочный, с фильтром по названию.
Цитата
Икар пишет: А какие есть ещё варианты?
Ну я уже говорил - WS =) можно прописать нормальные интерфейсы и передавать/дёргать информацию в один заход. Например отправлять файл через метод WS и сразу возвращать ответ с идом созданного элемента. По мне так это удобней, только читать больше надо будет, чтобы разобраться =) Но это имхо =)
Цитата
Икар пишет: Прямое помещение файла в этот каталог через ФТП даст файлу ID?
Нет, по-идее, в этом случае WebDAV не задействован.
Ну я уже говорил - WS =) можно прописать нормальные интерфейсы и передавать/дёргать информацию в один заход. Например отправлять файл через метод WS и сразу возвращать ответ с идом созданного элемента. По мне так это удобней, только читать больше надо будет, чтобы разобраться =) Но это имхо =)
Ясно, если не ошибаюсь, то именно так обменивается с Битрикс стандартная перегрузка в 1с 8?
сопровождаю блог об 1С Предприятие 8.3, где публикую материалы по администрированию, настройке и сопровождению типовых конфигураций