Обновление №7 для VOGBIT v.1.1.37841 - В производственном модуле внесен ряд изменений, направленных на упрощение работы с программой на «максимальном» уровне. В том числе: изменён порядок вывода на экран информации о количестве (запланированных/сданных деталей) – стало более наглядно и удобно

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

Пример создания плагина - Плагины
Сергей: 18542 Николай Спирин написал: где здесь указать тип объекта? Второй параметр:[CODE ExtApp.Application.General.GetObjectByNotation(nmkNotation, (long)SystemObjectTypes.Nomenclature); [/CODE 18542 Николай Спирин написал: Второй вариант подойде ...
Внеплановые задания - Производство
Zms.komissarov: Здравствуйте! При создании внепланового задания не можем оставить комментарий, описывающий суть задания. Ячейка активна, но текст не набирается. В чем может быть дело? 
Форма ввода параметров - Отчёты
Владимир Трусов: Спасибо. Работает.
Поиск при создании накладной по заявке - Интерфейс программы
Константин Чилингаров: Здравствуйте, Записал. Спасибо.
Порядок строк приходной накладной - Интерфейс программы
Константин Чилингаров: Хорошо, понятно. Запишу отдельным пунктом в список предложений и пожеланий. Спасибо!
Пропали кнопки в меню. - Прочее
Константин Чилингаров: Здравствуйте, 18542 Николай Спирин написал: Как добавить прав пользователю? В справочнике "Сотрудники" в свойствах пользователя поставить галочку "Администратор". Если её нет - пункта "Настройки" в меню не будет у этог ...
Приёмка деталей на склад - Материалы, Комплектующие, Складской учёт
Константин Чилингаров: 18424 Lesotehnikakirov написал: У нас так получилось:1. Количество детали в производственном заказе 1051 шт2. На склад сдано 244 шт3. Со склада выдано в работу 244 шт, остаток 04. На склад сдано 1051 деталь5. Теперь на складе в данном производстве ...
Комплект сборочных единиц - Производство
Константин Чилингаров: https://youtu.be/_wNKgTamNIs https://youtu.be/_wNKgTamNIs К качеству есть претензии (у меня у самого), но в целом смысл понятен. Если что-то слишком быстро или непонятно по ролику - пишите, тут рассмотрим подробнее. Сейчас с ролико-производством, н ...
Создание ЛЗК - Материалы, Комплектующие, Складской учёт
Lesotehnikakirov: Благодарю. Вопрос решился.
Редактирование накладных - Материалы, Комплектующие, Складской учёт
Константин Чилингаров: Заходим в общий справочник "учётные документы" (Рабочая -> Учётные документы). Там находим нужный "приходный ордер". Например, по дате и поставщику. Встаём на него, нажимаем "Отменить оприходование" (рис.1). Открыв ...
Поступление по заявке. - Ошибки в работе
Константин Чилингаров: Здравствуйте, Спасибо, записал.
Расчет себестоимости - Состав и технология
Константин Чилингаров: 18389 Zms.komissarov написал: отрезать деталь на станке дисковой фрезой по времени будет около 1 мин. - это Т шт. А вот получить задание, получить на складе пилу нужной конфигурации, установить ее на станок , настроить программу и т. п. по времени ...
Настройка колонок во вкладке "Движение по складу" - Общие вопросы
Lesotehnikakirov: ОК, благодарю
Ошибка приложения - Общие вопросы
Lesotehnikakirov: Вопрос решился, благодарю.
Ошибка Приложения. Недопустимый параметр. - Общие вопросы
Владимир Трусов: Переустановили операционную систему, заработало. Спасибо.
Создание учетных групп - Интерфейс программы
Константин Чилингаров: Здравствуйте, Записал в список. Нужно будет посмотреть, как это можно сделать.  Но уже точно не в ближайшем обновлении. В следующем, может, только.
Подключение к базе данных через API - Плагины
Сергей: Если вы про номенклатуру, то можно взять обозначение и наименование из одной базы и создать номенклатуру с такими же обозначением и наименованием в другой базе. Отличаться будет только ID. Поэтому, если есть связанные или зависимые объекты, которые т ...
Автоматическая установка единиц измерения - Интерфейс программы
Alex-220781: Также можно сделать и при заполнении позиции приходной накладной
SQL запрос - Экспорт импорт данных
Сергей: Да. Только немного не такой. Да и он может измениться со временем. Как и структура базы. API может спасти от некоторых проблем и ошибок. В общем, всё зависит от сложности задачи. Главное бэкап базы сделайте.
Ошибка при печати отчёта - Отчёты
Константин Чилингаров: Не очень понял, если честно, что именно вы сделали. Но коли разобрались - хорошо :)

Пример создания плагина

Разработка приложений и функций - Плагины - Технические вопросы
Страницы: Пред. 1 2
Пример создания плагина
 
вопрос исчерпан! все по цепочке коллекция компонентов-компоненты-параметры и quontity найден
 
да, правильно
 
оказалось в sql просто :D, а в c# как половчее сделать?
 
Непонятен вопрос.

Есть объект "деталь" (номенклатура).
У него есть объекты - коллекции компонентов. В общем случае их много. Кто из них "техпроцесс", определяется по типу связи коллекции.

В коллекции есть компоненты (операции, материалы и др.). Кто из компонентов есть кто, определяется по типу связи компонента.

Норма расхода материала - это "количество" у компонента "материал" в коллекции "техпроцесс".
Параметры материала (заготовки) - это параметры компонента "материал" в коллекции "техпроцесс".

Вот с этими объектами и оперируйте.

Мы в своих плагинах, поскольку техпроцессов у детали может быть много и материалов в каждом техпроцессе может быть много, дополнительно выделяем такую сущность, как "основной материал" детали. Технически для этого соответствующий компонент (материал) из коллекции (техпроцесс) дополнительно привязывается, как связанный объект, к номенклатуре детали.
 
От детали (из номенклатуры )берем ID,в коллекции компонентов по(id детали)=ovnerid,находим id-(тех проц.),в компонентах по ovnerid=(id тех проц.)находим nomenclatureid -(материал) ...и.т.д,так представляю...а как реализовать?
 
Cписок коллекций по номенклатуре:
Код
var collections = ExtensibleApplication.Application.General.ComponentCollections(nomenclatureId)

Список компонентов коллекции:
Код
var comps = ExtensibleApplication.Application.General.Components(collectionId)

Поиск по спискам:
Код
var searchResult = bizObjectList.QuickSearch(new[]{"Имя свойства"}, new object[]{значение})
 
Например, есть ID номенклатуры у которой одна коллекция. В этой коллекции нам надо найти компонент с типом связи материал и поменять ему количество.

Код
var collections = ExtensibleApplication.Application.General.ComponentCollections(nomenclatureId);
var collectionId = collections[0].Id.AsLongInt; 
var comps = ExtensibleApplication.Application.General.Components(collectionId);
var searchResult = comps.QuickSearch(new[]{"LinkTypeUID"}, new object[]{"LT_Material"});
var mat = searchResult[0];
try
{
mat["Quantity"].Value = 123;
mat.Save();
}
finally
{
mat.Cancel();
}
 
Спасибо,так и пытаюсь собирать...
 
Большое всем СПАСИБО кнопка получилась отличная (норма матер,и сварку и краску  считает!!! все как и задумал)
.....беспокоит один вопрос что после ID 999999 ?
 
Цитата
что после ID 999999
ID 1000000  :)
 
тогда поместится все...
 
Код
Добавляем параметр так: 
1. получаете параметры нужного объекта(номенклатуры, компонента, коллекции...) 
2. создаёте новый параметр 
3. изменяете необходимые значения 
4. сохраняете и т.д...

Подскажите,пожалуйста, как такой же фокус проделать с папкой в дереве номенклатуры...
-выбираем номенклатурную поз.(-> piugin)
-добавляет папку в текущую папку номенклатуры с наименованием номенклатурной поз...(хочу упростить создание дерева номенклатуры для изделий, (сбор ед 1, входящие сборки и детали помещаем в папку с названием сбор ед 1, и т.д, )
 
Берём папки:
Код
var folders = ExtApp.Application.General.Folders(categoryId);

Создаём новую:
Код
var newFolder = folders.AddNew();
try
{
 newFolder.Name.Value = "новая папка";
 newFolder.ParentID.Value = folderId;//родительская папка
 newFolder.Save();
}
finally
{
 newFolder.Cancel();
}

Помещаем номенклатуру в папку:
Код
var nmk = nomenclatureItem as ArrangedObject;
try
{
 nmk["FolderId"].AsLongInt = folder.ID.AsLongInt;
 nmk.Save();
}
finally
{
 nmk.Cancel()
}
 
Здравствуйте , ув. разработчики.

Интересует вопрос , как сделать кнопку , нажатие на которую открывало бы окно создания новой папки , после создавалась эта папка ( с название которое ввели ) и в ней же находилось две дочерних папки ( к примеру с названиями Узлы и Детали ) .

И скажите пожалуйста как устанавливаются эти .dll файлы ( кинул в директорию программы, но кнопка не появилась )
Снимок.PNG (15.04 КБ)
Снимок1.PNG (3.05 КБ)
Изменено: Максим Прохоров - 08.09.2014 10:22:43
ООО "Нефтезаводмонтаж" , г.Волгоград
 
Всё тоже самое: создаёте папку
Код
var newFolder = folders.AddNew();
newFolder.ParentID.Value = folderId;//родительская папка
Создаёте диалог
Код
var folderDialog = new NodeEditForm(ExtApp);
в диалог подсовываете создаваемую папку
Код
folderDialog.DataSource = newFolder;
Показываете диалог, и если нажат ОК - сохраняете:
Код
if (folderDialog.ShowDialog() == PlugInFormShowResult.Ok)
            {               
                newFolder.Save();
            }
            else newFolder.Cancel();
Дальше создаёте новые папки "Узлы" и "Детали" с ParentId равным id newFolder'a
Цитата
Максим Прохоров пишет:
И скажите пожалуйста как устанавливаются эти .dll файлы ( кинул в директорию программы, но кнопка не появилась )
достаточно кинуть файлы в директорию программы. Если не появилась, то возможно кнопка скрыта - поищите в настройках панели инструментов. Если и там нет - значит что-то сделали не так
 
Спасибо, Сергей
ООО "Нефтезаводмонтаж" , г.Волгоград
 
Если я правильно понял, то код создания двух папок будет следующим ... в комментарий почему то не получается добавить его. Парсер не пропускает ...
Изменено: Максим Прохоров - 14.09.2014 18:37:21
ООО "Нефтезаводмонтаж" , г.Волгоград
 
Цитата
Максим Прохоров пишет:
Если я правильно понял, то код создания двух папок будет следующим ...
Код
var newFolder = folders.AddNew();
newFolder.Name.Value = "Узлы";
newFolder.ParentID.Value = newFolderId;
newFolder.Name.Value = "Детали";
newFolder.ParentID.Value = newFolderId;
Нет. Поняли не правильно. В вашем коде создаётся одна папка(AddNew). Затем одной и той же папке два раза присваивается разное наименование и 2 раза указывается родитель в дереве. +отсутствует сохранение.
Посмотрите сообщение №43 в этой теме. Там практически готовая функция для создания папок по названию и родителю.
 
Сергей! Сделал плагин, который загружает номенклатуру в Вогбит из файла .csv. Загрузку проходит нормально, но при повторной загрузке вылетает ошибка, что такая номенклатура есть. Пытаюсь организовать поиск в справочнике ранее загруженной номенклатуры, но что-то делаю не так. Подскажите где ошибка:
           try
           {
               using (StreamReader sr = new StreamReader(@"D:\nmkFile.csv", Encoding.Default))
               {
                   string[] headers = sr.ReadLine().Split('\t');
                   var folderId = ((IPlugInForm)activeForm).FormParams["FolderId"].AsLongInt;
                   var nmks = ExtApp.Application.General.Nomenclature(folderId, CatalogOptions.None);
                   foreach (string header in headers)
                   {
                       string strk = "";
                       while (!sr.EndOfStream)
                       {
                           string[] rows = sr.ReadLine().Split('\t');

                          /////Здесь бы нужен поиск по QuickSearch и в случае успеха номенклатуру не грузить
                           var searchResult = nmks.QuickSearch(new[] { "Name" }, new object[] { "ObjectNomenclature" });
                           ((ObjectNomenclature)searchResult[0]).NomenclatureValue;
                          ////////////////////////////////////////////////////////////­///////////////

                           var nmk = nmks.AddNew();
                           for (int i = 0; i < headers.Length; i++)
                           {
                               if (i == 0 && strk != rows[i])
                               {
                                   strk = rows[i];
                                   //Здесь можно добавить заказ
                               }
                               if (i == 2)
                               {
                                   nmk.Notation.Value = rows[i];
                               }
                               if (i == 1)
                               {
                                   nmk.Name.Value = rows[i];
                               }
                           }
                           nmk.Save();
                       }
                   }
               }
           }
           finally
           {
               //activeForm.Cancel();
           }
 
1. Обозначение номенклатуры должно быть уникально в рамках всей базы. Наименования могут быть одинаковыми. Соответственно, в поиске надо проверять Notation. Либо по наименованию(в случае если обозначение отсутствует). Это зависит от того, как у вас номенклатурный справочник ведётся. Ещё может быть случай, что обозначение совпадает, а наименование - нет.
2. В приведённом коде поиск производится в конкретной папке. Не факт, что уже существующая номенклатура лежит в этой папке.

В общем случае поиск номенклатуры по обозначению может выглядеть так:
Код
var nmks = ExtApp.Application.General.Nomenclature(-1, CatalogOptions.None);//беру весь справочник номенклатуры
......
var nmkNotation = rows[2];//обозначение номенклатуры из файла
var searchResult = nmks.QuickSearch(new[] { "Notation" }, new object[] { nmkNotation });//для наименования соответственно "Name" и rows[1]
if(searchResult != null && searchResult.Any())
{
//есть такая номенклатура
}

Есть ещё вариант поиска объекта по обозначению. Надо только тип объекта указать.
Код
ExtApp.Application.General.GetObjectByNotation()

Ну и можно ещё обрабатывать исключение при сохранении номенклатуры
Код
catch (SqlServerException exception)
{
   if (exception.Code == ErrorCode.NoteNotUnique)
   {
      //обозначение не уникально
   }
}
 
Реализовал первый вариант поиска, но если во втором варианте можно делать поиск объекта по обозначению любого типа, то где здесь указать тип объекта?

ExtApp.Application.General.GetObjectByNotation()

Потребуется поиск папок, заказов на производство, параметров. Второй вариант подойдет для этих целей?

Посмотрел, также базовые объекты по F11, но поле типа объекта там пустое и не очень понятно где ставить тип объекта, как он выглядит. Да и кнопку настройки не вижу в меню, чтобы сконфигурировать интерфейс.
 
Цитата
Николай Спирин написал:
где здесь указать тип объекта?
Второй параметр:
Код
ExtApp.Application.General.GetObjectByNotation(nmkNotation, (long)SystemObjectTypes.Nomenclature);
Цитата
Николай Спирин написал:
Второй вариант подойдет для этих целей?
Смотря как ведёте справочники. Обозначения может и не быть. Параметры в справочнике искать - подойдёт, параметры объекта искать - не подойдёт. Первый способ более гибкий.

Цитата
Николай Спирин написал:
поле типа объекта там пустое
Встаньте на ID. Или FolderID. Или любое другое Свойство-Идентификатор. Покажет какого типа объект с таким идентификатором.

Цитата
Николай Спирин написал:
кнопку настройки не вижу в меню, чтобы сконфигурировать интерфейс
здесь
Страницы: Пред. 1 2
Сейчас на форуме (гостей: 20)
Всего зарегистрированных пользователей: 2760
Приняло участие в обсуждении: 328
Всего тем: 804
Всего сообщений: 6066

×
Вход на сайт