|
При формировании отчета не учитывает продажи от 23:00 - 23:59:59 в чем проблемс хз | ☑ | |||
---|---|---|---|---|---|
0
Nemirov
09.10.19
✎
13:42
|
Перем Источник;
//Перем ЭтоЦентр; Перем ТЗСмены; Функция ПолучитьИсточникДанных(ДатаНачала, ДатаКонца, НеЗакрытаяСмена = Ложь) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | sms_Store.StoreCode, | 100000 * sms_Store.StoreCode + sms_POS.PosCode КАК PosCode, | sms_POS.Name КАК PosName, | sms_Shift.ShiftUID КАК Смена, | sms_Cheque.ChequeUID КАК Чек, | sms_Shift.CloseTime КАК ДатаВремяЗакрытияСмены, | sms_Shift.OpenTime КАК ДатаВремяОткрытияСмены, | sms_Shift.ShiftNo КАК НомерСменыККМ, | sms_Cheque.ChequeNo КАК НомерЧекаККМ, | sms_Cheque.CloseTime КАК ДатаВремяЗакрытияЧека, | sms_Cheque.OpenTime КАК ДатаВремяОткрытияЧека, | ВЫБОР | КОГДА sms_Cheque.CloseType <> 0 | ТОГДА ""_О"" | ИНАЧЕ """" | КОНЕЦ КАК CloseType, | ВЫБОР | КОГДА sms_Cheque.ChequeType = 0 | ТОГДА ""Продажа"" | КОГДА sms_Cheque.ChequeType = 1 | ТОГДА ""Возврат"" | ИНАЧЕ ""Не известен"" | КОНЕЦ КАК Тип, | sms_ChequeLine.ChequeLineNo КАК НомерПозицииККМ, | sms_Item.ItemID КАК КодТовараSIS, | sms_Item.ItemCode КАК КодТовара, | sms_Item.Name КАК НаименованиеТовара, | sms_ChequeLine.Price КАК Цена, | sms_ChequeLine.Quantity КАК Количество, | sms_ChequeLine.DiscountValue КАК РазмерСкидки, | sms_ChequeLine.Amount КАК Сумма, | ВЫБОР | КОГДА sms_SaleItem.Property1 ЕСТЬ NULL | ТОГДА """" | ИНАЧЕ sms_SaleItem.Property1.Value | КОНЕЦ + ВЫБОР | КОГДА sms_SaleItem.Property2 ЕСТЬ NULL | ТОГДА """" | ИНАЧЕ "","" + sms_SaleItem.Property2.Value | КОНЕЦ + ВЫБОР | КОГДА sms_SaleItem.Property3 ЕСТЬ NULL | ТОГДА """" | ИНАЧЕ "","" + sms_SaleItem.Property3.Value | КОНЕЦ КАК Характеристика, | sms_Employee.EmployeeCode, | sms_Employee.Name КАК ИмяКассира, | horeca_MenuItem.Name КАК Меню, | horeca_Menu.Name КАК ГруппаМеню |ИЗ | ВнешнийИсточникДанных.SIS.Таблица.sms_ChequeLine КАК sms_ChequeLine | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.sms_Cheque КАК sms_Cheque | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.sms_Shift КАК sms_Shift | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.sms_POS КАК sms_POS | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.sms_Store КАК sms_Store | ПО sms_POS.StoreUID = sms_Store.Ссылка | ПО sms_Shift.PosUID = sms_POS.Ссылка | ПО sms_Cheque.ShiftUID = sms_Shift.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.sms_Employee КАК sms_Employee | ПО sms_Cheque.CashierUID = sms_Employee.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | sms_Cheque.ChequeUID КАК ChequeUID | ИЗ | ВнешнийИсточникДанных.SIS.Таблица.sms_ChequeLine КАК sms_ChequeLine | ЛЕВОЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.sms_Cheque КАК sms_Cheque | ПО sms_ChequeLine.ChequeUID = sms_Cheque.Ссылка | ГДЕ | sms_ChequeLine.Storno = ИСТИНА | | СГРУППИРОВАТЬ ПО | sms_Cheque.ChequeUID) КАК t | ПО (t.ChequeUID = sms_Cheque.ChequeUID) | ПО sms_ChequeLine.ChequeUID = sms_Cheque.Ссылка | И (sms_Cheque.CloseTime >= &ДатаНачала) | И (sms_Cheque.CloseTime <= &ДатаОкончания) | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.sms_SaleItem КАК sms_SaleItem | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.sms_ItemUnitSchema КАК sms_ItemUnitSchema | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.sms_Item КАК sms_Item | ПО sms_ItemUnitSchema.ItemUID = sms_Item.Ссылка | ПО sms_SaleItem.ItemUnitSchemaUID = sms_ItemUnitSchema.Ссылка | ПО sms_ChequeLine.SaleItemUID = sms_SaleItem.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.horeca_ChequeLine2MenuItem КАК horeca_ChequeLine2MenuItem | ЛЕВОЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.horeca_MenuItem КАК horeca_MenuItem | ЛЕВОЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.horeca_Menu КАК horeca_Menu | ПО horeca_MenuItem.MenuUID = horeca_Menu.Ссылка | ПО horeca_ChequeLine2MenuItem.MenuItemUID = horeca_MenuItem.Ссылка | ПО (horeca_ChequeLine2MenuItem.ChequeLineUID = sms_ChequeLine.Ссылка) |ГДЕ | ВЫБОР | КОГДА sms_Cheque.CloseType <> 0 | ТОГДА 1 | ИНАЧЕ 2 | КОНЕЦ = &ОтменённыеЧеки" + ?(НеЗакрытаяСмена," И sms_Shift.CloseTime ЕСТЬ NULL ","") + " |{ГДЕ | sms_ChequeLine.Storno КАК СторнированныеТовары, | (ВЫБОР | КОГДА t.ChequeUID ЕСТЬ NULL | ТОГДА ЛОЖЬ | ИНАЧЕ ИСТИНА | КОНЕЦ) КАК СоСторнированнымиТоварами, | (ВЫБОР | КОГДА sms_Shift.CloseTime ЕСТЬ НЕ NULL | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ) КАК Закрытая}"; Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ДатаНачала)); Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(ДатаКонца)); Запрос.УстановитьПараметр("ОтменённыеЧеки", 2); РезультатЗапроса = Запрос.Выполнить().Выгрузить(); Возврат(РезультатЗапроса); КонецФункции //Процедура кнНастройкаНажатие(Элемент) // // Если Источник.Настройка() Тогда // СформироватьОтчет(); // КонецЕсли; // //КонецПроцедуры Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) Если омПроцедурыСетевогоОбмена.МагазинИлиЦентр() Тогда Предупреждение("Данный отчет можно запускать только в магазине!!!", 10, "Ошибка запуска"); Отказ = Истина КонецЕсли; //Если ОмSMS2.SMSЭтоSMS2() Тогда //НоваяФорма=Отчеты.SISЧековаяЛента.ПолучитьФорму("ФормаОтчета"); //НоваяФорма.Открыть(); //Отказ = Истина; //Конецесли; Если НЕ глКомпоненты.СМС.ПроверитьИнтерфейс(,,Истина) Тогда Отказ = Истина; КонецЕсли; //ЭтоЦентр = ОмSMS.SMSЭтоЦентр(); КонецПроцедуры Процедура ПриОткрытии() ВариантНастройки = 1; ДатаНач = НачалоДня(ТекущаяДата()); ДатаКон = КонецДня(ТекущаяДата()); ЭлементыФормы.ВремяНач.Значение = Формат(НачалоДня(ТекущаяДата()),"ДЛФ=ЧЧммсс"); ЭлементыФормы.ВремяКон.Значение = Формат(КонецДня(ТекущаяДата()),"ДЛФ=ЧЧммсс"); ЭлементыФормы.ПолеВыбора1.Значение = "Равно"; ЭлементыФормы.Номенклатура.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Элементы; КнопкаЗаполнить = ЭлементыФормы.КоманднаяПанель1.Кнопки.Добавить("ВыборВарианта",ТипКнопкиКоманднойПанели.Действие,НСтр("ru = ""Выбрать вариант 2""; en = ""select the option 2"""),Новый Действие("КоманднаяПанель1ВыбратьВариант")); КнопкаЗаполнить.ИзменяетДанные = Истина; НастроитьКнопкуКоманднойпанели(КнопкаЗаполнить); ЭлементыФормы.Флажок3.Видимость = Ложь; КонецПроцедуры Процедура НастроитьКнопкуКоманднойПанели(КнопкаКоманднойПанели) КнопкаКОманднойПанели.Подсказка = КнопкаКоманднойПанели.Текст; КнопкаКоманднойПанели.Пояснение = КнопкаКоманднойПанели.Текст; КонецПроцедуры Процедура СформироватьОтчет() Если Флажок1 = Ложь И Флажок2 = Ложь И Номенклатура = Справочники.Номенклатура.ПустаяСсылка() Тогда Если Вопрос("Выполнение обработки может занять продолжительное время. Продолжить?",РежимДиалогаВопрос.ДаНет,15,КодВозвратаДиалога.Да,"Внимание!!!",КодВозвратаДиалога.Да) = КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли; КонецЕсли; ЭлементыФормы.ТабДок.Очистить(); ТЗ = ПолучитьИсточникДанных(ДатаНач,ДатаКон); ЭлементыФормы.Документ.Очистить(); ТЗМолочка = Новый ТаблицаЗначений; ТЗМолочка.Колонки.Добавить("Дата1",,"Дата1"); ТЗМолочка.Колонки.Добавить("Дата",,"Дата"); ТЗМолочка.Колонки.Добавить("Время",,"Время"); ТЗМолочка.Колонки.Добавить("Наименование",,"Наименование"); ТЗМолочка.Колонки.Добавить("КодТовара",,"КодТовара"); ТЗМолочка.Колонки.Добавить("Количество",,"Количество"); ТЗМолочка.Колонки.Добавить("Касса",,"Касса"); ТЗМолочка.Колонки.Добавить("Сумма",,"Сумма"); ТЗМолочка.Колонки.Добавить("НомерЧека",,"НомерЧека"); ТЗМолочка.Колонки.Добавить("НомерСмены",,"НомерСмены"); ПродажиПредыдущегоДня = 0; сч = 0; Для Каждого Строка Из ТЗ Цикл Ч = (Строка.ДатаВремяЗакрытияЧека - НачалоДня(Строка.ДатаВремяЗакрытияЧека)); Если Час(ВремяНач) < Час(ВремяКон) Тогда Если Ч < Час(ВремяНач) * 3600 ИЛИ Ч > Час(ВремяКон) * 3600 Тогда Продолжить; КонецЕсли; ИначеЕсли Час(ВремяНач) > Час(ВремяКон) Тогда Если НЕ Ч > Час(ВремяНач) * 3600 И НЕ Ч < Час(ВремяКон) * 3600 Тогда Продолжить; КонецЕсли; КонецЕсли; Если Номенклатура = Справочники.Номенклатура.ПустаяСсылка() Тогда //Если Строка.Сумма > 0 Тогда СтрокаТЗМолочка = ТЗМолочка.Добавить(); СтрокаТЗМолочка.Дата1 = Формат(Строка.ДатаВремяЗакрытияЧека,"ДЛФ=Д"); СтрокаТЗМолочка.Дата = Строка.ДатаВремяЗакрытияЧека; СтрокаТЗМолочка.Время = ?(ВариантНастройки = 2,ПолучитьИнтервалыЧасов(Час(Строка.ДатаВремяЗакрытияЧека)),Час(Строка.ДатаВремяЗакрытияЧека)); СтрокаТЗМолочка.Наименование = Справочники.Номенклатура.НайтиПоКоду(СокрЛП(Строка.КодТовара));//Строка.НаименованиеТовара; СтрокаТЗМолочка.Количество = Строка.Количество; СтрокаТЗМолочка.Касса = Строка.PosName; СтрокаТЗМолочка.Сумма = Строка.Сумма; СтрокаТЗМолочка.НомерЧека = Строка.НомерЧекаККМ; СтрокаТЗМолочка.НомерСмены = Строка.НомерСменыККМ; //КонецЕсли; ИначеЕсли ЭлементыФормы.ПолеВыбора1.Значение = "Равно" Тогда //Если СокрЛП(Строка.НаименованиеТовара) = СокрЛП(Номенклатура.Наименование) Тогда Если СокрЛП(Строка.КодТовара) = СокрЛП(Номенклатура.Код) Тогда Если Строка.ДатаВремяЗакрытияЧека < НачалоДня(ДатаНач) Тогда Продолжить; Иначе СтрокаТЗМолочка = ТЗМолочка.Добавить(); СтрокаТЗМолочка.Дата1 = Формат(Строка.ДатаВремяЗакрытияЧека,"ДЛФ=Д"); СтрокаТЗМолочка.Дата = Строка.ДатаВремяЗакрытияЧека; СтрокаТЗМолочка.Время = ?(ВариантНастройки = 2,ПолучитьИнтервалыЧасов(Час(Строка.ДатаВремяЗакрытияЧека)),Час(Строка.ДатаВремяЗакрытияЧека)); СтрокаТЗМолочка.Наименование = Номенклатура;//Строка.НаименованиеТовара; СтрокаТЗМолочка.Количество = Строка.Количество; СтрокаТЗМолочка.Касса = Строка.PosName; СтрокаТЗМолочка.Сумма = Строка.Сумма; СтрокаТЗМолочка.НомерЧека = Строка.НомерЧекаККМ; СтрокаТЗМолочка.НомерСмены = Строка.НомерСменыККМ; КонецЕсли; КонецЕсли; ИначеЕсли ЭлементыФормы.ПолеВыбора1.Значение = "В группе" Тогда //Номен = СокрЛП(Строка.НаименованиеТовара); //Номен = Справочники.Номенклатура.НайтиПоНаименованию(Номен); Номен = Справочники.Номенклатура.НайтиПоКоду(СокрЛП(Строка.КодТовара)); Если НЕ Номен = Справочники.Номенклатура.ПустаяСсылка() Тогда Если Номен.ПринадлежитЭлементу(Номенклатура) Тогда //Если Строка.Сумма > 0 Тогда СтрокаТЗМолочка = ТЗМолочка.Добавить(); СтрокаТЗМолочка.Дата1 = Формат(Строка.ДатаВремяЗакрытияЧека,"ДЛФ=Д"); СтрокаТЗМолочка.Дата = Строка.ДатаВремяЗакрытияЧека; СтрокаТЗМолочка.Время = ?(ВариантНастройки = 2,ПолучитьИнтервалыЧасов(Час(Строка.ДатаВремяЗакрытияЧека)),Час(Строка.ДатаВремяЗакрытияЧека)); СтрокаТЗМолочка.Наименование = Номен;//Строка.НаименованиеТовара; СтрокаТЗМолочка.Количество = Строка.Количество; СтрокаТЗМолочка.Касса = Строка.PosName; СтрокаТЗМолочка.Сумма = Строка.Сумма; СтрокаТЗМолочка.НомерЧека = Строка.НомерЧекаККМ; СтрокаТЗМолочка.НомерСмены = Строка.НомерСменыККМ; //КонецЕсли; КонецЕсли; КонецЕсли; ИначеЕсли ЭлементыФормы.ПолеВыбора1.Значение = "В группе из списка" Тогда Если Номенклатура.Количество() > 0 Тогда Номен = Справочники.Номенклатура.НайтиПоКоду(СокрЛП(Строка.КодТовара)); Для Каждого Стр Из Номенклатура Цикл Если Номен.ПринадлежитЭлементу(Стр.Значение) Тогда //Если Строка.Сумма > 0 Тогда СтрокаТЗМолочка = ТЗМолочка.Добавить(); СтрокаТЗМолочка.Дата1 = Формат(Строка.ДатаВремяЗакрытияЧека,"ДЛФ=Д"); СтрокаТЗМолочка.Дата = Строка.ДатаВремяЗакрытияЧека; СтрокаТЗМолочка.Время = ?(ВариантНастройки = 2,ПолучитьИнтервалыЧасов(Час(Строка.ДатаВремяЗакрытияЧека)),Час(Строка.ДатаВремяЗакрытияЧека)); СтрокаТЗМолочка.Наименование = Номен;//Строка.НаименованиеТовара; СтрокаТЗМолочка.Количество = Строка.Количество; СтрокаТЗМолочка.Касса = Строка.PosName; СтрокаТЗМолочка.Сумма = Строка.Сумма; СтрокаТЗМолочка.НомерЧека = Строка.НомерЧекаККМ; СтрокаТЗМолочка.НомерСмены = Строка.НомерСменыККМ; Прервать; //КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; КонецЦикла; Если ВариантНастройки = 2 Тогда ТЗВторойВариант = Новый ТаблицаЗначений; ТЗВторойВариант.Колонки.Добавить("Номенклатура",,"Номенклатура"); ТЗВторойВариант.Колонки.Добавить("Кол7",,"Кол7"); ТЗВторойВариант.Колонки.Добавить("Кол8",,"Кол8"); ТЗВторойВариант.Колонки.Добавить("Кол10",,"Кол10"); ТЗВторойВариант.Колонки.Добавить("Кол12",,"Кол12"); ТЗВторойВариант.Колонки.Добавить("Кол14",,"Кол14"); ТЗВторойВариант.Колонки.Добавить("Кол15",,"Кол15"); ТЗВторойВариант.Колонки.Добавить("Кол16",,"Кол16"); ТЗВторойВариант.Колонки.Добавить("Кол17",,"Кол17"); ТЗВторойВариант.Колонки.Добавить("Кол18",,"Кол18"); ТЗВторойВариант.Колонки.Добавить("Кол20",,"Кол20"); ТЗВторойВариант.Колонки.Добавить("Кол21",,"Кол21"); ТЗВторойВариант.Колонки.Добавить("Кол24",,"Кол24"); ТЗВторойВариант.Колонки.Добавить("Остаток",,"Остаток"); ТЗВторойВариант.Колонки.Добавить("КолИтого",,"КолИтого"); ТЗМолочка.Свернуть("Наименование,Время","Количество"); ТЗМолочка.Сортировать("Время Возр"); Для Каждого Строка Из ТЗМолочка Цикл НайденнаяСтрока = ТЗВторойВариант.Найти(Строка.Наименование,"Номенклатура"); Если НайденнаяСтрока = Неопределено Тогда НоваяСтрока = ТЗВторойВариант.Добавить(); НоваяСтрока.Номенклатура = Строка.Наименование; НоваяСтрока.КолИтого = Строка.Количество; Если Строка.Время = 7 Тогда НоваяСтрока.Кол7 = Строка.Количество; ИначеЕсли Строка.Время = 8 Тогда НоваяСтрока.Кол8 = Строка.Количество; ИначеЕсли Строка.Время = 10 Тогда НоваяСтрока.Кол10 = Строка.Количество; ИначеЕсли Строка.Время = 12 Тогда НоваяСтрока.Кол12 = Строка.Количество; ИначеЕсли Строка.Время = 14 Тогда НоваяСтрока.Кол14 = Строка.Количество; ИначеЕсли Строка.Время = 15 Тогда НоваяСтрока.Кол15 = Строка.Количество; ИначеЕсли Строка.Время =16 Тогда НоваяСтрока.Кол16 = Строка.Количество; ИначеЕсли Строка.Время = 17 Тогда НоваяСтрока.Кол17 = Строка.Количество; ИначеЕсли Строка.Время = 18 Тогда НоваяСтрока.Кол18 = Строка.Количество; ИначеЕсли Строка.Время = 20 Тогда НоваяСтрока.Кол20 = Строка.Количество; ИначеЕсли Строка.Время = 21 Тогда НоваяСтрока.Кол21 = Строка.Количество; ИначеЕсли Строка.Время = 24 Тогда НоваяСтрока.Кол24 = Строка.Количество; КонецЕсли; Иначе НайденнаяСтрока.КолИтого = НайденнаяСтрока.КолИтого + Строка.Количество; Если Строка.Время = 7 Тогда НайденнаяСтрока.Кол7 = Строка.Количество; ИначеЕсли Строка.Время = 8 Тогда НайденнаяСтрока.Кол8 = Строка.Количество; ИначеЕсли Строка.Время = 10 Тогда НайденнаяСтрока.Кол10 = Строка.Количество; ИначеЕсли Строка.Время = 12 Тогда НайденнаяСтрока.Кол12 = Строка.Количество; ИначеЕсли Строка.Время = 14 Тогда НайденнаяСтрока.Кол14 = Строка.Количество; ИначеЕсли Строка.Время = 15 Тогда НайденнаяСтрока.Кол15 = Строка.Количество; ИначеЕсли Строка.Время =16 Тогда НайденнаяСтрока.Кол16 = Строка.Количество; ИначеЕсли Строка.Время = 17 Тогда НайденнаяСтрока.Кол17 = Строка.Количество; ИначеЕсли Строка.Время = 18 Тогда НайденнаяСтрока.Кол18 = Строка.Количество; ИначеЕсли Строка.Время = 20 Тогда НайденнаяСтрока.Кол20 = Строка.Количество; ИначеЕсли Строка.Время = 21 Тогда НайденнаяСтрока.Кол21 = Строка.Количество; ИначеЕсли Строка.Время = 24 Тогда НайденнаяСтрока.Кол24 = Строка.Количество; КонецЕсли; КонецЕсли; КонецЦикла; ЭлементыФормы.ТабДок.Очистить(); Макет = ПолучитьМакет("МакетВСтроку"); Заг = Макет.ПолучитьОбласть("Заголовок"); Если ЭлементыФормы.ПолеВыбора1.Значение = "Равно" Тогда Заголовок = "Отчет почасовая продажа товара " + СокрЛП(Номенклатура.Наименование); ИначеЕсли ЭлементыФормы.ПолеВыбора1.Значение = "В группе из списка" Тогда Заголовок = "Отчет почасовая продажа товара в группам: "; Сч = 0; Для Каждого Стр Из Номенклатура Цикл Сч = Сч + 1; Заголовок = Заголовок + Строка(Стр.Значение) + ""; Если Сч = Номенклатура.Количество() Тогда Заголовок = Заголовок + "."; Иначе Заголовок = Заголовок + "; "; КонецЕсли; КонецЦикла; Иначе Заголовок = "Отчет почасовая продажа товара в группе: " + СокрЛП(Номенклатура.Наименование); КонецЕсли; Если Номенклатура = Справочники.Номенклатура.ПустаяСсылка() Тогда Заголовок = "Отчет почасовая продажа товара: по всей номенклатуре"; КонецЕсли; Заг.Параметры.Установить(0, Заголовок); ЭлементыФормы.ТабДок.Вывести(Заг); Заг1 = Макет.ПолучитьОбласть("Заголовок1"); ВремяС = Формат(ВремяНач,"ДЛФ=В"); ВремяПо = Формат(ВремяКон,"ДЛФ=В"); Если ВремяС = "" Тогда ВремяС = "00:00:00"; КонецЕсли; Если ВремяПо = "" Тогда ВремяПо = "00:00:00"; КонецЕсли; Заголовок1 = "С " + Формат(ДатаНач,"ДЛФ=Д") + " по " + Формат(ДатаКон,"ДЛФ=Д") + " в период времени с " + ВремяС + " по " + ВремяПо; Заг1.Параметры.Установить(0,Заголовок1); ЭлементыФормы.ТабДок.Вывести(Заг1); Шапка = Макет.ПолучитьОбласть("Шапка"); ЭлементыФормы.ТабДок.Вывести(Шапка); МакетСтроки = Макет.ПолучитьОбласть("Строка"); Сч = 0; ИтогКол7 = 0; ИтогКол8 = 0; ИтогКол10 = 0; ИтогКол12 = 0; ИтогКол14 = 0; ИтогКол15 = 0; ИтогКол16 = 0; ИтогКол17 = 0; ИтогКол18 = 0; ИтогКол20 = 0; ИтогКол21 = 0; ИтогКол24 = 0; ТЗВторойВариант = ДополнитьНоменклатуройСостаткомБезПродажи(ТЗВторойВариант); Если Флажок3 Тогда Если НЕ ЭлементыФормы.ПолеВыбора1.Значение = "Равно" Тогда //ебашим всю номенклатуру ТЗВторойВариант = ДополнитьНоменклатуройПустой(ТЗВторойВариант); КонецЕсли; КонецЕсли; ТЗВторойВариант.Сортировать("Номенклатура Возр"); Для Каждого Строка Из ТЗВторойВариант Цикл Сч = Сч + 1; Кол7 = ?(Строка.Кол7 = Неопределено,0,Строка.Кол7); Кол8 = ?(Строка.Кол8 = Неопределено,0,Строка.Кол8); Кол10 = ?(Строка.Кол10 = Неопределено,0,Строка.Кол10); Кол12 = ?(Строка.Кол12 = Неопределено,0,Строка.Кол12); Кол14 = ?(Строка.Кол14 = Неопределено,0,Строка.Кол14); Кол15 = ?(Строка.Кол15 = Неопределено,0,Строка.Кол15); Кол16 = ?(Строка.Кол16 = Неопределено,0,Строка.Кол16); Кол17 = ?(Строка.Кол17 = Неопределено,0,Строка.Кол17); Кол18 = ?(Строка.Кол18 = Неопределено,0,Строка.Кол18); Кол20 = ?(Строка.Кол20 = Неопределено,0,Строка.Кол20); Кол21 = ?(Строка.Кол21 = Неопределено,0,Строка.Кол21); Кол24 = ?(Строка.Кол24 = Неопределено,0,Строка.Кол24); ИтогКол7 = ИтогКол7 + Кол7; ИтогКол8 = ИтогКол8 + Кол8; ИтогКол10 = ИтогКол10 + Кол10; ИтогКол12 = ИтогКол12 + Кол12; ИтогКол14 = ИтогКол14 + Кол14; ИтогКол15 = ИтогКол15 + Кол15; ИтогКол16 = ИтогКол16 + Кол16; ИтогКол17 = ИтогКол17 + Кол17; ИтогКол18 = ИтогКол18 + Кол18; ИтогКол20 = ИтогКол20 + Кол20; ИтогКол21 = ИтогКол21 + Кол21; ИтогКол24 = ИтогКол24 + Кол24; МакетСтроки.Параметры.Установить(0, Сч); МакетСтроки.Параметры.Установить(1, Строка.Номенклатура); МакетСтроки.Параметры["Остаток"] = Строка.Остаток;//ПолучитьЗапросТекущихОстатков(Строка.Номенклатура); //МакетСтроки.Параметры["Кол7"] = Кол7; МакетСтроки.Параметры["Кол8"] = Кол7 + Кол8; МакетСтроки.Параметры["Кол10"] = Кол7 + Кол8 + Кол10; МакетСтроки.Параметры["Кол12"] = Кол7 + Кол8 + Кол10 + Кол12; МакетСтроки.Параметры["Кол14"] = Кол7 + Кол8 + Кол10 + Кол12 + Кол14; МакетСтроки.Параметры["Кол15"] = Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15; МакетСтроки.Параметры["Кол16"] = Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15 + Кол16; МакетСтроки.Параметры["Кол17"] = Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15 + Кол16 + Кол17; МакетСтроки.Параметры["Кол18"] = Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15 + Кол16 + Кол17 + Кол18; МакетСтроки.Параметры["Кол20"] = Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15 + Кол16 + Кол17 + Кол18 + Кол20; МакетСтроки.Параметры["Кол21"] = Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15 + Кол16 + Кол17 + Кол18 + Кол20 + Кол21; МакетСтроки.Параметры["КолИтог"] = Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15 + Кол16 + Кол17 + Кол18 + Кол20 + Кол21 + Кол24; //МакетСтроки.Параметры.Установить(2,ПолучитьЗапросТекущихОстатков(Строка.Номенклатура)); //МакетСтроки.Параметры.Установить(4, Кол7); //МакетСтроки.Параметры.Установить(5, Кол7 + Кол8); //МакетСтроки.Параметры.Установить(6, Кол7 + Кол8 + Кол10); //МакетСтроки.Параметры.Установить(7, Кол7 + Кол8 + Кол10 + Кол12); //МакетСтроки.Параметры.Установить(8, Кол7 + Кол8 + Кол10 + Кол12 + Кол14); //МакетСтроки.Параметры.Установить(9, Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15); //МакетСтроки.Параметры.Установить(10, Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15 + Кол16); //МакетСтроки.Параметры.Установить(11,Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15 + Кол16 + Кол17); //МакетСтроки.Параметры.Установить(12,Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15 + Кол16 + Кол17 + Кол18); //МакетСтроки.Параметры.Установить(13,Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15 + Кол16 + Кол17 + Кол18 + Кол24); ЭлементыФормы.ТабДок.Вывести(МакетСтроки); КонецЦикла; МакетПодвал = Макет.ПолучитьОбласть("Подвал"); //МакетПодвал.Параметры.Установить(0, ИтогКол7); МакетПодвал.Параметры.Установить(0, ИтогКол8 + ИтогКол7); МакетПодвал.Параметры.Установить(1, ИтогКол10 + ИтогКол8 + ИтогКол7); МакетПодвал.Параметры.Установить(2, ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7); МакетПодвал.Параметры.Установить(3, ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7); МакетПодвал.Параметры.Установить(4, ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7); МакетПодвал.Параметры.Установить(5, ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7); МакетПодвал.Параметры.Установить(6, ИтогКол17 + ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7); МакетПодвал.Параметры.Установить(7, ИтогКол18 + ИтогКол17 + ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7); МакетПодвал.Параметры.Установить(8, ИтогКол20 + ИтогКол18 + ИтогКол17 + ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7); МакетПодвал.Параметры.Установить(9, ИтогКол21 + ИтогКол20 + ИтогКол18 + ИтогКол17 + ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7); МакетПодвал.Параметры.Установить(10, ИтогКол24 + ИтогКол21 + ИтогКол20 + ИтогКол18 + ИтогКол17 + ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7); ЭлементыФормы.ТабДок.Вывести(МакетПодвал); Итоги7 = ИтогКол7; Итоги8 = ИтогКол8 + ИтогКол7; Итоги10 = ИтогКол10 + ИтогКол8 + ИтогКол7; Итоги12 = ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7; Итоги14 = ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7; Итоги15 = ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7; Итоги16 = ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7; Итоги17 = ИтогКол17 + ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7; Итоги18 = ИтогКол18 + ИтогКол17 + ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7; Итоги20 = ИтогКол20 + ИтогКол18 + ИтогКол17 + ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7; Итоги21 = ИтогКол21 + ИтогКол20 + ИтогКол18 + ИтогКол17 + ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7; Итоги24 = ИтогКол24 + ИтогКол21 + ИтогКол20 + ИтогКол18 + ИтогКол17 + ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7; МакетРазница = Макет.ПолучитьОбласть("ПодвалРазницаПоЧасам"); МакетРазница.Параметры.Установить(0, Итоги8 - Итоги7); МакетРазница.Параметры.Установить(1, Итоги10 - Итоги8); МакетРазница.Параметры.Установить(2, Итоги12 - Итоги10); МакетРазница.Параметры.Установить(3, Итоги14 - Итоги12); МакетРазница.Параметры.Установить(4, Итоги15 - Итоги14); МакетРазница.Параметры.Установить(5, Итоги16 - Итоги15); МакетРазница.Параметры.Установить(6, Итоги17 - Итоги16); МакетРазница.Параметры.Установить(7, Итоги18 - Итоги17); МакетРазница.Параметры.Установить(8, Итоги20 - Итоги18); МакетРазница.Параметры.Установить(9, Итоги21 - Итоги20); МакетРазница.Параметры.Установить(10, Итоги24 - Итоги21); ЭлементыФормы.ТабДок.Вывести(МакетРазница); Иначе Если Флажок1 = Ложь И Флажок2 = Ложь Тогда ТЗМолочка.Сортировать("Дата, Время"); ТЗСмены = Новый ТаблицаЗначений; ТЗСмены = ТЗМолочка.Скопировать(); ТЗМолочка.Свернуть("Наименование, Дата1, Время","Количество , Сумма"); //выводим отчет ЭлементыФормы.ТабДок.Очистить(); Макет = ПолучитьМакет("Макет1"); Заг = Макет.ПолучитьОбласть("Заголовок"); Если ЭлементыФормы.ПолеВыбора1.Значение = "Равно" Тогда Заголовок = "Отчет почасовая продажа товара " + СокрЛП(Номенклатура.Наименование); Иначе Заголовок = "Отчет почасовая продажа товара в группе: " + СокрЛП(Номенклатура.Наименование); КонецЕсли; Если Номенклатура = Справочники.Номенклатура.ПустаяСсылка() Тогда Заголовок = "Отчет почасовая продажа товара: по всей номенклатуре"; КонецЕсли; Заг.Параметры.Установить(0, Заголовок); ЭлементыФормы.ТабДок.Вывести(Заг); Заг1 = Макет.ПолучитьОбласть("Заголовок1"); ВремяС = Формат(ВремяНач,"ДЛФ=В"); ВремяПо = Формат(ВремяКон,"ДЛФ=В"); Если ВремяС = "" Тогда ВремяС = "00:00:00"; КонецЕсли; Если ВремяПо = "" Тогда ВремяПо = "00:00:00"; КонецЕсли; Заголовок1 = "С " + Формат(ДатаНач,"ДЛФ=Д") + " по " + Формат(ДатаКон,"ДЛФ=Д") + " в период времени с " + ВремяС + " по " + ВремяПо; Заг1.Параметры.Установить(0,Заголовок1); ЭлементыФормы.ТабДок.Вывести(Заг1); НадписьДата = Макет.ПолучитьОбласть("Дата"); НадписьВремя = Макет.ПолучитьОбласть("Время"); Шапка = Макет.ПолучитьОбласть("Шапка"); ЭлементыФормы.ТабДок.Вывести(Шапка); Таблица = Макет.ПолучитьОбласть("Строка"); НомерПП = 0; Дата = Неопределено; ТекстВремени = Неопределено; ТекстДаты = Неопределено; Итог = 0; ДатаОстаткаНач = НачалоДня(ДатаНач); ТЗНомерЧека = Новый ТаблицаЗначений; ТЗНомерЧека.Колонки.Добавить("Номер",,"Номер"); ТЗНомерСмены = Новый ТаблицаЗначений; ТЗНомерСмены.Колонки.Добавить("Номер",,"Номер"); ТЗНомерСМены.Колонки.Добавить("ЦЕнаРозн",,"ЦенаРозн"); Итоги = Макет.ПолучитьОбласть("Итоги"); ЭлементыФормы.ТабДок.НачатьГруппуСтрок("Таблица",Истина); НоваяГруппа = 0; КоличествоЧековВсего = 0; СуммаВсего = 0; ПрибыльВсего = 0; ПрибыльЧаса = 0; Для Счетчик = 1 По ТЗМолочка.Количество() Цикл НомерСтрокиТЗ = Счетчик - 1; НомерПП = НомерПП + 1; Если НЕ ТекстВремени = Строка(ТЗМолочка[НомерСтрокиТЗ].Время) + ":00 - " + Строка((ТЗМолочка[НомерСтрокиТЗ].Время + 0)) + "23:59" ИЛИ НЕ ТекстДаты = ТЗМолочка[НомерСтрокиТЗ].Дата1 Тогда Если НЕ Итог = 0 Тогда ТЗНомерЧека.Свернуть("Номер"); КоличествоЧеков = ТЗНомерЧека.Количество(); Итоги.Параметры.Установить(1, Итог); Итоги.Параметры.Установить(2, ПрибыльЧаса); Итоги.Параметры.Установить(0, КоличествоЧеков); КоличествоЧековВсего = КоличествоЧековВсего + КоличествоЧеков; ЭлементыФормы.ТабДок.Вывести(Итоги); Итог = 0; ПрибыльЧаса = 0; ТЗНомерЧека.Очистить(); КонецЕсли; Если НоваяГруппа = 1 Тогда ЭлементыФормы.ТабДок.ЗакончитьГруппуСтрок(); НоваяГруппа = 0; КонецЕсли; НадписьВремя.Параметры.Установить(0,Строка(ТЗМолочка[НомерСтрокиТЗ].Время) + ":00 - " + Строка((ТЗМолочка[НомерСтрокиТЗ].Время + 0)) + "23:59 " + ТЗМолочка[НомерСтрокиТЗ].Дата1); ЭлементыФормы.ТабДок.Вывести(НадписьВремя); ТЗНомерЧека.Очистить(); Если НоваяГруппа = 0 Тогда ЭлементыФормы.ТабДок.НачатьГруппуСтрок("Дата " + ТЗМолочка[НомерСтрокиТЗ].Дата1 ,Ложь); НоваяГруппа = 1; КонецЕсли; КонецЕсли; //ищем чеки и смены СтруктураПоиска = Новый Структура; СтруктураПоиска.Вставить("Время",ТЗМолочка[НомерСтрокиТЗ].Время); СтруктураПоиска.Вставить("Дата1",ТЗМолочка[НомерСтрокиТЗ].Дата1); СтруктураПоиска.Вставить("Наименование",ТЗМолочка[НомерСтрокиТЗ].Наименование); СтрокиТаблицы = ТЗСмены.НайтиСтроки(СтруктураПоиска); Для Каждого Элемент Из СтрокиТаблицы Цикл СтрокаТЗНомерЧека = ТЗНомерЧека.Добавить(); СтрокаТЗНомерЧека.Номер = Элемент.НомерЧека; КонецЦикла; ТЗНомерСмены.Очистить(); Для Каждого Элемент Из СтрокиТаблицы Цикл СтрокаТЗНомерСмены = ТЗНомерСмены.Добавить(); СтрокаТЗНомерСмены.Номер = Элемент.НомерСмены; СтрокаТЗНомерСмены.ЦенаРозн = (Элемент.Сумма / Элемент.Количество); КонецЦикла; Прибыль = ПолучитьПрибыль(ТЗМолочка[НомерСтрокиТЗ].Наименование, ТЗНомерСмены); Таблица.Параметры.Установить(0, НомерПП); Таблица.Параметры.Установить(1, ТЗМолочка[НомерСтрокиТЗ].Наименование); ТекстВремени = Строка(ТЗМолочка[НомерСтрокиТЗ].Время) + ":00 - " + Строка((ТЗМолочка[НомерСтрокиТЗ].Время + 0)) + ":59"; ТекстДаты = ТЗМолочка[НомерСтрокиТЗ].Дата1; Таблица.Параметры.Установить(3, ТекстВремени); Таблица.Параметры.Установить(4, ТЗМолочка[НомерСтрокиТЗ].Количество); ДатаОстаткаКон = Дата(ТЗМолочка[НомерСтрокиТЗ].Дата1 + " " + ТЗМолочка[НомерСтрокиТЗ].Время + "23: |
||||
2
Nemirov
09.10.19
✎
13:44
|
|||||
3
vicof
09.10.19
✎
13:45
|
За 1000 баксов посмотрю.
|
||||
4
Nemirov
09.10.19
✎
13:45
|
(2) Перем Источник;
//Перем ЭтоЦентр; Перем ТЗСмены; Функция ПолучитьИсточникДанных(ДатаНачала, ДатаКонца, НеЗакрытаяСмена = Ложь) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | sms_Store.StoreCode, | 100000 * sms_Store.StoreCode + sms_POS.PosCode КАК PosCode, | sms_POS.Name КАК PosName, | sms_Shift.ShiftUID КАК Смена, | sms_Cheque.ChequeUID КАК Чек, | sms_Shift.CloseTime КАК ДатаВремяЗакрытияСмены, | sms_Shift.OpenTime КАК ДатаВремяОткрытияСмены, | sms_Shift.ShiftNo КАК НомерСменыККМ, | sms_Cheque.ChequeNo КАК НомерЧекаККМ, | sms_Cheque.CloseTime КАК ДатаВремяЗакрытияЧека, | sms_Cheque.OpenTime КАК ДатаВремяОткрытияЧека, | ВЫБОР | КОГДА sms_Cheque.CloseType <> 0 | ТОГДА ""_О"" | ИНАЧЕ """" | КОНЕЦ КАК CloseType, | ВЫБОР | КОГДА sms_Cheque.ChequeType = 0 | ТОГДА ""Продажа"" | КОГДА sms_Cheque.ChequeType = 1 | ТОГДА ""Возврат"" | ИНАЧЕ ""Не известен"" | КОНЕЦ КАК Тип, | sms_ChequeLine.ChequeLineNo КАК НомерПозицииККМ, | sms_Item.ItemID КАК КодТовараSIS, | sms_Item.ItemCode КАК КодТовара, | sms_Item.Name КАК НаименованиеТовара, | sms_ChequeLine.Price КАК Цена, | sms_ChequeLine.Quantity КАК Количество, | sms_ChequeLine.DiscountValue КАК РазмерСкидки, | sms_ChequeLine.Amount КАК Сумма, | ВЫБОР | КОГДА sms_SaleItem.Property1 ЕСТЬ NULL | ТОГДА """" | ИНАЧЕ sms_SaleItem.Property1.Value | КОНЕЦ + ВЫБОР | КОГДА sms_SaleItem.Property2 ЕСТЬ NULL | ТОГДА """" | ИНАЧЕ "","" + sms_SaleItem.Property2.Value | КОНЕЦ + ВЫБОР | КОГДА sms_SaleItem.Property3 ЕСТЬ NULL | ТОГДА """" | ИНАЧЕ "","" + sms_SaleItem.Property3.Value | КОНЕЦ КАК Характеристика, | sms_Employee.EmployeeCode, | sms_Employee.Name КАК ИмяКассира, | horeca_MenuItem.Name КАК Меню, | horeca_Menu.Name КАК ГруппаМеню |ИЗ | ВнешнийИсточникДанных.SIS.Таблица.sms_ChequeLine КАК sms_ChequeLine | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.sms_Cheque КАК sms_Cheque | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.sms_Shift КАК sms_Shift | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.sms_POS КАК sms_POS | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.sms_Store КАК sms_Store | ПО sms_POS.StoreUID = sms_Store.Ссылка | ПО sms_Shift.PosUID = sms_POS.Ссылка | ПО sms_Cheque.ShiftUID = sms_Shift.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.sms_Employee КАК sms_Employee | ПО sms_Cheque.CashierUID = sms_Employee.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | sms_Cheque.ChequeUID КАК ChequeUID | ИЗ | ВнешнийИсточникДанных.SIS.Таблица.sms_ChequeLine КАК sms_ChequeLine | ЛЕВОЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.sms_Cheque КАК sms_Cheque | ПО sms_ChequeLine.ChequeUID = sms_Cheque.Ссылка | ГДЕ | sms_ChequeLine.Storno = ИСТИНА | | СГРУППИРОВАТЬ ПО | sms_Cheque.ChequeUID) КАК t | ПО (t.ChequeUID = sms_Cheque.ChequeUID) | ПО sms_ChequeLine.ChequeUID = sms_Cheque.Ссылка | И (sms_Cheque.CloseTime >= &ДатаНачала) | И (sms_Cheque.CloseTime <= &ДатаОкончания) | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.sms_SaleItem КАК sms_SaleItem | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.sms_ItemUnitSchema КАК sms_ItemUnitSchema | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.sms_Item КАК sms_Item | ПО sms_ItemUnitSchema.ItemUID = sms_Item.Ссылка | ПО sms_SaleItem.ItemUnitSchemaUID = sms_ItemUnitSchema.Ссылка | ПО sms_ChequeLine.SaleItemUID = sms_SaleItem.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.horeca_ChequeLine2MenuItem КАК horeca_ChequeLine2MenuItem | ЛЕВОЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.horeca_MenuItem КАК horeca_MenuItem | ЛЕВОЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.SIS.Таблица.horeca_Menu КАК horeca_Menu | ПО horeca_MenuItem.MenuUID = horeca_Menu.Ссылка | ПО horeca_ChequeLine2MenuItem.MenuItemUID = horeca_MenuItem.Ссылка | ПО (horeca_ChequeLine2MenuItem.ChequeLineUID = sms_ChequeLine.Ссылка) |ГДЕ | ВЫБОР | КОГДА sms_Cheque.CloseType <> 0 | ТОГДА 1 | ИНАЧЕ 2 | КОНЕЦ = &ОтменённыеЧеки" + ?(НеЗакрытаяСмена," И sms_Shift.CloseTime ЕСТЬ NULL ","") + " |{ГДЕ | sms_ChequeLine.Storno КАК СторнированныеТовары, | (ВЫБОР | КОГДА t.ChequeUID ЕСТЬ NULL | ТОГДА ЛОЖЬ | ИНАЧЕ ИСТИНА | КОНЕЦ) КАК СоСторнированнымиТоварами, | (ВЫБОР | КОГДА sms_Shift.CloseTime ЕСТЬ НЕ NULL | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ) КАК Закрытая}"; Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ДатаНачала)); Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(ДатаКонца)); Запрос.УстановитьПараметр("ОтменённыеЧеки", 2); РезультатЗапроса = Запрос.Выполнить().Выгрузить(); Возврат(РезультатЗапроса); КонецФункции //Процедура кнНастройкаНажатие(Элемент) // // Если Источник.Настройка() Тогда // СформироватьОтчет(); // КонецЕсли; // //КонецПроцедуры Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) Если омПроцедурыСетевогоОбмена.МагазинИлиЦентр() Тогда Предупреждение("Данный отчет можно запускать только в магазине!!!", 10, "Ошибка запуска"); Отказ = Истина КонецЕсли; //Если ОмSMS2.SMSЭтоSMS2() Тогда //НоваяФорма=Отчеты.SISЧековаяЛента.ПолучитьФорму("ФормаОтчета"); //НоваяФорма.Открыть(); //Отказ = Истина; //Конецесли; Если НЕ глКомпоненты.СМС.ПроверитьИнтерфейс(,,Истина) Тогда Отказ = Истина; КонецЕсли; //ЭтоЦентр = ОмSMS.SMSЭтоЦентр(); КонецПроцедуры Процедура ПриОткрытии() ВариантНастройки = 1; ДатаНач = НачалоДня(ТекущаяДата()); ДатаКон = КонецДня(ТекущаяДата()); ЭлементыФормы.ВремяНач.Значение = Формат(НачалоДня(ТекущаяДата()),"ДЛФ=ЧЧммсс"); ЭлементыФормы.ВремяКон.Значение = Формат(КонецДня(ТекущаяДата()),"ДЛФ=ЧЧммсс"); ЭлементыФормы.ПолеВыбора1.Значение = "Равно"; ЭлементыФормы.Номенклатура.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Элементы; КнопкаЗаполнить = ЭлементыФормы.КоманднаяПанель1.Кнопки.Добавить("ВыборВарианта",ТипКнопкиКоманднойПанели.Действие,НСтр("ru = ""Выбрать вариант 2""; en = ""select the option 2"""),Новый Действие("КоманднаяПанель1ВыбратьВариант")); КнопкаЗаполнить.ИзменяетДанные = Истина; НастроитьКнопкуКоманднойпанели(КнопкаЗаполнить); ЭлементыФормы.Флажок3.Видимость = Ложь; КонецПроцедуры Процедура НастроитьКнопкуКоманднойПанели(КнопкаКоманднойПанели) КнопкаКОманднойПанели.Подсказка = КнопкаКоманднойПанели.Текст; КнопкаКоманднойПанели.Пояснение = КнопкаКоманднойПанели.Текст; КонецПроцедуры Процедура СформироватьОтчет() Если Флажок1 = Ложь И Флажок2 = Ложь И Номенклатура = Справочники.Номенклатура.ПустаяСсылка() Тогда Если Вопрос("Выполнение обработки может занять продолжительное время. Продолжить?",РежимДиалогаВопрос.ДаНет,15,КодВозвратаДиалога.Да,"Внимание!!!",КодВозвратаДиалога.Да) = КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли; КонецЕсли; ЭлементыФормы.ТабДок.Очистить(); ТЗ = ПолучитьИсточникДанных(ДатаНач,ДатаКон); ЭлементыФормы.Документ.Очистить(); ТЗМолочка = Новый ТаблицаЗначений; ТЗМолочка.Колонки.Добавить("Дата1",,"Дата1"); ТЗМолочка.Колонки.Добавить("Дата",,"Дата"); ТЗМолочка.Колонки.Добавить("Время",,"Время"); ТЗМолочка.Колонки.Добавить("Наименование",,"Наименование"); ТЗМолочка.Колонки.Добавить("КодТовара",,"КодТовара"); ТЗМолочка.Колонки.Добавить("Количество",,"Количество"); ТЗМолочка.Колонки.Добавить("Касса",,"Касса"); ТЗМолочка.Колонки.Добавить("Сумма",,"Сумма"); ТЗМолочка.Колонки.Добавить("НомерЧека",,"НомерЧека"); ТЗМолочка.Колонки.Добавить("НомерСмены",,"НомерСмены"); ПродажиПредыдущегоДня = 0; сч = 0; Для Каждого Строка Из ТЗ Цикл Ч = (Строка.ДатаВремяЗакрытияЧека - НачалоДня(Строка.ДатаВремяЗакрытияЧека)); Если Час(ВремяНач) < Час(ВремяКон) Тогда Если Ч < Час(ВремяНач) * 3600 ИЛИ Ч > Час(ВремяКон) * 3600 Тогда Продолжить; КонецЕсли; ИначеЕсли Час(ВремяНач) > Час(ВремяКон) Тогда Если НЕ Ч > Час(ВремяНач) * 3600 И НЕ Ч < Час(ВремяКон) * 3600 Тогда Продолжить; КонецЕсли; КонецЕсли; Если Номенклатура = Справочники.Номенклатура.ПустаяСсылка() Тогда //Если Строка.Сумма > 0 Тогда СтрокаТЗМолочка = ТЗМолочка.Добавить(); СтрокаТЗМолочка.Дата1 = Формат(Строка.ДатаВремяЗакрытияЧека,"ДЛФ=Д"); СтрокаТЗМолочка.Дата = Строка.ДатаВремяЗакрытияЧека; СтрокаТЗМолочка.Время = ?(ВариантНастройки = 2,ПолучитьИнтервалыЧасов(Час(Строка.ДатаВремяЗакрытияЧека)),Час(Строка.ДатаВремяЗакрытияЧека)); СтрокаТЗМолочка.Наименование = Справочники.Номенклатура.НайтиПоКоду(СокрЛП(Строка.КодТовара));//Строка.НаименованиеТовара; СтрокаТЗМолочка.Количество = Строка.Количество; СтрокаТЗМолочка.Касса = Строка.PosName; СтрокаТЗМолочка.Сумма = Строка.Сумма; СтрокаТЗМолочка.НомерЧека = Строка.НомерЧекаККМ; СтрокаТЗМолочка.НомерСмены = Строка.НомерСменыККМ; //КонецЕсли; ИначеЕсли ЭлементыФормы.ПолеВыбора1.Значение = "Равно" Тогда //Если СокрЛП(Строка.НаименованиеТовара) = СокрЛП(Номенклатура.Наименование) Тогда Если СокрЛП(Строка.КодТовара) = СокрЛП(Номенклатура.Код) Тогда Если Строка.ДатаВремяЗакрытияЧека < НачалоДня(ДатаНач) Тогда Продолжить; Иначе СтрокаТЗМолочка = ТЗМолочка.Добавить(); СтрокаТЗМолочка.Дата1 = Формат(Строка.ДатаВремяЗакрытияЧека,"ДЛФ=Д"); СтрокаТЗМолочка.Дата = Строка.ДатаВремяЗакрытияЧека; СтрокаТЗМолочка.Время = ?(ВариантНастройки = 2,ПолучитьИнтервалыЧасов(Час(Строка.ДатаВремяЗакрытияЧека)),Час(Строка.ДатаВремяЗакрытияЧека)); СтрокаТЗМолочка.Наименование = Номенклатура;//Строка.НаименованиеТовара; СтрокаТЗМолочка.Количество = Строка.Количество; СтрокаТЗМолочка.Касса = Строка.PosName; СтрокаТЗМолочка.Сумма = Строка.Сумма; СтрокаТЗМолочка.НомерЧека = Строка.НомерЧекаККМ; СтрокаТЗМолочка.НомерСмены = Строка.НомерСменыККМ; КонецЕсли; КонецЕсли; ИначеЕсли ЭлементыФормы.ПолеВыбора1.Значение = "В группе" Тогда //Номен = СокрЛП(Строка.НаименованиеТовара); //Номен = Справочники.Номенклатура.НайтиПоНаименованию(Номен); Номен = Справочники.Номенклатура.НайтиПоКоду(СокрЛП(Строка.КодТовара)); Если НЕ Номен = Справочники.Номенклатура.ПустаяСсылка() Тогда Если Номен.ПринадлежитЭлементу(Номенклатура) Тогда //Если Строка.Сумма > 0 Тогда СтрокаТЗМолочка = ТЗМолочка.Добавить(); СтрокаТЗМолочка.Дата1 = Формат(Строка.ДатаВремяЗакрытияЧека,"ДЛФ=Д"); СтрокаТЗМолочка.Дата = Строка.ДатаВремяЗакрытияЧека; СтрокаТЗМолочка.Время = ?(ВариантНастройки = 2,ПолучитьИнтервалыЧасов(Час(Строка.ДатаВремяЗакрытияЧека)),Час(Строка.ДатаВремяЗакрытияЧека)); СтрокаТЗМолочка.Наименование = Номен;//Строка.НаименованиеТовара; СтрокаТЗМолочка.Количество = Строка.Количество; СтрокаТЗМолочка.Касса = Строка.PosName; СтрокаТЗМолочка.Сумма = Строка.Сумма; СтрокаТЗМолочка.НомерЧека = Строка.НомерЧекаККМ; СтрокаТЗМолочка.НомерСмены = Строка.НомерСменыККМ; //КонецЕсли; КонецЕсли; КонецЕсли; ИначеЕсли ЭлементыФормы.ПолеВыбора1.Значение = "В группе из списка" Тогда Если Номенклатура.Количество() > 0 Тогда Номен = Справочники.Номенклатура.НайтиПоКоду(СокрЛП(Строка.КодТовара)); Для Каждого Стр Из Номенклатура Цикл Если Номен.ПринадлежитЭлементу(Стр.Значение) Тогда //Если Строка.Сумма > 0 Тогда СтрокаТЗМолочка = ТЗМолочка.Добавить(); СтрокаТЗМолочка.Дата1 = Формат(Строка.ДатаВремяЗакрытияЧека,"ДЛФ=Д"); СтрокаТЗМолочка.Дата = Строка.ДатаВремяЗакрытияЧека; СтрокаТЗМолочка.Время = ?(ВариантНастройки = 2,ПолучитьИнтервалыЧасов(Час(Строка.ДатаВремяЗакрытияЧека)),Час(Строка.ДатаВремяЗакрытияЧека)); СтрокаТЗМолочка.Наименование = Номен;//Строка.НаименованиеТовара; СтрокаТЗМолочка.Количество = Строка.Количество; СтрокаТЗМолочка.Касса = Строка.PosName; СтрокаТЗМолочка.Сумма = Строка.Сумма; СтрокаТЗМолочка.НомерЧека = Строка.НомерЧекаККМ; СтрокаТЗМолочка.НомерСмены = Строка.НомерСменыККМ; Прервать; //КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; КонецЦикла; Если ВариантНастройки = 2 Тогда ТЗВторойВариант = Новый ТаблицаЗначений; ТЗВторойВариант.Колонки.Добавить("Номенклатура",,"Номенклатура"); ТЗВторойВариант.Колонки.Добавить("Кол7",,"Кол7"); ТЗВторойВариант.Колонки.Добавить("Кол8",,"Кол8"); ТЗВторойВариант.Колонки.Добавить("Кол10",,"Кол10"); ТЗВторойВариант.Колонки.Добавить("Кол12",,"Кол12"); ТЗВторойВариант.Колонки.Добавить("Кол14",,"Кол14"); ТЗВторойВариант.Колонки.Добавить("Кол15",,"Кол15"); ТЗВторойВариант.Колонки.Добавить("Кол16",,"Кол16"); ТЗВторойВариант.Колонки.Добавить("Кол17",,"Кол17"); ТЗВторойВариант.Колонки.Добавить("Кол18",,"Кол18"); ТЗВторойВариант.Колонки.Добавить("Кол20",,"Кол20"); ТЗВторойВариант.Колонки.Добавить("Кол21",,"Кол21"); ТЗВторойВариант.Колонки.Добавить("Кол24",,"Кол24"); ТЗВторойВариант.Колонки.Добавить("Остаток",,"Остаток"); ТЗВторойВариант.Колонки.Добавить("КолИтого",,"КолИтого"); ТЗМолочка.Свернуть("Наименование,Время","Количество"); ТЗМолочка.Сортировать("Время Возр"); Для Каждого Строка Из ТЗМолочка Цикл НайденнаяСтрока = ТЗВторойВариант.Найти(Строка.Наименование,"Номенклатура"); Если НайденнаяСтрока = Неопределено Тогда НоваяСтрока = ТЗВторойВариант.Добавить(); НоваяСтрока.Номенклатура = Строка.Наименование; НоваяСтрока.КолИтого = Строка.Количество; Если Строка.Время = 7 Тогда НоваяСтрока.Кол7 = Строка.Количество; ИначеЕсли Строка.Время = 8 Тогда НоваяСтрока.Кол8 = Строка.Количество; ИначеЕсли Строка.Время = 10 Тогда НоваяСтрока.Кол10 = Строка.Количество; ИначеЕсли Строка.Время = 12 Тогда НоваяСтрока.Кол12 = Строка.Количество; ИначеЕсли Строка.Время = 14 Тогда НоваяСтрока.Кол14 = Строка.Количество; ИначеЕсли Строка.Время = 15 Тогда НоваяСтрока.Кол15 = Строка.Количество; ИначеЕсли Строка.Время =16 Тогда НоваяСтрока.Кол16 = Строка.Количество; ИначеЕсли Строка.Время = 17 Тогда НоваяСтрока.Кол17 = Строка.Количество; ИначеЕсли Строка.Время = 18 Тогда НоваяСтрока.Кол18 = Строка.Количество; ИначеЕсли Строка.Время = 20 Тогда НоваяСтрока.Кол20 = Строка.Количество; ИначеЕсли Строка.Время = 21 Тогда НоваяСтрока.Кол21 = Строка.Количество; ИначеЕсли Строка.Время = 24 Тогда НоваяСтрока.Кол24 = Строка.Количество; КонецЕсли; Иначе НайденнаяСтрока.КолИтого = НайденнаяСтрока.КолИтого + Строка.Количество; Если Строка.Время = 7 Тогда НайденнаяСтрока.Кол7 = Строка.Количество; ИначеЕсли Строка.Время = 8 Тогда НайденнаяСтрока.Кол8 = Строка.Количество; ИначеЕсли Строка.Время = 10 Тогда НайденнаяСтрока.Кол10 = Строка.Количество; ИначеЕсли Строка.Время = 12 Тогда НайденнаяСтрока.Кол12 = Строка.Количество; ИначеЕсли Строка.Время = 14 Тогда НайденнаяСтрока.Кол14 = Строка.Количество; ИначеЕсли Строка.Время = 15 Тогда НайденнаяСтрока.Кол15 = Строка.Количество; ИначеЕсли Строка.Время =16 Тогда НайденнаяСтрока.Кол16 = Строка.Количество; ИначеЕсли Строка.Время = 17 Тогда НайденнаяСтрока.Кол17 = Строка.Количество; ИначеЕсли Строка.Время = 18 Тогда НайденнаяСтрока.Кол18 = Строка.Количество; ИначеЕсли Строка.Время = 20 Тогда НайденнаяСтрока.Кол20 = Строка.Количество; ИначеЕсли Строка.Время = 21 Тогда НайденнаяСтрока.Кол21 = Строка.Количество; ИначеЕсли Строка.Время = 24 Тогда НайденнаяСтрока.Кол24 = Строка.Количество; КонецЕсли; КонецЕсли; КонецЦикла; ЭлементыФормы.ТабДок.Очистить(); Макет = ПолучитьМакет("МакетВСтроку"); Заг = Макет.ПолучитьОбласть("Заголовок"); Если ЭлементыФормы.ПолеВыбора1.Значение = "Равно" Тогда Заголовок = "Отчет почасовая продажа товара " + СокрЛП(Номенклатура.Наименование); ИначеЕсли ЭлементыФормы.ПолеВыбора1.Значение = "В группе из списка" Тогда Заголовок = "Отчет почасовая продажа товара в группам: "; Сч = 0; Для Каждого Стр Из Номенклатура Цикл Сч = Сч + 1; Заголовок = Заголовок + Строка(Стр.Значение) + ""; Если Сч = Номенклатура.Количество() Тогда Заголовок = Заголовок + "."; Иначе Заголовок = Заголовок + "; "; КонецЕсли; КонецЦикла; Иначе Заголовок = "Отчет почасовая продажа товара в группе: " + СокрЛП(Номенклатура.Наименование); КонецЕсли; Если Номенклатура = Справочники.Номенклатура.ПустаяСсылка() Тогда Заголовок = "Отчет почасовая продажа товара: по всей номенклатуре"; КонецЕсли; Заг.Параметры.Установить(0, Заголовок); ЭлементыФормы.ТабДок.Вывести(Заг); Заг1 = Макет.ПолучитьОбласть("Заголовок1"); ВремяС = Формат(ВремяНач,"ДЛФ=В"); ВремяПо = Формат(ВремяКон,"ДЛФ=В"); Если ВремяС = "" Тогда ВремяС = "00:00:00"; КонецЕсли; Если ВремяПо = "" Тогда ВремяПо = "00:00:00"; КонецЕсли; Заголовок1 = "С " + Формат(ДатаНач,"ДЛФ=Д") + " по " + Формат(ДатаКон,"ДЛФ=Д") + " в период времени с " + ВремяС + " по " + ВремяПо; Заг1.Параметры.Установить(0,Заголовок1); ЭлементыФормы.ТабДок.Вывести(Заг1); Шапка = Макет.ПолучитьОбласть("Шапка"); ЭлементыФормы.ТабДок.Вывести(Шапка); МакетСтроки = Макет.ПолучитьОбласть("Строка"); Сч = 0; ИтогКол7 = 0; ИтогКол8 = 0; ИтогКол10 = 0; ИтогКол12 = 0; ИтогКол14 = 0; ИтогКол15 = 0; ИтогКол16 = 0; ИтогКол17 = 0; ИтогКол18 = 0; ИтогКол20 = 0; ИтогКол21 = 0; ИтогКол24 = 0; ТЗВторойВариант = ДополнитьНоменклатуройСостаткомБезПродажи(ТЗВторойВариант); Если Флажок3 Тогда Если НЕ ЭлементыФормы.ПолеВыбора1.Значение = "Равно" Тогда //ебашим всю номенклатуру ТЗВторойВариант = ДополнитьНоменклатуройПустой(ТЗВторойВариант); КонецЕсли; КонецЕсли; ТЗВторойВариант.Сортировать("Номенклатура Возр"); Для Каждого Строка Из ТЗВторойВариант Цикл Сч = Сч + 1; Кол7 = ?(Строка.Кол7 = Неопределено,0,Строка.Кол7); Кол8 = ?(Строка.Кол8 = Неопределено,0,Строка.Кол8); Кол10 = ?(Строка.Кол10 = Неопределено,0,Строка.Кол10); Кол12 = ?(Строка.Кол12 = Неопределено,0,Строка.Кол12); Кол14 = ?(Строка.Кол14 = Неопределено,0,Строка.Кол14); Кол15 = ?(Строка.Кол15 = Неопределено,0,Строка.Кол15); Кол16 = ?(Строка.Кол16 = Неопределено,0,Строка.Кол16); Кол17 = ?(Строка.Кол17 = Неопределено,0,Строка.Кол17); Кол18 = ?(Строка.Кол18 = Неопределено,0,Строка.Кол18); Кол20 = ?(Строка.Кол20 = Неопределено,0,Строка.Кол20); Кол21 = ?(Строка.Кол21 = Неопределено,0,Строка.Кол21); Кол24 = ?(Строка.Кол24 = Неопределено,0,Строка.Кол24); ИтогКол7 = ИтогКол7 + Кол7; ИтогКол8 = ИтогКол8 + Кол8; ИтогКол10 = ИтогКол10 + Кол10; ИтогКол12 = ИтогКол12 + Кол12; ИтогКол14 = ИтогКол14 + Кол14; ИтогКол15 = ИтогКол15 + Кол15; ИтогКол16 = ИтогКол16 + Кол16; ИтогКол17 = ИтогКол17 + Кол17; ИтогКол18 = ИтогКол18 + Кол18; ИтогКол20 = ИтогКол20 + Кол20; ИтогКол21 = ИтогКол21 + Кол21; ИтогКол24 = ИтогКол24 + Кол24; МакетСтроки.Параметры.Установить(0, Сч); МакетСтроки.Параметры.Установить(1, Строка.Номенклатура); МакетСтроки.Параметры["Остаток"] = Строка.Остаток;//ПолучитьЗапросТекущихОстатков(Строка.Номенклатура); //МакетСтроки.Параметры["Кол7"] = Кол7; МакетСтроки.Параметры["Кол8"] = Кол7 + Кол8; МакетСтроки.Параметры["Кол10"] = Кол7 + Кол8 + Кол10; МакетСтроки.Параметры["Кол12"] = Кол7 + Кол8 + Кол10 + Кол12; МакетСтроки.Параметры["Кол14"] = Кол7 + Кол8 + Кол10 + Кол12 + Кол14; МакетСтроки.Параметры["Кол15"] = Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15; МакетСтроки.Параметры["Кол16"] = Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15 + Кол16; МакетСтроки.Параметры["Кол17"] = Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15 + Кол16 + Кол17; МакетСтроки.Параметры["Кол18"] = Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15 + Кол16 + Кол17 + Кол18; МакетСтроки.Параметры["Кол20"] = Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15 + Кол16 + Кол17 + Кол18 + Кол20; МакетСтроки.Параметры["Кол21"] = Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15 + Кол16 + Кол17 + Кол18 + Кол20 + Кол21; МакетСтроки.Параметры["КолИтог"] = Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15 + Кол16 + Кол17 + Кол18 + Кол20 + Кол21 + Кол24; //МакетСтроки.Параметры.Установить(2,ПолучитьЗапросТекущихОстатков(Строка.Номенклатура)); //МакетСтроки.Параметры.Установить(4, Кол7); //МакетСтроки.Параметры.Установить(5, Кол7 + Кол8); //МакетСтроки.Параметры.Установить(6, Кол7 + Кол8 + Кол10); //МакетСтроки.Параметры.Установить(7, Кол7 + Кол8 + Кол10 + Кол12); //МакетСтроки.Параметры.Установить(8, Кол7 + Кол8 + Кол10 + Кол12 + Кол14); //МакетСтроки.Параметры.Установить(9, Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15); //МакетСтроки.Параметры.Установить(10, Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15 + Кол16); //МакетСтроки.Параметры.Установить(11,Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15 + Кол16 + Кол17); //МакетСтроки.Параметры.Установить(12,Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15 + Кол16 + Кол17 + Кол18); //МакетСтроки.Параметры.Установить(13,Кол7 + Кол8 + Кол10 + Кол12 + Кол14 + Кол15 + Кол16 + Кол17 + Кол18 + Кол24); ЭлементыФормы.ТабДок.Вывести(МакетСтроки); КонецЦикла; МакетПодвал = Макет.ПолучитьОбласть("Подвал"); //МакетПодвал.Параметры.Установить(0, ИтогКол7); МакетПодвал.Параметры.Установить(0, ИтогКол8 + ИтогКол7); МакетПодвал.Параметры.Установить(1, ИтогКол10 + ИтогКол8 + ИтогКол7); МакетПодвал.Параметры.Установить(2, ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7); МакетПодвал.Параметры.Установить(3, ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7); МакетПодвал.Параметры.Установить(4, ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7); МакетПодвал.Параметры.Установить(5, ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7); МакетПодвал.Параметры.Установить(6, ИтогКол17 + ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7); МакетПодвал.Параметры.Установить(7, ИтогКол18 + ИтогКол17 + ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7); МакетПодвал.Параметры.Установить(8, ИтогКол20 + ИтогКол18 + ИтогКол17 + ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7); МакетПодвал.Параметры.Установить(9, ИтогКол21 + ИтогКол20 + ИтогКол18 + ИтогКол17 + ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7); МакетПодвал.Параметры.Установить(10, ИтогКол24 + ИтогКол21 + ИтогКол20 + ИтогКол18 + ИтогКол17 + ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7); ЭлементыФормы.ТабДок.Вывести(МакетПодвал); Итоги7 = ИтогКол7; Итоги8 = ИтогКол8 + ИтогКол7; Итоги10 = ИтогКол10 + ИтогКол8 + ИтогКол7; Итоги12 = ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7; Итоги14 = ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7; Итоги15 = ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7; Итоги16 = ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7; Итоги17 = ИтогКол17 + ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7; Итоги18 = ИтогКол18 + ИтогКол17 + ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7; Итоги20 = ИтогКол20 + ИтогКол18 + ИтогКол17 + ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7; Итоги21 = ИтогКол21 + ИтогКол20 + ИтогКол18 + ИтогКол17 + ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7; Итоги24 = ИтогКол24 + ИтогКол21 + ИтогКол20 + ИтогКол18 + ИтогКол17 + ИтогКол16 + ИтогКол15 + ИтогКол14 + ИтогКол12 + ИтогКол10 + ИтогКол8 + ИтогКол7; МакетРазница = Макет.ПолучитьОбласть("ПодвалРазницаПоЧасам"); МакетРазница.Параметры.Установить(0, Итоги8 - Итоги7); МакетРазница.Параметры.Установить(1, Итоги10 - Итоги8); МакетРазница.Параметры.Установить(2, Итоги12 - Итоги10); МакетРазница.Параметры.Установить(3, Итоги14 - Итоги12); МакетРазница.Параметры.Установить(4, Итоги15 - Итоги14); МакетРазница.Параметры.Установить(5, Итоги16 - Итоги15); МакетРазница.Параметры.Установить(6, Итоги17 - Итоги16); МакетРазница.Параметры.Установить(7, Итоги18 - Итоги17); МакетРазница.Параметры.Установить(8, Итоги20 - Итоги18); МакетРазница.Параметры.Установить(9, Итоги21 - Итоги20); МакетРазница.Параметры.Установить(10, Итоги24 - Итоги21); ЭлементыФормы.ТабДок.Вывести(МакетРазница); Иначе Если Флажок1 = Ложь И Флажок2 = Ложь Тогда ТЗМолочка.Сортировать("Дата, Время"); ТЗСмены = Новый ТаблицаЗначений; ТЗСмены = ТЗМолочка.Скопировать(); ТЗМолочка.Свернуть("Наименование, Дата1, Время","Количество , Сумма"); //выводим отчет ЭлементыФормы.ТабДок.Очистить(); Макет = ПолучитьМакет("Макет1"); Заг = Макет.ПолучитьОбласть("Заголовок"); Если ЭлементыФормы.ПолеВыбора1.Значение = "Равно" Тогда Заголовок = "Отчет почасовая продажа товара " + СокрЛП(Номенклатура.Наименование); Иначе Заголовок = "Отчет почасовая продажа товара в группе: " + СокрЛП(Номенклатура.Наименование); КонецЕсли; Если Номенклатура = Справочники.Номенклатура.ПустаяСсылка() Тогда Заголовок = "Отчет почасовая продажа товара: по всей номенклатуре"; КонецЕсли; Заг.Параметры.Установить(0, Заголовок); ЭлементыФормы.ТабДок.Вывести(Заг); Заг1 = Макет.ПолучитьОбласть("Заголовок1"); ВремяС = Формат(ВремяНач,"ДЛФ=В"); ВремяПо = Формат(ВремяКон,"ДЛФ=В"); Если ВремяС = "" Тогда ВремяС = "00:00:00"; КонецЕсли; Если ВремяПо = "" Тогда ВремяПо = "00:00:00"; КонецЕсли; Заголовок1 = "С " + Формат(ДатаНач,"ДЛФ=Д") + " по " + Формат(ДатаКон,"ДЛФ=Д") + " в период времени с " + ВремяС + " по " + ВремяПо; Заг1.Параметры.Установить(0,Заголовок1); ЭлементыФормы.ТабДок.Вывести(Заг1); НадписьДата = Макет.ПолучитьОбласть("Дата"); НадписьВремя = Макет.ПолучитьОбласть("Время"); Шапка = Макет.ПолучитьОбласть("Шапка"); ЭлементыФормы.ТабДок.Вывести(Шапка); Таблица = Макет.ПолучитьОбласть("Строка"); НомерПП = 0; Дата = Неопределено; ТекстВремени = Неопределено; ТекстДаты = Неопределено; Итог = 0; ДатаОстаткаНач = НачалоДня(ДатаНач); ТЗНомерЧека = Новый ТаблицаЗначений; ТЗНомерЧека.Колонки.Добавить("Номер",,"Номер"); ТЗНомерСмены = Новый ТаблицаЗначений; ТЗНомерСмены.Колонки.Добавить("Номер",,"Номер"); ТЗНомерСМены.Колонки.Добавить("ЦЕнаРозн",,"ЦенаРозн"); Итоги = Макет.ПолучитьОбласть("Итоги"); ЭлементыФормы.ТабДок.НачатьГруппуСтрок("Таблица",Истина); НоваяГруппа = 0; КоличествоЧековВсего = 0; СуммаВсего = 0; ПрибыльВсего = 0; ПрибыльЧаса = 0; Для Счетчик = 1 По ТЗМолочка.Количество() Цикл НомерСтрокиТЗ = Счетчик - 1; НомерПП = НомерПП + 1; Если НЕ ТекстВремени = Строка(ТЗМолочка[НомерСтрокиТЗ].Время) + ":00 - " + Строка((ТЗМолочка[НомерСтрокиТЗ].Время + 0)) + "23:59" ИЛИ НЕ ТекстДаты = ТЗМолочка[НомерСтрокиТЗ].Дата1 Тогда Если НЕ Итог = 0 Тогда ТЗНомерЧека.Свернуть("Номер"); КоличествоЧеков = ТЗНомерЧека.Количество(); Итоги.Параметры.Установить(1, Итог); Итоги.Параметры.Установить(2, ПрибыльЧаса); Итоги.Параметры.Установить(0, КоличествоЧеков); КоличествоЧековВсего = КоличествоЧековВсего + КоличествоЧеков; ЭлементыФормы.ТабДок.Вывести(Итоги); Итог = 0; ПрибыльЧаса = 0; ТЗНомерЧека.Очистить(); КонецЕсли; Если НоваяГруппа = 1 Тогда ЭлементыФормы.ТабДок.ЗакончитьГруппуСтрок(); НоваяГруппа = 0; КонецЕсли; НадписьВремя.Параметры.Установить(0,Строка(ТЗМолочка[НомерСтрокиТЗ].Время) + ":00 - " + Строка((ТЗМолочка[НомерСтрокиТЗ].Время + 0)) + "23:59 " + ТЗМолочка[НомерСтрокиТЗ].Дата1); ЭлементыФормы.ТабДок.Вывести(НадписьВремя); ТЗНомерЧека.Очистить(); Если НоваяГруппа = 0 Тогда ЭлементыФормы.ТабДок.НачатьГруппуСтрок("Дата " + ТЗМолочка[НомерСтрокиТЗ].Дата1 ,Ложь); НоваяГруппа = 1; КонецЕсли; КонецЕсли; //ищем чеки и смены СтруктураПоиска = Новый Структура; СтруктураПоиска.Вставить("Время",ТЗМолочка[НомерСтрокиТЗ].Время); СтруктураПоиска.Вставить("Дата1",ТЗМолочка[НомерСтрокиТЗ].Дата1); СтруктураПоиска.Вставить("Наименование",ТЗМолочка[НомерСтрокиТЗ].Наименование); СтрокиТаблицы = ТЗСмены.НайтиСтроки(СтруктураПоиска); Для Каждого Элемент Из СтрокиТаблицы Цикл СтрокаТЗНомерЧека = ТЗНомерЧека.Добавить(); СтрокаТЗНомерЧека.Номер = Элемент.НомерЧека; КонецЦикла; ТЗНомерСмены.Очистить(); Для Каждого Элемент Из СтрокиТаблицы Цикл СтрокаТЗНомерСмены = ТЗНомерСмены.Добавить(); СтрокаТЗНомерСмены.Номер = Элемент.НомерСмены; СтрокаТЗНомерСмены.ЦенаРозн = (Элемент.Сумма / Элемент.Количество); КонецЦикла; Прибыль = ПолучитьПрибыль(ТЗМолочка[НомерСтрокиТЗ].Наименование, ТЗНомерСмены); Таблица.Параметры.Установить(0, НомерПП); Таблица.Параметры.Установить(1, ТЗМолочка[НомерСтрокиТЗ].Наименование); ТекстВремени = Строка(ТЗМолочка[НомерСтрокиТЗ].Время) + ":00 - " + Строка((ТЗМолочка[НомерСтрокиТЗ].Время + 0)) + ":59"; ТекстДаты = ТЗМолочка[НомерСтрокиТЗ].Дата1; Таблица.Параметры.Установить(3, ТекстВремени); Таблица.Параметры.Установить(4, ТЗМолочка[НомерСтрокиТЗ].Количество); ДатаОстаткаКон = Дата(ТЗМолочка[НомерСтрокиТЗ].Дата1 + " " + ТЗМолочка[НомерСтрокиТЗ].Время + |
||||
5
KnockKnock
09.10.19
✎
13:53
|
(0) Ну посмотри отладчиком какие данные формирует запрос, если там все норм, то смотри в коде, если запросе, то раскуривай запрос...
|
||||
6
Nemirov
09.10.19
✎
13:58
|
(5) Весь код прошарил, Запрос формируется без ошибок.
|
||||
7
hhhh
09.10.19
✎
14:02
|
(5) он же написал уже. время 0:00 меньше чем 23:00. А должно быть больше.
|
||||
8
azernot
09.10.19
✎
14:07
|
()
"ОмSMS".. как знакомо это выглядит. Похоже, я знаю семейство этих конфигураций.... |
||||
9
KnockKnock
09.10.19
✎
14:07
|
(7) Ну если честно я код не смотрел)
(6) Ну значит не все где-то пробел остался... |
||||
10
Йохохо
09.10.19
✎
14:11
|
"ИначеЕсли Строка.Время = 24 Тогда" тут да? тлоько не говорите почему нет продаж в 22
|
||||
11
azernot
09.10.19
✎
14:20
|
Ч = (Строка.ДатаВремяЗакрытияЧека - НачалоДня(Строка.ДатаВремяЗакрытияЧека));
Если Ч < Час(ВремяНач) * 3600 ИЛИ Ч > Час(ВремяКон) * 3600 Тогда Продолжить; КонецЕсли; Итак, допустим, Строка.ДатаВремяЗакрытияЧека = 09.10.2019 23:30:00 Значит Ч = 84600 ВремяКон = 23:59:59 Час(ВремяКон) = 23 Час(ВремяКон) * 3600 = 82800 А значит 84600>82800 и срабатывает "Продолжить;" Чего ж вы ещё хотите? :) |
||||
12
Nemirov
09.10.19
✎
16:33
|
(11) оп (11) Как бы правильно исправить не поломав логику, до 23
работает все на ура |
||||
13
Nemirov
09.10.19
✎
16:52
|
(11) Бог!!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |