|
УП. Передача массива данных в процедуру | ☑ | ||
---|---|---|---|---|
0
bizon2008
11.02.13
✎
12:14
|
Доброго дня. Вот, к примеру, сваял процедуру поверки остатка ТМЦ. Мне в нее, с доков, надо передать склад(ну это понятно), и список номенклатур с количеством(тут непонятно). Ну кучка вариантов у меня есть. Но зная злобный характер разработчиков платформы, они явно не правильные.
Как правильно передать набор данных в процедуру? Заранее безмерно благодарен. |
|||
1
mikecool
11.02.13
✎
12:14
|
передавай параметром!
|
|||
2
bizon2008
11.02.13
✎
12:18
|
(1)Уважаемый mikecool, коли Вам не в тягость, можете более развернуто пояснить более детально свою мысль. Для контуженых.
|
|||
3
mikecool
11.02.13
✎
12:27
|
МояФункция(<а вот здесь параметр, который передается в функцию>)
это вообщето сарказм был ) |
|||
4
bizon2008
11.02.13
✎
12:39
|
(3)Эх, уважаемый mikecool, а я так надеялся на Вашу помощь.
|
|||
5
Balonbl4
11.02.13
✎
12:41
|
Структурой передавайте, во всех стандартных так. Но склад и список номенклатуры можно и разными параметрами передать.
|
|||
6
bizon2008
11.02.13
✎
12:46
|
(5)Уважаемый Balonbl4, коли Вам не в тягость, можете более развернуто пояснить, про структуру. Склад я и так отдельно передаю, мне надо предать список номенклатуры и ее количество.
Что-то такое передать надо. Товар_1 10 Товар_2 20 Товар_3 30 Товар_4 40 |
|||
7
SherifSP
11.02.13
✎
12:51
|
(0) Почему не ТЗ, а именно списком?
|
|||
8
SherifSP
11.02.13
✎
12:55
|
Процедура СоздамТЗ()
Тз = Новый ТаблицаЗначений; Тз.Колонки.Добавить("Номенклатура"); ТЗ.Колонки.Добавить("Количество"); // заполняете тз данными //Передаете в процедуру МояПроцедура(ТЗ); КонецПроцедуры Процедура МояПроцедура(МояТабличка) КонецПроцедуры |
|||
9
bizon2008
11.02.13
✎
13:02
|
Спасибо SherifSP, не примете на свой счет, но про ТЗ мне сказали что это уже моветон. ТЗ это только динозавры так делают, которые от семерки никак отвыкнут не могу.
|
|||
10
Balonbl4
11.02.13
✎
13:04
|
(6) В вашем случае я бы передавал 2 параметра - 1й склад(ссылку), второй - массив с номенклатурой. А если вам допустим нужно передать в процедуру реквизиты шапки документа, тогда для этого можно использовать структуру.
|
|||
11
SherifSP
11.02.13
✎
13:07
|
(9) Массив, структура, что вы хотели передавать?
|
|||
12
Kreont
11.02.13
✎
13:10
|
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Парам1",ЗначПарам1); и т.д. |
|||
13
hhhh
11.02.13
✎
13:11
|
(9) это вы наверно, про разработчиков типовых 1с. Надо им сказать, что они - настоящие динозавры.
|
|||
14
Kreont
11.02.13
✎
13:12
|
+(12) читать просто:
ЗначПарам1 = СтруктураПараметров.Парам1; |
|||
15
Maxus43
11.02.13
✎
13:15
|
не вижу криминала в передаче ТЗ.
|
|||
16
bizon2008
11.02.13
✎
13:34
|
Я вот тут в описании нашел.
Универсальные коллекции значений предназначены для временного хранения данных. После завершения сеанса данные пропадают. Универсальные коллекции значений используются для промежуточной обработки, анализа и модификации данных. К таким коллекциям относятся: Массивы, Структуры, Соответствия, Списки значений, Таблицы значений, Деревья значений. Выбора богатый. |
|||
17
bizon2008
11.02.13
✎
13:38
|
(10)Balonbl4, спасибо за ответ. Я не силен в объяснениях, я вроде так и передаю 2 параметра - 1й склад(ссылку), второй - массив с номенклатурой. Вот со вторым я повис. Вариантов много смотри (16).
|
|||
18
bizon2008
11.02.13
✎
13:42
|
(11)Уважаемый SherifSP, эх знал бы ответ на свой вопрос.
|
|||
19
Balonbl4
11.02.13
✎
13:43
|
(17) Ну вам подходят только массив список значений и ТЗ. Мне кажется, совершенно не принципиально, что выбрать.
|
|||
20
bizon2008
11.02.13
✎
13:44
|
(12)Kreont, структура вроде это список ключ - значение, качестве индекса указывается строка, а мне нужна ссылка на номенклатуру.
|
|||
21
Kreont
11.02.13
✎
13:49
|
(20) ключ да строка, а значением структуры может быть и ссылка, и что надо
|
|||
22
bizon2008
11.02.13
✎
14:29
|
(21)Kreont, видать я тупо не понимаю что такое структура, сейчас пытаюсь въехать на простых примерах и отладчике.
|
|||
23
bizon2008
11.02.13
✎
14:50
|
В общем структура не подходит, ее в запрос не вставить. Мне надо список номенклатуры в запрос вставить. Для поверки наличия необходимого остатка.
|
|||
24
Kreont
11.02.13
✎
14:54
|
структура вроде найболее универсальная для такого.
Например первый параметр может быть массивом (сразу готовым для запроса), второй параметр = ссылка документ, третий = ссылка склада и т.п. |
|||
25
bizon2008
11.02.13
✎
15:12
|
Kreont спасибо, и забыл что в структуру-то и массив можно запихать. Сейчас попробую.
|
|||
26
vvp91
11.02.13
✎
15:43
|
>> (0) сваял процедуру поверки остатка ТМЦ ... надо передать склад(ну это понятно), и список номенклатур с количеством(тут непонятно)
В данном случае метод проверки остатка должен принимать два параметра с названиями Склад и Остатки. Причем внутри метода надо ожидать, что параметр Склад будет иметь ссылочный тип, а параметр Остатки будет иметь тип коллекции, содержащий записи с двумя полями {Номенклатура, Количество} (как минимум с двумя полями, может быть больше). Под типом коллекции понимается: ТаблицаЗначений, Массив из структур, ДанныеФормыКоллекция, ТабличнаяЧасть. Это возможно, поскольку такие коллекции имеют как одинаковый принцип обхода (Для Каждого Из Цикл), так и одинаковый принцип обращения к полям элементов (через точку или через квадратные скобки по имени поля). Однако надо иметь ввиду, что использование таких коллекций однотипно в запросах (как параметры) невозможно, поскольку запросы ожидают или таблицу значений или массив примитивного типа (числа, строки, даты, булево, ссылки), а указанные коллекции предоставляют совершенно различные методы для формирования таблицы значений или массива. >> (12) СтруктураПараметров = Новый Структура; Лучше структуру, как параметр метода не использовать, поскольку глядя на заголовок метода не понятно, что ему передавать. А анализировать код метода, чтобы понять, как его использовать - это плохая практика. |
|||
27
bizon2008
11.02.13
✎
19:30
|
(26)Спасибо vvp91, большое. Сформулировано то, что у меня никак выразить, простыми словами, не получалось.
|
|||
28
ILM
гуру
11.02.13
✎
20:02
|
(0) А ссыль на документ передавайте, в нем и склад есть и ТЧ с товарами, и Отказ булевый. На сервере проверяете что хотите и присваиваете "Отказу" Истину, если товара не хватает)))
|
|||
29
bizon2008
20.02.13
✎
17:17
|
(28)Не универсально.
Поднимаю вопрос. В общем надо двухмерный массив. Первый столбец ссылка на номенклатуру, второй столбец числовой. Перепробовал кучу вариант, получается только одномерные массивы нормально у меня. Заранее признателен за помощь. |
|||
30
bizon2008
20.02.13
✎
17:45
|
А таблица значений не работает с тонким клиентом.
|
|||
31
hhhh
20.02.13
✎
18:14
|
(29) передавай два одномерных.
|
|||
32
bizon2008
20.02.13
✎
18:25
|
(31)Ага. Я уже докурил что только одномерные и есть. А вот как из двух однодоменных, сделать двухмерных?
|
|||
33
Reset
20.02.13
✎
18:46
|
(32)
Одномерный1=Новый Массив; Одномерный1.Добавить(1); Одномерный2=Новый Массив; Одномерный2.Добавить(2); МассивМассивовНуТипаДвумерный=Новый Массив; МассивМассивовНуТипаДвумерный.Добавить(Одномерный1); МассивМассивовНуТипаДвумерный.Добавить(Одномерный2); // Example Сообщить(МассивМассивовНуТипаДвумерный[1][0]); Тему не читал. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |