Форум пользователей ПО АСКОН

Профессиональные вопросы => Программирование приложений => Тема начата: arbuzovds от 30.03.17, 18:07:08

Название: Чтение спецификаций из 1С неверное считывание количества стандартных изделий
Отправлено: arbuzovds от 30.03.17, 18:07:08
С помощью 1С 8.3 загружаю из Компас 16 спецификации. Все грузится, но есть отдельные спецификации, в которых 1С неверно считывает количество. НАпример, в спецификации Компас 16 болтов, а программно считывается 1. Если в спецификации через компас выбрать "вид - показать все объекты", то в спецификации отображается 16 строк с данным болтом и в каждой строчке количество 1 шт. Вопрос - как правильно считать все количество?

Вот код, которым читаю спецификацию:

kompas=Новый COMОбъект("Kompas.Application.7");

doc=kompas.documents.open(Путь,0,1);
spec=doc.SpecificationDescriptions;
   
//   spec.Active.ShowAllObjects = true;
   
если spec.count>0 тогда
   specItem = spec.item(0);
   
   
   для каждого объектСтрока из specItem.Objects цикл   
      
      если  объектСтрока.objectType=1 или объектСтрока.objectType=2 тогда
         
         позиция=0;Обозначение=""; Наименование="";индекс=0;Количество=0; НомерКолонкиИсполнения=0;НаименованиеМатериала = ""; Формат = ""; Примечание = "";
         
         пока индекс<объектСтрока.Columns.count цикл
            
            Column=объектСтрока.Columns.item(индекс);
            индексC=0;
            текст="";
            
            пока индексC<Column.ColumnItems.count цикл
               Item=Column.ColumnItems.item(индексC);
               текст=текст+Item.Value;
               индексC=индексC+1;
            конеццикла;
            
            
            если Column.ColumnType=6 тогда
               попытка
                  Количество=число(текст);
               исключение
                  Количество=0;
               конецпопытки;
            конецесли;
            
         конеццикла;
         
      КонецЕсли;
      
   конеццикла;
   
КонецЕсли;
Название: Re: Чтение спецификаций из 1С неверное считывание количества стандартных изделий
Отправлено: GL_E от 31.03.17, 09:23:16
Здравствуйте.
А если из компаса "сохранить как..." таблицу excel. 1C-у с excel-em всяко проще, мне кажется.
Название: Re: Чтение спецификаций из 1С неверное считывание количества стандартных изделий
Отправлено: arbuzovds от 04.04.17, 09:48:02
Из эксель проще, Вы правы, но, у нас большое количество спецификаций и конвертировать каждую в эксель не удобно. Тем более пользователи не очень продвинутые. А если учесть, что в процессе бывает много изменений, то от экселя хочется уйти. Хотелось бы напрямую.
Название: Re: Чтение спецификаций из 1С неверное считывание количества стандартных изделий
Отправлено: GL_E от 05.04.17, 11:00:19
я имел ввиду программно. из 1С открыть КОМПАС, пересохранить во временный excel-eвский файл  спецификацию, закрыть компас и дальше уже работать с временным файлом.


----
хотя уже не уверен в такой возможности. в справке сохранить как excel есть, а по факту нет :(
Название: Re: Чтение спецификаций из 1С неверное считывание количества стандартных изделий
Отправлено: arbuzovds от 05.04.17, 15:22:48
Эх, если бы еще подсказали, как программно сохранить в эксель. Я бы прыгал от счастья. Намучался я с этим кодом Компаса. Ничего не помогает. Читает 1 шт. и все. Такое ощущение, что эта информация не храниться в самой спецификации, а находиться в сборочном чертеже и передается туда через какую-то связку. Но ведь когда нажимаем кнопку "показать все объекты", то Компас показывает все 16 строк по одной штуке. Как туда получить доступ? Пробовал установить программно при чтении файла spec.Active.ShowAllObjects = true, но это не помогает. И само свойство не меняется. Может разработчики помогут?
Название: Re: Чтение спецификаций из 1С неверное считывание количества стандартных изделий
Отправлено: arbuzovds от 05.04.17, 22:27:35
Никогда не пишу на форумах, но Компас вынуждает.  :`(

Потратил два дня. К полуночи дошло! Все дело в specItem.ShowAllObjects = TRUE; Дело в том, что эта штуковина не устанавливается просто так. Сначала нужно получить доступ к спецификации через doc.SpecificationDescriptions, установить specItem.ShowAllObjects = TRUE, сохранить спецификацию, а затем снова получать к ней доступ. В этом случае в спецификацию попадают все объекты. Кто бы знал!!!
:um: :!:
Название: Re: Чтение спецификаций из 1С неверное считывание количества стандартных изделий
Отправлено: СЛ_Елизавета от 10.11.17, 11:06:56
А можете подсказать как мне вытащить уникальный идентификатор из спецификации? И узнать корневой или не корневой элемент.