История реквизитов организаций (печати, факсимиле, КПП, телефон)

Публикация № 978510

Программирование - Практика программирования

история реквизитов печати доработка расширение

0
Решение задачи по хранению истории изменений КПП организации, дополнительных печатей, бланков и факсимиле ответственных лиц организаций, контактной информации организаций типа телефон.

Делалось для конфигурации Управление Аптечной Сетью (отраслевая доработка на базе УТ 11.4.6.166), тестировалось на платформе 8.3.13.1513 на момент разработки.  Режим совместимости конфигурации и расширения 8.3.12. Расширение во вложении должно работать на всех версиях УТ/УАС начиная с версий 11.4.6.166 или более ранними, кроме задачи про КонтактнуюИнформацию, т.к. эта обработка часто изменяется разработчиками – если что-то не взлетит, то путем простых доработок Вы сами сможете поправить. Это моя первая статья, поэтому камнями прошу не бросаться. Если что-то нужно уточнить или добавить в описании пишите в комментариях я учту и дополню. Пока не умею вставлять программные коды, поэтому вся логика внутри файлов. Заранее благодарю. Приступим…

Задача №1 Хранить историю печатей, факсимиле, подписей различных должностных лиц организации для дальнейшего получения и использования действующих на заданную дату

  1. Добавить в Перечисление «ОтветственныеЛицаОрганизаций» свои значения недостающих факсимиле: ЗаведующийСкладом, Фармацевт, НачальникПриемногоОтдела.
  2. Создать новое Перечисление (или Справочник) – ДА_ВидыШтампов со значениями: ПодписьРуководителя, ПодписьБухгалтера, ПодписьФармацевт, ПодписьЗаведующегоСкладом, ПечатьФирмы, Бланк, ПодписьНа чПриемОтд
  3. Создать НеПериодический Независимый Регистр Сведений «ИсторияРеквизитов» с измерениями: СтруктурнаяЕдиница (тип: Справочник.Организации – можно увеличивать), ПериодДействия (Дата), ВидРеквизита (Перечисление.ВидыШтампов), Ресурс: Значение (тип: ОрганизацииПрисоединенныеФайлы), Реквизит: ДопЗначРеквизита (строка 100)  может не быть или быть любого типа, мне для удобства нужен путь к файлу в томе, поэтому строка 100 куда будут записывать unc путь к файлу с расширением. У Регистра создать форму РедактированиеИстории. Модуль формы наполнить нужными обработчиками.  См. картинку ФормаРегистра_РедактированиеИстории.JPG
  4. У регистра сведений создаем форму РедактированиеИстории, где будет происходить правка истории пользователем. Чтобы не рисовать с нуля воспользовался созданной в конфигурации БП/УТ готовой формой из РегистраСведений «УчетнаяПолитикаОрганизаций» и внес в неё изменения под свою задачу: вырезал лишнее и заменил вызовы общих модулей «ПериодическиеСведения****» на свои. ФормаСписка и ФормаЗаписи можно не переносить и оставить по-умолчанию.

Далее действия в расширении.

В модуле менеджера Справочника «Организации» создать обработчик гиперссылки История ИсторияРеквизитовФайлов

// Возвращаемое значение:

//            СправочникСсылка.ПрисоединеныеФайлыОрганизации .

//

Функция ИсторииРеквизитовФайлов(СтруктурнаяЕдиница, Знач ДатаАктуальности = Неопределено, ТекущийФайлПОдписи = Неопределено) Экспорт

                Если ТекущийФайлПОдписи <> Неопределено Тогда

                               Возврат ТекущийФайлПОдписи;

                КонецЕсли;

                Запрос = Новый Запрос;

                Запрос.УстановитьПараметр("СтруктурнаяЕдиница", СтруктурнаяЕдиница);

                Запрос.Текст =         

                "ВЫБРАТЬ

                |             Регистрации.Значение КАК Значение,

                |             Регистрации.ВидРеквизита КАК ВидРеквизита

                |ИЗ

                |             РегистрСведений.ДА_ИсторияРеквизитов КАК Регистрации

                |ГДЕ

                |             Регистрации.СтруктурнаяЕдиница = &СтруктурнаяЕдиница

                |

                |УПОРЯДОЧИТЬ ПО

                |             Регистрации.Период УБЫВ";        

                Возврат Запрос.Выполнить();                                 

КонецФункции

У справочника «Организации» создать реквизиты ДА_ФайлПодписьРуководителя, ДА_ФайлПодписьБухгалтера, ДА_ФайлПодписьФармацевт, ДА_ФайлПодписьЗаведующугоСкладом, ДА_ФайлПечатьФирмы, ДА_ФайлБланк, ДА_ФайлПодписьНачПриемОтд все типа СправочникСсылка.ОрганизацииПрисоединенныеФайлы

У справочника «Организации» в заимствованной ФормаЭлемента располагаем на форме нужные Элементы, добавляе м реквизиты, в модуле формы пишем обработчики событий нажатий на файлы, картинки, их очистки и т.п. и т.д. в части взаимодействия с Историейсм. ИсторияПечатей.gif

Задача №2 Хранить историю Контактной Информации (далее – КИ) в части Телефона, ПочтовогоАдреса и ФактическогоАдреса организации

В сети есть решения с использованием нового своего РегистраСведений, но мне захотелось реализовать на типовом механизме конфигурации справочника ВидыКонтактнойИнформации.  Все действия выполняем на стороне Расширения.

Т.к. в типовой конфигурации хранение истории поддерживается только для Адресов, то чтобы иметь возможность поставить галку «ХранитьИсториюИзменений» у ТелефонаОрганизации чуть-чуть модифицируем ФормаЭлемента справочника ВидыКонтактнойИнформации процедуру ПриСозданииНаСервере и по методу &Вместо заменим на свою, сняв мешающее нам ограничение.  Потом после установки галочки у Телефона можно эту процедуру удалить.

ОбщийМодуль  УправлениеКонтактнойИнформацией переопределим методом &Вместо процедуру СоздатьДействие, чтобы срабатывали стандартные механизмы размещения кнопки ИсторияИзменений для вида КИ ТелефонОрганизации. см. ИсторияРеквизитовКИ2.gif

Ошибки в интерфейсе типового решения , имеющиеся в этой обработке не рассматриваем, а возьмем как есть и внедримся в существующий механизм, ну кроме одной явной ошибки, когда при изменении Адреса/Телефона результат изменения считается всегда Новым и переносится в строку НачальноеЗначение, рассчитываю, что эта ошибкабудет пофиксина в следующих релизах 1С.

Во-первых, нужно адаптировать форму ВводТелефона обработки ВводКонтактнойИнформации. Делаем через заимстование формы и добавления через интерфейс своих реквизитов и элементов (можно и лучше программно, но пока не дошли руки). Всего нужно скопировать из типового механизма работы с КИ вида "Адрес" с небольшими изменениями и вставить несколько своих около 15 процедур/функций, поэтому приводить их текст пока не буду – см. во вложенном расширении.

В форме ИсторияКонтактнойИнформации той же обработки ВводКонтактнойИнформации переопределить  процедуру ОткрытьФормуРедактированияАдреса методом &Вместо и также написать свой обработчик Оповещения после закрытия формы как раз для исправления ошибки описанной выше.  Пытался переопределить существующий в основной конфигурации метод-обработчик Оповещения, но при попытке добавить в расширение процедуры платформа у меня вылетает полностью без каких-либо ошибок и сообщений. Почему? Если кто-то знает буду рад прочитать комментарий. см. ИсторияТелефона.gif

Задача №3 Хранить историюКПП организаций: Создать историю КПП легко, т.к. это уже реализовано в конфигурациях БП/КА через хранение в ТЧ справочников Организации и Контрагенты. Ничего сложного там нет и потому было скопировано как есть из них в свою конфигурацию. Можете посмотреть сами в файле расширения, поэтому подробно описывать здесь эту часть здесь не буду.

Во вложениях файл основной конфигурации только с новыми объектами для уменьшения объема и простоты сравнения/объединения и файл расширения конфигурации с описанными изменениями. Использование расширения и конфигурации без понимания, что Вы делаете опасно. Никаких гарантий работоспособности у Вас мною не предоставляется ;)

0

Скачать файлы

Наименование Файл Версия Размер
История реквизитов организаций (печати, факсимиле, КПП, телефон):
.cfe 159,01Kb
11.01.19
0
.cfe 1.1 159,01Kb Скачать
История реквизитов организаций (печати, факсимиле, КПП, телефон):
.cf 824,40Kb
11.01.19
1
.cf 1.1 824,40Kb 1 Скачать

См. также

Специальные предложения

Избранное Подписка Сортировка: Древо
В этой теме еще нет сообщений.
Оставьте свое сообщение