Оперативный учет поломок на производстве с помощью 1С:ТОиР и ASP.NET MVC5

02.03.16

Разработка - Механизмы типовых конфигураций

Решение задачи автоматизированного учета поломок на производстве.

Доброго времени суток! В статье постараюсь рассказать о решении задачи учета простоев и поломок на производстве.

Между операторами и механиками всегда существовала разница в отчетности по простоям на производстве.  Одни пытались  показать, какие они молодцы и быстро устраняют неисправности, вторые для объяснения невыполнения плана  и улучшения показателей валили все на механиков. При этом был куплен и настроен ТОиР, но механикам как-то удобней было показывать свои отчеты в экселе. Выходило так, что все неисправности на производстве - это плановые остановки на техобслуживание. Что, естественно, не устраивало руководство по известным причинам.

Было решено разработать систему оперативного учета и оповещения по событиям на производстве. И попробовать ее связать с ТОиР (редакция 1.3 (1.3.63.2)). Про связь с ТОиР в основном и пойдет речь.

На момент начала работы над этим проектом 1С:ТОиР работал в стандартной связке: 1С Сервер + MSSQL. Чтобы не ломать работающую связку, было решено эксперименты проводить на линуксе. Была развернута следующая стандартная схема на виртуальной машине 1С 8.3 сервер + PostgreSQL 9.4. Операционная система CentOS Linux 6.7, Postgres из поставки 1С (PostgreSQL version 9.4.2). Веб сервер естественно был поднят Apache. Единственное что так и не удалось победить - сквозную аутентификацию пользователей по протоколу kerberos.

Первое, что нужно сделать, чтобы поглотить веб-сервис  ТОиРа - это опубликовать его, чтобы он был виден снаружи (начать помогла вот эта статья https://habrahabr.ru/post/136684/).  Объекты для взаимодействия конфигурации ТОиР с внешним миром описаны в пакете ПакетXDTO1. Так понимаю, что изначально он был создан для работы с мобильными устройствами. Сам же веб сервис называется exchange.

Публикация веб-сервиса в линуксе выглядит следующим образом: 

1. Установка apache;

2. Добавление модуля 1С в веб-сервер и прописывания настроек публикации в /etc/httpd/conf/httpd.conf;

3. Создание .vrd.

С первым пунктом все понятно - ставится из основного репозитария (не помню, чтобы делал лишние движения).

Со вторым пунктом сложнее - книга от 1С для администрирования говорит, что нужно просто расставить галки в клиенте запущенном на сервере, но мой сервер без иксов, да и вообще кто ставит сервера линукс с иксами?!  

Можно вручную указать апачу, где находится модуль 1С для работы с веб-сервером. Если мне не изменяет память, то эти записи создаст утилита webinst, но на всякий случай привожу, как должно быть в файле /etc/httpd/conf/httpd.conf.

LoadModule _1cws_module "/opt/1C/v8.3/x86_64/wsap22.so"

Добавляется к остальным модулям апача.  Потом добавляется запись о публикации:

# 1c publication
Alias "/Toir" "/var/www/html/Toir/"
<Directory "/var/www/html/Toir/">
    AllowOverride All
    Options None
    Order allow,deny
    Allow from all
    SetHandler 1c-application
    ManagedApplicationDescriptor "/var/www/html/Toir/default.vrd"
</Directory>

Третьим пунктом создаем файл default.vrd. Сделать это можно несколькими способами - вручную (тогда придется и вручную прописывать в настройках сервера), либо при помощи утилиты webinst.

Пример из книги (неверный для нашей конфигурации):

webinst -publish -apache22 -wsdir demo-ws -dir /var/www/demo-ws -connstr "Srvr=server:1741;Ref=demo;" -confpath /etc/apache2/httd.conf -descriptor apache22-template.vrd

Правильный пример:

webinst -publish -apache22 -wsdir Toir -dir /var/www/html -connstr "Srvr=server:1741;Ref=Toir;" -confpath /etc/httpd/conf/httd.conf -descriptor default.vrd

Полученный файл должен иметь сходную структуру:

<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
                xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                base="/Toir"
                ib="Srvr=xxx.xxx.xxx.xxx;Ref=Toir;"
                enableStandardOData="true"
                allowexecutescheduledjobs="">
                <ws>
                        <point name="exchange"
                                alias="ws1.1cws"
                                enable="true"/>
                </ws>
</point>

Для поглощения в проекте ASP.Net MVC5 кликаем правой клавишей мыши на проект, выбираем  (Add)--->(Service Reference), далее следуем указаниям на картинке.

 

В результате должны получить такую же структуру, что находится слева от окон создания  Web Reference. При добавлении пути в пункте 4 спрашивает пароль, указываем пользователя 1С с правами админа (может можно и нужно ниже, не проверял).

Теперь можно обращаться к нашему веб-сервису ТОиР.

Делается это следующим образом:

try
            {
                using (var service = new exchange())
                {
                    service.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12;
                    service.Credentials = new NetworkCredential("USER", "PASSWORD");

                    var выявленныйДефект = new ВыявленныйДефект    //creating document object
                    {
                        Дата = ((DateTime)ev.StartDateE).ToString("yyyy-MM-ddTHH:mm:sszzzzzz"), //important
                        ДатаSpecified = true,
                        ДефектВыявленВПроцессе = "000000002",
                        Подразделение = "000000013",
                        Комментарий = "Из веб приложения, оборудование: " + ev.Equipment,
                        ДатаОбнаружения = ((DateTime)ev.StartDateE).ToString("yyyy-MM-ddTHH:mm:sszzzzzz"),  //important
                        ДатаОбнаруженияSpecified = true,
                        Организация = "000000001",
                        Передан = false
                    };
                    var tableDefects = new ТЧВыявленныйДефект[1];
                    tableDefects[0] = new ТЧВыявленныйДефект
                    {
                        ID = "1",
                        ВидДефекта = "000000011",
                        ДефектВыявленВПроцессе = "000000002",
                        ДефектОписание = "",
                        ДефектПричина = "7",
                        КритичностьДефекта = "000000002",
                        ОбъектРемонта = repository.GetEquipmentbyID((int)ev.EquipmentID).ToirID.ToString(),
                        ОтказавшийЭлемент = repository.GetEquipmentbyID((int)ev.EquipmentID).ToirID.ToString()
                    };
                    выявленныйДефект.ТЧВыявленныйДефект = tableDefects;

                    try
                    {
                        var res = service.ПередатьДефект(выявленныйДефект); //adding data to toir
                    }
                    catch (Exception)
                    {
                        logger.Error("Error adding toir event");
                    }
                }
            }
            catch (Exception)
            {

                logger.Error("Adding toir equipment");
            }

Оттестировав можно и уменьшить количество блоков try-catch.

Следует обратить внимание на места //important. Связано это с тем, что существует несовместимость типов данных поля DateTime C# и 1С dateTime. Очень много нервов мне пришлось потратить, чтобы выяснить причину ошибок при перегрузке документа ВыявленныеДефекты. Решение - вручную поменять тип данных в описании веб сервиса в проекте в коде exchange.wsdl все поля с dateTime на string и приводить к нужному строковому виду вручную:

 <xs:element minOccurs="0" name="Дата" nillable="true" type="xs:string" />

Обращение к элементам конфигурации идет везде по кодам. Даже не зная тонкостей 1С можно разобраться, что и куда подставлять. ОбъектРемонта и ОтказавшийЭлемент - это соответствующие коды оборудования и элементов из ТОиРа.

Как реализовано на моем предприятии.

При неисправности - оператор оборудования с терминала(на котором открыта веб страница) вводит данные, выбирает оборудование(по короткому названию из отдельной базы данных), регистрирует неисправность.

Данные о неисправности (с номером документа в ТОиР, он возвращается при правильном создании докуменета) сохраняются в оперативной БД, в ТОиР создается документ ВыявленныеДефекты. Тут уже места для маневра у механиков остается немного. Приходится показывать внеплановые ремонты.

Пысы. Если что-то неточно или не понятно, пишите в комментариях, поправлю-разъясню.

 

См. также

Ценовая власть. Выносим из цикла схему СКД

Механизмы типовых конфигураций Ценообразование, анализ цен Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Россия Абонемент ($m)

Продолжение темы вынесения кусков повторно-используемого кода в запрос. В прошлый раз мы сделали это с вычислением пользовательских формул. Здесь замахнулись на формулы, задаваемые пользователем запросами.

1 стартмани

11.04.2024    530    tango    0    

3

Формула в реквизите. Приквелл к сериалу "Ценовая власть"

Механизмы типовых конфигураций Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Какому-либо элементу списка сопоставляется числовое значение, зависящее от других значений, причем эта зависимость изменяется от элемента к элементу. Так, в справочнике "Валюты" курс какой-либо валюты может быть задан формулой (или даже запросом) от значения другой валюты. А в справочнике "Виды цен" формула определяет расчет цены для товарной позиции, т.е. элементов справочника "Номенклатура", у которых в карточке указан этот вид цены. А в 1С:ERP, например, этот механизм используется в ресурсной спецификации.

10 стартмани

11.04.2024    417    tango    5    

3

Ценовая власть. Второй сезон

Механизмы типовых конфигураций Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Россия Бесплатно (free)

В первом сезоне мы рассмотрели (с точки зрения программиста) внутренний механизм, помещающий цены в регистр "Цены". Из этого регистра цена попадает в исходящие УПД (в продажи). Но эта цена (в прайс-листе) дифференцирована (ценообразована) в разрезах свойств самой номенклатуры. Но стратегия ценообразования, ценовая власть - это в первую очередь о работе с ценами для клиента. И тут вступает в дело второй акт марлезонского, Скидки (наценки) и кешбек.

08.04.2024    784    tango    0    

2

Ценовая власть (УТ 11.5) - 2

Механизмы типовых конфигураций Платформа 1С v8.3 1С:Управление торговлей 11 Бесплатно (free)

В прошлый раз специальной обработкой мы выбрали объекты УТ 1.5, группируя по подсистемам. Оказалось, что состав подсистем не вполне корректно отображает функциональную структуру, но зато мы нашли процедуру, которая, вроде бы, должна содержать в себе всё, что нас интересует. Обновление цен должно ведь следовать выбранной стратегии ценообразования, верно? Иначе что она обновляет...

06.04.2024    480    tango    1    

1

Ценовая власть или Управление ценообразованием (УТ 11.5)

Ценообразование, анализ цен Механизмы типовых конфигураций Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Россия Управленческий учет Абонемент ($m)

Ценовая власть - это способность (возможность) компании изменять в некоторых пределах отпускную цену своего товара (услуг, продукции). Чем в более широких пределах вы можете играть в цену продажи, тем больше этой власти у вас. Если вы не можете управлять отпускной ценой, то это или не ваш бизнес, или не бизнес вовсе. Здесь в рубрике "База знаний аналитика и руководителя проекта" слово проект не ограничено "проектом в 1С". Посмотрим, что для этого есть в УТ 11.5.

1 стартмани

05.04.2024    585    tango    12    

2

Расширяем возможности дополнительных обработок и настраиваем их отладку

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Уже не одна веб-страница исписана знаниями о дополнительных обработках, как создать, как подключить. Есть масса вариантов, как их можно отладить. Я разобрался в кишках работы библиотеки и покажу, как можно расширить возможности дополнительных отчетов, а также покажу удобный способ отладки.

07.02.2024    2669    YA_418728146    11    

44

Регистры накопления в 1С:КА2 и 1С:ERP для расчета НДФЛ, страховых взносов и взаиморасчетов с сотрудниками на январь 2024 года. Краткое описание

Зарплата Механизмы типовых конфигураций Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет НДФЛ Абонемент ($m)

Для расчета зарплаты и соответствующих налогов в конфигурациях 1С:КА2 и 1С:ERP используется 22 регистра накопления, 7 регистров сведений, 1 регистр расчета и бухгалтерские проводки. В таблице приведены названия этих регистров, указаны основные регистраторы и виды движений приход/расход. В описании приводится краткое функциональное назначение регистров в основных зарплатных процессах. Описание регистров родилось из черновиков при написании различных отчетов и обработок при эксплуатации 1С-овских конфигураций и исправлении ошибок по НДФЛ, взаиморасчетов с сотрудниками и прочих. Информация не претендует на полноценное описание работы регистров, скорее это дискуссионный материал. Но, возможно, кому-то пригодится и сократит время при подготовке отчетности за непростой (в плане учета зарплаты) 2023 год. А возможно, кто-то поделится своим опытом.

1 стартмани

10.01.2024    1203    8    2ncom    6    

8

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 1С:Бухгалтерия 3.0 Бесплатно (free)

Используются для создания новых объектов в конфигурации, чтобы не забыть, что нужно сделать. Сделано на примере 1С:Бухгалтерия предприятия, в других конфигурациях могут быть другие, а могут быть и похожие объекты.

28.12.2023    5027    mrXoxot    11    

100
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. nickpugachev 02.03.16 21:01 Сейчас в теме
В качестве примера работы с веб-сервисом 1С из .Net и публикации веб-сервиса на linux- ок.

Один только вопрос, почему MVC5, если 1С перенесен на linux? Почему не MVC6 и .Net Core 1.0? Он, конечно, нормально работает пока только на debian-based, но ведт работает :)
2. milo1 1 02.03.16 21:31 Сейчас в теме
(1) nickpugachev, к тому моменту как у меня уже все работало, вышла только первая бета. Плюс, те компоненты, что я использую в проекте, работают пока только под Windows.
Но планы по полному переходу на линукс есть, думаю где-то через полгода попробовать перевести проект на новые рельсы.
Оставьте свое сообщение