Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/106: Рейтинг темы: голосов - 106, средняя оценка - 4.62
Заблокирован
1

Ка изменить значение поля выборки?

28.04.2012, 19:56. Показов 20550. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ну собственно вчерашний вариант продолжение, руки до компа тока к вечеру дошли
вот имеем текст процедуры,
когда пытаемся изменить значение поля выборка.количество
возникает ошибка.
Вопрос: выборка - это же массив, структура, не знаю чё, но всё таки переменная, как изменить значение некоторого поля этой переменной?
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    
    Запрос = новый запрос;
    запрос.Текст ="ВЫБРАТЬ
                  | ОсновнойОстатки.Номенклатура КАК Номенклатура,
                  | ОсновнойОстатки.Партия,
                  | ОсновнойОстатки.КоличествоОстаток КАК Количество
                  |ИЗ
                  | Документ.Расходная КАК Расходная
                  |     ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Основной.Остатки КАК ОсновнойОстатки
                  |         ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Основной КАК Основной
                  |         ПО ОсновнойОстатки.Номенклатура = Основной.Номенклатура
                  |             И ОсновнойОстатки.Партия = Основной.Партия
                  |     ПО Расходная.ТабличнаяЧасть1.Номенклатура = ОсновнойОстатки.Номенклатура
                  |ГДЕ
                  | Расходная.Ссылка = &Ссылка
                  |
                  |УПОРЯДОЧИТЬ ПО
                  | Основной.Период УБЫВ
                  |ИТОГИ
                  | СУММА(Количество)
                  |ПО
                  | Номенклатура";
запрос.УстановитьПараметр("ссылка", Ссылка);                  
// получили выборку базы в переменную выборка  
выборка = запрос.Выполнить().Выбрать();
 
Для каждого ТекСтрока из Ссылка.ТабличнаяЧасть1 цикл
    если не Отказ тогда
        
        Отбор = новый структура("Номенклатура", ТекСтрока.Номенклатура);
 
        если выборка.НайтиСледующий(Отбор) тогда
            
            Если выборка.количество >= текстрока.Количество тогда 
                //проводим
                выборка.количество = выборка.Количество - текстрока.Количество;
                движения.Основной.Записывать=Истина;
                
                пока выборка.Следующий() цикл
                    
                    если текстрока.Количество> 0 тогда
                        
                    движение = движения.Основной.Добавить();
                    движение.ВидДвижения=ВидДвиженияНакопления.Расход;
                    движение.Номенклатура = Выборка.номенклатура;
                    движение.Партия = выборка.партия;
                    движение.Период = ссылка.ПолучитьОбъект().Дата;
                    движение.Регистратор = ссылка;
                    
                    если Текстрока.Количество > выборка.Количество тогда
                    движение.Количество= выборка.Количество ;
                    текстрока.Количество = текстрока.Количество-выборка.Количество;
                    выборка.Количество = 0;
                    иначе
                    
                    //если меньше либо равно
                    
                    движение.Количество = текстрока.Количество;
                    Выборка.Количество = выборка.Количество - текстрока.Количество;
                    текстрока.Количество = 0;
                    конецесли;
                
                иначе
                    //если равно 0
                
                    прервать;
                    
                
                    конецесли;
                конеццикла;       
                
            иначе
                //отмена проведения
                Отказ = истина;
                сообщить("не хватает "+ строка(текстрока.Количество - выборка.Количество) +" единиц товара:"""+ текстрока.Номенклатура+"""");
            конецесли;
            
        
        
    конецесли;
    
    конецесли; 
конеццикла;
КонецПроцедуры
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2012, 19:56
Ответы с готовыми решениями:

Изменить значение поля в class
Есть безобидная модификация для игры Minecraft, добавляющая в угол экрана мини-карту - Rei's...

Изменить значение поля из представления
Всем привет! Нужно: по нажатию на кноку из действий в представлении изменить значение поля...

Как в mysql изменить значение поля?
... $result2=mysql_query("SELECT * FROM `fio` WHERE `nom_i` = $nomid "); ...

Как изменить значение поля 2000
Здрасте, вопрос наверно дурацкий, но я что-то не догоню никак нужно в формне заполнять поле...

11
900 / 877 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
28.04.2012, 20:08 2
Цитата Сообщение от Gokusa Посмотреть сообщение
Вопрос: выборка - это же массив, структура, не знаю чё, но всё таки переменная, как изменить значение некоторого поля этой переменной?
Выборка - это объект типа "ВыборкаИзРезультатаЗапроса".
Синтаксис помощник:
ВыборкаИзРезультатаЗапроса (QueryResultSelection)
<Имя поля> (<Field name>)
Использование:

Только чтение.
Трудно посмотреть? Может быть вы не знаете комбинацию Ctrl + F1?

И вообще зачем Вам менять свойство выборки?
0
Заблокирован
28.04.2012, 20:13  [ТС] 3
чтобы она соответствовала актуальным данным
и не городить запросы по сто раз и в цикле не делать запросы, как Вы посоветовали

Добавлено через 3 минуты
а можно выборку перекинуть в структуру?
такой ход используется, или это нелогично?
0
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
28.04.2012, 20:25 4
Выборка из рез. запроса - это дерево, да ещё "хитрое" дерево. Ну его. Выгружайте в таблицу значений (это имелось в виду под "структурой"?)
0
Заблокирован
28.04.2012, 20:32  [ТС] 5
если не менять выборка.количество, то не исключена ситуация когда пользователь введет несколько раз одну и ту же номенклатуру в одну табличную часть и проводка, написанная без корректировки выборки, отработает неправильно.
или я ошибаюсь?

Добавлено через 2 минуты
Цитата Сообщение от duk337 Посмотреть сообщение
Выборка из рез. запроса - это дерево, да ещё "хитрое" дерево. Ну его. Выгружайте в таблицу значений (это имелось в виду под "структурой"?)
наверное да, хоть груздем пусть называется главное чтобы я делал с ним всё что хочу.
з.ы. а как ещё можно сделать проводку?
вариант записать, потом проверить остатки не подходит.
а как Выгрузить выборку в таблицуЗначений?
0
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
28.04.2012, 20:35 6
Дык группировка есть. А если по-игроцки - при записи дока юзера предупреждать, может, цены разные?

Добавлено через 1 минуту
1C
1
тз=Запрос.Выполнить.Выгрузить()
1
Заблокирован
28.04.2012, 20:38  [ТС] 7
Что за "Дык Группировка"?
0
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
28.04.2012, 20:43 8
Я ж не знаю, что Вы не знаете, что в запросе можно сгруппировать данные по одним полям, применив при этом агрегатные функции к другим. Опция ИТОГИ даёт дерево, по веткам которого прыгать выборкой. А ещё "дык свернуть" тз
0
Заблокирован
28.04.2012, 20:51  [ТС] 9
ууу, спасиб за ИТОГИ и группировку
0
Модератор
Эксперт 1С
3784 / 2964 / 589
Регистрация: 10.03.2011
Сообщений: 11,669
Записей в блоге: 1
28.04.2012, 22:15 10
Может хватит бредятиной заниматься...
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| РасходнаяТовары.Номенклатура,
| СУММА(РасходнаяТовары.Количество) КАК Количество
|ПОМЕСТИТЬ ДокТЧ
|ИЗ
| Документ.Расходная.ТабличнаяЧасть1 КАК РасходнаяТовары
|ГДЕ
| РасходнаяТовары.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| РасходнаяТовары.Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДокТЧ.Номенклатура,
| ДокТЧ.Количество,
| ЕСТЬNULL(ОстаткиТоваровОстатки.КоличествоОстаток,0) КАК Остаток
|ИЗ
| ДокТЧ КАК ДокТЧ
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Основной.Остатки(
| ,
| Склад = &Склад
| И Номенклатура В
| (ВЫБРАТЬ
| ДокТЧ.Номенклатура
| ИЗ
| ДокТЧ КАК ДокТЧ)) КАК ОстаткиТоваровОстатки
| ПО ДокТЧ.Номенклатура = ОстаткиТоваровОстатки.Номенклатура";
Запрос.УстановитьПараметр("Склад", Склад); //Если есть
Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапроса = Запрос.Выполнить();
 
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Количество < Выборка.Остаток Тогда
Сообщить("Не хватает товара " + Выборка.Номенклатура + ", из необходимых " + Выборка.Количество + " в наличие имеется только " + Выборка.Остаток;
Отказ = Истина;
КонецЕсли;
Если Не Отказ Тогда
Движение = Движения.Основной.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = Выборка.Номенклатура;
Движение.Количество = Выборка.Количество;
КонецЕсли;
КонецЦикла;
Добавлено через 2 минуты
По старой методике
0
Заблокирован
28.04.2012, 23:20  [ТС] 11
ну типа логично
тоже спасиб
0
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
29.04.2012, 08:42 12
Может хватит бредятиной заниматься...
гениальное рождается из бреда (вроде, Лао Цзы)
0
29.04.2012, 08:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.04.2012, 08:42
Помогаю со студенческими работами здесь

Изменить логическое значение поля таблицы
В делфи через ADOQuery, ADOConection подключена таблица базы данных (MS Access). В таблице есть...

Изменить значение поля, последней строки
Всем доброго времени суток! Помогите пожалуйста начинающему( procedure...

Изменить значение каждого поля, где id =
Здравствуйте. У меня есть: 1. поле ID (10, 11, 12) 2. поле &quot;sort&quot; со значениями (1,2,3) Что мне...

Изменить размер поля в гриде под значение
serg42, еще вопрос, как в этом случае подогнать ширину RowHeader под значения. Ставлю свойство...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru