Skip to content

Instantly share code, notes, and snippets.

@ulvham
Last active August 29, 2015 14:17
Show Gist options
  • Save ulvham/b51b09af36a2c6076c06 to your computer and use it in GitHub Desktop.
Save ulvham/b51b09af36a2c6076c06 to your computer and use it in GitHub Desktop.
1C_2015
|ВЫБРАТЬ
| ДосудебнаяРабота.Ссылка,
| ДосудебнаяРабота.Должник
|ИЗ
| Документ.ДосудебнаяРабота КАК ДосудебнаяРабота
|ГДЕ
| ДосудебнаяРабота.Дата > ДАТАВРЕМЯ(2015, 1, 20)
Функция ПодключитьКоннектор() Экспорт
ОбъектСоед = Новый COMОбъект("V82.COMConnector.1");
СтрокаПодключения = "Srvr=10.4.122.9; Ref=ABONTEST;Usr=Администратор;Pwd=ufp;";
Соединение = ОбъектСоед.Connect(СтрокаПодключения);
Возврат Соединение;
КонецФункции
Соединение = ПодключитьКоннектор();
Запрос0 = Соединение.NewObject("Запрос");
Текст ="
|ВЫБРАТЬ
| ДосудебнаяРабота.Ссылка,
| ДосудебнаяРабота.Должник
|ИЗ
| Документ.ДосудебнаяРабота КАК ДосудебнаяРабота";
ИмяТаблицыФормы = "ДолгиПоПериодамНаНачало";
Запрос0.Текст = Текст;
Выборка = Запрос0.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СсылкаНаЛюбойДокумент = Выборка.Ссылка;
ОбъектДокумента = СсылкаНаЛюбойДокумент.ПолучитьОбъект();
////ОбъектДокумента.НачислитьСкидку(10);
////ЗначениеВРеквизитФормы(ОбъектДокумента, "Объект");
//ОбъектДокумента.УчетныйМесяцОкончания = ОбъектДокумента.УчетныйМесяцНачала + 60*60*90*24;
//ОбъектДокумента.Записать();
УМДокумента = ОбъектДокумента.УчетныйМесяцНачала;
//УМДокумента = ОбъектДокумента.УчетныйМесяцОкончания;
Запрос = Соединение.NewObject("Запрос");
Текст1 ="ВЫБРАТЬ
| ВложенныйЗапрос.Услуга КАК УслугаНаселению,
| ВложенныйЗапрос.ПериодДолга КАК ПериодДолга,
| СУММА(ВложенныйЗапрос.Сумма) КАК СуммаДолга
|ИЗ
| (ВЫБРАТЬ
| ВЫБОР
| КОГДА АвансыОстатки.УслугаНаселению = ЗНАЧЕНИЕ(Справочник.УслугиНаселению.ПустаяСсылка)
| ТОГДА ЕСТЬNULL(НастройкиПараметровУчетаПоПодразделениям.УслугаДляПереносаАвансов, ЗНАЧЕНИЕ(Справочник.УслугиНаселению.ПустаяСсылка))
| ИНАЧЕ АвансыОстатки.УслугаНаселению
| КОНЕЦ КАК Услуга,
| АвансыОстатки.ПериодДолга КАК ПериодДолга,
| АвансыОстатки.СуммаОстаток КАК Сумма
| ИЗ
| РегистрНакопления.Авансы.Остатки(
| ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&УчетныйМесяц, МЕСЯЦ), СЕКУНДА, 1),
| Абонент = &Абонент
| И (&ПоВсемУслугам
| ИЛИ УслугаНаселению В (&СписокУслуг))) КАК АвансыОстатки
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПараметровУчетаПоПодразделениям КАК НастройкиПараметровУчетаПоПодразделениям
| ПО АвансыОстатки.Подразделение = НастройкиПараметровУчетаПоПодразделениям.Подразделение
| И (НастройкиПараметровУчетаПоПодразделениям.ВидУслуг В (ЗНАЧЕНИЕ(Справочник.УслугиНаселению.ГазоснабжениеПрироднымГазом)))
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ПодЗапрос.УслугаНаселению,
| ПодЗапрос.ПериодДолга,
| СУММА(ПодЗапрос.Сумма)
| ИЗ
| (ВЫБРАТЬ
| ВЫБОР
| КОГДА ДолгиОстатки.УслугаНаселению = ЗНАЧЕНИЕ(Справочник.УслугиНаселению.ПустаяСсылка)
| ТОГДА ЗНАЧЕНИЕ(Справочник.УслугиНаселению.ГазоснабжениеПрироднымГазом)
| ИНАЧЕ ДолгиОстатки.УслугаНаселению
| КОНЕЦ КАК УслугаНаселению,
| ДолгиОстатки.ПериодДолга КАК ПериодДолга,
| ДолгиОстатки.СуммаОстаток КАК Сумма
| ИЗ
| РегистрНакопления.Долги.Остатки(
| ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&УчетныйМесяц, МЕСЯЦ), СЕКУНДА, 1),
| Абонент = &Абонент
| И (&ПоВсемУслугам
| ИЛИ УслугаНаселению В (&СписокУслуг))
| И ПериодДолга < &УчетныйМесяц) КАК ДолгиОстатки
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ПредоставленнаяРассрочкаОстатки.Соглашение.УслугаНаселению,
| ПредоставленнаяРассрочкаОстатки.Соглашение.ПериодДолга,
| -ПредоставленнаяРассрочкаОстатки.СуммаОстаток
| ИЗ
| РегистрНакопления.ПредоставленнаяРассрочка.Остатки(
| ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&УчетныйМесяц, МЕСЯЦ), СЕКУНДА, 1),
| Соглашение.Абонент = &Абонент
| И (&ПоВсемУслугам
| ИЛИ Соглашение.УслугаНаселению В (&СписокУслуг))
| И Соглашение.ПериодДолга < &УчетныйМесяц) КАК ПредоставленнаяРассрочкаОстатки
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| РеструктуризацияДолгаОстатки.Заявление.УслугаНаселению,
| РеструктуризацияДолгаОстатки.ПериодДолга,
| -СУММА(РеструктуризацияДолгаОстатки.СуммаОстаток)
| ИЗ
| РегистрНакопления.РеструктуризацияДолга.Остатки(
| ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&УчетныйМесяц, МЕСЯЦ), СЕКУНДА, 1),
| Заявление.Абонент = &Абонент
| И (&ПоВсемУслугам
| ИЛИ Заявление.УслугаНаселению В (&СписокУслуг))
| И ПериодДолга < &УчетныйМесяц) КАК РеструктуризацияДолгаОстатки
|
| СГРУППИРОВАТЬ ПО
| РеструктуризацияДолгаОстатки.Заявление.УслугаНаселению,
| РеструктуризацияДолгаОстатки.ПериодДолга) КАК ПодЗапрос
|
| СГРУППИРОВАТЬ ПО
| ПодЗапрос.УслугаНаселению,
| ПодЗапрос.ПериодДолга) КАК ВложенныйЗапрос
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Услуга,
| ВложенныйЗапрос.ПериодДолга";
Запрос.Текст = Текст1;
Запрос.УстановитьПараметр("УчетныйМесяц", УМДокумента);
Запрос.УстановитьПараметр("Абонент", Выборка.Должник);
Запрос.УстановитьПараметр("ПоВсемУслугам", Истина);
Запрос.УстановитьПараметр("СписокУслуг", "");
Рез = Запрос.Выполнить().Выгрузить();
УМДокумента = ОбъектДокумента.УчетныйМесяцНачала;
ОбъектДокумента.ДолгиПоПериодамНаНачало.Загрузить(Рез);
//ОбъектДокумента.ЗаполнитьДолгиПоПериодамИУслугамСервер(Истина, "ДолгиПоПериодамНаНачало", СсылкаНаЛюбойДокумент);
//ОбъектДокумента.Форма.ЗаполнитьДолгиПоПериодамИУслугам(Истина, "ДолгиПоПериодамНаНачало");
//ОбъектДокумента["ДолгиПоПериодамНаНачало"].Загрузить(Соединение.Документы.ДосудебнаяРабота.ЗаполнитьДолгиПоПериодамИУслугамСервер(Соединение.ИспользоватьНастройки, УМДокумента, ОбъектДокумента.Ссылка));
ОбъектДокумента.Записать();
КонецЦикла;
ВЫБРАТЬ
ВложенныйЗапрос1.Владелец КАК Абонент
ИЗ
(ВЫБРАТЬ
ЗапросСвернутыйПоАбонентам.Абонент КАК Абонент,
ЗапросСвернутыйПоАбонентам.СуммаОстаток КАК СуммаОстаток
ИЗ
(ВЫБРАТЬ
ЗапросДолги.Абонент КАК Абонент,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗапросДолги.ПериодДолга) КАК КоличествоПериодДолга,
СУММА(ЗапросДолги.СуммаОстаток) КАК СуммаОстаток
ИЗ
(ВЫБРАТЬ
ДолгиОстатки.Абонент КАК Абонент,
ДолгиОстатки.ПериодДолга КАК ПериодДолга,
СУММА(ДолгиОстатки.СуммаОстаток) КАК СуммаОстаток
ИЗ
РегистрНакопления.Долги.Остатки(&ДатаСреза, УслугаНаселению = ЗНАЧЕНИЕ(Справочник.УслугиНаселению.ГазоснабжениеПрироднымГазом)) КАК ДолгиОстатки
СГРУППИРОВАТЬ ПО
ДолгиОстатки.Абонент,
ДолгиОстатки.ПериодДолга) КАК ЗапросДолги
ГДЕ
ВЫБОР
КОГДА &Старый
ТОГДА ЗапросДолги.ПериодДолга >= ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ДатаСреза, МЕСЯЦ), МЕСЯЦ, -3)
ИНАЧЕ ЗапросДолги.ПериодДолга >= ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ДатаСреза, МЕСЯЦ), МЕСЯЦ, -2)
КОНЕЦ
И ЗапросДолги.СуммаОстаток > 0
СГРУППИРОВАТЬ ПО
ЗапросДолги.Абонент) КАК ЗапросСвернутыйПоАбонентам
ГДЕ
ВЫБОР
КОГДА &Старый
ТОГДА ЗапросСвернутыйПоАбонентам.КоличествоПериодДолга >= 3
ИНАЧЕ ЗапросСвернутыйПоАбонентам.КоличествоПериодДолга >= 2
КОНЕЦ) КАК ВложенныйЗапрос
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ВложенныйЗапрос.Владелец КАК Владелец,
МАКСИМУМ(ВложенныйЗапрос.ДатаНачала) КАК ДатаНачала
ИЗ
(ВЫБРАТЬ
Договоры.Владелец КАК Владелец,
Договоры.ДатаНачала КАК ДатаНачала,
Договоры.ДатаОкончания КАК ДатаОкончания
ИЗ
Справочник.Договоры КАК Договоры
ГДЕ
Договоры.ПометкаУдаления = ЛОЖЬ
И Договоры.УслугаНаселению = &УслугаНаселению
И Договоры.ДатаНачала <> Договоры.ДатаОкончания) КАК ВложенныйЗапрос
ГДЕ
ВЫБОР
КОГДА &Старый
ТОГДА ВложенныйЗапрос.ДатаНачала < &ДатаНачала
ИНАЧЕ ВложенныйЗапрос.ДатаНачала >= &ДатаНачала
КОНЕЦ
СГРУППИРОВАТЬ ПО
ВложенныйЗапрос.Владелец) КАК ВложенныйЗапрос1
ПО ВложенныйЗапрос.Абонент = ВложенныйЗапрос1.Владелец
ВЫБРАТЬ
ДосудебнаяРабота.Ссылка,
ДосудебнаяРабота.Должник,
ВложенныйЗапрос.СуммаДолга,
ВложенныйЗапрос1.Сумма
ИЗ
Документ.ДосудебнаяРабота КАК ДосудебнаяРабота
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ДосудебнаяРаботаДолгиПоПериодамНаНачало.Ссылка КАК Ссылка,
СУММА(ДосудебнаяРаботаДолгиПоПериодамНаНачало.СуммаДолга) КАК СуммаДолга
ИЗ
Документ.ДосудебнаяРабота.ДолгиПоПериодамНаНачало КАК ДосудебнаяРаботаДолгиПоПериодамНаНачало
СГРУППИРОВАТЬ ПО
ДосудебнаяРаботаДолгиПоПериодамНаНачало.Ссылка) КАК ВложенныйЗапрос
ПО ДосудебнаяРабота.Ссылка = ВложенныйЗапрос.Ссылка
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
МАКСИМУМ(ДокументСобытие.Дата) КАК Дата,
СУММА(ДокументСобытие.Сумма) КАК Сумма,
ДокументСобытие.ДосудебнаяРабота.Ссылка КАК Досудебная
ИЗ
Документ.ДокументСобытие КАК ДокументСобытие
СГРУППИРОВАТЬ ПО
ДокументСобытие.ДосудебнаяРабота.Ссылка) КАК ВложенныйЗапрос1
ПО ДосудебнаяРабота.Ссылка = ВложенныйЗапрос1.Досудебная
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment