Изменения в лицензионном соглашении - Согласно условиям действующего Лицензионного соглашения уведомляем Вас об изменениях в Лицензионном соглашении, которые вступят в силу, начиная с версии VOGBIT 20.8 (1.1.54861). Согласно условиям действующего Лицензионного соглашения, обновление пользователем своей программы до версии VOGBIT 20.8 (1.1.54861) будет означать его полное согласие с условиями новой редакции Лицензионного соглашения

Последние темы на форумах VOGBIT

Ошибка при замене материала - Материалы, Комплектующие, Складской учёт
Константин Чилингаров: 19032 Илья написал: автоматически бывает оприходование? Да нет, вроде. Если говорить про ЛЗК/Требование. Не "оприходуется" там расч ...
Ошибка в формировании потребности материалов - Ошибки в работе
Mariska17-17: Спасибо, получилось!
Сменное задание - Производство
Константин Чилингаров: Здравствуйте, У Вас на картинке, задания созданы на "максимальном" уровне. Применение "максимального" уровня в данном случае ...
Ошибка при планировании производства - Демо версия
Iglin1503: Спасибо. все заработало
Удаление категории номенклатура - Прочее
Константин Чилингаров: Здравствуйте, "Удалить из папки" (см. рис.)
Ошибка на экране после получения задания - Терминалы
Константин Чилингаров: Ок. Спасибо. Посмотрим. 
Поменять технологию - Производство
Илья: 13 Константин Чилингаров написал: И придется как-то сжиться с тем, что она есть. По другому не получится. Понятно, будем тогда сначала п ...
Изменение временных интервалов на терминале. - Терминалы
Константин Чилингаров: Здравствуйте, Пока не настраивается. Со временем нужно будет делать какие-то настройки, да. Уже накапливаются потихоньку всякие пожел ...
Вопрос на тему "Технология подробно" - Состав и технология
Константин Чилингаров: Здравствуйте,   Можно теоретически заморочиться с «объединёнными» заданиями. Недавно на форуме где-то обсуждалось про них (объедине ...
Упрощенная сдача на склад - Материалы, Комплектующие, Складской учёт
Константин Чилингаров: Время, которое затрачивается на обновление, зависит от размера базы данных, сервера, компьютера, с которого выполняется, и соединения ме ...
Совместная обработка - Производство
Константин Чилингаров: Со сборкой - сваркой - окраской, то всё понятно. В плане технологии - тут всё просто. Есть Балка. Есть техпроцесс на неё. Три операции: с ...
Плагин на форму отчета - Новые возможности
Константин Чилингаров: Здравствуйте, Пока нет, к сожалению.
Календарный план - Производство
Константин Чилингаров: Не очень понятно, что вы имеете в виду под словами "сделать планирование по номенклатуре в соответствии с уровнями". Вообще, как я ...
Учет комплектующих изготовленных по фактическому количеству материала. - Материалы, Комплектующие, Складской учёт
Константин Чилингаров: Не совсем… 19032 Илья написал: для контроля "задела" необходимо создать свою заказную спецификацию Нет. Никакую специальную «за ...
Нажатие Enter в поле поиска при поступлении по заявке. - Ошибки в работе
Константин Чилингаров: Ок. Принимается. По мере возможности посмотрим, что там можно сделать.
Удаление позиции из номенклатуры - Прочее
Константин Чилингаров: Если она нигде не используется (в заказах, спецификациях, документах и т.п.), то есть утилита "Генератор удаление" (в меню "Настройк ...
Копирование спецификаций с комментариями - Интерфейс программы
Константин Чилингаров: Здравствуйте, Записал в список пожеланий.
Экспорт в Vogbit - Состав и технология
Константин Чилингаров: Здравствуйте, Понятно. Проблема из-за того возникла, что папку с файлами сложили прямо в C:\Program Files\VOGBIT. Откуда файлы добавляли. Програм ...
Пустой бланк - Демо версия
Константин Чилингаров: Бывает такой эффект, говорят, когда по какой-то причине завис в Windows в процессах Excel. Если так, то соответственно, перезагрузка помогает.
Не могу создать технологию подробно - Состав и технология
Minicnc14: Отбой, настройки поправил и заработало

Ошибка работы триггера в базе SQL

Разработка приложений и функций - Плагины - Технические вопросы
Страницы: 1
Ошибка работы триггера в базе SQL
 
Добрый день. В программе Vogbit потребовалось реализовать механизм, который при обновлении таблицы (в данном случае, штрих-коды) автоматически записывает некоторые данные в файл. Решил сделать через триггер в БД SQL.
Триггер:
Код
USE [VOGBIT_splav]
GO
/****** Object:  Trigger [General].[csvBarCodesUpdate]    Script Date: 13.11.2017 9:00:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [General].[csvBarCodesUpdate]
ON [VOGBIT].[General].[BarCodes]  
AFTER Insert, Update, Delete
AS  
   EXEC sp_xp_cmdshell_proxy_account 'SPLAV/eremin.mv','a23B49';
   EXEC xp_cmdshell "C:/Progs/BarCodesQuery.bat"

После изменения Vogbit выдает сообщение "У пользователя нет разрешений на выполнение данного действия."
Подробности ошибки:
Код
Сообщение:
   У пользователя нет разрешений на выполнение данного действия.

Отправитель:
   Csdn.Vogbit.Data.BarCodes

Исключение:
   Csdn.Vogbit.Data.SqlServerException

Источник:
   Csdn.Vogbit.Data

Версия 1.1.37841 сборка 171

Внутреннее исключение:: У пользователя нет разрешений на выполнение данного действия.<KeyErr><ErrCode:6001FFFF>
<ErrNumber:15247>
<ErrSeverity:16>
<ErrState:1>
<ErrProcedure:Called from [General].[BarCodes.Insert]: >
<ErrLine:1>
Ошибка преобразования значения varchar "except" в тип данных int.


Список вызовов:
   в Csdn.Vogbit.Data.SqlExceptionBuilder.ThrowError(Object sender, SqlException ex, String database)
   в Csdn.Vogbit.Data.DataObjectList.TryToApplyInternal(Boolean useTransaction)
   в Csdn.Vogbit.Data.DataObjectList.Apply(Boolean raiseEvent)
   в Csdn.Vogbit.Data.BizObject.Save()
   в Csdn.Vogbit.Forms.BaseEditForm.Apply()
   в Csdn.Vogbit.Forms.EditDialog.EditFormApply()
   в Csdn.Vogbit.Forms.EditDialog.Apply()

Inner Exception ---------------

Сообщение:
   У пользователя нет разрешений на выполнение данного действия.<KeyErr><ErrCode:6001FFFF>
<ErrNumber:15247>
<ErrSeverity:16>
<ErrState:1>
<ErrProcedure:Called from [General].[BarCodes.Insert]: >
<ErrLine:1>
Ошибка преобразования значения varchar "except" в тип данных int.

Исключение:
   System.Data.SqlClient.SqlException

Источник:
   .Net SqlClient Data Provider

Список вызовов:
   в System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
   в System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
   в System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
   в System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMapping tableMapping)
   в System.Data.Common.DbDataAdapter.Update(DataTable dataTable)
   в Csdn.Vogbit.Data.DataAdapter.Update(DataTable dataTable)
   в Csdn.Vogbit.Data.DataAdapter.UpdateDataTable(DataTable dataTable)
   в Csdn.Vogbit.Data.DataObjectList.ApplyInternal()
   в Csdn.Vogbit.Data.DataObjectList.TryToApplyInternal(Boolean useTransaction)


Что сделано неправильно и как это исправить?

P.S. Логин и пароль пользователя правильные.
Изменено: Максим Еремин - 13.11.2017 09:05:20
 
Крайне не рекомендуется добавлять свои триггера, таблицы и т.п. непосредственно в базу. После этого мы не гарантируем никоим образом ни работоспособность штатных функций, ни возможность обновления. П.7.2. лицензионного соглашения. Т.е. фактически такую базу мы поддерживать не будем. Если что-то с ней случиться - вам разбираться только самостоятельно.

Если нужно добыть какую-то информацию для использования её снаружи, то лучше написать plugin для этого.
 
Цитата
Если нужно добыть какую-то информацию для использования её снаружи, то лучше написать plugin для этого.

Но возможно ли написать какой-либо плагин для автоматического создания csv файла, а не по нажатию на кнопку?
 
Можно написать плагин, который будет всё время запущен, раз в какое-то время (хоть каждую минуту) проверять, не пора ли что-нибудь выгрузить, и если пора, то выгружать.
Например...

А что за задача то? По сути. Для чего нужно?
 
Для передачи в другую программу нужно выгружать в csv-файлы:
1. Таблица сотрудников со штрих-кодами
2. Таблица соответствий рабочих, выполняющих задания, и используемого в этом задании инструментом.
 
И там, и там объём данных маленький, а изменения редкие.
Для второго пункта, вполне должно хватить выгрузки раз в день. Максимум пару раз в день. Но это если уж очень активно работать...
Для первого и того реже. Там и раз в день не нужно.
Так что вполне можно обойтись plugin'ом. Я бы для начала сделал просто по кнопке. Чтобы всё обкатать, наладить.
А потом, когда уже реально заработает всё по прямому назначению, если реально надоест кнопку нажимать, сделал бы, чтобы она по времени нажималась сама.
 
Где можно посмотреть руководство по созданию плагинов и по таблицам (не нашел на сайте)?
Изменено: Максим Еремин - 13.11.2017 15:43:05
 
Руководства нет.
Слишком мало желающих пописать плагины самостоятельно  :)

Есть несколько тем на форуме. Вот, например.
 
При компиляции dll возникает ошибка:
Код
1>CSC : error CS1705: Сборка "Csdn.Vogbit.Main" с удостоверением "Csdn.Vogbit.Main, Version=1.1.37841.171, Culture=neutral, PublicKeyToken=ae4e3879760d1984" использует "Csdn.Vogbit.Forms, Version=65535.65535.65535.65535, Culture=neutral, PublicKeyToken=ae4e3879760d1984" с более высокой версией, чем у сборки "Csdn.Vogbit.Forms" с удостоверением "Csdn.Vogbit.Forms, Version=1.1.37841.171, Culture=neutral, PublicKeyToken=ae4e3879760d1984", на которую делается ссылка.

Код взят отсюда
Все библиотеки подключены, ошибок до компиляции не выдает. Как это исправить?
 
Цитата
Максим Еремин пишет:
Как это исправить?
используйте Visual Studio 12

Если формы вогбита не нужны, то можно писать не плагин, а отдельное приложение.
Тогда понадобится только Csdn.Vogbit.Data.dll - для доступа к данным через API.
В этом случае должно работать и в более новых студиях.
 
При запуске программы возникает ошибка
Код
VogbitPluginExport.Export: идентификатор плагина не определён.

Код сделан на основе этого. Что нужно в нем поменять? Это как-то связано со строками ниже?
Код
[Caption("PluginExport")]
[ID("{EB7B1DCC-0DDE-4eaf-B500-2D669DE4557C}")]
 
Вы плагин пишете(dll) или свою отдельную программу(exe)?
 
Цитата
Сергей пишет:
Вы плагин пишете(dll) или свою отдельную программу(exe)?
Плагин
 
Связано.
[ID("{EB7B1DCC-0DDE-4eaf-B500-2D669DE4557C}")]
это и есть идентификатор плагина.
Сейчас попробую собрать плагин из того сообщения.
 
В том то и дела, что код из того листинга работает, но я внес правки и он перестал. Вот мой код
Код
using System;
using Csdn.Vogbit.Base;
using Csdn.Vogbit.Data;
using Csdn.Vogbit.Forms;
using Csdn.Vogbit.Main;
using DevExpress.Utils;
using DevExpress.XtraEditors;
using System.Windows.Forms;
using Csdn.Vogbit.QB;

namespace VogbitPluginExport
{
    [Caption("PluginExport")]
    [ID("{EB7B1DCC-0DDE-4eaf-B500-2D669DE4557C}")]

    public class BarCodesForm : DataViewForm
    {
        public BarCodesForm(IExtensibleApplication app) : base (app)
        {

        }

        protected override void OnLoad(System.EventArgs e)
        {
            base.OnLoad(e);

            GetData();

            DataControl.Columns.Add(DataSource.PropertyDefs["BarCode"], "Штрих-код");
            DataControl.Columns.Add(DataSource.PropertyDefs["Name"], "ФИО");
        }

        void GetData()
        {
            var sqlQuery = new SqlQuery();
            var selectQuery = sqlQuery.CreateQuery();

            var barCode = (Csdn.Vogbit.QB.Schema.Views.BarCodes)selectQuery.From.AddView(Views.BarCodes, "barCode");
            var name = (Csdn.Vogbit.QB.Schema.Views.Employees)selectQuery.From.AddView(Views.Employees, "name");

            var j = new Join(barCode, name, JoinType.Inner, new Condition().EqualTo(barCode.ObjectID, name.ID));

            selectQuery.Joins.Add(j);
            selectQuery.Columns.Add(barCode.Code, "BarCode");
            selectQuery.Columns.Add(name.Name, "Name");

            sqlQuery.Add(selectQuery);

            var data = ExtensibleApplication.Application.ExecuteQuery(sqlQuery);

            data.Close();
            data.Prepare();
            DataSource = data;          
        }            

    }

    public class Export : PlugInBase
    {
        private const string CommandGuidString = "{67ED1590-AB70-46f7-94F9-58A462D333DB}";
        private const string CategoryGuidString = "{B18D68B3-33B2-45eb-BBCA-424B30E65B48}";

        protected override void Connect()
        {
            base.Connect();
            ExtForms.EventHandler += ExtFormsEventHandler;
        }

        void ExtFormsEventHandler(object sender, ExtensibleFormsEventArgs e)
        {
            if (e.EventType == ExtensibleFormsEventType.NewForm)
            {
                if (e.PlugInForm.GetType() == typeof(EmployeesGridForm))
                {
                    var commandId = new Guid(CommandGuidString);
                    var categoryId = new Guid(CategoryGuidString);

                    var barManager = (IBarManager)e.PlugInForm;
                    var barCategory = barManager.BarCategories.Add(categoryId, "Пример");

                    var exampleButton = barManager.BarCommands.AddButtonCommand(commandId, barCategory, "Команда", false);
                    exampleButton.Caption = "Список штрих-кодов";
                    exampleButton.ActionExecute += ExampleButtonActionExecute;
                }
            }
        }

        void ExampleButtonActionExecute(object sender, ActionExecuteEventArgs e)
        {
            if (((IPlugInDataForm)ExtForms.ActiveForm).CurrentItem != null)
            {
                //long nmkId = ((IPlugInDataForm)ExtForms.ActiveForm).CurrentItem["ID"].AsLongInt;

                //var formParams = new PlugInFormParams();
                //formParams["OwnerID"].Value = nmkId;

                var barCodesForm = ExtForms.GetNewForm(typeof(BarCodesForm).ToString());
                barCodesForm.TabText = "Список штрих-кодов";
                //barCodesForm.OpenForm(formParams);
                barCodesForm.ShowFloatingForm(DockStyle.None);
            }

        }
    }
}

Не уверен, что он правильный, но и проверить никак не могу. Как прописывать ИД плагина в дальнейшем, когда буду создавать другие плагины?
 
Это атрибуты класса.
Писать их надо перед соответствующим классом. Т.е. в вашем случае перед
Код
public class Export : PlugInBase
 
Цитата
Максим Еремин пишет:
Как прописывать ИД плагина в дальнейшем, когда буду создавать другие плагины?
Сгенерить новый GUID
 
Спасибо, заработало.

Подскажите ещё, пожалуйста, каким образом можно сделать экспорт данных из таблицы в CSV-файл с помощью какой-нибудь библиотеки Vogbit? Или нужно подключать стороннюю библиотеку?
Изменено: Максим Еремин - 29.11.2017 14:09:26
 
можно так попробовать
Код
(DataConrol as IDataExport).ExportTo(ExportFormat.Csv, "filename.csv")
 
Можно подробнее? Попробовал со строкой выше, не сохранилось.

Вот функция
Код
void GetData()
        {
            var sqlQuery = new SqlQuery();
            var selectQuery = sqlQuery.CreateQuery();

            var barCode = (Csdn.Vogbit.QB.Schema.Views.BarCodes)selectQuery.From.AddView(Views.BarCodes, "barCode");
            var name = (Csdn.Vogbit.QB.Schema.Views.Employees)selectQuery.From.AddView(Views.Employees, "name");

            var j = new Join(barCode, name, JoinType.Inner, new Condition().EqualTo(barCode.ObjectID, name.ID));

            selectQuery.Joins.Add(j);
            selectQuery.Columns.Add(barCode.Code, "BarCode");
            selectQuery.Columns.Add(name.Name, "Name");

            sqlQuery.Add(selectQuery);

            var data = ExtensibleApplication.Application.ExecuteQuery(sqlQuery);

            data.Close();
            data.Prepare();
            DataSource = data;
            (DataControl as IDataExport).ExportTo(ExportFormat.Csv, "vogbit__bar_name.csv");     
        }    
 
ошибку выдаёт?
колонки не созданы у DataControl'а

UPD: Попробовал. Вставил эту строчку после создания колонок. Работает.
 
Я понял, что функция Data.Columns.Add(), но так и не понял, каким там должен быть первый параметр. Подскажете?

UPD: Разобрался.
Изменено: Максим Еремин - 30.11.2017 13:57:23
 
Подскажите, каким запросом можно вывести задание, сотрудника который его выполняет, и необходимый для него инструмент? А то без документации разобраться в БД практически невозможно, уже который день ковыряюсь
 
Тут есть нюансы.
В первую очередь:
- работник, по которому это нужно, на посту один или их там несколько может быть?
- по каким заданиям нужно смотреть? Которые включены работнику в план на смену? Или которые ему "выданы" в рамках смены?
- из задания можно добыть операцию в техпроцессе, по операции этой можно добыть из техпроцесса "инструмент". Вопрос - какой? Весь, который на эту операцию указан?

(уровень учёта подразумевается "высокий" или "максимальный" используется)

В зависимости от ответов на эти вопросы, будут следующие уточняющие.
В зависимости от этого - логика, как искать.
А от этого запрос, соответственно, зависит.

P.S. Вообще, если такими вещами заниматься серьёзно, то неплохо бы обучение какое-то организовывать. Если хотите логику понимать и знать, как там что внутри устроено.
Потому что это так в двух словах на форуме не объяснить всё.
 
Цитата
- работник, по которому это нужно, на посту один или их там несколько может быть?
Работник на посту может быть только один
Цитата
- по каким заданиям нужно смотреть? Которые включены работнику в план на смену? Или которые ему "выданы" в рамках смены?
Если я правильно понял, что задания выдаются в рамках смены.
Цитата
- из задания можно добыть операцию в техпроцессе, по операции этой можно добыть из техпроцесса "инструмент". Вопрос - какой? Весь, который на эту операцию указан?
Весь инструмент для операции

Цитата
P.S. Вообще, если такими вещами заниматься серьёзно, то неплохо бы обучение какое-то организовывать. Если хотите логику понимать и знать, как там что внутри устроено.
Скорее всего, это последний плагин, который нужно разработать для Вогбита в рамках проекта, так что обучение не целесообразно.
Изменено: Максим Еремин - 05.12.2017 09:54:07
 
Тогда нужно делать так (если от работника идти):

1. найти задание(я) (task) с типом связи = LT_Unit_Task, со статусом = ST_MAN_3, и с таким работником в "плановых трудовых ресурсах" - рис.1.

2. найти задание с типом связи = LT_Place_task, для которого (1) является Object task’ом (связанным заданием) – рис.2

3. в (2) взять Planned step (запланированные этапы). Там указан компонент (и коллекция откуда этот компонент) – это и есть операция (и техпроцесс, откуда она) – рис.3

4. Взять из коллекции компоненты, подчинённые (3) с типом связи LT_Tools – это инструмент к этой операции в техпроцессе - рис.4.

И будет то, что вы хотели.
Инструмент из операции, которая в задании, выданном работнику.
3.png (66.96 КБ)
4.png (40.22 КБ)
1.png (66.88 КБ)
2.png (63.84 КБ)
Страницы: 1
Сейчас на форуме (гостей: 15)
Всего зарегистрированных пользователей: 3354
Приняло участие в обсуждении: 376
Всего тем: 804
Всего сообщений: 6067

×
Вход на сайт