Имя: Пароль:
1C
1С v8
Пустое количество при заполнении документа
0 Coole
 
28.06.17
19:41
Розница 2.2
Заполняю документ своей обработкой из Эксель файла.
Номенклатура по артикулу ищется, цена в документ по выбранному на форме ТипуЦен высчитывается и в документе видна.
Но, что происходит с количеством? Почему при заполнении документа я его "вижу" в отладчике (отладка создания или заполнения объектов 8.2, спасибо Поручику)? А при открытии документа количество  пропадает. Документ - Перемещение товаров.
что за полтергейст?
1 Tateossian
 
28.06.17
19:44
(0) Типизацию проверяй, в твоей структуре данных - это строка, а там - число, скорее всего (ИМХО). Приведи к Число(xxx)
2 Coole
 
28.06.17
19:55
Количество = СтрокуВЧисло(СОКРЛП(ExcelSheet.Cells(НомерСтроки, НомерКолонкиСКоличеством).Value));
....


Если Количество > 0 Тогда

СтрокаТЧ = ОбъектНазначения.Товары.Добавить();
и т д
3 Tateossian
 
28.06.17
20:01
Покажи, что вот это? СтрокуВЧисло()
4 Tateossian
 
28.06.17
20:02
И следующее, открою тайну - 1С может уже как несколько лет грузить файлы xls без Com servera office Где вы это находите? У меня на сервере нет вообще экселя и везде оен оффис.
5 Tateossian
 
28.06.17
20:04
Вот весь код

ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ПутьКФайлу);

Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область());
Построитель.Выполнить();

ТаблицаРезультат = Построитель.Результат.Выгрузить();
6 Tateossian
 
28.06.17
20:04
А путь файлу хоть эксель хоть опен оффис что хочешь

Одно но: не получится многолистный файл загрузить - он будет длинным одностраничным файлом.
7 Coole
 
28.06.17
20:06
(5) это конечно интересно, но если в Экселе объединенные ячейки?
8 Coole
 
28.06.17
20:06
(3)
Функция СтрокуВЧисло(Знач СтрокаВЧисло) Экспорт
    
    Если СтрокаВЧисло = Неопределено или ПустаяСтрока(СОКРЛП(СтрокаВЧисло)) Тогда Возврат 0; КонецЕсли;
    
    СтрокаВЧисло = СОКРЛП(СтрокаВЧисло);
    МассивЧиселВВидеСтрок = Новый Массив();
    Для инд = 0 по 9 Цикл
        МассивЧиселВВидеСтрок.Добавить(Строка(инд));
    КонецЦикла;
    
    //для дробных чисел
    МассивЧиселВВидеСтрок.Добавить(",");
    МассивЧиселВВидеСтрок.Добавить(".");
    
    ДлинаСтроки = СтрДлина(СтрокаВЧисло);
    Для инд =1 по ДлинаСтроки Цикл
        СимволСтроки = Сред(СтрокаВЧисло,инд,1);
        Если МассивЧиселВВидеСтрок.Найти(СимволСтроки) = Неопределено Тогда
            СтрокаВЧисло = СтрЗаменить(СтрокаВЧисло,СимволСтроки, "");
        КонецЕсли;
    КонецЦикла;
    
    Попытка
        
        Возврат Число(СтрокаВЧисло);
        
    Исключение
        
        Возврат 0;
        
    КонецПопытки;
    
КонецФункции
9 Coole
 
28.06.17
20:09
10 Tateossian
 
28.06.17
20:14
(9) Он нормально структурирован. Получишь пустые столбцы. Удалишь их перед обработкой. Все объединенные ячейки будут перенесены в крайнюю левую/верхнюю.
11 Coole
 
28.06.17
20:16
(10)
поняла.
но? я ведь точку останова и Количество Значение 4 Тип Число
почему?
Почему ОбъектНазначения.Товары.Количество = 4 пишет в отладчике.
а при открытии - нет(
12 Tateossian
 
28.06.17
20:19
Хочешь покажу код, который тебе вытащит все числа в три строки, да еще и быстро?
13 Tateossian
 
28.06.17
20:19
держи

RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Multiline = Истина;
RegExp.IgnoreCase = Истина;
RegExp.Global = Ложь;

Шаблон = "[1-9][\d]*$";

RegExp.Pattern = Шаблон;

Результат = СтрокаРазбор;

Варианты = RegExp.Execute(СтрокаРазбор);

Для Каждого Подгруппа Из Варианты Цикл
    
    Результат = Подгруппа.Value;
    
КонецЦикла;
14 Tateossian
 
28.06.17
20:20
В переменной Результат будет искомое число, а СтрокаРазбор - строка откуда нужно вытащить числа.
15 Tateossian
 
28.06.17
20:23
(11) Скриншот покажи отладчика, а конкретно - таб часть документа
16 Coole
 
28.06.17
20:23
ок,
я конечно попробую,
но помоему это не решит с количеством проблему
17 pessok
 
28.06.17
20:31
Tateossian друже, у тебя сегодня прям день обучения людей тому, о чём они не просят :)

Coole смотри, что у тебя в ПриСозданииНаСервере() в самом начале
18 Coole
 
28.06.17
20:37
(17) в документе?
не в моей обработке?
19 pessok
 
28.06.17
20:42
(18) в документе, в количестве
есть у меня ощущение, что количество у тебя и заполнено
розницы под рукой нет, но почти уверен, что нужный реквизит - КоличествоМест
20 Tateossian
 
28.06.17
20:48
(17) Хорошее настроение у меня. Ухожу из профессии, вот, делюсь знаниямм, чтобы не пропадать добру.
21 pessok
 
28.06.17
20:48
(20) да я и не в упрёк, просто заметил :D
куда уходишь, если не секрет?
22 Coole
 
28.06.17
20:51
(19) допустим, т.к. у меня внешняя обработка табл части документа, то
ПриЧтенииНаСервере(ТекущийОбъект)
много ОбработкаТабличнойЧастиТоварыСервер
но, на выходе из ПриЧтенииНаСервере

ТекущийОбъект.Товары[0].Количество    4    Число
а вот
23 Coole
 
28.06.17
20:52
насчет мест скорее всего верно подметил

....
Количество
Количество единиц рассчитывается автоматически. Если для номенклатуры указана упаковка, то количество единиц можно отредактировать с автоматическим пересчетом количества упаковок.
КоличествоУпаковок
Необходимо указать количество упаковок номенклатуры. Если для выбранной номенклатуры не используются упаковки, то следует указать количество единиц номенклатуры.
24 pessok
 
28.06.17
20:52
(22) ТекущийОбъект.Товары[0].КоличествоМест
есть такой реквизит ТЧ?
25 Tateossian
 
28.06.17
20:52
(21)  Запуская (ох уж это мерзкое слово) свой стартап. Готовлю к релизу.
26 pessok
 
28.06.17
20:53
(23) или Упаковок, да. Я пельмешки ем, на память отвечаю :)
27 Coole
 
28.06.17
20:57
(26) громадное спасибо....
28 Coole
 
28.06.17
20:58
открыла док и увидела свое кол-во
о, сколько нам открытий чудных готовит просвещенья дух!
AdBlock убивает бесплатный контент. 1Сергей