Файл: Разработка конфигурации Магазин "Продукты" на платформе 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.Добавить();
НоваяСтрока.Партия = СтрокаТаблицаРезультат.ДокументОснование;
НоваяСтрока.Количество = СтрокаТаблицаРезультат.Количество;
НоваяСтрока.Сумма = СтрокаТаблицаРезультат.Сумма;
КонецЦикла;
Момент = Новый Граница(НачалоДня(КонецПериода), ВидГраницы.Включая);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| УчТоварОст.Номенклатура КАК Номенклатура,
| УчТоварОст.КоличествоОстаток КАК Количество,
| УчТоварОст.СуммаОстаток КАК Сумма
|ИЗ
| РегистрНакопления.РегистрУчетПродуктов.Остатки(
| &Момент,
| ) КАК УчТоварОст
|ГДЕ
| Номенклатура = &Номенклатура и
| Магазин = &Магазин";
Запрос.УстановитьПараметр("Момент", Момент);
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);