Файл: Разработка конфигурации «Покупка сырья и материалов» в среде 1С:Предприятие 8.3..pdf
Добавлен: 03.07.2023
Просмотров: 900
Скачиваний: 17
СОДЕРЖАНИЕ
2.2. Характеристика разработанных экранных форм документов в среде 1С:Предприятие
2.2.2 Описание разработанных форм отчетов, необходимых для отражения результатов решения задачи
2.3. Описание реализации периодических расчетов в среде 1С:Предприятие
2.4. Описание созданной / откорректированной карты маршрута бизнес-процесса в среде 1С:Предприятие
2.5 Описание разработанных подсистем в среде 1С:Предприятие
2.7. Контрольный пример реализации проекта в среде 1С:Предприятие и его описание
Приложения
Приложение А
Приложение А.1 –Работа со справочниками
Функция РозничнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт
//Создать вспомокательный обьект Отбор.
Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);
//Получить актуальные значения ресурсов регистра.
ЗначенияРесурсов = РегистрыСведений.РозничныеЦены.ПолучитьПоследнее(АктуальнаяДата, Отбор);
Возврат ЗначенияРесурсов.Цена;
КонецФункции
Функция ЗакупочнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт
// Создадим спомогательный объект Отбор.
Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);
// Получить актуальные значения объектов ресурса
ЗначенияРесурсов = РегистрыСведений.ЗакупочныеЦены.ПолучитьПоследнее(АктуальнаяДата, Отбор);
Возврат ЗначенияРесурсов.Цена;
КонецФункции
Приложение А.2 – Поступление товара
Модуль формы:
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные;
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаЗаЕдиницуПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные; РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыТоварПриИзменении(Элемент)
//Получить текущую строку табличной части
СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные;
// Установить цену
СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.ЗакупочнаяЦена(Объект.Дата, СтрокаТабличнойЧасти.Товар);
//Пересчитать сумму строки
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры
Модуль объекта:
Движения.ОстаткиТоваров.Записывать = Истина;
Движения.СтоимостьТоваров.Записывать = Истина;
Движения.Закупки.Записывать = Истина;
Для Каждого ТекСтрокаТовары Из Товары Цикл
// регистр ОстаткиТоваров Приход
Движение = Движения.ОстаткиТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаТовары.Товар;
Движение.Склад = Склад;
Движение.Количество = ТекСтрокаТовары.Количество;
// регистр СтоимостьТоваров Расход
Движение = Движения.СтоимостьТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Контрагент = Поставщик;
Движение.Сумма = ТекСтрокаТовары.Сумма;
// регистр Закупки
Движение = Движения.Закупки.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаТовары.Товар;
Движение.Поставщик = Поставщик;
Движение.Количество = ТекСтрокаТовары.Количество;
Движение.Задолженность = ТекСтрокаТовары.Сумма;
КонецЦикла;
КонецПроцедуры
Менеджер объекта:
Процедура Печать(ТабДок, Ссылка) Экспорт
Макет = Документы.ПоступлениеТоваров.ПолучитьМакет("Печать");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПоступлениеТоваров.Дата,
| ПоступлениеТоваров.МатериальноОтветственноеЛицо,
| ПоступлениеТоваров.Номер,
| ПоступлениеТоваров.Поставщик,
| ПоступлениеТоваров.Склад,
| ПоступлениеТоваров.Товары.(
| НомерСтроки,
| Товар,
| Количество,
| Цена,
| Сумма
| )
|ИЗ
| Документ.ПоступлениеТоваров КАК ПоступлениеТоваров
|ГДЕ
| ПоступлениеТоваров.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
ОбластьТовары = Макет.ПолучитьОбласть("Товары");
ОбластьИтог = Макет.ПолучитьОбласть("Всего");
ТабДок.Очистить();
ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабДок.Вывести(ОбластьЗаголовок);
Шапка.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Шапка, Выборка.Уровень());
ТабДок.Вывести(ОбластьТоварыШапка);
ВыборкаТовары = Выборка.Товары.Выбрать();
СуммаИтог = 0;
Пока ВыборкаТовары.Следующий() Цикл
ОбластьТовары.Параметры.Заполнить(ВыборкаТовары);
ТабДок.Вывести(ОбластьТовары, ВыборкаТовары.Уровень());
СуммаИтог = СуммаИтог + ВыборкаТовары.Сумма;
КонецЦикла;
ОбластьИтог.Параметры.ВсегоПоДокументу = СуммаИтог;
ТабДок.Вывести(ОбластьИтог);
ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
КонецПроцедуры
Приложение А.3 – Реализация товара»
Модуль формы:
&НаКлиенте
Процедура ПереченьНоменклатурыКоличествоПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДанные;
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры
&НаКлиенте
Процедура ПереченьНоменклатурыЦенаПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДанные;
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры
&НаКлиенте
Процедура ПереченьНоменклатурыНоменклатураПриИзменении(Элемент)
//Получить текущую строку табличтой части.
СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДанные;
//Установить цену.
СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.РозничнаяЦена(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура);
КонецПроцедуры
Модуль объекта:
Процедура ОбработкаПроведения(Отказ, Режим)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст = "ВЫБРАТЬ
| РеализацияТовараПереченьНоменклатуры.Номенклатура,
| СУММА(РеализацияТовараПереченьНоменклатуры.Количество) КАК Количество
|ПОМЕСТИТЬ ДокТЧ
|ИЗ
| Документ.РеализацияТовара.ПереченьНоменклатуры КАК РеализацияТовараПереченьНоменклатуры
|ГДЕ
| РеализацияТовараПереченьНоменклатуры.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| РеализацияТовараПереченьНоменклатуры.Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДокТЧ.Номенклатура,
| ДокТЧ.Количество
|ИЗ
| ДокТЧ КАК ДокТЧ";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапроса = Запрос.Выполнить();
Движения.ОстаткиТоваров.Записывать = Истина;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Движение = Движения.ОстаткиТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = Выборка.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = Выборка.Количество;
КонецЦикла;
Движения.Записать();
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура,
| КоличествоОстаток КАК Остаток
|ИЗ
| РегистрНакопления.ОстаткиТоваров.Остатки(
| ,
| Склад = &Склад
| И Номенклатура В
| (ВЫБРАТЬ
| ДокТЧ.Номенклатура
| ИЗ
| ДокТЧ КАК ДокТЧ))
|ГДЕ
| КоличествоОстаток < 0";
Запрос.УстановитьПараметр("Склад", Склад);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не хватает товара " + Выборка.Номенклатура + ", после проведения документа остаток составит " + Выборка.Остаток;
Сообщение.Сообщить();
Отказ = Истина;
КонецЦикла;
Движения.СтоимостьТоваров.Записывать = Истина;
Движения.Продажи.Записывать = Истина;
Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл
// регистр СтоимостьТоваров Приход
Движение = Движения.СтоимостьТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Контрагент = Покупатель;
Движение.Сумма = ТекСтрокаПереченьНоменклатуры.Сумма;
// регистр Продажи
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаПереченьНоменклатуры.Номенклатура;
Движение.Покупатель = Покупатель;
Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество;
Движение.Выручка = ТекСтрокаПереченьНоменклатуры.Сумма;
КонецЦикла;
КонецПроцедуры;
Модуль менеджера:
Процедура Печать(ТабДок, Ссылка) Экспорт
Макет = Документы.РеализацияТовара.ПолучитьМакет("Печать");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТовара.Дата,
| РеализацияТовара.МатериальноОтветствннноеЛицо,
| РеализацияТовара.Номер,
| РеализацияТовара.Покупатель,
| РеализацияТовара.Склад,
| РеализацияТовара.ПереченьНоменклатуры.(
| НомерСтроки,
| Номенклатура,
| Количество,
| Цена,
| Сумма
| )
|ИЗ
| Документ.РеализацияТовара КАК РеализацияТовара
|ГДЕ
| РеализацияТовара.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьПереченьНоменклатурыШапка = Макет.ПолучитьОбласть("ПереченьНоменклатурыШапка");
ОбластьПереченьНоменклатуры = Макет.ПолучитьОбласть("ПереченьНоменклатуры");
ОбластьИтог = Макет.ПолучитьОбласть("Всего");
ТабДок.Очистить();
ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабДок.Вывести(ОбластьЗаголовок);
Шапка.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Шапка, Выборка.Уровень());
ТабДок.Вывести(ОбластьПереченьНоменклатурыШапка);
ВыборкаПереченьНоменклатуры = Выборка.ПереченьНоменклатуры.Выбрать();
СуммаИтог = 0;
Пока ВыборкаПереченьНоменклатуры.Следующий() Цикл
ОбластьПереченьНоменклатуры.Параметры.Заполнить(ВыборкаПереченьНоменклатуры);
ТабДок.Вывести(ОбластьПереченьНоменклатуры, ВыборкаПереченьНоменклатуры.Уровень());
СуммаИтог = СуммаИтог + ВыборкаПереченьНоменклатуры.Сумма
КонецЦикла;
ОбластьИтог.Параметры.ВсегоПоДокументу = СуммаИтог;
ТабДок.Вывести(ОбластьИтог);
ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
КонецПроцедуры
Приложение А.4 – Работа с документами
Процедура РассчитатьСумму(СтрокаТабличнойЧасти) Экспорт
СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;
КонецПроцедуры
Приложение А.5 – Товары на складе
ВЫБРАТЬ
ОстаткиТоваровОстаткиИОбороты.Склад,
ОстаткиТоваровОстаткиИОбороты.Номенклатура,
ОстаткиТоваровОстаткиИОбороты.КоличествоНачальныйОстаток,
ОстаткиТоваровОстаткиИОбороты.КоличествоПриход,
ОстаткиТоваровОстаткиИОбороты.КоличествоРасход,
ОстаткиТоваровОстаткиИОбороты.КоличествоКонечныйОстаток
ИЗ
РегистрНакопления.ОстаткиТоваров.ОстаткиИОбороты КАК ОстаткиТоваровОстаткиИОбороты
Приложение А.6 – Реестр документа поступление товара
ВЫБРАТЬ
ПоступлениеТоваров.Склад,
ПоступлениеТоваров.Поставщик,
ПоступлениеТоваров.Товары.(
Товар,
Количество
),
ПоступлениеТоваров.Ссылка КАК Документ
ИЗ
Документ.ПоступлениеТоваров КАК ПоступлениеТоваров
УПОРЯДОЧИТЬ ПО
Документ
Приложение А.7 – Реестр документа реализация товара
ВЫБРАТЬ
РеализацияТовара.Склад,
РеализацияТовара.ПереченьНоменклатуры.(
Номенклатура,
Количество
),
РеализацияТовара.Покупатель,
РеализацияТовара.Ссылка КАК Документ
ИЗ
Документ.РеализацияТовара КАК РеализацияТовара
УПОРЯДОЧИТЬ ПО
Документ
Приложение А.8 – Рейтинг продаж
ВЫБРАТЬ
СпрНоменклатура.Ссылка КАК Товар,
ПродажиОбороты.ВыручкаОборот КАК Выручка
ИЗ
РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
ПО ПродажиОбороты.Номенклатура = СпрНоменклатура.Ссылка
УПОРЯДОЧИТЬ ПО
Выручка УБЫВ
Приложение А.9 – Продажи
ВЫБРАТЬ
ПродажиОбороты.Номенклатура,
ПродажиОбороты.Покупатель,
ПродажиОбороты.КоличествоОборот,
ПродажиОбороты.ВыручкаОборот
ИЗ
РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
Приложение А.10 – Прайс-лист
ВЫБРАТЬ
РозничныеЦеныСрезПоследних.Номенклатура.ПолноеНаименование КАК Товар,