1С Торговля и Склад. Запись документа без перепроведения.

  • Автор:

TIS77.png

Очень часто встречается необходимость сохранять определенные изменения документа без его перепроведения. Однако штатные средства 1С не предоставляют такой возможности. Хотя мы знаем: если нельзя, но сильно хочется, то можно! В данной статье мы рассмотрим простой способ, позволяющий это сделать.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Прежде всего коротко о проблеме. 1С Предприятие 7.7 при любых изменениях документа, даже не затрагивающих регистры, требует его перепроведения. Это вызывает определенные трудности, в частности при разграничении прав, когда сотруднику не имеющему права проведения документа требуется доступ к изменению определенных реквизитов, скажем комментария.

Недавно подобная проблема возникла и перед нами. Потребовалось добавить в документ реализации два чекбокса, которые должны были проставляться кассиром и кладовщиком: "Оплачено" и "Товар отпущен". Что в совокупности со штрихкодированием документов должно было значительно ускорить отпуск товара и улучшить уровень обслуживания клиентов.

Добавить на форму два чекбокса и привязать к ним два реквизита не составило труда, а вот после начались проблемы. Ни кладовщики, ни кассир не должны иметь возможности изменять табличную часть документа, но в тоже время должны иметь право устанавливать соответствующую галочку.

TIS77-01.pngРассмотрим решение. В Конфигураторе отркываем Модуль формы документа Реализация и в начале модуля объявляем новую переменную НадоЗаписать:

Перем НадоЗаписать;

После этого добавим новую процедуру:

Процедура ПриВыбореОплата()

Форма.Закрыть(0);
НадоЗаписать = 1;

КонецПроцедуры

Теперь привяжем к чекбоксу Оплата вызов созданной процедуры:

TIS77-02.pngАналогичным образом создадим процедуру для чекбокса "Товар отпущен". После чего добавим в модуль следующую процедуру:

Процедура ПриЗакрытии()

Если НадоЗаписать = 1 Тогда
ПриЗаписиПерепроводить (0);
Записать();
ПриЗаписиПерепроводить (1);
НадоЗаписать = 0;
СтатусВозврата(0);
Возврат;
КонецЕсли;

КонецПроцедуры

Сохраняем изменения, проверяем. Все должно работать. 

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.


Loading Comments