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

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

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

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

Добавлен: 28.06.2023

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

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

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

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

КонецЦикла;

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

&НаСервере

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

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

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

&НаКлиенте

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

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

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

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

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

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

&НаКлиенте

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

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

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

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

&НаКлиенте

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

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

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

&НаСервере

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

//Перебор строк табличной части документа

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

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

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

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

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

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

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

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

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

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

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

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

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

КонецЦикла;

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

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

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

Код документа " ПередачаВМагазин"

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

КонецЦикла;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

КонецЦикла;

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

Код обработки " ДанныеОПродуктах "

&НаКлиенте

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

КонецПериода = КонецДня(КонецПериода);

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

&НаКлиенте

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

ПолучитьОстаткиТоваров();


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

&НаСервере

Процедура ПолучитьОстаткиТоваров()

Если Не ЗначениеЗаполнено(Дата) Тогда

Сообщить("Введите дату для отбора данных!", СтатусСообщения.Внимание);

Возврат;

КонецЕсли;

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

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

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

"ВЫБРАТЬ

| Остатки.Счет КАК Счет,

| Остатки.Субконто1 КАК Магазин,

| Остатки.Субконто2 КАК Номенкл,

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

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

|ИЗ

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

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

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

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

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

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

ТЗ2.Очистить();

Пока Остатки.Следующий() Цикл

НоваяСтрока = ТЗ2.Добавить();

НоваяСтрока.Магазин = Остатки.Магазин;

НоваяСтрока.Номенклатура = Остатки.Номенкл;

НоваяСтрока.Количество = Остатки.Количество;

НоваяСтрока.Сумма = Остатки.Сумма;

КонецЦикла;

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

&НаКлиенте

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

ПолучитьОтчёт();

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

&НаСервере

Процедура ПолучитьОтчёт()

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

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

"ВЫБРАТЬ

| ОснРегистрБухОстаткиИОбороты.Счет КАК Счет,

| ОснРегистрБухОстаткиИОбороты.Субконто1 КАК Магазин,

| ОснРегистрБухОстаткиИОбороты.Субконто2 КАК Номенкл,

| ОснРегистрБухОстаткиИОбороты.КоличествоНачальныйОстатокДт КАК НачОст,

| ОснРегистрБухОстаткиИОбороты.КоличествоОборотДт КАК Приход,

| ОснРегистрБухОстаткиИОбороты.КоличествоОборотКт КАК Расход,

| ОснРегистрБухОстаткиИОбороты.КоличествоКонечныйОстатокДт КАК КонОст

|ИЗ

| РегистрБухгалтерии.ОсновнойРегистрБухгалтерии.ОстаткиИОбороты(

| &НачалоПериода,

| &КонецПериода,

| ) КАК ОснРегистрБухОстаткиИОбороты

|ГДЕ

| Субконто1 = &Магазин";

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

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

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

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

ТаблицаРезультат = Результат.Выгрузить();

ТЗ3.Очистить();

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

НоваяСтрока = ТЗ3.Добавить();


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

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

НоваяСтрока.Приход = СтрокаТаблицаРезультат.Приход;

НоваяСтрока.Расход = СтрокаТаблицаРезультат.Расход;

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

КонецЦикла;

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

&НаСервере

Процедура ОстаткиНоменклатуры()

Если Не ЗначениеЗаполнено(Номенклатура) или Не ЗначениеЗаполнено(Дата) Тогда

Сообщить("Введите дату и выберите номенклатуру для отбора!", СтатусСообщения.Внимание);

Возврат;

КонецЕсли;

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

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

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

"ВЫБРАТЬ

| УчТоварОст.Номенклатура КАК Номенклатура,

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

| УчТоварОст.СуммаОстаток КАК Сумма,

| УчТоварОст.Партия

|ИЗ

| РегистрНакопления.РегистрУчетПродуктов.Остатки(&Момент, ) КАК УчТоварОст

|ГДЕ

| УчТоварОст.Номенклатура = &Номенклатура

| И УчТоварОст.КоличествоОстаток >= 0";

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

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

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

ТаблицаРезультат = Результат.Выгрузить();

ТЗ.Очистить();

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

НоваяСтрока = ТЗ.Добавить();

НоваяСтрока.ДокументОснование = СтрокаТаблицаРезультат.Партия;

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

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

КонецЦикла;

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

&НаКлиенте

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

ОстаткиНоменклатуры();

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

Код обработки " СкладскаяКарточка "

&НаКлиенте

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

ПолучитьОтчёт();

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

&НаСервере

Процедура ПолучитьОтчёт()

Если Не ЗначениеЗаполнено(Номенклатура) или Не ЗначениеЗаполнено(НачалоПериода)

или Не ЗначениеЗаполнено(КонецПериода) или Не ЗначениеЗаполнено(Склад) Тогда

Сообщить("Введите условия для отбора!", СтатусСообщения.Внимание);

Возврат;

КонецЕсли;

ТЗ3.Очистить();

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

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

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

"ВЫБРАТЬ

| УчТоварОст.Номенклатура КАК Номенклатура,

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


| УчТоварОст.СуммаОстаток КАК Сумма

|ИЗ

| РегистрНакопления.РегистрУчетПродуктов.Остатки(

| &Момент,

| ) КАК УчТоварОст

|ГДЕ

| Номенклатура = &Номенклатура и

| Магазин = &Магазин";

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

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

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

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

ТаблицаРезультат = Результат.Выгрузить();

НоваяСтрока = ТЗ3.Добавить();

НоваяСтрока.Партия = "-------Начальный Остаток-------";

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

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

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

КонецЦикла;

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

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

"ВЫБРАТЬ

| РегУчТоваровОб.Номенклатура КАК Номенклатура,

| РегУчТоваровОб.Партия КАК ДокументОснование,

| РегУчТоваровОб.КоличествоОборот КАК Количество,

| РегУчТоваровОб.СуммаОборот КАК Сумма

|ИЗ

| РегистрНакопления.РегистрУчетПродуктов.Обороты(

| &НачалоПериода,

| &КонецПериода,

| ) КАК РегУчТоваровОб

|ГДЕ

| Магазин = &Магазин и

| Номенклатура = &Номенклатура

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

| ДокументОснование Возр";

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

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

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

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

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

ТаблицаРезультат = Результат.Выгрузить();

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

НоваяСтрока = ТЗ3.Добавить();

НоваяСтрока.Партия = СтрокаТаблицаРезультат.ДокументОснование;

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

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

КонецЦикла;

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

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

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

"ВЫБРАТЬ

| УчТоварОст.Номенклатура КАК Номенклатура,

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

| УчТоварОст.СуммаОстаток КАК Сумма

|ИЗ

| РегистрНакопления.РегистрУчетПродуктов.Остатки(

| &Момент,

| ) КАК УчТоварОст

|ГДЕ

| Номенклатура = &Номенклатура и

| Магазин = &Магазин";

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

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