|
Смена статусов для нескольких документов | ☑ | ||
---|---|---|---|---|
0
Sergio447
31.12.22
✎
01:45
|
Здравствуйте!
Есть обработка, в которой выбираю несколько документов и устанавливаю им статус. По кнопке изменить, хотелось бы чтобы статус записался для всех выбранных документов. Подскажите пожалуйста, как это сделать, не совсем понимаю. Скрин обработки: https://cloud.mail.ru/public/aW6c/3GHe3nBuz И сам код: &НаКлиенте Процедура ИзменениеСтатуса(Команда) ИзменениеСтатусаНаСервере(); КонецПроцедуры &НаСервере Процедура ИзменениеСтатусаНаСервере() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПриходныйОрдерНаТовары.Ссылка КАК Ссылка, | ПриходныйОрдерНаТовары.Статус КАК Статус |ИЗ | Документ.ПриходныйОрдерНаТовары КАК ПриходныйОрдерНаТовары |ГДЕ | ПриходныйОрдерНаТовары.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка",Документ.ДоступныеЗначения); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Сообщить(Документ); КонецПроцедуры |
|||
1
ejikbeznojek
31.12.22
✎
14:31
|
Запрос по тч товары переделай на запрос по документам.
В параметр ссылка нужно указать что-то вроде массива или списка документов. После результатзапроса.выбрать напиши цикл. Пока выборкадетальныезапичи.следующий() цикл |
|||
2
ejikbeznojek
31.12.22
✎
14:32
|
П1 это я не туда посмотрел.
|
|||
3
Sergio447
31.12.22
✎
19:03
|
(2) интересно, но не понятно)
|
|||
4
vicof
01.01.23
✎
14:26
|
Может уже пора почитать книжки, статью и советы из прошлой темы?
|
|||
5
Sergio447
02.01.23
✎
00:21
|
(4) ага, вот если это один документ в виде объекта, то код будет такой и он отрабатывает:
&НаКлиенте Процедура ИзменениеСтатуса(Команда) ИзменениеСтатусаНаСервере(); КонецПроцедуры &НаСервере Процедура ИзменениеСтатусаНаСервере() ДокОбъект = Объект.Документ.ПолучитьОбъект(); ДокОбъект.Статус = Объект.Статус; ДокОбъект.Записать(); КонецПроцедуры но мне нужно чтобы этот код отработал с типом список значений. |
|||
6
vicof
02.01.23
✎
00:50
|
У тебя не список значений в (0) на картинке
|
|||
7
Мимохожий Однако
02.01.23
✎
07:58
|
(3) Пока Выборка...Следующий() Цикл
ДокОбъект = выборка..ссылка.ПолучитьОбъект(); ДокОбъект.Статус = Объект.Статус; ДокОбъект.Записать(); КонецЦикла; |
|||
8
Sergio447
02.01.23
✎
21:58
|
(7) Сделал так и не работает:
&НаКлиенте Процедура ИзменениеСтатуса(Команда) ИзменениеСтатусаНаСервере(); КонецПроцедуры &НаСервере Процедура ИзменениеСтатусаНаСервере() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПриходныйОрдерНаТовары.Ссылка КАК Ссылка, | ПриходныйОрдерНаТовары.Статус КАК Статус |ИЗ | Документ.ПриходныйОрдерНаТовары КАК ПриходныйОрдерНаТовары |ГДЕ | ПриходныйОрдерНаТовары.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка",Документ.ДоступныеЗначения); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ДокОбъект = Объект.Документ.ПолучитьОбъект(); ДокОбъект.Статус = Объект.Статус; ДокОбъект.Записать(); КонецЦикла; КонецПроцедуры |
|||
9
AAA
03.01.23
✎
07:40
|
(8)ДокОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
|
|||
10
D_E_S_131
03.01.23
✎
14:39
|
Запрос, с условием "=" на ссылку вернет только один документ. Для сравнения со списком значений или массивом, нужно использовать условие "В()".
|
|||
11
Sergio447
03.01.23
✎
21:26
|
(9) так не работает, после ВыборкаДетальныеЗаписи доступны только функции, а не ссылка
|
|||
12
Sergio447
03.01.23
✎
21:30
|
(10) изменил в запросе на оператор В, но толку мало ничего не поменялось
|
|||
13
AAA
04.01.23
✎
03:34
|
а зачем вообще запрос, если уже есть выбранные документы?
|
|||
14
Мимохожий Однако
04.01.23
✎
06:33
|
(11) Стесняюсь спросить. Отладчиком смотрел?
|
|||
15
Sergio447
05.01.23
✎
00:40
|
(14) да, вот здесь ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); почему-то ошибка доступа
|
|||
16
AAA
05.01.23
✎
08:00
|
Отладьте сначала саму выборку с выводом ссылок с помощью Сообщить()
Потом решайте вторую часть - изменение статусов И еще раз - зачем нужен запрос, если все уже есть в списке. Это такая же выборка. Перебирайте список, получайте объекты и меняйте статусы |
|||
17
Мимохожий Однако
05.01.23
✎
09:40
|
(15) Если делаешь запрос к одному документу, то проще использовать метод ссылка.ПолучитьОбъект()
PS. Информацию выдаешь кусками и без подробностей. Так дело не пойдёт |
|||
18
Sergio447
05.01.23
✎
20:06
|
(16) Вот первая часть которая работает и выводить в Сообщить, все документы указанные в списке значений:
&НаКлиенте Процедура ИзменениеСтатуса(Команда) ИзменениеСтатусаНаСервере(); КонецПроцедуры &НаСервере Процедура ИзменениеСтатусаНаСервере() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПриходныйОрдерНаТовары.Ссылка КАК Ссылка, | ПриходныйОрдерНаТовары.Статус КАК Статус |ИЗ | Документ.ПриходныйОрдерНаТовары КАК ПриходныйОрдерНаТовары |ГДЕ | ПриходныйОрдерНаТовары.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка",Документ.ДоступныеЗначения); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Сообщить(Документ); КонецПроцедуры |
|||
19
Мимохожий Однако
05.01.23
✎
20:18
|
(18) Достаточно при данном запросе
Сообщить(ссылка) )) |
|||
20
Мимохожий Однако
05.01.23
✎
20:18
|
(19) ссылка = Документ.ДоступныеЗначения
|
|||
21
Мимохожий Однако
05.01.23
✎
20:19
|
(20) Ох уж эти праздники....
Сообщить (Документ) |
|||
22
Sergio447
05.01.23
✎
20:23
|
(21) Все я нашел в чем дело) просто нужно Документ указать без Доступных значений)
|
|||
23
Sergio447
05.01.23
✎
20:23
|
(21) И не говорите, до сих пор голова гудит)))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |