Изменение количества в таблице
При изменении количества в таблице вызывается форма. Как сделать так,чтобы не нажата кнопка "ок" , а просто форма закрыта количество менялась на первоначальное значение до изменения?
Пробовал сравнивать с последними записями регистра сведений, куда записываются данные.Но кажется не правильно сравниваю или еще что-то неправильно делаю.Не могу сделать так, чтобы корректно работал:
Как можно сделать.Может кто-то более лучший вариант предложит,как это сделать.Буде рад, если сможете привести пример.Или может кто-то подскажет, как правильно сделать так, как я пытаюсь сделать?
Пробовал сравнивать с последними записями регистра сведений, куда записываются данные.Но кажется не правильно сравниваю или еще что-то неправильно делаю.Не могу сделать так, чтобы корректно работал:
Для Каждого Строка Из Данные Цикл
Отбор2 = Новый Структура;
Отбор2.Вставить("Номенклатура",Номенклатура);
МассивСтрок2=Выборка.НайтиСтроки(Отбор2);
НаборЗаписей = РегистрыСведений.ЛогРедактированияДокументов.СоздатьНаборЗаписей();
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Документ =ЭтаФорма.ВладелецФормы.ДокументОбъект.ЭтотОбъект.ЭтотОбъект.Ссылка;
НоваяЗапись.Товар =Номенклатура;
НоваяЗапись.Пользователь = ПараметрыСеанса.ТекущийПользователь;
НоваяЗапись.Резерв = МассивСтрок2[0].Резерв;
НоваяЗапись.Остаток = МассивСтрок2[0].Остаток;
НоваяЗапись.Было =Было;
НоваяЗапись.Стало =ЭтаФорма.ВладелецФормы.ТекущийЭлемент.ТекущаяСтрока.Количество;
НоваяЗапись.Период=ТекущаяДата();
НоваяЗапись.ПричинаИзменения=ПричинаИзменения;
НоваяЗапись.Комментарий=Комментарий;
КонецЦикла;
Лог=РегистрыСведений.ЛогРедактированияДокументов;
Дан=Лог.СрезПоследних('20190811');
Отбор = Новый Структура;
Отбор.Вставить("НомерСтроки",ЭтаФорма.ВладелецФормы.ТекущийЭлемент.ТекущиеДанные.НомерСтроки);
МассивСтрок=ПервоначальныеДанные.НайтиСтроки(Отбор);
Для Каждого Регистр Из Дан Цикл
Если Регистр.Товар<>Номенклатура Тогда
ПервоначальноеКоличество=ЭтаФорма.ВладелецФормы.ТекущийЭлемент.ТекущаяСтрока;
ПервоначальноеКоличество.Количество=МассивСтрок[0].Количество;
Иначе
ПервоначальноеКоличество=ЭтаФорма.ВладелецФормы.ТекущийЭлемент.ТекущаяСтрока;
ПервоначальноеКоличество.Количество=0;
ПоказатьКак можно сделать.Может кто-то более лучший вариант предложит,как это сделать.Буде рад, если сможете привести пример.Или может кто-то подскажет, как правильно сделать так, как я пытаюсь сделать?
По теме из базы знаний
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
Ничего не понятно. Но очень интересно.
Давай по порядку.
Кликаем в строке табличной части в колонке "Количество", заполняем какое-то значение, жмем Ентер. Срабатывает событие "ПриИзменении", открываем форму в модальном режиме, в этой форме чего то кликаем, и если не нажимаем "ОК", то должно быть заполнено так как было до того как мы начали редактировать значение в строке табличной части в колонке "Количество"?
Так?
Давай по порядку.
При изменении количества в таблице вызывается форма.
Кликаем в строке табличной части в колонке "Количество", заполняем какое-то значение, жмем Ентер. Срабатывает событие "ПриИзменении", открываем форму в модальном режиме, в этой форме чего то кликаем, и если не нажимаем "ОК", то должно быть заполнено так как было до того как мы начали редактировать значение в строке табличной части в колонке "Количество"?
Так?
(4)Если так, то надо открывать форму не ПриИзменении, а в событии НачалоВыбора. Таким образом как только нажали для редактирования на Количество, открылась форма, а по результатам обработки этого количество в открытой формы уже либо писать значение в колонку либо нет. Хотя возможно я не совсем понимаю всю суть задачи.
Нужно ограничить возможность пользователю как-то неправильно устанавливать количество?
Нужно ограничить возможность пользователю как-то неправильно устанавливать количество?
Обычные формы уже начинаю забывать. Но я сделал бы примерно так:
1. В событии "НачалоВыбора" открыл бы пользователю форму редактирования количества.
2. Форму редактирования количества сделал бы с реквизитом формы "Количество", "Описание причины".
3. Если описание не заполнено и нажатие на Ок, выдал бы предупреждение, если заполнено тогда регистрировал бы изменение.
4. При открытии формы, указал бы в качестве владельца для формы таблицуФормы с количеством которая, чтобы при закрытии вызванной формы обработчик вернулся в обработчик этой таблицы "ОбработкаВыбора". И в обработке выбора уже определил будет ли изменено значение количества по данным выбора.
1. В событии "НачалоВыбора" открыл бы пользователю форму редактирования количества.
2. Форму редактирования количества сделал бы с реквизитом формы "Количество", "Описание причины".
3. Если описание не заполнено и нажатие на Ок, выдал бы предупреждение, если заполнено тогда регистрировал бы изменение.
4. При открытии формы, указал бы в качестве владельца для формы таблицуФормы с количеством которая, чтобы при закрытии вызванной формы обработчик вернулся в обработчик этой таблицы "ОбработкаВыбора". И в обработке выбора уже определил будет ли изменено значение количества по данным выбора.
Код при НачалоВыбора
В самой форме при нажатии кнопки:
СтандартнаяОбработка = Ложь;
ТекущиеДанные = ЭлементыФормы.продукция.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ФормаРедактированияКоличеста = ПолучитьФорму("Форма");
ФормаРедактированияКоличеста.ВладелецФормы = ЭлементыФормы.продукция;
ФормаРедактированияКоличеста.Количество = ТекущиеДанные.Количество;
РезултатФормы = ФормаРедактированияКоличеста.ОткрытьМодально();
Если РезултатФормы <> Неопределено Тогда
ТекущиеДанные.Количество = РезултатФормы;
КонецЕсли;
ПоказатьВ самой форме при нажатии кнопки:
Процедура Кнопка1Нажатие(Элемент)
Если ПолеВвода1 = "" Тогда
Закрыть(Неопределено);
Иначе
Закрыть(Количество);
КонецЕсли;
КонецПроцедуры
ПоказатьПрикрепленные файлы:
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)