Загрузка данных
Маккет печать
&НаКлиенте
Процедура Печать(Команда)
док=ПолучитьПечатнуюФорму();
док.Показать();
КонецПроцедуры
&НаСервере
Функция ПолучитьПечатнуюФорму()
Док=Новый ТабличныйДокумент;
Макет=Справочники.продукция.ПолучитьМакет("Макет");
ОбластьШапки=Макет.ПолучитьОбласть("Шапка");
ОбластьШапки.Параметры.Код=Объект.Код;
ОбластьШапки.Параметры.Наименование=Объект.Наименование;
ОбластьШапки.Параметры.ИтогСумма=Объект.ИтогСумма;
Док.Вывести(ОбластьШапки);
ОбластьСтроки=Макет.ПолучитьОбласть("СтрокаТовара");
НомерСтроки=0;
для каждого Строки из Объект.Себестоимость цикл
ОбластьСтроки.Параметры.НомерСтроки=НомерСтроки;
ОбластьСтроки.Параметры.Материал=Строки.Материал;
ОбластьСтроки.Параметры.Количество=Строки.Количество;
ОбластьСтроки.Параметры.Цена=Строки.Цена;
ОбластьСтроки.Параметры.Сумма=Строки.Сумма;
док.Вывести(ОбластьСтроки);
КонецЦикла;
Возврат Док;
КонецФункции
Итог + из справочника
&НаКлиенте
Процедура ЗаказТоварПриИзменении(Элемент)
Строка=Элементы.Заказ.ТекущиеДанные;
Строка.Цена=ПолучитьЦену(Строка.Товар);
КонецПроцедуры
&НаСервере
Функция ПолучитьЦену(Товар)
если Товар=Справочники.продукция.ПустаяСсылка() тогда
возврат 0;
КонецЕсли;
Возврат Товар.ИтогСумма;
КонецФункции
&НаКлиенте
Процедура ЗаказКоличествоПриИзменении(Элемент)
Строка=Элементы.Заказ.ТекущиеДанные;
Строка.Сумма=Строка.Количество*Строка.Цена;
ИтоговаяСумма();
КонецПроцедуры
&НаКлиенте
Процедура ЗаказЦенаПриИзменении(Элемент)
Строка=Элементы.Заказ.ТекущиеДанные;
Строка.Сумма=Строка.Количество*Строка.Цена;
ИтоговаяСумма();
КонецПроцедуры
&НаКлиенте
Процедура ИтоговаяСумма()
Итог=0;
для Каждого Строка из Объект.Заказ цикл
Итог=Итог+Строка.Сумма;
КонецЦикла;
Объект.ИтогСумма=Итог;
КонецПроцедуры
ПолучитьОСтаток
Процедура ОбработкаПроведения(Отказ, Режим)
если не ПроверитьОстаток() тогда
отказ=Истина;
Возврат;
КонецЕсли;
Движения.РегистрНакопления1.Записывать = Истина;
Для Каждого ТекСтрокаТабличнаяЧасть1 Из ТабличнаяЧасть1 Цикл
Движение = Движения.РегистрНакопления1.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Поставщик = Поставщик;
Движение.Номенклатура = ТекСтрокаТабличнаяЧасть1.Номенклатура;
Движение.Количество = ТекСтрокаТабличнаяЧасть1.Количество;
КонецЦикла;
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Функция ПроверитьОстаток()
Для Каждого Строка Из ТабличнаяЧасть1 Цикл
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РегистрНакопления1Остатки.КоличествоОстаток КАК КоличествоОстаток
|ИЗ
| РегистрНакопления.РегистрНакопления1.Остатки КАК РегистрНакопления1Остатки
|ГДЕ
| РегистрНакопления1Остатки.Номенклатура = &Номенклатура";
Запрос.УстановитьПараметр("Номенклатура", Строка.Номенклатура);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
Если Строка.Количество > Выборка.КоличествоОстаток Тогда
Сообщить(
"Недостаточно товара: "
+ Строка.Номенклатура);
Возврат Ложь;
КонецЕсли;
Иначе
Сообщить(
"Товар отсутствует на складе: "
+ Строка.Номенклатура);
Возврат Ложь;
КонецЕсли;
КонецЦикла;
Возврат Истина;
КонецФункции
ФормаПоиска
&НаКлиенте
Процедура ЗаказчикФильтрПриИзменении(Элемент)
ОбновитьТаблицуНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ВариантСортировкиПриИзменении(Элемент)
ОбновитьТаблицуНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура Фильтровать(Команда)
ОбновитьТаблицуНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьВсе(Команда)
ЗаказчикФильтр = Неопределено;
ОбновитьТаблицуНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьПоиск(Команда)
ВыполнитьПоискНаСервере();
КонецПроцедуры
&НаСервере
Процедура ВыполнитьПоискНаСервере()
УсловноеОформление.Элементы.Очистить();
Если ПустаяСтрока(СтрокаПоиска) Тогда
Возврат;
КонецЕсли;
ЭлементОф = УсловноеОформление.Элементы.Добавить();
ЭлементОф.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Зеленый);
Отбор = ЭлементОф.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.СписокЗаказов.Заказчик");
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит;
Отбор.ПравоеЗначение = СтрокаПоиска;
ПолеОф = ЭлементОф.Поля.Элементы.Добавить();
ПолеОф.Поле = Новый ПолеКомпоновкиДанных("СписокЗаказов");
КонецПроцедуры
&НаСервере
Процедура ОбновитьТаблицуНаСервере()
ТекущееПоле = "Заказчик";
Если ПолеСортировки = 1 Тогда
ТекущееПоле = "ДатаЗаказа";
ИначеЕсли ПолеСортировки = 2 Тогда
ТекущееПоле = "СуммаЗаказа";
КонецЕсли;
Направление = ?(ВариантСортировки = 0, "УБЫВ", "ВОЗР");
Запрос = Новый Запрос;
ТекстЗапроса =
"ВЫБРАТЬ
|ЗаказПокупателя.Заказчик КАК Заказчик,
|ЗаказПокупателя.Заказчик.Город КАК Город,
|ЗаказПокупателя.Заказчик.Телефон КАК Телефон,
|ЗаказПокупателя.Дата КАК ДатаЗаказа,
|ЗаказПокупателя.ИтоговаяСуммаЗаказа КАК СуммаЗаказа
|ИЗ
|Документ.ЗаказПокупателя КАК ЗаказПокупателя ";
Если ЗначениеЗаполнено(ЗаказчикФильтр) Тогда
ТекстЗапроса = ТекстЗапроса + " ГДЕ ЗаказПокупателя.Заказчик = &Заказчик";
Запрос.УстановитьПараметр("Заказчик", ЗаказчикФильтр);
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + " УПОРЯДОЧИТЬ ПО " + ТекущееПоле + " " + Направление;
Запрос.Текст = ТекстЗапроса;
Попытка
Результат = Запрос.Выполнить();
Объект.СписокЗаказов.Загрузить(Результат.Выгрузить());
Исключение
Сообщить("Произошла ошибка: " + ОписаниеОшибки());
КонецПопытки;
Элементы.НадписьВсегоЗаказов.Заголовок = "Всего заказов: " + Объект.СписокЗаказов.Количество();
Элементы.ДекорацияОбщаяСумма.Заголовок = "Общая сумма: " + Формат(Объект.СписокЗаказов.Итог("СуммаЗаказа"), "ЧДЦ=2; ЧГ=3,0");
КонецПроцедуры