![]() |
|
Пустое количество при заполнении документа | ☑ | ||
---|---|---|---|---|
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
|
http://pixs.ru/showimage/Bezimyanni_9698236_26696389.jpg
вот Эксель файл |
|||
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
|
открыла док и увидела свое кол-во
о, сколько нам открытий чудных готовит просвещенья дух! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |