Динамические списки

1. DENSKR 16 26.01.18 19:05 Сейчас в теме
Как провести выбранные активизацией строк документы динамического списка программно с изменением реквизита документа? На данный момент код таков:

Выборка = Документы.ЗаказПокупателя.Выбрать(,,Элементы.Список.ТекущаяСтрока);
	Пока Выборка.Следующий() Цикл 
		ОбъектДокумента = Выборка.ПолучитьОбъект();
	Если НЕ ОбъектДокумента.ПометкаУдаления и ОбъектДокумента.СостояниеЗаказа.Код="Выполнен6" Тогда
		ОбъектДокумента.Заблокировать();
		ОбъектДокумента.СостояниеЗаказа = Справочники.СостоянияЗаказовПокупателей.НайтиПоКоду("Выполнен7");
		ОбъектДокумента.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
		ОбъектДокумента.Разблокировать();
		Сообщить("Заказ отгружен успешно!");
		Элементы.Список.Обновить();
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
8. AnnieCoder 30.01.18 19:06 Сейчас в теме +0.08 $m
(5)
как обратиться только к выбранным строкам и провести доки только по выбранным строкам

Тут нужна команда, которая позволит обработать выделенные строки. Пример на коленке
&НаКлиенте
Процедура Я_Кнопка(Команда)
ВыделенныеСтроки = Элементы.ВашСписок.ВыделенныеСтроки;
//передаете управление с клиента на сервер
ПроведениеВыделенных(ВыделенныеСтроки);
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ПроведениеВыделенных(ВыделенныеСтроки)
Для каждого ВыдСтрока Из ВыделенныеСтроки Цикл
//тут ваша обработка проведения
КонецЦикла;
КонецПроцедуры
Показать
DENSKR; user705522_constantin_h; +2 Ответить
11. DENSKR 16 30.01.18 19:44 Сейчас в теме
ПОЛУЧИЛОСЬ, ВСЁ РАБОТАЕТ, Благодаря (8) !!! Может кому пригодится код таков:
&НаКлиенте
Процедура  ОтгрузитьЗаказы(Команда)
	ВыделенныеСтроки = Элементы.Список.ВыделенныеСтроки;	
	ОтгрузитьЗаказыСервер(ВыделенныеСтроки);
	
КонецПроцедуры

&НаСервере 
//БезКонтекста
Функция ОтгрузитьЗаказыСервер(ВыделенныеСтроки)
	Для каждого ВыдСтрока Из ВыделенныеСтроки Цикл
		ОбъектДокумента = ВыдСтрока.ПолучитьОбъект();
	Если НЕ ОбъектДокумента.ПометкаУдаления и ОбъектДокумента.СостояниеЗаказа.Код="000000003" Тогда
		ОбъектДокумента.Заблокировать();
		ОбъектДокумента.СостояниеЗаказа = Справочники.СостоянияЗаказовПокупателей.НайтиПоКоду("Выполнен7");
		ОбъектДокумента.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
		ОбъектДокумента.Разблокировать();
		Сообщить("Заказ отгружен успешно!");
		Элементы.Список.Обновить();
	КонецЕсли
		
КонецЦикла;
КонецФункции
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. lefthander 26.01.18 21:37 Сейчас в теме
3. DENSKR 16 27.01.18 07:22 Сейчас в теме
(2)Не так как нужно. Нужно проводить только те, которые при активизации строки выбраны
4. lefthander 27.01.18 19:55 Сейчас в теме
(3) 1.не правильно задан 3 параметр в выборке, текущая строка содержит ссылку на документ, а там должна быть структура.
Ваша Выборка всегда будет содержать один элемент, смысла в цикле нет. Или я что то не понял в Вашем списке в текущей строке.
Если Вы хотите несколько документов, то обращаться в списке нужно к выбранным строкам
5. DENSKR 16 30.01.18 17:30 Сейчас в теме
(4) Вы правильно поняли. А я не могу разобраться, как обратиться только к выбранным строкам и провести доки только по выбранным строкам.
6. Xershi 1556 30.01.18 18:34 Сейчас в теме
(5) копируешь код который показывает выделенные строки. Далее думаешь что делать через отладчик.
7. DENSKR 16 30.01.18 19:03 Сейчас в теме
(6)
код который показывает выделенные строки
Так вот. За это отвечает насколько я понимаю процедура "ПриАктивизацииСтроки" далее то отладчиком ловить ошибки? Или курить кучу книг про работу с динамическими списками?
8. AnnieCoder 30.01.18 19:06 Сейчас в теме +0.08 $m
(5)
как обратиться только к выбранным строкам и провести доки только по выбранным строкам

Тут нужна команда, которая позволит обработать выделенные строки. Пример на коленке
&НаКлиенте
Процедура Я_Кнопка(Команда)
ВыделенныеСтроки = Элементы.ВашСписок.ВыделенныеСтроки;
//передаете управление с клиента на сервер
ПроведениеВыделенных(ВыделенныеСтроки);
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ПроведениеВыделенных(ВыделенныеСтроки)
Для каждого ВыдСтрока Из ВыделенныеСтроки Цикл
//тут ваша обработка проведения
КонецЦикла;
КонецПроцедуры
Показать
DENSKR; user705522_constantin_h; +2 Ответить
9. DENSKR 16 30.01.18 19:11 Сейчас в теме
(8)Сейчас попробую подобное наваять.
10. DENSKR 16 30.01.18 19:31 Сейчас в теме
(8) У меня получилось вот так:
&НаКлиенте
Процедура  ОтгрузитьЗаказы(Команда)
ВыделенныеСтроки = Элементы.Список.ВыделенныеСтроки;	
	//ПодключитьОбработчикОжидания("ОбработатьАктивизациюСтрокиСписка", 0.2, Истина);
	ОтгрузитьЗаказыСервер(ВыделенныеСтроки);
	
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ОтгрузитьЗаказыСервер(ВыделенныеСтроки)
	Для каждого ВыдСтрока Из ВыделенныеСтроки Цикл
		ОбъектДокумента = ВыдСтрока.ПолучитьОбъект();
	Если НЕ ОбъектДокумента.ПометкаУдаления и ОбъектДокумента.СостояниеЗаказа.Код="Выполнен6" Тогда
		ОбъектДокумента.Заблокировать();
		ОбъектДокумента.СостояниеЗаказа = Справочники.СостоянияЗаказовПокупателей.НайтиПоКоду("Выполнен7");
		ОбъектДокумента.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
		ОбъектДокумента.Разблокировать();
		Сообщить("Заказ отгружен успешно!");
		ВыделенныеСтроки.Список.Обновить();
	КонецЕсли
		
КонецЦикла;
КонецПроцедуры
Показать

Но похоже я сделал что то не так, потому что ничего не произошло, даже ошибки не было)))
11. DENSKR 16 30.01.18 19:44 Сейчас в теме
ПОЛУЧИЛОСЬ, ВСЁ РАБОТАЕТ, Благодаря (8) !!! Может кому пригодится код таков:
&НаКлиенте
Процедура  ОтгрузитьЗаказы(Команда)
	ВыделенныеСтроки = Элементы.Список.ВыделенныеСтроки;	
	ОтгрузитьЗаказыСервер(ВыделенныеСтроки);
	
КонецПроцедуры

&НаСервере 
//БезКонтекста
Функция ОтгрузитьЗаказыСервер(ВыделенныеСтроки)
	Для каждого ВыдСтрока Из ВыделенныеСтроки Цикл
		ОбъектДокумента = ВыдСтрока.ПолучитьОбъект();
	Если НЕ ОбъектДокумента.ПометкаУдаления и ОбъектДокумента.СостояниеЗаказа.Код="000000003" Тогда
		ОбъектДокумента.Заблокировать();
		ОбъектДокумента.СостояниеЗаказа = Справочники.СостоянияЗаказовПокупателей.НайтиПоКоду("Выполнен7");
		ОбъектДокумента.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
		ОбъектДокумента.Разблокировать();
		Сообщить("Заказ отгружен успешно!");
		Элементы.Список.Обновить();
	КонецЕсли
		
КонецЦикла;
КонецФункции
Показать
Оставьте свое сообщение

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