Файл: Разработка конфигурации «Учет реализации лекарственных препаратов через аптечную сеть.pdf
Добавлен: 17.06.2023
Просмотров: 141
Скачиваний: 3
СОДЕРЖАНИЕ
1.1 Выбор комплекса задач автоматизации
1.2 Характеристика документооборота, возникающего при решении задачи
1.3 Обоснование проектных решений по информационному обеспечению
2.2 Характеристика разработанных экранных форм документов в среде 1С:Предприятие
2.2.2 Описание разработанных форм отчетов, необходимых для отражения результатов решения задачи
2.3 Описание реализации периодических расчетов в среде 1С:Предприятие
2.4 Описание созданной / откорректированной карты маршрута бизнес-процесса в среде 1С:Предприятие
2.5 Описание разработанных подсистем в среде 1С:Предприятие
2.7 Контрольный пример реализации проекта в среде 1С:Предприятие и его описание
КонецПроцедуры
// Процедура - обработчик события "ОбработкаПроведения".
//
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства, РежимПроведения);
Документы.РеализацияУслуг.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства);
ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);
ПродажиСервер.ОтразитьПродажи(ДополнительныеСвойства, Движения, Отказ);
ПродажиСервер.ОтразитьПродажиПоДисконтнымКартам(ДополнительныеСвойства, Движения, Отказ);
ЗапасыСервер.ОтразитьУслугиНаСкладах(ДополнительныеСвойства, Движения, Отказ);
ЗапасыСервер.ОтразитьУслугиОрганизаций(ДополнительныеСвойства, Движения, Отказ);
ЗапасыСервер.ОтразитьУслугиКОтгрузке(ДополнительныеСвойства, Движения, Отказ);
ЗапасыСервер.ОтразитьДвиженияСерийныхНомеров(ДополнительныеСвойства, Движения, Отказ);
ЗапасыСервер.ОтразитьДвиженияСерийУслуг(ДополнительныеСвойства, Движения, Отказ);
СформироватьСписокРегистровДляКонтроля();
ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);
ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);
ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);
ДополнительныеСвойства.Вставить("Отказ", Отказ);
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
МассивНепроверяемыхРеквизитов = Новый Массив;
ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеКоличества(ЭтотОбъект, ПроверяемыеРеквизиты, Отказ);
ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеХарактеристик(ЭтотОбъект,МассивНепроверяемыхРеквизитов,Отказ);
ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеСерий(ЭтотОбъект,Документы.РеализацияУслуг.ПараметрыУказанияСерий(ЭтотОбъект),Отказ);
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты,МассивНепроверяемыхРеквизитов);
МаркетинговыеАкцииСервер.ПроверитьЦеныСертификатов(
ЭтотОбъект,
"Услуги",
Отказ
);
МаркетинговыеАкцииСервер.ПроверитьЗаполнениеТабличнойЧастиСерийныеНомера(
ЭтотОбъект,
"Услуги",
"СерийныеНомера",
Отказ
);
МаркетинговыеАкцииСервер.ПроверитьДвиженияСерийныхНомеров(
ЭтотОбъект,
"Услуги",
"СерийныеНомера",
Отказ
);
МаркетинговыеАкцииСервер.ПроверитьОкончаниеАбсолютныхСроковДействияСертификатов(
ЭтотОбъект,
"Услуги",
Отказ,
);
КонецПроцедуры
// Процедура - обработчик события "ОбработкаУдаленияПроведения".
//
Процедура ОбработкаУдаленияПроведения(Отказ)
ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства);
ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);
СформироватьСписокРегистровДляКонтроля();
ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);
ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);
ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);
КонецПроцедуры
// Процедура - обработчик события "ПередЗаписью".
//
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Справочники.СерийныеНомера.ОчиститьВДокументеНеиспользуемыеСерийныеНомера(Услуги, СерийныеНомера);
ОбщегоНазначенияРТСервер.УдалитьНеиспользуемыеСтрокиСерий(ЭтотОбъект,Документы.РеализацияУслуг.ПараметрыУказанияСерий(ЭтотОбъект));
ПроведениеСервер.УстановитьРежимПроведения(Проведен, РежимЗаписи, РежимПроведения);
ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());
ДополнительныеСвойства.Вставить("РежимЗаписи", РежимЗаписи);
ОбщегоНазначенияРТ.УстановитьНовоеЗначениеРеквизита(
ЭтотОбъект,
ОбработкаТабличнойЧастиУслугиКлиентСервер.ПолучитьСуммуДокумента(Услуги, ЦенаВключаетНДС),
"СуммаДокумента");
ДополнительныеСвойства.Вставить("Отказ", Отказ);
КонецПроцедуры
// Процедура - обработчик события "ПриКопировании".
//
Процедура ПриКопировании(ОбъектКопирования)
СкидкиРассчитаны = Ложь;
СкидкиНаценкиСервер.ОтменитьСкидки(ЭтотОбъект, "Услуги");
Серии.Очистить();
ИнициализироватьДокумент();
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
///////////////////////////////////////////////////////////////////////////////
// Инициализация и заполнение
// Инициализирует документ
//
Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда
ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения);
Если ДанныеЗаполнения.Свойство("Магазин")
И НЕ ЗначениеЗаполнено(Магазин) Тогда
Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПродажиПоУмолчанию(ДанныеЗаполнения.Магазин,,Склад, Ответственный);
КонецЕсли;
Если ДанныеЗаполнения.Свойство("Организация")
И НЕ ЗначениеЗаполнено(Организация) Тогда
БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(ДанныеЗаполнения.Организация,,БанковскийСчетОрганизации);
КонецЕсли;
КонецЕсли;
Ответственный = Пользователи.ТекущийПользователь();
Магазин = ЗначениеНастроекПовтИсп.ПолучитьМагазинПоУмолчанию(Магазин);
Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПродажиПоУмолчанию(Магазин,,Склад, Ответственный);
Если ЗначениеЗаполнено(Склад) Тогда
Организация = Склад.Организация;
КонецЕсли;
Организация = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Организация,Ответственный);
Контрагент = ЗначениеНастроекПовтИсп.ПолучитьПокупателяПоУмолчанию(Контрагент, Ответственный);
БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(Организация,,БанковскийСчетОрганизации);
Продавец = ЗначениеНастроекПовтИсп.ПолучитьПродавцаПоУмолчанию(Продавец, Ответственный);
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////
// Прочее
//Процедура формирует массив имен регистров для контроля проведения
//
Процедура СформироватьСписокРегистровДляКонтроля()
Массив = Новый Массив;
// При проведении выполняется контроль превышения остатков на складах
Если ДополнительныеСвойства.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Массив.Добавить(Движения.УслугиНаСкладах);
Массив.Добавить(Движения.ДвиженияСерийныхНомеров);
КонецЕсли;
ДополнительныеСвойства.ДляПроведения.Вставить("РегистрыДляКонтроля", Массив);
ДополнительныеСвойства.ДляПроведения.Вставить("ПопыткиПродажПревышающихОстаток");
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ
// Процедура - обработчик события "ОбработкаЗаполнения".
//
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
ИнициализироватьДокумент(ДанныеЗаполнения);
КонецПроцедуры
// Процедура - обработчик события "ОбработкаПроведения".
//
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства, РежимПроведения);
Документы.РеализацияУслуг.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства);
ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);
ПродажиСервер.ОтразитьПродажи(ДополнительныеСвойства, Движения, Отказ);
ПродажиСервер.ОтразитьПродажиПоДисконтнымКартам(ДополнительныеСвойства, Движения, Отказ);
ЗапасыСервер.ОтразитьУслугиНаСкладах(ДополнительныеСвойства, Движения, Отказ);
ЗапасыСервер.ОтразитьУслугиОрганизаций(ДополнительныеСвойства, Движения, Отказ);
ЗапасыСервер.ОтразитьУслугиКОтгрузке(ДополнительныеСвойства, Движения, Отказ);
ЗапасыСервер.ОтразитьДвиженияСерийныхНомеров(ДополнительныеСвойства, Движения, Отказ);
ЗапасыСервер.ОтразитьДвиженияСерийУслуг(ДополнительныеСвойства, Движения, Отказ);
СформироватьСписокРегистровДляКонтроля();
ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);
ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);
ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);
ДополнительныеСвойства.Вставить("Отказ", Отказ);
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
МассивНепроверяемыхРеквизитов = Новый Массив;
ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеКоличества(ЭтотОбъект, ПроверяемыеРеквизиты, Отказ);
ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеХарактеристик(ЭтотОбъект,МассивНепроверяемыхРеквизитов,Отказ);
ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеСерий(ЭтотОбъект,Документы.РеализацияУслуг.ПараметрыУказанияСерий(ЭтотОбъект),Отказ);
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты,МассивНепроверяемыхРеквизитов);
МаркетинговыеАкцииСервер.ПроверитьЦеныСертификатов(
ЭтотОбъект,
"Услуги",
Отказ
);
МаркетинговыеАкцииСервер.ПроверитьЗаполнениеТабличнойЧастиСерийныеНомера(
ЭтотОбъект,
"Услуги",
"СерийныеНомера",
Отказ
);
МаркетинговыеАкцииСервер.ПроверитьДвиженияСерийныхНомеров(
ЭтотОбъект,
"Услуги",
"СерийныеНомера",
Отказ
);
МаркетинговыеАкцииСервер.ПроверитьОкончаниеАбсолютныхСроковДействияСертификатов(
ЭтотОбъект,
"Услуги",
Отказ,
);
КонецПроцедуры
// Процедура - обработчик события "ОбработкаУдаленияПроведения".
//
Процедура ОбработкаУдаленияПроведения(Отказ)
ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства);
ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);
СформироватьСписокРегистровДляКонтроля();
ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);
ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);
ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);
КонецПроцедуры
// Процедура - обработчик события "ПередЗаписью".
//
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Справочники.СерийныеНомера.ОчиститьВДокументеНеиспользуемыеСерийныеНомера(Услуги, СерийныеНомера);
ОбщегоНазначенияРТСервер.УдалитьНеиспользуемыеСтрокиСерий(ЭтотОбъект,Документы.РеализацияУслуг.ПараметрыУказанияСерий(ЭтотОбъект));
ПроведениеСервер.УстановитьРежимПроведения(Проведен, РежимЗаписи, РежимПроведения);
ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());
ДополнительныеСвойства.Вставить("РежимЗаписи", РежимЗаписи);
ОбщегоНазначенияРТ.УстановитьНовоеЗначениеРеквизита(
ЭтотОбъект,
ОбработкаТабличнойЧастиУслугиКлиентСервер.ПолучитьСуммуДокумента(Услуги, ЦенаВключаетНДС),
"СуммаДокумента");
ДополнительныеСвойства.Вставить("Отказ", Отказ);
КонецПроцедуры
// Процедура - обработчик события "ПриКопировании".
//
Процедура ПриКопировании(ОбъектКопирования)
СкидкиРассчитаны = Ложь;
СкидкиНаценкиСервер.ОтменитьСкидки(ЭтотОбъект, "Услуги");
Серии.Очистить();
ИнициализироватьДокумент();
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
///////////////////////////////////////////////////////////////////////////////
// Инициализация и заполнение
// Инициализирует документ
//
Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда
ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения);
Если ДанныеЗаполнения.Свойство("Магазин")
И НЕ ЗначениеЗаполнено(Магазин) Тогда
Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПродажиПоУмолчанию(ДанныеЗаполнения.Магазин,,Склад, Ответственный);
КонецЕсли;
Если ДанныеЗаполнения.Свойство("Организация")
И НЕ ЗначениеЗаполнено(Организация) Тогда
БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(ДанныеЗаполнения.Организация,,БанковскийСчетОрганизации);
КонецЕсли;
КонецЕсли;
Ответственный = Пользователи.ТекущийПользователь();