Изменение количества в таблице

1. user1202776 11.08.19 22:02 Сейчас в теме
При изменении количества в таблице вызывается форма. Как сделать так,чтобы не нажата кнопка "ок" , а просто форма закрыта количество менялась на первоначальное значение до изменения?
Пробовал сравнивать с последними записями регистра сведений, куда записываются данные.Но кажется не правильно сравниваю или еще что-то неправильно делаю.Не могу сделать так, чтобы корректно работал:
		Для Каждого Строка Из Данные Цикл 
		Отбор2 = Новый Структура;
		Отбор2.Вставить("Номенклатура",Номенклатура);
		МассивСтрок2=Выборка.НайтиСтроки(Отбор2);
		
		НаборЗаписей = РегистрыСведений.ЛогРедактированияДокументов.СоздатьНаборЗаписей();
		НоваяЗапись = НаборЗаписей.Добавить();
		НоваяЗапись.Документ =ЭтаФорма.ВладелецФормы.ДокументОбъект.ЭтотОбъект.ЭтотОбъект.Ссылка;
		НоваяЗапись.Товар =Номенклатура;
		НоваяЗапись.Пользователь = ПараметрыСеанса.ТекущийПользователь;
		НоваяЗапись.Резерв = МассивСтрок2[0].Резерв;
		НоваяЗапись.Остаток = МассивСтрок2[0].Остаток;
		НоваяЗапись.Было =Было;
		НоваяЗапись.Стало =ЭтаФорма.ВладелецФормы.ТекущийЭлемент.ТекущаяСтрока.Количество;
		НоваяЗапись.Период=ТекущаяДата();
		НоваяЗапись.ПричинаИзменения=ПричинаИзменения;
		НоваяЗапись.Комментарий=Комментарий;
	КонецЦикла;
Лог=РегистрыСведений.ЛогРедактированияДокументов;
Дан=Лог.СрезПоследних('20190811');

		
		Отбор = Новый Структура;
	Отбор.Вставить("НомерСтроки",ЭтаФорма.ВладелецФормы.ТекущийЭлемент.ТекущиеДанные.НомерСтроки);
	МассивСтрок=ПервоначальныеДанные.НайтиСтроки(Отбор);

	
Для Каждого Регистр Из Дан Цикл
	
	Если Регистр.Товар<>Номенклатура Тогда
	
ПервоначальноеКоличество=ЭтаФорма.ВладелецФормы.ТекущийЭлемент.ТекущаяСтрока;
		ПервоначальноеКоличество.Количество=МассивСтрок[0].Количество;

	Иначе
	ПервоначальноеКоличество=ЭтаФорма.ВладелецФормы.ТекущийЭлемент.ТекущаяСтрока;
		ПервоначальноеКоличество.Количество=0;	
Показать

Как можно сделать.Может кто-то более лучший вариант предложит,как это сделать.Буде рад, если сможете привести пример.Или может кто-то подскажет, как правильно сделать так, как я пытаюсь сделать?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. chemezov 47 12.08.19 07:11 Сейчас в теме
Ничего не понятно. Но очень интересно.
Давай по порядку.
При изменении количества в таблице вызывается форма.

Кликаем в строке табличной части в колонке "Количество", заполняем какое-то значение, жмем Ентер. Срабатывает событие "ПриИзменении", открываем форму в модальном режиме, в этой форме чего то кликаем, и если не нажимаем "ОК", то должно быть заполнено так как было до того как мы начали редактировать значение в строке табличной части в колонке "Количество"?
Так?
4. user1202776 12.08.19 07:41 Сейчас в теме
6. chemezov 47 12.08.19 08:40 Сейчас в теме
(4)Если так, то надо открывать форму не ПриИзменении, а в событии НачалоВыбора. Таким образом как только нажали для редактирования на Количество, открылась форма, а по результатам обработки этого количество в открытой формы уже либо писать значение в колонку либо нет. Хотя возможно я не совсем понимаю всю суть задачи.

Нужно ограничить возможность пользователю как-то неправильно устанавливать количество?
8. user1202776 12.08.19 08:43 Сейчас в теме
(6) нужно сделать так, чтобы пользователь не мог изменить количество, без регистрации этого изменения в регистре сведений. В вызываемой форме пользователь выбирает причину изменения
10. user1202776 12.08.19 08:47 Сейчас в теме
(6)если добавить в Начало выбора, то вроде будет срабатывать , когда он нужно тоже
3. chemezov 47 12.08.19 07:12 Сейчас в теме
Далее. В коде, что такое "Данные"? Это переменная открытой формы, или это код обработчика "ПриИзменении"?
5. user1202776 12.08.19 07:43 Сейчас в теме
(3) данные-это таблица, в котором изменяется количество. Весь код находится в вызываемой форме
7. chemezov 47 12.08.19 08:41 Сейчас в теме
Формы управляемые или обычные?
9. user1202776 12.08.19 08:43 Сейчас в теме
11. chemezov 47 12.08.19 08:56 Сейчас в теме
Обычные формы уже начинаю забывать. Но я сделал бы примерно так:
1. В событии "НачалоВыбора" открыл бы пользователю форму редактирования количества.
2. Форму редактирования количества сделал бы с реквизитом формы "Количество", "Описание причины".
3. Если описание не заполнено и нажатие на Ок, выдал бы предупреждение, если заполнено тогда регистрировал бы изменение.
4. При открытии формы, указал бы в качестве владельца для формы таблицуФормы с количеством которая, чтобы при закрытии вызванной формы обработчик вернулся в обработчик этой таблицы "ОбработкаВыбора". И в обработке выбора уже определил будет ли изменено значение количества по данным выбора.
12. user1202776 12.08.19 09:10 Сейчас в теме
(11)сможете привести пример кода, где вы определяете будет количество изменено или нет?
13. user1202776 12.08.19 09:33 Сейчас в теме
(11)не надо приводить пример)
14. chemezov 47 12.08.19 10:27 Сейчас в теме
Код при НачалоВыбора
СтандартнаяОбработка = Ложь;
	ТекущиеДанные = ЭлементыФормы.продукция.ТекущиеДанные;
	
	Если ТекущиеДанные = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ФормаРедактированияКоличеста = ПолучитьФорму("Форма");
	ФормаРедактированияКоличеста.ВладелецФормы = ЭлементыФормы.продукция;	
	ФормаРедактированияКоличеста.Количество = ТекущиеДанные.Количество;	
	
	РезултатФормы = ФормаРедактированияКоличеста.ОткрытьМодально();
	
	Если РезултатФормы <> Неопределено Тогда
		ТекущиеДанные.Количество = РезултатФормы;
	КонецЕсли;
Показать


В самой форме при нажатии кнопки:
Процедура Кнопка1Нажатие(Элемент)
	Если ПолеВвода1 = "" Тогда
		Закрыть(Неопределено);
	Иначе
		Закрыть(Количество);
	КонецЕсли;
КонецПроцедуры
Показать
Прикрепленные файлы:
Оставьте свое сообщение

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