счет на оплату по 2 ставкам для коммерческих представителей
доброго времени суток, есть такая задача - есть счета для оплаты по электроэнергии/водоснабжению/отоплению коммерческие и бывает что они обновляются. так вот если на оплату берутся данные из регистра сведений срез последних, то в случае когда половина месяца была оплачена по одной ставке, а другая половина по другой ставке то как такое вывести?
если контрагент имеет 2 оплаты по ставкам к примеру 3,17 и 3,77 то выводиться должно 2 строки в счету, а так пока 1 строка со ставкой 3,77. как в запросе добавить условие чтобы если и оплатили месяц по 2 ставкам то выводилось 2 строки
через выборку когда тогда?
это код который выводит данные счета на оплату по электроэнергии
если контрагент имеет 2 оплаты по ставкам к примеру 3,17 и 3,77 то выводиться должно 2 строки в счету, а так пока 1 строка со ставкой 3,77. как в запросе добавить условие чтобы если и оплатили месяц по 2 ставкам то выводилось 2 строки
через выборку когда тогда?
это код который выводит данные счета на оплату по электроэнергии
Запрос1 = Новый Запрос;
Запрос1.Текст = "ВЫБРАТЬ
| НачисленияПоПриборамУчета.ДоговорАренды.Организация.ИНН КАК ИНН,
| НачисленияПоПриборамУчета.ДоговорАренды.Организация.НаименованиеПолное КАК Организация,
| НачисленияПоПриборамУчета.Услуга КАК Услуга
|ИЗ
| РегистрНакопления.НачисленияПоПриборамУчета КАК НачисленияПоПриборамУчета
|ГДЕ
| НачисленияПоПриборамУчета.ДоговорАренды.Контрагент = &Контрагент
| И НачисленияПоПриборамУчета.Период >= &Период
| И НачисленияПоПриборамУчета.Период <= &ПериодК
| И НачисленияПоПриборамУчета.Услуга.Наименование ПОДОБНО ""%электроэнергию%""" ;
ЗапросНач = Новый Запрос;
ЗапросНач.Текст = "ВЫБРАТЬ
| НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.Контрагент.НаименованиеПолное КАК Контрагент,
| НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.Документ КАК Документ,
| НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.Номенклатура КАК Номенклатура,
| НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.ОбъектНедвижимости КАК Объект,
| НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.СуммаБезУчетаНалогов КАК Всего,
| НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.СуммаНДС КАК НДС,
| НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.СуммаНСП КАК НСП,
| НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.СуммаВсего КАК ВсегоСУчетомНалогов,
| НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.БезНаличныйРасчет КАК БезНаличныйРасчет,
| НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.ДоговорАренды.Организация.ИНН КАК ДоговорАрендыОрганизацияИНН,
| НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.ДоговорАренды.Организация.Наименование КАК ДоговорАрендыОрганизацияНаименование,
| НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.ДоговорАренды КАК ДоговорАренды,
| НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.ПриборУчета КАК ПриборУчета
|ПОМЕСТИТЬ ВременнаяТаблица
|ИЗ
| РегистрСведений.НачисленияПоКонтрагентам_Извещения.СрезПоследних(&Период, Регистратор = &Регистратор) КАК НачисленияПоКонтрагентам_ИзвещенияСрезПоследних
|ГДЕ
| НачисленияПоКонтрагентам_ИзвещенияСрезПоследних.Номенклатура.Наименование ПОДОБНО ""%электроэнергию%""
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.Регистратор КАК Регистратор,
| ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.ПриборУчета КАК ПриборУчета,
| ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.ДоговорКонтрагента КАК ДоговорКонтрагента,
| ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.Услуга КАК Услуга,
| ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.ДоговорАренды КАК ДоговорАренды,
| ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.ФактическоеОкончание КАК ФактическоеОкончание,
| ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.ФактическоеНачало КАК ФактическоеНачало,
| ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.РазницаПоказаний КАК Разница,
| ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.РазницаФакт КАК РазницаФакт,
| ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.Цена КАК Цена,
| ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.Показание КАК ПоказаниеНаКонецПериода,
| ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.Показание - ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.РазницаПоказаний КАК ПоказаниеНаНачалоПериода
|ПОМЕСТИТЬ ВременнаяТаблицаПоказ
|ИЗ
| РегистрСведений.ПоказанияСчетчиковОбъектовНедвижимости.СрезПоследних(&Период, Регистратор ССЫЛКА Документ.АктСнятияПоказанийПриборовУчетаИБиллинга) КАК ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних
|ГДЕ
| ПоказанияСчетчиковОбъектовНедвижимостиСрезПоследних.Услуга.Наименование ПОДОБНО ""%электроэнергию%""
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ВременнаяТаблица.Контрагент КАК Контрагент,
| ВременнаяТаблица.Документ КАК Документ,
| ВременнаяТаблица.Номенклатура КАК Номенклатура,
| ВременнаяТаблица.Объект КАК Объект,
| ВременнаяТаблица.Всего КАК Всего,
| ВременнаяТаблица.НДС КАК НДС,
| ВременнаяТаблица.НСП КАК НСП,
| ВременнаяТаблица.ВсегоСУчетомНалогов КАК ВсегоСУчетомНалогов,
| ВременнаяТаблица.БезНаличныйРасчет КАК БезНаличныйРасчет,
| ВременнаяТаблица.ДоговорАрендыОрганизацияИНН КАК ДоговорАрендыОрганизацияИНН,
| ВременнаяТаблица.ДоговорАрендыОрганизацияНаименование КАК ДоговорАрендыОрганизацияНаименование,
| ВременнаяТаблица.ДоговорАренды КАК ДоговорАренды,
| ВременнаяТаблица.ПриборУчета КАК ПриборУчета,
| ВременнаяТаблицаПоказ.Регистратор КАК Регистратор,
| ВременнаяТаблицаПоказ.ПриборУчета КАК ПриборУчетаИБиллинг,
| ВременнаяТаблицаПоказ.ФактическоеОкончание КАК ФактическоеОкончание,
| ВременнаяТаблицаПоказ.ФактическоеНачало КАК ФактическоеНачало,
| ВременнаяТаблицаПоказ.Разница КАК Разница,
| ВременнаяТаблицаПоказ.РазницаФакт КАК РазницаФакт,
| ВременнаяТаблицаПоказ.ПоказаниеНаКонецПериода КАК ПоказаниеНаКонецПериода,
| ВременнаяТаблицаПоказ.ПоказаниеНаНачалоПериода КАК ПоказаниеНаНачалоПериода,
| ВременнаяТаблицаПоказ.Цена КАК Тариф,
| ВременнаяТаблица.Объект.ПолезнаяПлощадьОбъектаНедвижимости КАК Метры
|ИЗ
| ВременнаяТаблица КАК ВременнаяТаблица
| ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаПоказ КАК ВременнаяТаблицаПоказ
| ПО ВременнаяТаблица.ПриборУчета = ВременнаяТаблицаПоказ.ПриборУчета
|ИТОГИ ПО
| Контрагент";
ЗапросНач.УстановитьПараметр("Период", КонецМесяца(Объект.Период));
ЗапросНач.УстановитьПараметр("Регистратор", Объект.Документ);
//
//Запрос2.УстановитьПараметр("Контрагент", Объект.Контрагент);
//Запрос2.УстановитьПараметр("Период", Объект.Период);
//Запрос2.УстановитьПараметр("Документ",Объект.Документ);
//Запрос2.УстановитьПараметр("ПериодК", КонецМесяца(Объект.Период));
Запрос.УстановитьПараметр("Контрагент", Объект.Контрагент);
Запрос.УстановитьПараметр("Период", Объект.Период);
Запрос.УстановитьПараметр("ПериодК", КонецМесяца(Объект.Период));
//Запрос.УстановитьПараметр("Услуга", Объект.Услуга);
Запрос1.УстановитьПараметр("Контрагент", Объект.Контрагент);
Запрос1.УстановитьПараметр("Период", Объект.Период);
Запрос1.УстановитьПараметр("ПериодК", КонецМесяца(Объект.Период));
// Запрос5.УстановитьПараметр("Контрагент", Объект.Контрагент);
// Запрос5.УстановитьПараметр("Период", НачалоМесяца(Объект.Период));
// Запрос5.УстановитьПараметр("ПериодК", КонецМесяца(Объект.Период));
//Запрос6.УстановитьПараметр("Контрагент", Объект.Контрагент);
//Запрос6.УстановитьПараметр("Период", Объект.Период);
//Запрос6.УстановитьПараметр("ПериодК", КонецМесяца(Объект.Период));
//Запрос1.УстановитьПараметр("Услуга", Объект.Услуга);
ДанныеОрганизации = Запрос1.Выполнить();
ДанныеНачисления = ЗапросНач.Выполнить();
// ДанныеНачмсления2 = Запрос6.Выполнить();
// Результат = Запрос.Выполнить();
//Результат2 = Запрос5.Выполнить();
Если НЕ ДанныеНачисления.Пустой() Тогда
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.Очистить();
ТабличныйДокумент.НачатьАвтогруппировкуСтрок();
Организация = ДанныеОрганизации.Выбрать();
Организация.Следующий();
//Начисления = ДанныеНачисления.Выбрать();
// Начисления2 = ДанныеНачмсления2.Выбрать();
ВыборкаКонтрагент = ДанныеНачисления.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
//ВыборкаКонтрагентОБЩ = Результат2.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаКонтрагент.Следующий() Цикл
// ВыборкаКонтрагентОБЩ.Следующий();
ОбластьЗаголовокОбщЭлектро = Макет3.ПолучитьОбласть("Заголовок");
ОбластьЗаголовокОбщЭлектро.Параметры.Заполнить(Организация);
ОбластьЗаголовокОбщЭлектро.Параметры.Период = Формат(Объект.Период,"ДФ='MMMM.yyyy'");
ОбластьЗаголовокОбщЭлектро.Параметры.Контрагент = ВыборкаКонтрагент.Контрагент;
ТабличныйДокумент.Вывести(ОбластьЗаголовокОбщЭлектро);
ВыборкаДетальныеЗаписи = ВыборкаКонтрагент.Выбрать();
// ВыброкаДетальныеЗаписиОбщ = ВыборкаКонтрагентОБЩ.Выбрать();
ОбластьШапкаОбщЭлектро = Макет3.ПолучитьОбласть("Шапка");
ТабличныйДокумент.Вывести(ОбластьШапкаОбщЭлектро);
НомерСтроки = 0;
КонИтогоСумма = 0;
КонИтого = 0;
КонИтогоНДС = 0;
КонИтогоНСП = 0;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Начисления.Следующий();
НомерСтроки = НомерСтроки + 1;
ОбластьСтрокаОбщЭлектро = Макет3.ПолучитьОбласть("Строка");
ОбластьСтрокаОбщЭлектро.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
//ОбластьСтрокаОбщЭлектро.Параметры.НДС = Начисления.НДС;
//ОбластьСтрокаОбщЭлектро.Параметры.НСП = Начисления.НСП;
//ОбластьСтрокаОбщЭлектро.Параметры.ВсегоСУчетомНалогов = Начисления.ВсегоСУчетомНалогов;
ОбластьСтрокаОбщЭлектро.Параметры.НомерСтроки = НомерСтроки;
//ИтогоСумма = ИтогоСумма + ВыборкаДетальныеЗаписи.Всего;
//Итого = Итого + Начисления.ВсегоСУчетомНалогов;
//ИтогоНСП = ИтогоНСП + Начисления.НСП;
//ИтогоНДС = ИтогоНДС + Начисления.НДС;
//ОбластьСтрокаОбщЭлектро.Параметры.Заполнить(ВыброкаДетальныеЗаписиОбщ);
// ИтогоСумма = ИтогоСумма + ВыброкаДетальныеЗаписиОбщ.Всего;
КонИтогоСумма = КонИтогоСумма + ВыборкаДетальныеЗаписи.Всего;
КонИтого = КонИтого + ВыборкаДетальныеЗаписи.ВсегоСУчетомНалогов;
КонИтогоНДС = КонИтогоНДС + ВыборкаДетальныеЗаписи.НДС;
КонИтогоНСП = КонИтогоНСП + ВыборкаДетальныеЗаписи.НСП;
ТабличныйДокумент.Вывести(ОбластьСтрокаОбщЭлектро);
КонецЦикла;
НомерСтроки3 = 0;
ИтогоСумма3 = 0;
Итого3 = 0;
ИтогоНСП3 = 0;
ИтогоНДС3 = 0;
НомерСтроки3 = НомерСтроки;
ОбластьПодвалОбщЭлектро = Макет3.ПолучитьОбласть("Подвал");
ОбластьПодвалОбщЭлектро.Параметры.Заполнить(Организация);
ОбластьПодвалОбщЭлектро.Параметры.ИтогоСумма = Формат(КонИтогоСумма, "ЧДЦ='2'");
ОбластьПодвалОбщЭлектро.Параметры.Итого = Формат(КонИтого, "ЧДЦ='2'");
ОбластьПодвалОбщЭлектро.Параметры.ИтогоНДС = Формат(КонИтогоНДС , "ЧДЦ='2'");
ОбластьПодвалОбщЭлектро.Параметры.ИтогоНСП = Формат(КонИтогоНСП , "ЧДЦ='2'");
ОбластьПодвалОбщЭлектро.Параметры.Директор = Директор;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.Вывести(ОбластьПодвалОбщЭлектро);
ОбластьОтрывОбщЭлектро = Макет3.ПолучитьОбласть("Отрыв");
ТабличныйДокумент.Вывести(ОбластьОтрывОбщЭлектро);
//ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЦикла;
Иначе
Сообщить("Данных за элетроэнергию не обнаружено!");
КонецЕсли;
ПоказатьПо теме из базы знаний
- Внешние печатные формы для ERP Управление предприятием 2
- Внешние печатные формы для 1С:Комплексная автоматизация 2 -= Все формы за 3 $m =-
- Внешние печатные формы для Управления торговлей 11.4
- Внешние печатные формы для 1С:Управление торговлей 11.4 -= Все формы за 3 $m =-
- Внешние печатные формы для Управления торговлей 11.5
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Перед тем, как переходить к "когда тогда", надо алгоритм составить. А то тут все в кучку - какой-то регистр, какие-то документы, ставки, слов много, а смысла в них не так чтобы очень.
(1)
а если 3? А 5? Наверное, сначала надо получить эти оплаты, раз от их количества что-то зависит? Вот получаем первый пункт алгоритма - получение списка этих оплат, какие бы они ни были.
То есть надо узнать, где и в каком виде они хранятся в базе данных и разработать код, который их получит.
Дальше из постановки задачи непонятно, что нужно, но это можно будет после выполнения первого пункта разбираться дальше.
(1)
если контрагент имеет 2 оплаты по ставкам
а если 3? А 5? Наверное, сначала надо получить эти оплаты, раз от их количества что-то зависит? Вот получаем первый пункт алгоритма - получение списка этих оплат, какие бы они ни были.
То есть надо узнать, где и в каком виде они хранятся в базе данных и разработать код, который их получит.
Дальше из постановки задачи непонятно, что нужно, но это можно будет после выполнения первого пункта разбираться дальше.
(3) код не мой и давнишний. тоже какой-то новичок делал. а по задаче вроде старался понятней объяснить, что просто изменился тариф по оплате электроэнергии и контрагенты первую половину месяца оплатили по одному тарифу и вторую половину месяца оплатили по другому тарифу. и теперь нужно в макет вывести два эти тарифа(если так было оплачено)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот