Как сложить элементы массива между собой?

1. Sharap09 17.06.22 15:01 Сейчас в теме
Ребят, извините, я только учусь ... мне интересно как сложить элементы массиваЦен и получить Общую, Итоговую сумму ?

Дано:
•СтрокаТоваров ="Тумба, Шкаф, Стол, Стул" ;
• СтрокаЦен = " 5000,7000, 6000, 2000" ;

// Первое Задание было перевести данные в Массивы и вывести все значения массивов в виде :

• <Товар > (цена = <ЦенаТовара>)

• Решение:
МассивТоваров = СтрРазделить( СтрокаТоваров,",", Ложь) ;
МассивЦен = СтрРазделить( СтрокаЦен,",", Ложь) ;

// и все значения массива вывела в Цикле со счетчиком:

Для Индекс =0 По МассивТоваров.ВГраница() Цикл

СтрокаВывода = СтрШаблон(" %1 (цена = %2 )", МассивТоваров[Индекс], МассивЦен[Индекс] ) ;
Сообщить( СтрокаВывода) ;
КонецЦикла;

// Дальше в этой задачке надо посчитать Итоговую сумму по всем Товарам ( т.е. сложить все цены между собой из МассиваЦен ... :( - подскажите пж как сложить все значения МассиваЦен между собой ? что то не получается никак :(

- С уважением ко всем на Форуме
По теме из базы знаний
Найденные решения
2. GeraltSnow 174 17.06.22 15:03 Сейчас в теме
Сумма = 0;
Для Индекс = 0 По МассивЦен.ВГраница() Цикл
 Сумма = Сумма + МассивЦен[Индекс];
КонецЦикла;
Сообщить(Сумма);
dmbarchenkov; Sharap09; +2 Ответить
3. antz 17.06.22 15:07 Сейчас в теме
Вычислить(СтрСоединить(МассивЦен, "+"))


:)
BenDigget; dmbarchenkov; +2 Ответить
4. soft_wind 17.06.22 15:09 Сейчас в теме
вообще от первой строки

Сумма = Вычислить(стрЗаменить(СтрокаЦен,",","+"));
Sharap09; +1 Ответить
11. spacecraft 17.06.22 17:15 Сейчас в теме
(10) все просто. Вычислить возвращает значение
Сообщить("Итог: "+Вычислить(СтрСоединить(МассивЦен,"+")));
Sharap09; +1 Ответить
15. DesertPunk 17.06.22 18:38 Сейчас в теме
(14) Если использовать в только рамках реквизитов с типом значения число - всё Ок. Но если это какой-то внешний источник данных, то нет 100% гарантии, что на той стороне никто не накосячил.
Sharap09; +1 Ответить
16. spacecraft 17.06.22 18:39 Сейчас в теме
(14) классический приведен в 2.

(14)
как понять - « не совсем безопасный код»?

Вот эта строка кода:
Сумма = Сумма + МассивЦен[Индекс];
В МассивЦен[Индекс] строка с цифрами. Это не число.
Просто неявно происходит преобразование типов из строки в Число. Это происходит потому, что левый операнд Сумма имеет тип Число. К нему и пытается привестись второй операнд.
Это будет тоже самое, если записать так:
Сумма = Сумма + Число(МассивЦен[Индекс]);
Т.е. принудительное преобразование типа Строка в Число.
И если в МассивЦен[Индекс] окажется строка, которая не может быть преобразована в Число, то получим ошибку преобразования типа.
(14)
ну и как понять -« если в СтрокеЦен окажется НЕ ЧИСЛО ??? » разве цена может быть " не числом ??? "

Так в том и дело, что на входе получаете строку:

Дано:
•СтрокаТоваров ="Тумба, Шкаф, Стол, Стул" ;
• СтрокаЦен = " 5000,7000, 6000, 2000" ;

МассивЦен = СтрРазделить( СтрокаЦен,",", Ложь) ;

СтрокаЦен это именно строка. А в МассивЦен получается массив Строк.
Строка входящая и от нас не зависит. Что там пришло мы не проверяем. Полагаемся на то, что там строка цифр, разделенных запятой. Но на самом деле там может прийти все что угодно. Это просто соглашение, которое основывается на вере в правильности данных. Это и может привести к ошибкам во время выполнения в кода.
Sharap09; +1 Ответить
18. lefthander 05.09.22 10:47 Сейчас в теме
(1)

• Решение:
МассивТоваров = СтрРазделить( СтрокаТоваров,",", Ложь) ;
МассивЦен = СтрРазделить( СтрокаЦен,",", Ложь) ;

// и все значения массива вывела в Цикле со счетчиком:

Для Индекс =0 По МассивТоваров.ВГраница() Цикл

СтрокаВывода = СтрШаблон(" %1 (цена = %2 )", МассивТоваров[Индекс], МассивЦен[Индекс] ) ;
Сообщить( СтрокаВывода) ;
КонецЦикла;

(17) Так в первом посте и есть решение... но дальнейшее обсуждение тоже очень нужное и познавательное.
Sharap09; +1 Ответить
20. SlavaKron 05.09.22 10:53 Сейчас в теме
(17)
Товары = "Тумба,Шкаф,Стол";
Цены = "5000, 7000, 6000";
МассивТовары = СтрРазделить(Товары, ",", Ложь);
МассивЦены = СтрРазделить(Цены, ",", Ложь);

Для Сч = 0 По МассивТовары.ВГраница() Цикл
	
	Сообщить(МассивТовары[Сч] + " (цена = " + МассивЦены[Сч] + ")");
	
КонецЦикла;
Показать
Sharap09; +1 Ответить
25. lefthander 05.09.22 15:34 Сейчас в теме
(24)
Процедура не Возвращает , а как это?
Она (процедура) просто выполняет код. А функция выполняет код и возвращает результат выполнения.

Если Вам по логике программы надо в разных местах выполнять некие однотипные вычисления их логично оформить функцией и когда нужно вызывать и получать результат. Если это делать процедурой, то в каждом месте где нужны вычисления Вам придется писать код вычисления. В процессе набора опыта Вам будет понятно когда можно просто код написать в процедуре, а когда его написать в функцию.
;)
ЗЫ успехов в освоении 1С.
Sharap09; +1 Ответить
26. Sashares 35 05.09.22 15:47 Сейчас в теме
(24)Пример - надо вычислить сумму 2х чисел.
Если надо вычислить их сумму и вернуть результат, то используется функция.

А = 4;
Б = 5;
Результат = ПолучитьСумму(А,Б);
...
Функция ПолучитьСумму(А,Б)

РезультатСуммы = А + Б;

Возврат РезультатСуммы;

КонецФункции
Показать


Если надо вычислить их сумму, но возвращать результат не надо, а например, результат записывается в базу, то используется процедура.

А = 4;
Б = 5;
РассчитатьСумму(А,Б);
...
Процедура РассчитатьСумму(А,Б)

РезультатСуммы = А + Б;

//а тут РезультатСуммы записывается в базу

КонецПроцедуры
Показать
Sharap09; +1 Ответить
27. spacecraft 05.09.22 15:57 Сейчас в теме
(24) если нужно что-то просто выполнить, то Процедура. Если нужно что-то выполнить и вернуть результат выполнения/вычисления, то Функция.
Пример.
А = ПолучитьНужныеДанные();

В данном случае ПолучитьНужныеДанные это функция (это не стандартная функция, ее мы должны сами определить)
Если ее сделать процедурой, то будет ошибка, так как процедура ничего не может возвращать, соответственно будет определена ошибка, так как переменной А происходит попытка присвоить значение, а самого факта присвоения не может существовать.
Другими словами, Процедура может быть только вызвана и не может применяться в выражении присваивания.
Пример процедур:
Сообщить("Что-то");
Тут явно только вызывается Сообщить и ничего не ожидается к получению значений.

В Функции не обязательно что-то возвращать. Если не будет явного Возврат значения, то по умолчанию вернется Неопределено.
Из того следует, что в принципе, там где может применяться Процедура, там может применяться и функция. За исключением случаев описания обработчиков и служебных вызовов (таких как асинхронные вызовы). Там просто ожидается наличие именно процедур.
Но в своем коде вызова, можно использовать и функции без получения возвращаемых значений. Даже если функция что-то возвращает, это не обязывает это значение получать. Ту же функцию ПолучитьНужныеДанные можно вызвать и просто так:
ПолучитьНужныеДанные();
Но нужно понимать, что ресурсы на выполнение функции тратится несколько больше, чем на процедуру. И не следует всегда применять функции вместо процедур. Ну и логическое разделение кода все же тоже важно.
Sharap09; +1 Ответить
33. Sashares 35 05.09.22 17:14 Сейчас в теме
(32)
Используется конструкция СообщениеПользователю.
В типовых конфигурациях на БСП для упрощения использования есть процедуры в общих модулях ОбщегоНазначенияКлиент, ОбщегоНазначенияСервер или ОбщегоНазначенияКлиентСервер.

Из синтакс помощника:

СообщениеПользователю (UserMessage)
Свойства:
ИдентификаторНазначения (TargetID)
КлючДанных (DataKey)
Поле (Field)
ПутьКДанным (DataPath)
Текст (Text)
Методы:
Сообщить (Message)
УстановитьДанные (SetData)
Конструкторы:
По умолчанию
Описание:
Предназначен для хранения параметров сообщения, которые необходимо вывести пользователю.
Если сообщение еще не было показано пользователю (такое может быть при работе на стороне сервера, в фоновом задании, внешнем соединении или Web-сервисах), можно получить накопленные сообщения методом ПолучитьСообщенияПользователю.

В форме клиентского приложения, в случае выполнения просмотра сообщения, выполняется следующий механизм обработки:
Если у сообщения свойство КлючДанных заполнено и не совпадает с ключевым значением основного реквизита текущей формы (ссылкой объекта или ключом записи регистра сведений), то:
открывается новая форма объекта, соответствующая значению свойства КлючДанных;
если у сообщения свойство ПутьКДанным не заполнено, то в него проставляется имя основного реквизита открытой формы объекта;
вызывается показ сообщения в только что открытой форме;
выполняется перенос всех соответствующих сообщений из окна первой формы в новую форму (с таким же значением свойств КлючДанных, как у выбранного сообщения). При этом перенесенным сообщениям аналогичным образом проставляется свойство ПутьКДанным, если оно не установлено.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Пример:
Процедура ДействиеСОбъектом(ОбъектДанных)
...
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = НСтр("ru = 'В строке 11 табличной части Номенклатура не хватает "
+ "; en = 'In line 11 of tabular section Nomenclature is missing' ")
+ НедостающееКоличество + " " + ЕдиницаИзмеренияНоменклатуры;
Сообщение.Поле = "Номенклатура[10].Количество";
Сообщение.УстановитьДанные(ОбъектДанных);
Сообщение.Сообщить();

КонецПроцедуры;
Показать
Sharap09; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. Sashares 35 17.06.22 15:15 Сейчас в теме
2. GeraltSnow 174 17.06.22 15:03 Сейчас в теме
Сумма = 0;
Для Индекс = 0 По МассивЦен.ВГраница() Цикл
 Сумма = Сумма + МассивЦен[Индекс];
КонецЦикла;
Сообщить(Сумма);
dmbarchenkov; Sharap09; +2 Ответить
6. Sharap09 17.06.22 15:36 Сейчас в теме
Большое Спасибо вам! - Оч Круто!!! - все сразу посчиталось ! :) у меня слов нет - круто!
3. antz 17.06.22 15:07 Сейчас в теме
Вычислить(СтрСоединить(МассивЦен, "+"))


:)
BenDigget; dmbarchenkov; +2 Ответить
7. Sharap09 17.06.22 15:38 Сейчас в теме
(3)ого! - а это без Цикла - просто подставить ?
9. Sharap09 17.06.22 15:53 Сейчас в теме
(3) А здесь выходит окно : « Неизвестный модуль ... Встроенная Функция м.б. использована только в выражении ( Вычислить) - мошь я что то не добавила? - Сообщить() надо?
10. Sharap09 17.06.22 16:55 Сейчас в теме
(3)
Вычислить(СтрСоединить(МассивЦен, "+"))


- а вот этот вариант почему не работает?( остальные все сработали варианты ) здесь нужно Возврат сделать или я вообще не поняла это ?
11. spacecraft 17.06.22 17:15 Сейчас в теме
(10) все просто. Вычислить возвращает значение
Сообщить("Итог: "+Вычислить(СтрСоединить(МассивЦен,"+")));
Sharap09; +1 Ответить
12. Sharap09 17.06.22 17:32 Сейчас в теме
(11) Спас
(11)
Сообщить("Итог: "+Вычислить(СтрСоединить(МассивЦен,"+")));

-Ой спасибо большое - все получилось , как и остальные варианты :) спасибочки большое :)
13. spacecraft 17.06.22 17:49 Сейчас в теме
(12) но таким способом лучше не пользоваться. Только когда точно будет известно, что он сработает. Это больше хак. Применимо в очень ограниченном количестве случаев.
И код из (2) не совсем безопасный. Да, он рабочий, но что будет, если в СтрокаЦен окажется не число?
К примеру:
СтрокаЦен = "5000 , 7000 , 6000, 2000, 100FF100" ;
В таком случае мы получим ошибку преобразования типа.
Можно обезопасить код:
СтрокаЦен = "5000 , 7000 , 6000, 2000, 100FF100" ;
МассивЦен = СтрРазделить( СтрокаЦен,",", Ложь) ;
ТипЧисло = Новый ОписаниеТипов("Число");
Сумма = 0;
Для Индекс = 0 По МассивЦен.ВГраница() Цикл
 Сумма = Сумма + ТипЧисло.ПривестиЗначение(МассивЦен[Индекс]);
КонецЦикла;
Сообщить(Сумма);
Показать

Так не часто используют. Но знать это нужно.
Sharap09; GeraltSnow; +2 Ответить
14. Sharap09 17.06.22 18:22 Сейчас в теме
(13)
(13)
но таким способом лучше не пользоваться. Только когда точно будет известно, что он сработает. Это больше хак. Применимо в очень ограниченном количестве случаев.
И код из (2) не совсем безопасный. Да, он рабочий, но что будет, если в СтрокаЦен окажется не число?
К примеру:
СтрокаЦен = "5000 , 7000 , 6000, 2000, 100FF100" ;:


а пож объясните - как понять - « не совсем безопасный код»? ...

- ну и как понять -« если в СтрокеЦен окажется НЕ ЧИСЛО ??? » разве цена может быть " не числом ??? "
- а какой вариант из этих трех тогда самый нормальный?
15. DesertPunk 17.06.22 18:38 Сейчас в теме
(14) Если использовать в только рамках реквизитов с типом значения число - всё Ок. Но если это какой-то внешний источник данных, то нет 100% гарантии, что на той стороне никто не накосячил.
Sharap09; +1 Ответить
16. spacecraft 17.06.22 18:39 Сейчас в теме
(14) классический приведен в 2.

(14)
как понять - « не совсем безопасный код»?

Вот эта строка кода:
Сумма = Сумма + МассивЦен[Индекс];
В МассивЦен[Индекс] строка с цифрами. Это не число.
Просто неявно происходит преобразование типов из строки в Число. Это происходит потому, что левый операнд Сумма имеет тип Число. К нему и пытается привестись второй операнд.
Это будет тоже самое, если записать так:
Сумма = Сумма + Число(МассивЦен[Индекс]);
Т.е. принудительное преобразование типа Строка в Число.
И если в МассивЦен[Индекс] окажется строка, которая не может быть преобразована в Число, то получим ошибку преобразования типа.
(14)
ну и как понять -« если в СтрокеЦен окажется НЕ ЧИСЛО ??? » разве цена может быть " не числом ??? "

Так в том и дело, что на входе получаете строку:

Дано:
•СтрокаТоваров ="Тумба, Шкаф, Стол, Стул" ;
• СтрокаЦен = " 5000,7000, 6000, 2000" ;

МассивЦен = СтрРазделить( СтрокаЦен,",", Ложь) ;

СтрокаЦен это именно строка. А в МассивЦен получается массив Строк.
Строка входящая и от нас не зависит. Что там пришло мы не проверяем. Полагаемся на то, что там строка цифр, разделенных запятой. Но на самом деле там может прийти все что угодно. Это просто соглашение, которое основывается на вере в правильности данных. Это и может привести к ошибкам во время выполнения в кода.
Sharap09; +1 Ответить
24. Sharap09 05.09.22 15:21 Сейчас в теме
(11)
все просто. Вычислить возвращает значение


- а вот не можете подсказать : я уже от этого урока ушла До : "Общие Модули", "Визуализация Таблицы Значений" и т.д. , но не могу, до сих пор, понять суть слова « Возвращает Значение » , ну просто запоминаю, что Функция Возвращает какое-то Значение и в конце надо писать ключевое слово :« Возврат ... + Значение что она возвращает » , и в чем разница Процедуры от Функции? - и когда надо Функцию писать, а когда Процедуру? ...

Процедура не Возвращает , а как это? не могу до сих пор это понять :( не подскажете, где взять эту информацию ?
25. lefthander 05.09.22 15:34 Сейчас в теме
(24)
Процедура не Возвращает , а как это?
Она (процедура) просто выполняет код. А функция выполняет код и возвращает результат выполнения.

Если Вам по логике программы надо в разных местах выполнять некие однотипные вычисления их логично оформить функцией и когда нужно вызывать и получать результат. Если это делать процедурой, то в каждом месте где нужны вычисления Вам придется писать код вычисления. В процессе набора опыта Вам будет понятно когда можно просто код написать в процедуре, а когда его написать в функцию.
;)
ЗЫ успехов в освоении 1С.
Sharap09; +1 Ответить
26. Sashares 35 05.09.22 15:47 Сейчас в теме
(24)Пример - надо вычислить сумму 2х чисел.
Если надо вычислить их сумму и вернуть результат, то используется функция.

А = 4;
Б = 5;
Результат = ПолучитьСумму(А,Б);
...
Функция ПолучитьСумму(А,Б)

РезультатСуммы = А + Б;

Возврат РезультатСуммы;

КонецФункции
Показать


Если надо вычислить их сумму, но возвращать результат не надо, а например, результат записывается в базу, то используется процедура.

А = 4;
Б = 5;
РассчитатьСумму(А,Б);
...
Процедура РассчитатьСумму(А,Б)

РезультатСуммы = А + Б;

//а тут РезультатСуммы записывается в базу

КонецПроцедуры
Показать
Sharap09; +1 Ответить
28. Sharap09 05.09.22 16:10 Сейчас в теме
(26)
А = 4;
Б = 5;
РассчитатьСумму(А,Б);
...
Процедура РассчитатьСумму(А,Б)

РезультатСуммы = А + Б;

//а тут РезультатСуммы записывается в базу

КонецПроцедуры
П



- а здесь пж подскажите - Метод Сообщить() - одинаково работает и для Процедуры и для Функции? - здесь нет никаких нюансов? ( я что-то раньше об этом не задумывалась ...)
31. Sashares 35 05.09.22 17:01 Сейчас в теме
(28)
Метод Сообщить() - одинаково работает и для Процедуры и для Функции?

Да, это метод платформы, работает одинаково.

Правда он уже устарел, и в управляемом режиме его обычно не используют, но и в управляемом режиме он работает.
Sharap09; +1 Ответить
32. Sharap09 05.09.22 17:04 Сейчас в теме
(31)
Правда он уже устарел, и в управляемом режиме его обычно не используют


... а что используют вместо "Сообщить()" ? :(
33. Sashares 35 05.09.22 17:14 Сейчас в теме
(32)
Используется конструкция СообщениеПользователю.
В типовых конфигурациях на БСП для упрощения использования есть процедуры в общих модулях ОбщегоНазначенияКлиент, ОбщегоНазначенияСервер или ОбщегоНазначенияКлиентСервер.

Из синтакс помощника:

СообщениеПользователю (UserMessage)
Свойства:
ИдентификаторНазначения (TargetID)
КлючДанных (DataKey)
Поле (Field)
ПутьКДанным (DataPath)
Текст (Text)
Методы:
Сообщить (Message)
УстановитьДанные (SetData)
Конструкторы:
По умолчанию
Описание:
Предназначен для хранения параметров сообщения, которые необходимо вывести пользователю.
Если сообщение еще не было показано пользователю (такое может быть при работе на стороне сервера, в фоновом задании, внешнем соединении или Web-сервисах), можно получить накопленные сообщения методом ПолучитьСообщенияПользователю.

В форме клиентского приложения, в случае выполнения просмотра сообщения, выполняется следующий механизм обработки:
Если у сообщения свойство КлючДанных заполнено и не совпадает с ключевым значением основного реквизита текущей формы (ссылкой объекта или ключом записи регистра сведений), то:
открывается новая форма объекта, соответствующая значению свойства КлючДанных;
если у сообщения свойство ПутьКДанным не заполнено, то в него проставляется имя основного реквизита открытой формы объекта;
вызывается показ сообщения в только что открытой форме;
выполняется перенос всех соответствующих сообщений из окна первой формы в новую форму (с таким же значением свойств КлючДанных, как у выбранного сообщения). При этом перенесенным сообщениям аналогичным образом проставляется свойство ПутьКДанным, если оно не установлено.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Пример:
Процедура ДействиеСОбъектом(ОбъектДанных)
...
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = НСтр("ru = 'В строке 11 табличной части Номенклатура не хватает "
+ "; en = 'In line 11 of tabular section Nomenclature is missing' ")
+ НедостающееКоличество + " " + ЕдиницаИзмеренияНоменклатуры;
Сообщение.Поле = "Номенклатура[10].Количество";
Сообщение.УстановитьДанные(ОбъектДанных);
Сообщение.Сообщить();

КонецПроцедуры;
Показать
Sharap09; +1 Ответить
34. user1831019 05.09.22 19:51 Сейчас в теме
(33) Так как элементы массива то сложить при помощи СообщениеПользователю???
Sharap09; +1 Ответить
35. Sashares 35 05.09.22 20:17 Сейчас в теме
(34)СообщениеПользователю просто выводит сообщение пользователю. Сложить массивы следует до вывода сообщения.
Sharap09; +1 Ответить
36. user1831019 05.09.22 20:21 Сейчас в теме
(35) Просто в теме больше комментариев про Сообщить() и СообщениеПользователю(). Думаю - может я от жизни отстал?
37. Sharap09 05.09.22 20:27 Сейчас в теме
(33) спасибо большое, я уже больше пол года учу 1С: и об этом не слышала - спасибо огромное!
27. spacecraft 05.09.22 15:57 Сейчас в теме
(24) если нужно что-то просто выполнить, то Процедура. Если нужно что-то выполнить и вернуть результат выполнения/вычисления, то Функция.
Пример.
А = ПолучитьНужныеДанные();

В данном случае ПолучитьНужныеДанные это функция (это не стандартная функция, ее мы должны сами определить)
Если ее сделать процедурой, то будет ошибка, так как процедура ничего не может возвращать, соответственно будет определена ошибка, так как переменной А происходит попытка присвоить значение, а самого факта присвоения не может существовать.
Другими словами, Процедура может быть только вызвана и не может применяться в выражении присваивания.
Пример процедур:
Сообщить("Что-то");
Тут явно только вызывается Сообщить и ничего не ожидается к получению значений.

В Функции не обязательно что-то возвращать. Если не будет явного Возврат значения, то по умолчанию вернется Неопределено.
Из того следует, что в принципе, там где может применяться Процедура, там может применяться и функция. За исключением случаев описания обработчиков и служебных вызовов (таких как асинхронные вызовы). Там просто ожидается наличие именно процедур.
Но в своем коде вызова, можно использовать и функции без получения возвращаемых значений. Даже если функция что-то возвращает, это не обязывает это значение получать. Ту же функцию ПолучитьНужныеДанные можно вызвать и просто так:
ПолучитьНужныеДанные();
Но нужно понимать, что ресурсы на выполнение функции тратится несколько больше, чем на процедуру. И не следует всегда применять функции вместо процедур. Ну и логическое разделение кода все же тоже важно.
Sharap09; +1 Ответить
29. Sharap09 05.09.22 16:20 Сейчас в теме
(25)
(27)
Но нужно понимать, что ресурсы на выполнение функции тратится несколько больше, чем на процедуру. И не следует всегда применять функции вместо процедур


- а скажите пж - почему студентам часто говорят за "Ресурсы" кот. тратятся на выполнение программного кода или вообще программы ? - 1С, что? - такая слабая совсем, ( там же большие энергоемкие Процедуры на Сервере выполняются ? ) или в работе программы часто проблемы возникают из-за этих Ресурсов??? все время спросить про это хотела, но так и не могла
30. spacecraft 05.09.22 16:40 Сейчас в теме
(29) ресурсы это в основном память и процессорное время компьютера. Чем больше тратится ресурсов, тем больше требований к мощности компьютера. И если компьютер/сервер не достаточно мощный, то начинаются тормоза.
Sharap09; +1 Ответить
4. soft_wind 17.06.22 15:09 Сейчас в теме
вообще от первой строки

Сумма = Вычислить(стрЗаменить(СтрокаЦен,",","+"));
Sharap09; +1 Ответить
8. Sharap09 17.06.22 15:49 Сейчас в теме
(4)Спасибо! 🙏🙏🙏 так тоже получилось :)
17. VKuser41695929 05.09.22 03:13 Сейчас в теме
Здравствуйте. Не могли бы вы помочь! Бьюсь всю ночь, не получается. Оказывается я совсем не могу стправиться с таким заданием самого начала.
Само задание
Задание 4.1. Дано:

Строка входных данных Товары = «Тумба,Шкаф,Стол»;

Строка входных данных Цены = «5000, 7000, 6000».

Требуется: Перевести все данные в массивы. Вывести все значения массивов в виде:

<Товар> (цена = <ЦенаТовара>). не могли бы вы полностью программу написать. для совсем чайников!
Sharap09; +1 Ответить
18. lefthander 05.09.22 10:47 Сейчас в теме
(1)

• Решение:
МассивТоваров = СтрРазделить( СтрокаТоваров,",", Ложь) ;
МассивЦен = СтрРазделить( СтрокаЦен,",", Ложь) ;

// и все значения массива вывела в Цикле со счетчиком:

Для Индекс =0 По МассивТоваров.ВГраница() Цикл

СтрокаВывода = СтрШаблон(" %1 (цена = %2 )", МассивТоваров[Индекс], МассивЦен[Индекс] ) ;
Сообщить( СтрокаВывода) ;
КонецЦикла;

(17) Так в первом посте и есть решение... но дальнейшее обсуждение тоже очень нужное и познавательное.
Sharap09; +1 Ответить
19. comptr 35 05.09.22 10:51 Сейчас в теме
(17) И какой смысл тогда решать эту задачу? Она же для обучения дана. Не можете сделать такую задачу, как будете работать дальше?

Примерный план:
1. Используйте функцию СтрРазделить для получения массивов (CTRL + F1, чтобы понять как она работает).
2. Дальше изучайте как работать с массивами (https://helpme1s.ru/massivy-v-yazyke-1s-8-v-primerax)
3. Вывод информации пользователю через Сообщить или СообщениеПользователю, нужную строку можно получить через СтрШаблон (и НСтр для работы с несколькими языками).

Если не сможете справиться самостоятельно с этим, то дальше легче не станет.
20. SlavaKron 05.09.22 10:53 Сейчас в теме
(17)
Товары = "Тумба,Шкаф,Стол";
Цены = "5000, 7000, 6000";
МассивТовары = СтрРазделить(Товары, ",", Ложь);
МассивЦены = СтрРазделить(Цены, ",", Ложь);

Для Сч = 0 По МассивТовары.ВГраница() Цикл
	
	Сообщить(МассивТовары[Сч] + " (цена = " + МассивЦены[Сч] + ")");
	
КонецЦикла;
Показать
Sharap09; +1 Ответить
23. Sharap09 05.09.22 15:05 Сейчас в теме
:) прикольное решение)
- я в Уч.Центре №1 учусь - там говорят, «... что б избежать операции конкатенации , использовать Функцию "СтрШаблон() , а у вас спокойно три плюсика и решение есть! 👌 классно )
22. Sharap09 05.09.22 14:53 Сейчас в теме
(17) если вам надо будет помочь на этом уровне - пишите -я тоже эти темы недавно изучила и могу вам подсказать и посоветовать разные методы обучения... главно не слушайте никого из "осуждающих вас " за ваши обращения " - лекарство от незнания -Вопрос и не стесняйтесь спрашивать у Знающих программистов - и еще нужно Постоянство и тогда все поймете со временем ) - удачи вам!
-и спасибо огромное всем кто помогает нам в обучении 💕💕💕
21. VKuser41695929 05.09.22 12:19 Сейчас в теме
(20) Дай Бог Вам здоровья!
Sharap09; +1 Ответить
38. user2087353 18.05.24 23:15 Сейчас в теме
СтрокаЦен = "5000 , 7000 , 6000" ;
СтрокаТовары = "Тумба,Шкаф,Стол";
МассивЦен = СтрРазделить( СтрокаЦен,",", Ложь) ;
МассивТоваров = СтрРазделить( СтрокаТовары,",", Ложь) ;

Для Индекс =0 По МассивТоваров.ВГраница() Цикл

СтрокаВывода = СтрШаблон(" %1 <цена = %2>", МассивТоваров[Индекс], МассивЦен[Индекс] ) ;
Сообщить( СтрокаВывода) ;
КонецЦикла;;
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот