Файл: Разработка конфигурации «Продажи» в среде 1С:Предприятие 8.3. (1 АНАЛИТИЧЕСКАЯ ЧАСТЬ).pdf
Добавлен: 30.06.2023
Просмотров: 90
Скачиваний: 2
СОДЕРЖАНИЕ
1.1 Постановка задачи автоматизации
1.2. Характеристика документооборота, возникающего при решении задачи
1.3. Обоснование проектных решений по информационному обеспечению
2.1. Характеристика разработанных справочников в среде 1С:Предприятие
2.2 Характеристика разработанных экранных форм документов в среде 1С:Предприятие
2.2.1. Описание документов, необходимых для получения исходной информации
2.2.2 Описание разработанных форм отчетов, необходимых для отражения результатов решения задачи
2.3. Описание реализации периодических расчетов в среде 1С:Предприятие
2.4. Описание созданной / откорректированной карты маршрута бизнес-процесса в среде 1С:Предприятие
2.5 Описание разработанных подсистем в среде 1С:Предприятие
2.6 Описание разработанного интерфейса пользователя в среде 1С:Предприятие
2.7. Контрольный пример реализации проекта в среде 1С:Предприятие и его описание
Приложение А
Рисунок А1 – Форма «Препараты для пчел»
Рисунок А2 – Форма «Медовая косметика»
Рисунок А3 – Инвентарь пчеловода
Рисунок А4 – Установка количества
Рисунок А5 – Выбор товаров
Рисунок А6 – Отчет «Движение товара»
Приложение Б
Программные коды
Процедура КнопкаВыполнитьНажатие(Кнопка)
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(«Оформить продажу!»);
СписокЗначений.Добавить(«Может еще чего к медку?»);
ТекстВороса =
«Оформление продажи»;
Если Вопрос(ТекстВороса, СписокЗначений, , ) = «Оформить продажу!» Тогда
СформироватьРеализацию();
Товары.Очистить();
Иначе
Возврат
КонецЕсли;
КонецПроцедуры
Процедура МЁДНажатие(Элемент)
ЭлементыФормы.Выбор.ТекущаяСтраница = ЭлементыФормы.Выбор.Страницы.Страница2;
ТабличноеПоле1.Отбор.НоменклатурнаяГруппа.Значение = Справочники.НоменклатурныеГруппы.Сувениры;
ТабличноеПоле1.Отбор.НоменклатурнаяГруппа.Использование = Истина;
КонецПроцедуры
Процедура ПРЕПАРАТЫНажатие(Элемент)
ЭлементыФормы.Выбор.ТекущаяСтраница = ЭлементыФормы.Выбор.Страницы.Страница2;
ТабличноеПоле1.Отбор.НоменклатурнаяГруппа.Значение = Справочники.НоменклатурныеГруппы.ПрепаратыДляПчел;
ТабличноеПоле1.Отбор.НоменклатурнаяГруппа.Использование = Истина;
// Вставить содержимое обработчика.
КонецПроцедуры
Процедура Инвентарь1Нажатие(Элемент)
ЭлементыФормы.Выбор.ТекущаяСтраница = ЭлементыФормы.Выбор.Страницы.Страница2;
ТабличноеПоле1.Отбор.НоменклатурнаяГруппа.Значение = Справочники.НоменклатурныеГруппы.Инвентарь;
ТабличноеПоле1.Отбор.НоменклатурнаяГруппа.Использование = Истина;
КонецПроцедуры
Процедура КОСМЕТИКАНажатие(Элемент)
ЭлементыФормы.Выбор.ТекущаяСтраница = ЭлементыФормы.Выбор.Страницы.Страница2;
ТабличноеПоле1.Отбор.НоменклатурнаяГруппа.Значение = Справочники.НоменклатурныеГруппы.ДляЗдоровья;
ТабличноеПоле1.Отбор.НоменклатурнаяГруппа.Использование = Истина;
КонецПроцедуры
Процедура ИНВЕНТАРЬНажатие(Элемент)
ЭлементыФормы.Выбор.ТекущаяСтраница = ЭлементыФормы.Выбор.Страницы.Страница2;
ТабличноеПоле1.Отбор.НоменклатурнаяГруппа.Значение = Справочники.НоменклатурныеГруппы.Инвентарь;
ТабличноеПоле1.Отбор.НоменклатурнаяГруппа.Использование = Истина;
КонецПроцедуры
Процедура ТабличноеПоле1Выбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ФормаКолВо = ПолучитьФорму(«ВводКоличества»);
КолВо = ФормаКолВо.ОткрытьМодально();
Если КолВо = Неопределено Тогда
Возврат;
КонецЕсли;
Номенклатура = ВыбраннаяСтрока.Ссылка;
УстановитьКоличествоЦену(КолВо, Номенклатура);
КонецПроцедуры
Процедура УстановитьКоличествоЦену(КолВо, Номенклатура)
Отбор = Новый Структура;
Отбор.Вставить(«Номенклатура», Номенклатура);
НайденыеСтроки = Товары.НайтиСтроки(Отбор);
Если КолВо > 0 Тогда
Если НайденыеСтроки.Количество() > 0 Тогда
Если ЭлементыФормы.СладкоеЧудо.ЦветФонаКнопки = WebЦвета.ЗеленоватоЖелтый Тогда
Если НайденыеСтроки.Количество() > 1 Тогда
Для Каждого СтрНайдено из НайденыеСтроки Цикл
Нашлось = Ложь;
Если СтрНайдено.Цена = 0 Тогда
НомерСтроки = НайденыеСтроки[0].НомерСтроки;
Стр = Товары[НомерСтроки -1];
Стр.Количество = Стр.Количество + КолВо;
Нашлось = Истина;
КонецЕсли;
КонецЦикла;
Если НЕ Нашлось Тогда
Стр = Товары.Добавить();
Стр.Номенклатура = Номенклатура;
Стр.Количество = КолВо;
КонецЕсли;
Иначе
Если НайденыеСтроки[0].Цена = 0 Тогда
НомерСтроки = НайденыеСтроки[0].НомерСтроки;
Стр = Товары[НомерСтроки -1];
Стр.Количество = Стр.Количество + КолВо;
Нашлось = Истина;
Иначе
Стр = Товары.Добавить();
Стр.Номенклатура = Номенклатура;
Стр.Количество = КолВо;
КонецЕсли;
КонецЕсли;
Иначе
Если НайденыеСтроки[0].Цена <> 0 Тогда
НомерСтроки = НайденыеСтроки[0].НомерСтроки;
Стр = Товары[НомерСтроки -1];
Стр.Количество = Стр.Количество + КолВо;
Иначе
Стр = Товары.Добавить();
Стр.Номенклатура = Номенклатура;
Стр.Количество = КолВо;
КонецЕсли;
КонецЕсли;
Иначе
Стр = Товары.Добавить();
Стр.Номенклатура = Номенклатура;
Стр.Количество = КолВо;
КонецЕсли;
ЦенаРег = РегистрыСведений.ЦеныНоменклатуры.СрезПоследних(ТекущаяДата(), Отбор);
Стр.ЕдиницаИзмерения = Стр.Номенклатура.БазоваяЕдиницаИзмерения;
Стр.Коэффициент = 1;
Если ЭлементыФормы.СладкоеЧудо.ЦветФонаКнопки = WebЦвета.ЗеленоватоЖелтый Тогда
ЭлементыФормы.СладкоеЧудо.ЦветФонаКнопки = ЦветаСтиля.ЦветФонаКнопки;
Стр.ПроцентСкидкиНаценки = 100;
Иначе
Если ЦенаРег.Количество() > 0 Тогда
Стр.Цена = ЦенаРег[0].Цена;
Иначе
ТекстВороса = «Цена не установлена, установить цену в ручную?»;
Если Вопрос(ТекстВороса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да) = КодВозвратаДиалога.Да Тогда
СтандартнаяОбработка = Ложь;
ФормаКолВо = ПолучитьФорму(«ВводКоличества»);
ФормаКолВо.Заголовок = «Укажите цену»;
ФормаКолВо.ЭлементыФормы.НадписьКоличество.Заголовок = «Цена»;
ЦенаНаТовар = ФормаКолВо.ОткрытьМодально();
Если ЦенаНаТовар = Неопределено Тогда
Возврат;
Иначе
Если Вопрос(«Запомнить цену на товар?», РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да) = КодВозвратаДиалога.Да Тогда
НайтиДок = Документы.УстановкаЦенНоменклатуры;
Док = НайтиДок.НайтиПоНомеру(«00000000001», ТекущаяДата());
Если Док = Документы.УстановкаЦенНоменклатуры.ПустаяСсылка() Тогда
Док = НайтиДок.ПолучитьФормуСписка();
КонецЕсли;
ДокОб = Док.ПолучитьОбъект();
ТоварыЦены = ДокОб.Товары;
УстТовар = ТоварыЦены.Добавить();
ЗаполнитьЗначенияСвойств(УстТовар, ТоварыЦены[0]);
УстТовар.Номенклатура = Номенклатура;
УстТовар.Цена = ЦенаНаТовар;
УстТовар.Валюта = Справочники.Валюты.НайтиПоКоду(«643»);
ДокОб.Записать(РежимЗаписиДокумента.Проведение);
КонецЕсли;
КонецЕсли;
Стр.Цена = ЦенаНаТовар;
КонецЕсли;
КонецЕсли;
Стр.Сумма = Стр.Цена * Стр.Количество;
КонецЕсли;
КонецЕсли;
Если ЭлементыФормы.Поступление.ЦветФонаКнопки <> WebЦвета.ЗеленоватоЖелтый Тогда
ЭлементыФормы.Выбор.ТекущаяСтраница = ЭлементыФормы.Выбор.Страницы.Страница1;
КонецЕсли;
КонецПроцедуры
Процедура ТоварыКоличествоПриИзменении(Элемент)
СтрокаТов = ЭлементыФормы.Товары.ТекущаяСтрока;
СтрокаТов.Сумма = СтрокаТов.Количество * СтрокаТов.Цена;
КонецПроцедуры
Процедура ТоварыЦенаПриИзменении(Элемент)
СтрокаТов = ЭлементыФормы.Товары.ТекущаяСтрока;
СтрокаТов.Сумма = СтрокаТов.Количество * СтрокаТов.Цена;
КонецПроцедуры
Процедура ПродажиНажатие(Элемент)
Отчет = Отчеты.пиПродажи.Создать();
Отчет.НачалоПериода = ТекущаяДата();
Отчет.КонецПериода = ТекущаяДата();
Отчет.НастройкаПериода.ДатаНачала = ТекущаяДата();
Отчет.НастройкаПериода.ДатаОкончания = ТекущаяДата();
ФормаОтчета = Отчет.ПолучитьФорму();
ФормаОтчета.Открыть();
КонецПроцедуры
Процедура СладкоеЧудоНажатие(Элемент)
Элемент.ЦветФонаКнопки = WebЦвета.ЗеленоватоЖелтый;
ЭлементыФормы.Выбор.ТекущаяСтраница = ЭлементыФормы.Выбор.Страницы.Страница2;
ТабличноеПоле1.Отбор.НоменклатурнаяГруппа.Значение = Справочники.НоменклатурныеГруппы.Сувениры;
ТабличноеПоле1.Отбор.НоменклатурнаяГруппа.Использование = Истина;
КонецПроцедуры
Процедура ПоступлениеНажатие(Элемент)
Если Элемент.ЦветФонаКнопки = WebЦвета.ЗеленоватоЖелтый Тогда
ОформитьПоступление();
Элемент.ЦветФонаКнопки = ЦветаСтиля.ЦветФонаКнопки;
Иначе
Элемент.ЦветФонаКнопки = WebЦвета.ЗеленоватоЖелтый;
Элемент.Заголовок = «Оформить поступление»;
ЭлементыФормы.Выбор.ТекущаяСтраница = ЭлементыФормы.Выбор.Страницы.Страница2;
КонецЕсли;
КонецПроцедуры
Процедура ОформитьПоступление()
ПосГотово = Ложь;
ТекстВороса = «Оформить поступление?»;
Если Вопрос(ТекстВороса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да) = КодВозвратаДиалога.Да Тогда
СформироватьПоступление();
ПосГотово = Истина;
Иначе
Возврат
КонецЕсли;
Если ПосГотово Тогда
Товары.Очистить();
КонецЕсли;
КонецПроцедуры
Процедура НазадНажатие(Элемент)
ЭлементыФормы.Выбор.ТекущаяСтраница = ЭлементыФормы.Выбор.Страницы.Страница1;
ЭлементыФормы.СладкоеЧудо.ЦветФонаКнопки = ЦветаСтиля.ЦветФонаКнопки;
КонецПроцедуры
Процедура ОчиститьНажатие(Элемент)
Товары.Очистить();
КонецПроцедуры
Процедура УдалитьПродажуНажатие(Элемент)
Документы = Реализации.Отбор;
КонецПроцедуры
Процедура РеализацииЗаДеньНажатие(Элемент)
ЭлементыФормы.Выбор.ТекущаяСтраница = ЭлементыФормы.Выбор.Страницы.Страница3;
Реализации.Отбор.Дата.ЗначениеС = НачалоДня(ТекущаяДата());
Реализации.Отбор.Дата.ЗначениеПо = КонецДня(ТекущаяДата());
Реализации.Отбор.Дата.Использование = Истина;
КонецПроцедуры
Процедура ТабличноеПоле1ПриАктивизацииСтроки(Элемент)
ТекСтрока = ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока;
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| ТоварыНаСкладахОстатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки»;
Если ТекСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
Запрос.УстановитьПараметр(«Номенклатура», ТекСтрока.Ссылка);
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
ЭлементыФормы.Остаток.Заголовок = Результат.КоличествоОстаток;
Если Результат.КоличествоОстаток >= 20 Тогда
ЭлементыФормы.Остаток.ЦветТекста = WebЦвета.Зеленый;
ИначеЕсли Результат.КоличествоОстаток <= 19 и Результат.КоличествоОстаток >= 10 Тогда
ЭлементыФормы.Остаток.ЦветТекста = WebЦвета.СветлоЗеленый;
ИначеЕсли Результат.КоличествоОстаток <= 9 и Результат.КоличествоОстаток >= 5 Тогда
ЭлементыФормы.Остаток.ЦветТекста = WebЦвета.ОранжевоКрасный;
ИначеЕсли Результат.КоличествоОстаток <= 4 Тогда
ЭлементыФормы.Остаток.ЦветТекста = WebЦвета.Красный;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура РеализацииУдалитьПриИзменении(Элемент)
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(«Удалить реализацию»);
СписокЗначений.Добавить(«Оставить без изменений»);
ТекстВороса =
«УДАЛЕНИЕ РЕАЛИЗАЦИИ»;
Если Вопрос(ТекстВороса, СписокЗначений, , «Удалить реализацию») = «Удалить реализацию» Тогда
СформироватьРеализацию();
Товары.Очистить();
Иначе
Возврат
КонецЕсли;
// Вставить содержимое обработчика.
КонецПроцедуры
Процедура РеализацииПриАктивизацииКолонки(Элемент)
// Вставить содержимое обработчика.
КонецПроцедуры
Процедура РеализацииВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Элемент.ТекущаяКолонка.Имя = «Удалить» Тогда
Если Элемент.ТекущаяКолонка.ЦветФонаПоля = WebЦвета.Красный Тогда
Элемент.ТекущаяКолонка.ЦветФонаПоля = ЦветаСтиля.ЦветФонаКнопки;
Иначе
Элемент.ТекущаяКолонка.ЦветФонаПоля = WebЦвета.Красный;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция ПолучитьОстатокТовара(Номенклатура)
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| ТоварыНаСкладахОстатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки»;
Запрос.УстановитьПараметр(«Номенклатура», Номенклатура);
Результат = Запрос.Выполнить().Выгрузить();
Если Результат.Количество() > 0 Тогда
Возврат Результат[0].КоличествоОстаток;
Иначе
Возврат 0;
КонецЕсли;
КонецФункции
Процедура ДвижениеТовараНажатие(Элемент)
Отчет = Отчеты.ДвижениеТовара.ПолучитьФорму();
Отчет.Открыть();
КонецПроцедуры
Процедура КорректировкаЦенНажатие(Элемент)
ДокЦены = Документы.УстановкаЦенНоменклатуры.ПолучитьФормуСписка();