Оперативный учет поломок на производстве с помощью 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    649    tango    1    

3

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

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

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

10 стартмани

11.04.2024    512    tango    5    

4

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

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

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

08.04.2024    872    tango    0    

2

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

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

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

1 стартмани

05.04.2024    736    tango    12    

2

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

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

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

07.02.2024    2977    YA_418728146    11    

49

Регистры накопления в 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    1450    9    2ncom    6    

8

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

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

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

28.12.2023    5300    mrXoxot    11    

104
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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.
Но планы по полному переходу на линукс есть, думаю где-то через полгода попробовать перевести проект на новые рельсы.
Оставьте свое сообщение