Файл: Разработка конфигурации Магазин "Продукты" на платформе 1С: Предприятие.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 28.06.2023

Просмотров: 158

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Приложение

Код модуля "Учетпрдуктов"

&НаКлиенте

Процедура ПриНачалеРаботыСистемы() // предопределенная процедура,

// запускается при начале работы в 1С:Предприятии

Перем Значение; // Объявляем переменную

Перем Рез;

Если Константы.МетодСписания.Выбран()=0 Тогда // если константа не заполнена

Рез=ВвестиЗначение(Значение,"Выберите способ списания", "Перечисления.МетодСписания");

// просим выбрать способ списания. Рез=1, если выбор произведен, 0 – если нет

Если Рез=1 Тогда

Константы.МетодСписания=Значение; // установим константе выбранное значение

Иначе

Отказ = Истина;

КонецЕсли;

КонецЕсли;

КонецПроцедуры

Код модуля " МагазинПродуктов"

&НаСервере

Функция ПолучитьСреднЦенуТоваров(ДатаО, СкладО, Номенклатура) Экспорт

СредняяЦена = 0;

ОбщийОстаток = 0;

ОбщаяСтоимость = 0;

Момент = Новый Граница(КонецДня(ДатаО), ВидГраницы.Включая);

СчетТоваров = ПланыСчетов.ОсновнойПланСчетов.Материалы;

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

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

"ВЫБРАТЬ

| Остатки.Субконто1,

| Остатки.Субконто2,

| Остатки.КоличествоОстатокДт КАК КоличествоДт,

| Остатки.КоличествоОстатокКт КАК КоличествоКт,

| Остатки.СуммаОстатокДт КАК СуммаДт,

| Остатки.СуммаОстатокКт КАК СуммаКт

|ИЗ

| РегистрБухгалтерии.ОсновнойРегистрБухгалтерии.Остатки(&Момент, Счет = &Счет, , Организация = &Организация) КАК Остатки

|ГДЕ

| Остатки.Субконто1 = &Скл

| И Остатки.Субконто2 = &Номенкл";

Запрос.УстановитьПараметр("Момент", Момент);

Запрос.УстановитьПараметр("Счет", СчетТоваров);

Запрос.УстановитьПараметр("Организация", Справочники.Организация.НайтиПоКоду("000000001"));

Запрос.УстановитьПараметр("Номенкл", Номенклатура);

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

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл

ОбщийОстаток = Выборка.КоличествоДт - Выборка.КоличествоКт;

ОбщаяСтоимость = Выборка.СуммаДт - Выборка.СуммаКт;

КонецЦикла;

Если ОбщийОстаток>0 Тогда

СредняяЦена = ОбщаяСтоимость/ОбщийОстаток;

КонецЕсли;

Возврат СредняяЦена;

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

Код документа "ПриходПродуктов"

Процедура ОбработкаПроведения(Отказ, Режим)

// регистр РегистрУчетПродуктов Приход

Движения.РегистрУчетПродуктов.Записывать = Истина;


Для Каждого ТекСтрокаТовары Из Товары Цикл

Движение = Движения.РегистрУчетПродуктов.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Приход;

Движение.Период = Дата;

Движение.Организация = Справочники.Организация.НайтиПоКоду("000000001");

Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;

Движение.Магазин = Магазин;

Движение.Партия = Ссылка;

Движение.Количество = ТекСтрокаТовары.Количество;

Движение.Сумма = ТекСтрокаТовары.Сумма;

КонецЦикла;

// регистр РегистрУчетПродуктовОб

Движения.РегистрУчетПродуктовОб.Записывать = Истина;

Для Каждого ТекСтрокаТовары Из Товары Цикл

Движение = Движения.РегистрУчетПродуктовОб.Добавить();

Движение.Период = Дата;

Движение.Организация = Справочники.Организация.НайтиПоКоду("000000001");

Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;

Движение.Магазин = Магазин;

Движение.Партия = Ссылка;

Движение.Количество = ТекСтрокаТовары.Количество;

Движение.Сумма = ТекСтрокаТовары.Сумма;

КонецЦикла;

КонецПроцедуры

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Всего = ЭтотОбъект.Товары.Итог("Сумма");

КонецПроцедуры

//---------------------------------------------------------------------------------------

Перем Номенкл;

&НаКлиенте

Процедура ТоварыЦенаПриИзменении(Элемент)

РасчетСуммыСтроки();

КонецПроцедуры

&НаКлиенте

Процедура ТоварыКоличествоПриИзменении(Элемент)

РасчетСуммыСтроки();

КонецПроцедуры

&НаКлиенте

Процедура РасчетСуммыСтроки()

ДанныеТекущейСтроки = Элементы.Товары.ТекущиеДанные;

ДанныеТекущейСтроки.Сумма = ДанныеТекущейСтроки.Цена * ДанныеТекущейСтроки.Количество;

КонецПроцедуры

&НаКлиенте

Процедура ТоварыНоменклатураПриИзменении(Элемент)

Строка = Элементы.Товары.ТекущиеДанные;

Строка.ЕдИзм = ПолучитьДанные(Строка.Номенклатура);

КонецПроцедуры

&НаСервере

Функция ПолучитьДанные(Ссылка)

Возврат Ссылка.ЕдиницаИзмерения;

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

Код документа " РасходПродуктов"

Процедура ОбработкаПроведения(Отказ, Режим)

// регистр РегистрУчетПродуктов Расход

Движения.РегистрУчетПродуктов.Записывать = Истина;

Для Каждого ТекСтрокаТовары Из Товары Цикл

Движение = Движения.РегистрУчетПродуктов.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Расход;

Движение.Период = Дата;

Движение.Организация = Справочники.Организация.НайтиПоКоду("000000001");


Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;

Движение.Магазин = Магазин;

Движение.Партия = Ссылка;

Движение.Количество = ТекСтрокаТовары.Количество;

Движение.Сумма = ТекСтрокаТовары.Сумма;

КонецЦикла;

// регистр РегистрУчетПродуктовОб

Движения.РегистрУчетПродуктовОб.Записывать = Истина;

Для Каждого ТекСтрокаТовары Из Товары Цикл

Движение = Движения.РегистрУчетПродуктовОб.Добавить();

Движение.Период = Дата;

Движение.Организация = Справочники.Организация.НайтиПоКоду("000000001");

Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;

Движение.Магазин = Магазин;

Движение.Партия = Ссылка;

Движение.Количество = ТекСтрокаТовары.Количество;

Движение.Сумма = ТекСтрокаТовары.Сумма;

КонецЦикла;

КонецПроцедуры

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Всего = ЭтотОбъект.Товары.Итог("Сумма");

КонецПроцедуры

//---------------------------------------------------------------------------------------

////////////////////////////////////////////////////////////////////////////////

// ПЕРЕМЕННЫЕ МОДУЛЯ

Перем Запись, Документ;

&НаКлиенте

Процедура ТоварыЦенаПриИзменении(Элемент)

РасчетСуммыСтроки();

КонецПроцедуры

&НаКлиенте

Процедура РасчетСуммыСтроки()

ДанныеТекущейСтроки = Элементы.Товары.ТекущиеДанные;

ДанныеТекущейСтроки.Сумма = ДанныеТекущейСтроки.Цена * ДанныеТекущейСтроки.Количество;

КонецПроцедуры

&НаКлиенте

Процедура ТоварыКоличествоПриИзменении(Элемент)

РасчетСуммыСтроки();

КонецПроцедуры

&НаКлиенте

Процедура ДатаПриИзменении(Элемент) Экспорт

Для Итератор = 1 По Объект.Товары.Количество() Цикл

СтрокаТЗ = Объект.Товары[Итератор-1];

СтрокаТЗ.Цена = МагазинПродуктов.ПолучитьСреднЦенуТоваров(Объект.Дата, Объект.Магазин, СтрокаТЗ.Номенклатура);

КонецЦикла;

РасчетСуммыСтроки();

КонецПроцедуры

&НаКлиенте

Процедура ТоварыНоменклатураПриИзменении(Элемент)

Строка = Элементы.Товары.ТекущиеДанные;

Строка.ЕдИзм = ПолучитьДанные(Строка.Номенклатура);

Строка.Цена = МагазинПродуктов.ПолучитьСреднЦенуТоваров(Объект.Дата, Объект.Магазин, Строка.Номенклатура);

РасчетСуммыСтроки();

КонецПроцедуры

&НаСервере

Функция ПолучитьДанные(Ссылка)

Возврат Ссылка.ЕдиницаИзмерения;

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

Код документа "ПоступлениеПродуктов"

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)


ВсегоКоличество = ЭтотОбъект.Товары.Итог("Количество");

ВсегоСумма = ЭтотОбъект.Товары.Итог("Сумма");

КонецПроцедуры

Процедура ОбработкаПроведения(Отказ, Режим)

// регистр ОсновнойРегистрБухгалтерии

Движения.ОсновнойРегистрБухгалтерии.Записывать = Истина;

Для Каждого ТекСтрокаТовары Из Товары Цикл

Движение = Движения.ОсновнойРегистрБухгалтерии.Добавить();

Движение.СчетДт = ПланыСчетов.ОсновнойПланСчетов.Товары;

Движение.СчетКт = ПланыСчетов.ОсновнойПланСчетов.РасчетыСПоставщикамиИПодрядчиками;

Движение.Период = Дата;

Движение.Организация = Справочники.Организация.НайтиПоКоду("000000001");

Движение.Сумма = ТекСтрокаТовары.Сумма;

Движение.КоличествоДт = ТекСтрокаТовары.Количество;

Движение.Содержание = "Покупка товаров";

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Товары] = ТекСтрокаТовары.Номенклатура;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Склады] = Магазин;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Организация] = Поставщик;

КонецЦикла;

КонецПроцедуры

//---------------------------------------------------------------------------------------

&НаСервере

Функция ПолучитьЕдИзм(Ссылка)

Возврат Ссылка.ЕдиницаИзмерения;

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

&НаКлиенте

Процедура ТоварыНоменклатураПриИзменении(Элемент)

Строка = Элементы.Товары.ТекущиеДанные;

Строка.ЕдИзм = ПолучитьЕдИзм(Строка.Номенклатура);

КонецПроцедуры

&НаКлиенте

Процедура ТоварыКоличествоПриИзменении(Элемент)

Строка = Элементы.Товары.ТекущиеДанные;

Строка.Сумма = Строка.Цена * Строка.Количество;

КонецПроцедуры

&НаКлиенте

Процедура ТоварыСуммаПриИзменении(Элемент)

Строка = Элементы.Товары.ТекущиеДанные;

Строка.Цена = Строка.Сумма / Строка.Количество;

КонецПроцедуры

&НаКлиенте

Процедура ТоварыЦенаПриИзменении(Элемент)

Строка = Элементы.Товары.ТекущиеДанные;

Строка.Сумма = Строка.Цена * Строка.Количество;

КонецПроцедуры

&НаКлиенте

Процедура СформироватьПрихОрдер(Команда)

СформироватьПО();

КонецПроцедуры

&НаСервере

Процедура СформироватьПО()

НовыйПО = Документы.ПриходПродуктов.СоздатьДокумент();

НовыйПО.Дата = Объект.Дата;

НовыйПО.Магазин = Объект.Магазин;

НовыйПО.Основание = Объект.Ссылка;

ТаблЧастьПО = НовыйПО.Товары;

ТаблЧастьРезультат = Объект.Товары;

Для каждого СтрокаТаблЧастьРез Из ТаблЧастьРезультат Цикл


НоваяСтрока = ТаблЧастьПО.Добавить();

НоваяСтрока.Номенклатура = СтрокаТаблЧастьРез.Номенклатура;

НоваяСтрока.ЕдИзм = ПолучитьЕдИзм(СтрокаТаблЧастьРез.Номенклатура);

НоваяСтрока.Количество = СтрокаТаблЧастьРез.Количество;

НоваяСтрока.Цена = СтрокаТаблЧастьРез.Цена;

НоваяСтрока.Сумма = СтрокаТаблЧастьРез.Сумма;

КонецЦикла;

НовыйПО.Записать();

Сообщить("Создан приходный ордер №"+ ЗначениеВСтрокуВнутр(НовыйПО.Номер), СтатусСообщения.Внимание);

КонецПроцедуры

Код документа "РеализацияПродуктов"

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

ВсегоКоличество = ЭтотОбъект.Товары.Итог("Количество");

ВсегоСумма = ЭтотОбъект.Товары.Итог("Сумма");

КонецПроцедуры

Процедура ОбработкаПроведения(Отказ, Режим)

// регистр ОсновнойРегистрБухгалтерии

Движения.ОсновнойРегистрБухгалтерии.Записывать = Истина;

Для Каждого ТекСтрокаТовары Из Товары Цикл

Движение = Движения.ОсновнойРегистрБухгалтерии.Добавить();

Движение.СчетДт = ПланыСчетов.ОсновнойПланСчетов.РасчетыСПокупателямиИПодрядчиками;

Движение.СчетКт = ПланыСчетов.ОсновнойПланСчетов.Товары;

Движение.Период = Дата;

Движение.Организация = Справочники.Организация.НайтиПоКоду("000000001");

Движение.Сумма = ТекСтрокаТовары.Сумма;

Движение.КоличествоКт = ТекСтрокаТовары.Количество;

Движение.Содержание = "Продажа товаров";

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Организация] = Покупатель;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Склады] = Магазин;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Товары] = ТекСтрокаТовары.Номенклатура;

КонецЦикла;

КонецПроцедуры

//---------------------------------------------------------------------------------------

&НаКлиенте

Процедура ДатаПриИзменении(Элемент) //пересчитывает среднюю цену при изменении даты

Для Итератор = 1 По Объект.Товары.Количество() Цикл

СтрокаТЗ = Объект.Товары[Итератор-1];

СтрокаТЗ.Цена = МагазинПродуктов.ПолучитьСреднЦенуТоваров(Объект.Дата, Объект.Магазин, СтрокаТЗ.Номенклатура);

СтрокаТЗ.Сумма = СтрокаТЗ.Цена * СтрокаТЗ.Количество;

КонецЦикла;

КонецПроцедуры

&НаКлиенте

Процедура СкладПриИзменении(Элемент)

Для Итератор = 1 По Объект.Товары.Количество() Цикл

СтрокаТЗ = Объект.Товары[Итератор-1];

СтрокаТЗ.Цена = МагазинПродуктов.ПолучитьСреднЦенуТоваров(Объект.Дата, Объект.Магазин, СтрокаТЗ.Номенклатура);