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