Руководство поставило задачу: дать пользователям возможность изменять в закрытом периоде реквизиты, которые не влияют на движения регистров. Это, к примеру, такие реквизиты как Комментарий, Дата и Номер входящего документа, Ответственный и т.д. В итоге получилось два решения, которые и представляю Вам. Может кому-то и пригодится.
Разрабатывалось для УПП. Проверено для "Комплексной автоматизации".
ВАРИАНТ ПЕРВЫЙ. Внешняя подключаемая обработка заполнения табличных частей.
Собственно, задание было реализовать функционал через меню "Заполнить", которое присутствует во всех табличных частях. Поэтому написал внешнюю "Обработку заполнения табличных частей".
Но не тут-то было. В закрытом периоде пункты меню "Заполнить" оказались недоступны.
Пришлось разбираться. Оказывается, что для формы, открытой в режиме "Только чтение", элементы, с установленным свойством "ИзменяетДанные" в значение "Истина", становятся недоступными.
Обойти эту "фичу" без изменения конфигурации, к сожалению, не получилось. Но изменения получились минимальными. Нужно добавить всего одну строчку кода.
Способ заставить работать "Обработку заполнения табличных частей" в закрытом периоде.
Для этого надо выполнить два пункта:
1. В общий модуль УниверсальныеМеханизмы, в функцию ПолучитьДеревоКнопокЗаполненияТабличныхЧастей,
ПОСЛЕ строки:
ДобавитьСтрокуВДеревоКнопок(СтрокаПодменю, "ЗаполнениеТЧ"+НомерКнопки, ТипКнопкиКоманднойПанели.Действие, ВыборкаДействий.Наименование, Действие, СтруктураРасшифровки, , , , , Истина);
ДОБАВИТЬ одну строку:
СтрокаПодменю.Строки[СтрокаПодменю.Строки.Количество()-1].ИзменяетДанные = Найти(СокрЛ(ВыборкаДействий.Наименование), "*") <> 1; // ДОБАВЛЕНА 1стр. (MTV 31.03.2012)
2. При регистрации обработки, в табличной части диалога "Регистрация внешней обработки заполнения табличных частей", в колонке "Представление кнопки", первым символом в строке должен быть символ "*" (звездочка). Смотри скриншот №1.
Можно выбрать и другой символ, при условии соответствующего изменения в добавляемой строке кода (пункт 1).
ВАРИАНТ ВТОРОЙ. Внешняя подключаемая печатная форма. (Без изменения конфигурации.)
Если нет желания вносить изменение в конфигурацию, то для реализации заданного функционала можно подключить предлагаемую внешнюю печатную форму "Изменение реквизитов в закрытом периоде". В этом случае изменять конфигурацию не нужно.
Выкладываю оба варианта - выбирайте, какой больше понравится. В архиве находятся обе обработки (обработка заполнения табличных частей и внешняя печатная форма). А так же текстовый файл с описанием вносимого изменения.
В обработках реализовано изменение следующих реквизитов: Комментарий, НомерВходящегоДокумента, ДатаВходящегоДокумента, Ответственный. При желании можно легко убрать или добавить нужные реквизиты.
В представленных обработках, при записи изменений используется следующая конструкция:
Объект.ОбменДанными.Загрузка = Истина;
Объект.Записать(РежимЗаписиДокумента.Запись);
Таким образом происходит только запись документа без перепроведения. То есть движения документа (записи в регистрах) не изменяются.