Фиксация изменений документа в регистре сведений

1. user1202776 07.07.19 12:22 Сейчас в теме
При ручном изменении количества или при удалении строки в документе "Реализация товаров и услуг" , должна появляться окно, в котором имеется возможность выбора причины из справочника "Причины Изменения", где нужно будет выбрать причину. Без выбора причины, количество не должно меняться и не должна удаляться строка.
При выбора причины и подтверждения, в регистр сведений "Изменение документов" должна заноситься информация.
В регистр сведений должна заноситься ссылка на документ.
Как это реализовать?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. lmnlmn 69 07.07.19 12:34 Сейчас в теме
Я предлагаю другой подход. Пусть меняют что хотят чтобы не отлавливать "ПриИзменении" и не заморачиваться с фиксацией изменений. А перед сохранением сравнить то что было записано до изменения с тем что есть и выдать табличку с различиями в которой пользователь укажет причину редактирования. По табличке все записать в регистр сведений. После этого документ сохранить.
6. user1202776 07.07.19 13:18 Сейчас в теме
(2)сможете написать код, примера который вы предлагаете?
11. lmnlmn 69 07.07.19 20:15 Сейчас в теме
(6) Я-то смогу)) Вот, на скорую руку, пример получения изменений в документе перед записью. Дальше думайте самостоятельно как эту информацию применить
&НаСервере
Процедура ПолучитьТаблицуРазличий()
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	               |	ТЗ_Товары.Номенклатура КАК Номенклатура,
	               |	ТЗ_Товары.Количество КАК Количество
	               |ПОМЕСТИТЬ ВТ_Товары
	               |ИЗ
	               |	&ТЗ_Товары КАК ТЗ_Товары
	               |;
	               |
	               |////////////////////////////////////////////////////////////­////////////////////
	               |ВЫБРАТЬ
	               |	""Добавили в документ"" КАК ЧтоСделали,
	               |	ВТ_Товары.Номенклатура КАК Номенклатура,
	               |	ВТ_Товары.Количество КАК Количество
	               |ИЗ
	               |	ВТ_Товары КАК ВТ_Товары
	               |		ЛЕВОЕ СОЕДИНЕНИЕ Документ.Реализация.Товары КАК РеализацияТовары
	               |		ПО (&Ссылка = РеализацияТовары.Ссылка)
	               |			И ВТ_Товары.Номенклатура = РеализацияТовары.Номенклатура
	               |			И ВТ_Товары.Количество = РеализацияТовары.Количество
	               |ГДЕ
	               |	РеализацияТовары.Ссылка ЕСТЬ NULL
	               |
	               |ОБЪЕДИНИТЬ ВСЕ
	               |
	               |ВЫБРАТЬ
	               |	""Убрали из документа"",
	               |	РеализацияТовары.Номенклатура,
	               |	РеализацияТовары.Количество
	               |ИЗ
	               |	Документ.Реализация.Товары КАК РеализацияТовары
	               |		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Товары КАК ВТ_Товары
	               |		ПО РеализацияТовары.Номенклатура = ВТ_Товары.Номенклатура
	               |			И РеализацияТовары.Количество = ВТ_Товары.Количество
	               |ГДЕ
	               |	ВТ_Товары.Номенклатура ЕСТЬ NULL
	               |	И РеализацияТовары.Ссылка = &Ссылка";
	
	Запрос.УстановитьПараметр("ТЗ_Товары", Объект.Товары.Выгрузить());
	Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
	
	ТЗ_Различий = Запрос.Выполнить().Выгрузить();
	
	Для Каждого Строка из ТЗ_Различий Цикл
		ТекстСообщения = "";
		Для Каждого Колонка из ТЗ_Различий.Колонки Цикл
			ТекстСообщения = ТекстСообщения + Колонка.Имя + ": " + Строка[Колонка.Имя] + ", ";
		КонецЦикла;
		
		Сообщить(Лев(ТекстСообщения, СтрДлина(ТекстСообщения) - 2));
	КонецЦикла
КонецПроцедуры

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
	ПолучитьТаблицуРазличий();
КонецПроцедуры
Показать
7. user1202776 07.07.19 13:21 Сейчас в теме
(2)Тоже хорошая идея. Я уверен, что много полезного могу узнать,если сможете код написать
3. Prikum 3 07.07.19 12:41 Сейчас в теме
И как все это знатно будет тормозить!
4. lmnlmn 69 07.07.19 13:08 Сейчас в теме
(3) Если ваша реплика по поводу моего предложения, то тормоза пропорциональны количеству строк в табличной части документа. Вообще это одним запросом проверяется.
5. Prikum 3 07.07.19 13:10 Сейчас в теме
(4)Моя реплика к модальным окнам в момент проведения документов!
8. acanta 07.07.19 13:44 Сейчас в теме
Зачем окно, да ещё модальное. Для универсальности?
Достаточно активировать закладку на управляемой форме документа, которая уже открыта, но это придется прописывать в коде ее создание.
А вот в журнале да, потребуется отдельная форма.
9. user1202776 07.07.19 15:30 Сейчас в теме
(8)чтобы все понятно было для пользователей. Мало ли какие пользователи бывают
10. Prikum 3 07.07.19 17:11 Сейчас в теме
(9)Неужели это реальное задание? Вы про паралельность работы что нибудь читали?
Оставьте свое сообщение

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