Имя: Пароль:
1C
1C 7.7
v7: Внешняя печатная форма
, ,
0 san4ez1008
 
24.03.17
09:31
Добрый день! Создаю внешнюю печатную форму, партнеру нужно, чтобы в ней указывались количество единиц поставки и вложимость единиц поставки. Табличка будет выглядеть примерно так: http://i069.radikal.ru/1703/2d/b0d46a5c9fc9.jpg. Вложимостью единицы поставки будет количество штук в месте. В номенклатуре нашей базы единица измерения только одна - штуки, поэтому вложимость надо считывать с наименования. Наименования в номенклатуре прописываются следующим образом: MEN DEEP EFFECT 3 шампунь От перхоти и жирности с цинк-пиратионом 250мл[6;] или т/мыло FA Бодрящее 90гр [40;5]. Вопрос: как найти это число в строке наименования номенклатуры, если оно находится между [ и ; ?
1 san4ez1008
 
24.03.17
09:32
Конфиг комплексная 4.5
2 VladZ
 
24.03.17
09:35
(0) Считывать что-то из названия - ненадежный метод. Заведите отдельный реквизит. Будет быстрее и надежнее.
3 1dvd
 
24.03.17
09:39
СтрНайти
4 1dvd
 
24.03.17
09:39
Ну, или регуляркой воспользоваться, если времени много
5 san4ez1008
 
24.03.17
09:40
(4) времени в обрез
6 1dvd
 
24.03.17
09:40
(5) тогда (3)
7 san4ez1008
 
24.03.17
09:41
(6) СтрНайти нет функции оО
8 Fedor-1971
 
24.03.17
09:42
(0) Как-то так:
позОтКуда= СтрНайти(Наименование,"[");
позДоКуда= СтрНайти(Наименование,";");
Если (позДоКуда-ПозОтКуда)>0 тогда
  Вложимость=Число(позДоКуда-ПозОтКуда);
КонецЕсли;

только что будешь делать когда будет наименование типа "некая большая штука [тут ещё какая-то информация ; [40;5]"
в (2) прав, отдельным реквизитом кошернее.
9 1dvd
 
24.03.17
09:42
(7) украли!
10 san4ez1008
 
24.03.17
09:43
(9) просто Найти есть
11 1dvd
 
24.03.17
09:44
(10) а... у тебя семерка, да, тогда Найти(
12 Fedor-1971
 
24.03.17
09:44
(10) и? как-то меняется суть алгоритма?
13 san4ez1008
 
24.03.17
09:48
(12) да вроде нет
14 Fedor-1971
 
24.03.17
09:48
8+ малость ошибся
вместо  Вложимость=Число(позДоКуда-ПозОтКуда);
надо  Вложимость=Число(Сред(Наименование,позОтКуда,позДоКуда-ПозОтКуда)); - надо получить число из строки, а не разность позиций
15 1dvd
 
24.03.17
09:49
(14) ; может встретиться до [
16 san4ez1008
 
24.03.17
09:50
(14) не работает(
17 Fedor-1971
 
24.03.17
09:51
(15) потому и контроль разности После-До
Тут больше проблема когда между символами строка текста, а не число, или несколько чисел

(16) отладчиком пользоваться умеешь? вот и воспользуйся
18 san4ez1008
 
24.03.17
09:52
(17) еще ни разу не пользовался..
19 1dvd
 
24.03.17
09:54
(18) самое время начать
20 Fedor-1971
 
24.03.17
09:54
(18) учись, так завещал дедушка Ленин
Внеси исправление (14) в (8) и учись пользоваться отладчиком
21 san4ez1008
 
24.03.17
10:12
(20) говорила мне мама, "Сынок,зануляй перменные"... =/
вложимость = 0
22 Fedor-1971
 
24.03.17
10:34
(21) Лучшие грабли, это те, на которые, наступил сам.
23 san4ez1008
 
24.03.17
11:15
а еще вопрос, мне в печатную форму надо вывести реквизит с заявки покупателя "Дата отгрузки", пытаюсь передать во внешнюю печатную форму через Докум.Форма.ДатаОтгрузки - выводит неизвестный объект...
24 san4ez1008
 
24.03.17
11:17
о блин,какая нахрен форма... все сделал
25 san4ez1008
 
24.03.17
11:56
а как из поля "комментарий" номенклатуры извлечь данные?
26 Смотрящий
 
24.03.17
12:05
(25) Ты не поверишь
27 san4ez1008
 
24.03.17
12:07
(26) нет конечно
28 Fedor-1971
 
24.03.17
12:10
(25) ты о чём?
целиком Номенклатура.Комментарий,
часть -  работа со строками
29 san4ez1008
 
24.03.17
12:11
(28) все что после слова "Объем: " стоит. А если это будет не единственной строкой?
30 Fedor-1971
 
24.03.17
12:14
(29) тебе виднее что в твоём поле записано. Принцип в (8), только забирай всё до конца строки
31 san4ez1008
 
24.03.17
12:21
символ конца строки 10 или 13?
32 Fedor-1971
 
24.03.17
12:43
(31) почитай в СП про Сред(), вроде если не указать количество символов (последний параметр), то получишь строку с указанной позиции до конца строки
33 Маркусс
 
24.03.17
13:04
Ищешь позицию [
Ищешь позицию ;
Вичисляешь длину искомой строки
Через сред получешь с позиции[ строку полученной длиной.
Там перебираешь символы на соответствие числовому ряду. и преобразуешь полученную строку в число.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший