![]() |
1С:Предприятие
:: 1С:Предприятие 8 общая
|
|
| ||
sergik79 28.05.20 - 13:00 | Суть модуля такая, он ищет виды услуг по контрагенту (у нас Водопотребление и Водоотведение) и считает индексацию. Как бы если прогонять на отладчике, то высчитывает правильно и то и то. Но добавляет в сам документ только одну строчку Водоотведение. | ||
sergik79 1 - 28.05.20 - 13:00 | #Область ПрограммныйИнтерфейс &НаСервере Функция ПоискУслуги(Услуга) Экспорт ТипУслуги=""; Запросы=Новый Запрос; Запросы.Текст= "ВЫБРАТЬ | ВидыУслуг.ВидУслуги |ИЗ | РегистрСведений.ВидыУслуг КАК ВидыУслуг |ГДЕ | ВидыУслуг.Номенклатура = &Номенклатура"; Запросы.УстановитьПараметр("Номенклатура",Услуга); Рез=Запросы.Выполнить().Выбрать(); Пока Рез.Следующий() Цикл типУслуги=Рез.видуслуги; КонецЦикла; возврат типУслуги; КонецФункции &НаСервере Функция ПоискИнд(Услуга) Экспорт ТипУслуги=""; Запросы=Новый Запрос; Запросы.Текст= "ВЫБРАТЬ | ВидыУслуг.УслугаПоИндексации |ИЗ | РегистрСведений.ВидыУслуг КАК ВидыУслуг |ГДЕ | ВидыУслуг.Номенклатура = &Номенклатура"; Запросы.УстановитьПараметр("Номенклатура",Услуга); Рез=Запросы.Выполнить().Выбрать(); Пока Рез.Следующий() Цикл типУслуги=Рез.УслугаПоИндексации; КонецЦикла; возврат типУслуги; КонецФункции&НаСервере Процедура ПриПроведенииРеализацииУслугОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт Если Источник.Услуги.количество()>0 Тогда НаборЗаписей=Источник.Движения.Хозрасчетный.ЭтотОбъект; Для Каждого стр Из Источник.услуги Цикл ВидУслуги=ПоискУслуги(стр.номенклатура); Если сокрлп(видуслуги)<>"" Тогда Если ВидУслуги=Перечисления.ВидыУслуг.Вода Тогда Сч=ПланыСчетов.Хозрасчетный.НайтиПоКоду("УСЛ.1").Ссылка; Иначе Сч=ПланыСчетов.Хозрасчетный.НайтиПоКоду("УСЛ.2").Ссылка; КонецЕсли; Проводка = НаборЗаписей.Добавить(); Проводка.Период = источник.дата; Проводка.Организация = Справочники.Организации.НайтиПоКоду("00-000001"); Проводка.Содержание = "перенос НДС"; Проводка.СчетДт = сч; Проводка.субконтодт.контрагенты=Источник.контрагент//Пр; Проводка.субконтодт.Договоры=Источник.ДоговорКонтрагента//Пр; Проводка.субконтодт.Номенклатура=стр.номенклатура//Пр; Проводка.СчетКт = сч; Проводка.субконтокт.контрагенты=Источник.контрагент//Пр; Проводка.субконтокт.Договоры=Источник.ДоговорКонтрагента//Пр; Проводка.субконтокт.Номенклатура=стр.номенклатура//Пр; Проводка.Сумма = стр.сумма; Проводка.количестводт = стр.количество; Проводка.количествокт = стр.количество; КонецЕсли; КонецЦикла; НаборЗаписей.Записать(); КонецЕсли; КонецПроцедуры &НаСервере Функция ПолучитьсуммуОплаты(СДаты,ПоДату,контрагент,договорконтрагента) Экспорт Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | ХозрасчетныйОборотыДтКт.СубконтоКт1, | СУММА(ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СуммаОборот, 0)) КАК сумма |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&сдаты, &подату, Период, , , , , ) КАК ХозрасчетныйОборотыДтКт |ГДЕ | ХозрасчетныйОборотыДтКт.СчетКт В ИЕРАРХИИ(&Счет62) | И НЕ(ХозрасчетныйОборотыДтКт.СубконтоДт1 = ХозрасчетныйОборотыДтКт.СубконтоКт1 | И ХозрасчетныйОборотыДтКт.СчетДт В ИЕРАРХИИ (&Счет62)) | И ХозрасчетныйОборотыДтКт.СубконтоКт1 = &СубконтоКт1  //| И ХозрасчетныйОборотыДтКт.СубконтоКт2 = &СубконтоКт2 | |СГРУППИРОВАТЬ ПО | ХозрасчетныйОборотыДтКт.СубконтоКт1"; Запрос.УстановитьПараметр("счет62",Планысчетов.Хозрасчетный.НайтиПоКоду("62").Ссылка); Запрос.УстановитьПараметр("СубконтоКт1",контрагент); // Запрос.УстановитьПараметр("СубконтоКт2",договорконтрагента); Запрос.УстановитьПараметр("СДаты",сдаты); Запрос.УстановитьПараметр("ПоДату",подату); Рез=Запрос.Выполнить().Выбрать(); сум=0; Пока Рез.Следующий() цикл сум=сум+рез.сумма; КонецЦикла; Возврат сум; КонецФункции &НаСервере Функция ПолучитьсуммуДО(СДаты,ПоДату,контрагент,договорконтрагента) Экспорт Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | ХозрасчетныйОборотыДтКт.СубконтоДт1, | СУММА(ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СуммаОборот, 0)) КАК сумма |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&СДаты, &ПоДату, Период, , , , , ) КАК ХозрасчетныйОборотыДтКт |ГДЕ | ХозрасчетныйОборотыДтКт.СчетДт В ИЕРАРХИИ(&Счет62) | И НЕ(ХозрасчетныйОборотыДтКт.СубконтоДт1 = ХозрасчетныйОборотыДтКт.СубконтоКт1 | И ХозрасчетныйОборотыДтКт.СчетКт В ИЕРАРХИИ (&Счет62)) | И ХозрасчетныйОборотыДтКт.СубконтоДт1 = &СубконтоКт1  //| И ХозрасчетныйОборотыДтКт.СубконтоДт2 = &СубконтоКт2 | |СГРУППИРОВАТЬ ПО | ХозрасчетныйОборотыДтКт.СубконтоДт1"; Запрос.УстановитьПараметр("счет62",Планысчетов.Хозрасчетный.НайтиПоКоду("62").Ссылка); Запрос.УстановитьПараметр("СубконтоКт1",контрагент);  //Запрос.УстановитьПараметр("СубконтоКт2",договорконтрагента); Запрос.УстановитьПараметр("СДаты",сдаты); Запрос.УстановитьПараметр("ПоДату",подату); Рез=Запрос.Выполнить().Выбрать(); сум=0; Пока Рез.Следующий() цикл сум=сум+рез.сумма; КонецЦикла; Возврат сум; КонецФункции &НаСервере Функция ПолучитьсуммуДОУСЛ(СДаты,ПоДату,контрагент,договорконтрагента,Счета) Экспорт Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | ХозрасчетныйОборотыДтКт.СубконтоДт1, | СУММА(ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СуммаОборот, 0)) КАК сумма |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&СДаты, &ПоДату, Период, , , , , ) КАК ХозрасчетныйОборотыДтКт |ГДЕ | ХозрасчетныйОборотыДтКт.СчетДт В ИЕРАРХИИ(&Счет62) | И ХозрасчетныйОборотыДтКт.СубконтоДт1 = &СубконтоКт1 // | И ХозрасчетныйОборотыДтКт.СубконтоДт2 = &СубконтоКт2 | |СГРУППИРОВАТЬ ПО | ХозрасчетныйОборотыДтКт.СубконтоДт1"; Запрос.УстановитьПараметр("счет62",счета); Запрос.УстановитьПараметр("СубконтоКт1",контрагент);  //Запрос.УстановитьПараметр("СубконтоКт2",договорконтрагента); Запрос.УстановитьПараметр("СДаты",сдаты); Запрос.УстановитьПараметр("ПоДату",подату); Рез=Запрос.Выполнить().Выбрать(); сум=0; Пока Рез.Следующий() цикл сум=сум+рез.сумма; КонецЦикла; Возврат сум; КонецФункции &НаСервере Процедура Расчетсумм(СуммаУслуги20,СуммаУслуги10,СуммаУслуги0,СДаты,ПоДату,контрагент,договорконтрагента) Экспорт Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | ХозрасчетныйОборотыДтКт.СубконтоДт1, | СУММА(ВЫБОР | КОГДА ХозрасчетныйОборотыДтКт.СубконтоДт3.СтавкаНДС = &Ставка20 | ТОГДА ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СуммаОборот, 0) | ИНАЧЕ 0 | КОНЕЦ) КАК сумма20, | ВЫБОР | КОГДА ХозрасчетныйОборотыДтКт.СубконтоДт3.СтавкаНДС = &Ставка10 | ТОГДА ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СуммаОборот, 0) | ИНАЧЕ 0 | КОНЕЦ КАК Сумма10, | ВЫБОР | КОГДА ХозрасчетныйОборотыДтКт.СубконтоДт3.СтавкаНДС = &Ставка20 | ИЛИ ХозрасчетныйОборотыДтКт.СубконтоДт3.СтавкаНДС = &Ставка10 | ТОГДА 0 | ИНАЧЕ ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СуммаОборот, 0) | КОНЕЦ КАК сумма0 |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&СДаты, &ПоДату, Период, , , , , ) КАК ХозрасчетныйОборотыДтКт |ГДЕ | ХозрасчетныйОборотыДтКт.СчетДт В ИЕРАРХИИ(&Счет62) | И ХозрасчетныйОборотыДтКт.СубконтоДт1 = &СубконтоКт1 // | И ХозрасчетныйОборотыДтКт.СубконтоДт2 = &СубконтоКт2 | |СГРУППИРОВАТЬ ПО | ХозрасчетныйОборотыДтКт.СубконтоДт1, | ВЫБОР | КОГДА ХозрасчетныйОборотыДтКт.СубконтоДт3.СтавкаНДС = &Ставка10 | ТОГДА ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СуммаОборот, 0) | ИНАЧЕ 0 | КОНЕЦ, | ВЫБОР | КОГДА ХозрасчетныйОборотыДтКт.СубконтоДт3.СтавкаНДС = &Ставка20 | ИЛИ ХозрасчетныйОборотыДтКт.СубконтоДт3.СтавкаНДС = &Ставка10 | ТОГДА 0 | ИНАЧЕ ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СуммаОборот, 0) | КОНЕЦ"; Запрос.УстановитьПараметр("счет62",Планысчетов.Хозрасчетный.НайтиПоКоду("УСЛ").Ссылка); Запрос.УстановитьПараметр("ставка20",перечисления.СтавкиНДС.НДС20); Запрос.УстановитьПараметр("ставка10",перечисления.СтавкиНДС.НДС10); Запрос.УстановитьПараметр("СубконтоКт1",контрагент); // Запрос.УстановитьПараметр("СубконтоКт2",договорконтрагента); Запрос.УстановитьПараметр("СДаты",сдаты); Запрос.УстановитьПараметр("ПоДату",подату); Рез=Запрос.Выполнить().Выбрать(); Пока Рез.Следующий() цикл СуммаУслуги20=СуммаУслуги20+рез.сумма20; СуммаУслуги10=суммауслуги10+рез.сумма10; СуммаУслуги0=суммауслуги0+рез.сумма0; КонецЦикла; КонецПроцедуры &НаСервере Функция ПоискЗадолженности(СДаты,ПоДату,контрагент,договорконтрагента) Экспорт  //Ит62.СНД()-Ит62.СНК()+Ит62.ДО(); Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | ЕСТЬNULL(ХозрасчетныйОстатки.СуммаОстатокДт, 0) - ЕСТЬNULL(ХозрасчетныйОстатки.СуммаОстатокКт, 0) КАК сумма |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, , , ) КАК ХозрасчетныйОстатки |ГДЕ | ХозрасчетныйОстатки.Счет В ИЕРАРХИИ(&Счет62) | И ХозрасчетныйОстатки.Субконто1 = &Субконто1 | И ХозрасчетныйОстатки.Субконто2 = &Субконто2"; Запрос.УстановитьПараметр("счет62",Планысчетов.Хозрасчетный.НайтиПоКоду("62").Ссылка); Запрос.УстановитьПараметр("Субконто1",контрагент); Запрос.УстановитьПараметр("Субконто2",договорконтрагента); Запрос.УстановитьПараметр("Период",сдаты-1); Рез=Запрос.Выполнить().Выбрать(); сум=0//ПолучитьсуммуДО(СДаты,ПоДату,контрагент,договорконтрагента); Пока Рез.Следующий() цикл сум=сум+рез.сумма; КонецЦикла; Возврат сум; КонецФункции &НаСервере Функция ПолучитьКоф(ВыбДата,Тов,контрагент,организация) Запрос = Новый Запрос; Запрос.Текст ="ВЫБРАТЬ | КурсыВалютСрезПоследних.Услуга, | КурсыВалютСрезПоследних.КоэффициентБ, | КурсыВалютСрезПоследних.Коэффициент |ИЗ | РегистрСведений.КоэффициентыИндексации.СрезПоследних(&ВыбДата, Услуга = &Услуга) КАК КурсыВалютСрезПоследних"; Запрос.УстановитьПараметр("ВыбДата", КонецДня(ВыбДата)); Запрос.УстановитьПараметр("Услуга", ПоискУслуги(Тов)); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Если Контрагент.Бюджет=Истина тогда возврат выборка.КоэффициентБ; Иначе возврат выборка.Коэффициент; конецесли; КонецЦикла; КонецФункции &НаСервере Процедура РасчетИндексации(ТЗ,ДокТ) Экспорт ТЗ=Новый ТаблицаЗначений; Тз.Колонки.Добавить("Номенклатура"); Тз.Колонки.Добавить("Содержание"); Тз.Колонки.Добавить("Количество"); Тз.Колонки.Добавить("Цена"); Тз.Колонки.Добавить("Сумма"); Тз.Колонки.Добавить("СтавкаНДС"); Тз.Колонки.Добавить("СуммаНДС");  //Тз.Колонки.Добавить("Всего"); Тз.Колонки.Добавить("СчетДоходов"); Тз.Колонки.Добавить("Субконто"); Тз.Колонки.Добавить("СчетУчетаНДСПоРеализации"); Тз.Колонки.Добавить("СчетРасходов"); Тз.Колонки.Добавить("НоменклатураИнд"); Тз.Колонки.Добавить("ДатаИндексации"); Для Каждого стр из ДокТ.услуги Цикл Если лев(сокрлп(стр.содержание),11)<>"Индексация:" Тогда НовСтрока=ТЗ.Добавить(); новстрока.номенклатура=стр.номенклатура; Новстрока.содержание=стр.содержание; Новстрока.количество=стр.количество; Новстрока.цена=стр.цена; Новстрока.сумма=стр.сумма;  // Новстрока.Всего=стр.Всего; Новстрока.ставкандс=стр.ставкандс; Новстрока.суммандс=стр.суммандс; Новстрока.счетдоходов=стр.счетдоходов; Новстрока.субконто=стр.субконто; Новстрока.СчетУчетаНДСПоРеализации=стр.СчетУчетаНДСПоРеализации; Новстрока.счетрасходов=стр.счетрасходов; КонецЕсли; КонецЦикла; ДатаИндексацииТ=началомесяца(ДокТ.дата)-1; ДатаИндексации=ДатаИндексацииТ; ДатаРасчетов=конецмесяца(ДокТ.дата);  //////всего оплата  //Ит62 = СоздатьОбъект("БухгалтерскиеИтоги");  //Ит62.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Контрагент,2);  //Если Константа.УчитыватьДоговора=Перечисление.Булево.Да Тогда  // Ит62.ИспользоватьСубконто(ВидыСубконто.Договоры,Договор,2);  //КонецЕсли; ОплатаТек=0;  //Ит62.ВыполнитьЗапрос(,,,3,,"С"); ОплатаТек=ПолучитьсуммуОплаты(НачалоМесяца(ДатаИндексацииТ),КонецМесяца(ДатаИндексацииТ),ДокТ.контрагент,ДокТ.договорконтрагента)//СчетПоКоду("62")//Ит62.КО();  ///сумма задолженности на начало месяца  //Ит62 = СоздатьОбъект("БухгалтерскиеИтоги");  //Ит62.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Контрагент,2);  //Если Константа.УчитыватьДоговора=Перечисление.Булево.Да Тогда  // Ит62.ИспользоватьСубконто(ВидыСубконто.Договоры,Договор,2);  //КонецЕсли;  //////поиск движений за месяц  /////  //Ит62.ВыполнитьЗапрос(НачМесяца(ДатаИндексацииТ),КонМесяца(ДатаИндексацииТ),"62.1"); СуммаЗадолженностиНаНачалоМесяца=ПоискЗадолженности(НачалоМесяца(ДатаИндексацииТ),КонецМесяца(ДатаИндексацииТ),ДокТ.контрагент,ДокТ.договорконтрагента) +ПолучитьсуммуДО(НачалоМесяца(ДатаИндексацииТ),КонецМесяца(ДатаИндексацииТ),ДокТ.контрагент,ДокТ.договорконтрагента);  //Ит62.СНД()-Ит62.СНК()+Ит62.ДО(); ДвижениеЗаМесяц=0; ЗаМесяцТ=0; Если ОплатаТек>0 Тогда ДвижениеЗаМесяц=ПолучитьсуммуДО(НачалоМесяца(ДатаИндексацииТ),КонецМесяца(ДатаИндексацииТ),ДокТ.контрагент,ДокТ.договорконтрагента)//Ит62.ДО(); КонецЕсли;  // Если (Ит62.СНД()-Ит62.СНК())> ОплатаТек Тогда СуммаЗадолженностиНаНачалоМесяца=ПоискЗадолженности(НачалоМесяца(ДатаИндексацииТ),КонецМесяца(ДатаИндексацииТ),ДокТ.контрагент,ДокТ.договорконтрагента);  //Ит62.СНД()-Ит62.СНК(); Если (СуммаЗадолженностиНаНачалоМесяца=0) и (ДвижениеЗаМесяц<>0) Тогда ЗаМесяцТ=ДвижениеЗаМесяц; КонецЕсли; ДвижениеЗаМесяц=0; Для Каждого стр из тз цикл Если сокрлп(стр.датаИндексации)<>"" Тогда Если КонецМесяца(ДатаИндексацииТ)=конецмесяца(Дата(КонецМесяца(стр.датаИндексации)+1)) Тогда Если СокрЛП(стр.номенклатураинд)<>"" Тогда СуммаЗадолженностиНаНачалоМесяца=СуммаЗадолженностиНаНачалоМесяца+стр.сумма+стр.суммандс; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; Если СуммаЗадолженностиНаНачалоМесяца<0 Тогда СуммаЗадолженностиНаНачалоМесяца=0; КонецЕсли; СуммаУслуги=0;  //ИтУСЛ = СоздатьОбъект("БухгалтерскиеИтоги");  //ИтУСЛ.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Контрагент,2);  //Если Константа.УчитыватьДоговора=Перечисление.Булево.Да Тогда  // ИтУСЛ.ИспользоватьСубконто(ВидыСубконто.Договоры,Договор,2);  //КонецЕсли;  //  //ИтУСЛ.ВыполнитьЗапрос(НачМесяца(ДатаИндексацииТ),КонМесяца(ДатаИндексацииТ),"УСЛ",,,1,,"СК"); СуммаУслугиВсего=0; СуммаУслугиВсего=ПолучитьсуммуДОУСЛ(НачалоМесяца(ДатаИндексацииТ),КонецМесяца(ДатаИндексацииТ),ДокТ.контрагент,ДокТ.договорконтрагента,Планысчетов.Хозрасчетный.НайтиПоКоду("УСЛ").Ссылка)//ИтУСЛ.ДО("С"); СуммаУслуги20=0; СуммаУслуги10=0; СуммаУслуги0=0; Для Каждого стр из тз цикл Если сокрлп(стр.датаИндексации)<>"" Тогда Если началоМесяца(ДатаИндексацииТ)=дата(КонецМесяца(стр.датаИндексации)+1) Тогда Если СокрЛП(стр.номенклатураинд)<>"" Тогда суммаУслугиВсего=СуммаУслугиВсего+стр.сумма+стр.суммандс; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла;  //ВыбратьСтроки();  //Пока ПолучитьСтроку()=1 Цикл  // Если Дата(КонМесяца(МесяцИндексации)+1)=НачМесяца(ДатаИндексацииТ) Тогда  // Если СокрЛП(ИндексируемаяУслуга)<>"" Тогда  // СуммаУслугиВсего=СуммаУслугиВсего+Всего;  //  // КонецЕсли;  // КонецЕсли;  //КонецЦикла;  // Сч3=2;  //ИтУСЛ = СоздатьОбъект("БухгалтерскиеИтоги");  //ИтУСЛ.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Контрагент,2);  //Если Константа.УчитыватьДоговора=Перечисление.Булево.Да Тогда  // ИтУСЛ.ИспользоватьСубконто(ВидыСубконто.Договоры,Договор,2); Сч3=3;  //КонецЕсли;  //ИтУСЛ.ИспользоватьСубконто(ВидыСубконто.Номенклатура,,1);  //ИтУсл.ВключатьСубсчета(1,0);  //ИтУСЛ.ВыполнитьЗапрос(НачМесяца(ДатаИндексацииТ),КонМесяца(ДатаИндексацииТ),"УСЛ",,,1,,"СК");  // СуммаУслуги20=0; СуммаУслуги10=0; СуммаУслуги0=0; РасчетСумм(СуммаУслуги20,СуммаУслуги10,СуммаУслуги0,НачалоМесяца(ДатаИндексацииТ),КонецМесяца(ДатаИндексацииТ),ДокТ.контрагент,ДокТ.договорконтрагента);  //ИтУсл.ВыбратьСубконто(Сч3);  //Пока ИтУсл.ПолучитьСубконто(Сч3)=1 Цикл  // Если СокрЛП(ИтУсл.Субконто(Сч3))<>"" Тогда  // Если ИтУсл.Субконто(Сч3).СтавкаНДС.Получить(ДатаИндексации).Ставка=20 Тогда  // СуммаУслуги20=СуммаУслуги20+ИтУсл.ДО();  // ИначеЕсли ИтУсл.Субконто(Сч3).СтавкаНДС.Получить(ДатаИндексации).Ставка=10 Тогда  // СуммаУслуги10=СуммаУслуги10+ИтУсл.ДО();  // Иначе  // СуммаУслуги0=СуммаУслуги0+ИтУсл.ДО();  // КонецЕсли;  // КонецЕсли;  //КонецЦикла; Процент20=1;Процент10=0;Процент0=0; Если (СуммаУслуги20+СуммаУслуги10+СуммаУслуги0)<>0 Тогда Процент20=Окр(СуммаУслуги20/(СуммаУслуги20+СуммаУслуги10+СуммаУслуги0),3,1); Процент0=Окр(СуммаУслуги0/(СуммаУслуги20+СуммаУслуги10+СуммаУслуги0),3,1); Процент10=Окр(СуммаУслуги10/(СуммаУслуги20+СуммаУслуги10+СуммаУслуги0),3,1); КонецЕсли; Если (СуммаУслуги10+СуммаУслуги0)=0 Тогда СуммаЗадолженностиНаНачалоМесяца=Окр((СуммаЗадолженностиНаНачалоМесяца)/120*100,2,1); ДвижениеЗаМесяц=Окр(ДвижениеЗаМесяц/120*100,2,1); ЗаМесяцТ=Окр(ЗаМесяцТ/120*100,2,1); ИначеЕсли (СуммаУслуги20+СуммаУслуги0)=0 Тогда СуммаЗадолженностиНаНачалоМесяца=Окр((СуммаЗадолженностиНаНачалоМесяца)/110*100,2,1); ДвижениеЗаМесяц=Окр(ДвижениеЗаМесяц/110*100,2,1); ЗаМесяцТ=Окр(ЗаМесяцТ/110*100,2,1); ИначеЕсли (СуммаУслуги20<>0) или (СуммаУслуги10<>0) или (СуммаУслуги0<>0) Тогда Процент20=Окр(СуммаУслуги20/(СуммаУслуги20+СуммаУслуги10+СуммаУслуги0),3,1); Процент0=Окр(СуммаУслуги0/(СуммаУслуги20+СуммаУслуги10+СуммаУслуги0),3,1); Процент10=Окр(СуммаУслуги10/(СуммаУслуги20+СуммаУслуги10+СуммаУслуги0),3,1); СуммаЗадолженностиНаНачалоМесяца=Окр((СуммаЗадолженностиНаНачалоМесяца*Процент20)/120*100,2,1)+ Окр((СуммаЗадолженностиНаНачалоМесяца*Процент10)/110*100,2,1)+Окр((СуммаЗадолженностиНаНачалоМесяца*Процент0)/100*100,2,1); ДвижениеЗаМесяц=Окр((ДвижениеЗаМесяц*Процент20)/120*100,2,1)+ Окр((ДвижениеЗаМесяц*Процент10)/110*100,2,1)+Окр((ДвижениеЗаМесяц*Процент0)/100*100,2,1); ЗаМесяцТ=Окр((ЗаМесяцТ*Процент20)/120*100,2,1)+ Окр((ЗаМесяцТ*Процент10)/110*100,2,1)+Окр((ЗаМесяцТ*Процент0)/100*100,2,1); КонецЕсли; Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | СУММА(ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СуммаОборот, 0)) КАК сумма, | ХозрасчетныйОборотыДтКт.СубконтоДт3, | ХозрасчетныйОборотыДтКт.СчетДт, | СУММА(ЕСТЬNULL(ХозрасчетныйОборотыДтКт.КоличествоОборотДт, 0)) КАК количество, | ХозрасчетныйОборотыДтКт.СубконтоДт1  //| ХозрасчетныйОборотыДтКт.СубконтоДт2 |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&СДаты, &ПоДату, Период, , , , , ) КАК ХозрасчетныйОборотыДтКт |ГДЕ | ХозрасчетныйОборотыДтКт.СчетДт В ИЕРАРХИИ(&Счет62) | И ХозрасчетныйОборотыДтКт.СубконтоДт1 = &СубконтоКт1 // | И ХозрасчетныйОборотыДтКт.СубконтоДт2 = &СубконтоКт2 | |СГРУППИРОВАТЬ ПО | ХозрасчетныйОборотыДтКт.СубконтоДт3, | ХозрасчетныйОборотыДтКт.СчетДт, | ХозрасчетныйОборотыДтКт.СубконтоДт1"; Запрос.УстановитьПараметр("счет62",Планысчетов.Хозрасчетный.НайтиПоКоду("УСЛ").Ссылка); Запрос.УстановитьПараметр("СубконтоКт1",докт.контрагент);  //Запрос.УстановитьПараметр("СубконтоКт2",докт.договорконтрагента); Запрос.УстановитьПараметр("СДаты",НачалоМесяца(ДатаИндексацииТ)); Запрос.УстановитьПараметр("ПоДату",КонецМесяца(ДатаИндексацииТ)); Рез=Запрос.Выполнить().Выбрать(); сум=0; Пока Рез.Следующий() цикл  //  //ИтУсл.ВыбратьСчета();  //Пока ИтУсл.ПолучитьСчет()=1 Цикл  // Если ИтУсл.счет.этогруппа()=0 Тогда  // ИтУсл.ВыбратьСубконто(Сч3);  // Пока ИтУсл.ПолучитьСубконто(Сч3)=1 Цикл  // Если ИтУсл.Субконто(Сч3).ВидНоменклатуры=Константа.УслугаПоВоде.ВидНоменклатуры Тогда  // УслугаТ=Константа.УслугаПоВодеИнд;  // Иначе  // УслугаТ=Константа.УслугаПоКанализацииИнд;  // КонецЕсли; ЗаМесяц=0; УслугаТ_=Рез.СубконтоДт3//ИтУсл.Субконто(Сч3); СуммаИндексации=0; Примечание=""; СуммаУслуги=0; СуммаУслуги=рез.сумма//ИтУСЛ.ДО("С"); КоличествоУслуги_=рез.количество; КоличествоУслуги= 0; Если ОплатаТек>0 Тогда Если ДвижениеЗаМесяц<>0 Тогда КоличествоУслуги=рез.количество//ИтУСЛ.ДО("К"); КонецЕсли; Иначе КоличествоУслуги=0; КонецЕсли; Для Каждого стр из тз цикл Если сокрлп(стр.датаИндексации)<>"" Тогда Если началоМесяца(ДатаИндексацииТ)=дата(КонецМесяца(стр.датаИндексации)+1) Тогда Если стр.номенклатураинд=УслугаТ_ Тогда суммаУслугиВсего=СуммаУслугиВсего+стр.сумма+стр.суммандс; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла;  //ВыбратьСтроки();  //Пока ПолучитьСтроку()=1 Цикл  // Если Дата(КонМесяца(МесяцИндексации)+1)=НачМесяца(ДатаИндексацииТ) Тогда  // Если УслугаТ_=ИндексируемаяУслуга Тогда  // СуммаУслуги=СуммаУслуги+Всего;  // КонецЕсли;  //  // КонецЕсли;  //КонецЦикла; СуммаДолга=СуммаЗадолженностиНаНачалоМесяца; Если СуммаУслугиВсего<>0 Тогда СуммаДолга=Окр((СуммаЗадолженностиНаНачалоМесяца-ДвижениеЗаМесяц)/СуммаУслугиВсего*СуммаУслуги,2,1); ЗаМесяц= Окр((ЗаМесяцТ)/СуммаУслугиВсего*СуммаУслуги,2,1); КонецЕсли; ЦенаТ=Ценообразование.ПолучитьЦенуНоменклатуры(УслугаТ_, докт.договорконтрагента.ТипЦен, Дата(НачалоМесяца(ДатаИндексацииТ)-1), константы.ВалютаРегламентированногоУчета.Получить().Ссылка, 1, 1);  //ЦенаТ=глПолучитьЦену( "",УслугаТ_, Константа.ТипЦенДляВодыКНС, Дата(НачМесяца(ДатаИндексацииТ)-1),?(Договор.Выбран() = 0,"",Договор.ВалютаДоговора),Курс);  ///Объем задолженности КубовБыло=КоличествоУслуги; Если ЦенаТ<>0 Тогда КубовБыло=Окр(СуммаДолга/ЦенаТ,4,1)+КоличествоУслуги; КонецЕсли; ВсегоКубов=КубовБыло; СуммаДолга=СуммаЗадолженностиНаНачалоМесяца; Если СуммаУслугиВсего<>0 Тогда СуммаДолга=Окр((СуммаЗадолженностиНаНачалоМесяца)/СуммаУслугиВсего*СуммаУслуги,2,1); КонецЕсли; Если КоличествоУслуги<>0 Тогда Если ВсегоКубов<>0 Тогда ЦенаТ=Окр(СуммаДолга/ВсегоКубов,2,1); КонецЕсли; КонецЕсли; ЗаМесК=0; Примечание=" индексации.Долг на нач.мес."+СокрЛП(СуммаЗадолженностиНаНачалоМесяца-ДвижениеЗаМесяц)+"за месяц:"+СокрЛП(ДвижениеЗаМесяц+ЗаМесяц)+" куб.мес:"+СокрЛП(КоличествоУслуги+ЗаМесК)+":"+СокрЛП(Примечание)+ " по услуге(Сумма):"+СокрЛП(СуммаДолга)+":цена на начало месяца:"+СокрЛП(ЦенаТ)+":Кубов(Сумма/Цена):"+ СокрЛП(ВсегоКубов-КоличествоУслуги)+" всего куб:"+СокрЛП(КубовБыло);  //Ит62 = СоздатьОбъект("БухгалтерскиеИтоги");  //Ит62.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Контрагент,2);  //Если Константа.УчитыватьДоговора=Перечисление.Булево.Да Тогда  // Ит62.ИспользоватьСубконто(ВидыСубконто.Договоры,Договор,2);  //КонецЕсли;  //Ит62.ВыполнитьЗапрос(НачМесяца(ДатаИндексацииТ),КонМесяца(ДатаИндексацииТ),СчетПоКоду("62"),,,3,"День","С");  ////////поиск движений за месяц  /// Если (ЗаМесяц<>0) и (КоличествоУслуги_<>0) Тогда  // Ит62.ВыбратьПериоды(); ОплатаТ=""; ДатаН=конецдня(НачалоМесяца(ДатаИндексацииТ)); ДатаК=КонецМесяца(ДатаИндексацииТ); Пока ДатаН<=ДатаК Цикл сум=0; Сум=ПолучитьсуммуДО(НачалоДня(ДатаН),КонецДня(ДатаН),докт.контрагент,докт.договорконтрагента); Если сум>0 Тогда ЦенаТ=Ценообразование.ПолучитьЦенуНоменклатуры(УслугаТ_, докт.договорконтрагента.ТипЦен, КонецДня(ДатаН), константы.ВалютаРегламентированногоУчета.Получить().Ссылка, 1, 1); КонецЕсли; ДатаН=конецдня(КонецДня(ДатаН)+1); КонецЦикла;  //Пока Ит62.ПолучитьПериод()=1 Цикл  // Если Ит62.ДО()<>0 Тогда  // ЦенаТ=глПолучитьЦену( "",УслугаТ_, Константа.ТипЦенДляВодыКНС,Ит62.КонДата,?(Договор.Выбран() = 0,"",Договор.ВалютаДоговора),Курс);  // КонецЕсли;  //КонецЦикла;  // ЦенаТ=Окр(ЗаМесяц/ИтУСЛ.ДО("К"),0,1); ЗаМесК= КоличествоУслуги_//ИтУСЛ.ДО("К"); Примечание=" индексации."+" куб.мес:"+СокрЛП(ЗаМесК)+";"; КонецЕсли; СуммаИндексации=0;  ///проверяем оплату  // Ит62.ВыбратьПериоды(); ОплатаТ=""; ВсегоКубов=ВсегоКубов+ЗаМесК; ДатаН=конецдня(НачалоМесяца(ДатаИндексацииТ)); ДатаК=КонецМесяца(ДатаИндексацииТ); Пока ДатаН<=ДатаК Цикл КофИнд=1; КофИнд=ПолучитьКоф(ДатаН,УслугаТ_,докт.Контрагент,докт.Организация); СуммаОплаты=0; СуммаОплаты=Получитьсуммуоплаты(НачалоДня(ДатаН),КонецДня(ДатаН),докт.контрагент,докт.договорконтрагента); Если СуммаОплаты<>0 Тогда СуммаОплатыТ=0; ЦенаТОпл=Ценообразование.ПолучитьЦенуНоменклатуры(УслугаТ_, докт.договорконтрагента.ТипЦен, КонецДня(ДатаН), константы.ВалютаРегламентированногоУчета.Получить().Ссылка, 1, 1); Если СуммаУслугиВсего<>0 Тогда СуммаОплатыТ=Окр(СуммаОплаты/СуммаУслугиВсего*СуммаУслуги/100*100,2,1); КонецЕсли; СуммаОплатыТ=Окр((СуммаОплатыТ*Процент20)/120*100,2,1)+ Окр((СуммаОплатыТ*Процент10)/110*100,0,1)+Окр((СуммаОплатыТ*Процент0)/100*100,2,1); КубовБылоОпл=0; Если ЦенаТОпл<>0 Тогда КубовБылоОпл=Окр(СуммаОплатыТ/ЦенаТ,4,1); КонецЕсли; Если ВсегоКубов<КубовБылоОпл Тогда КубовБылоОпл=ВсегоКубов; Всегокубов=0; Иначе ВсегоКубов=ВсегоКубов-КубовБылоОпл; КонецЕсли; СуммаИндексацииТ=Окр(СуммаОплатыТ*КофИнд,2)-СуммаОплатыТ;; СуммаИндексации=СуммаИндексации+СуммаИндексацииТ; Примечание=СокрЛП(Примечание)+ " Оплата:"+СокрЛП(СуммаОплаты)+" :"+СокрЛП(формат(датан,"ДФ=dd.MM.yy")+":Оплата услуги:"+СокрЛП(СуммаОплатыТ)+":кубов"+СокрЛП(КубовБылоОпл)+":цена:"+СокрЛП(ЦенаТОпл)+":Сумма индекс.:"+ СокрЛП(СуммаИндексацииТ)); КонецЕсли; ДатаН=конецдня(КонецДня(ДатаН)+1); КонецЦикла; КонецЦикла;  ///осталось кубов  //// Если Константа.ИндексироватьОстаток=Перечисление.Булево.Да Тогда  //////////Если сокрлп(всегокубов)="" Тогда  ////////// всегокубов=0;  //////////КонецЕсли;  //////////Если Всегокубов>0 Тогда  ////////// ЦенаТП=Ценообразование.ПолучитьЦенуНоменклатуры(УслугаТ_,  ////////// докт.договорконтрагента.ТипЦен, КонецДня(Датаиндексации),  ////////// константы.ВалютаРегламентированногоУчета.Получить().Ссылка, 1, 1);  ////////// // ЦенаТП=глПолучитьЦену( "",УслугаТ_, Константа.ТипЦенДляВодыКНС,КонМесяца(Датаиндексации),?(Договор.Выбран() = 0,"",Договор.ВалютаДоговора),Курс);  ////////// СуммаИндексацииТ=Окр(Всегокубов*(ЦенаТП-ЦенаТ),2,1);  ////////// Примечание=СокрЛП(Примечание)+ " осталось кубов:"+СокрЛП(ВсегоКубов)+":цена на дату счета:"+СокрЛП(ЦенаТП)+" (Цена-Цена на нач.) ("+СокрЛП(ЦенаТП)+"-"+СокрЛП(ЦенаТ)+") :Сумма:"+  ////////// СокрЛП(СуммаИндексацииТ);  ////////// СуммаИндексации=СуммаИндексации+СуммаИндексацииТ;  //////////КонецЕсли;  // КонецЕсли; Если СуммаИндексации<>0 Тогда новстрока=ТЗ.Добавить(); Сумма=СуммаИндексации; Всего=СуммаИндексации; СтавкаНДСЧислом = 0; Попытка СтавкаНДС = УслугаТ_.ставкандс; СтавкаНДСЧислом = 0; Если СтавкаНДС = Перечисления.СтавкиНДС.НДС20 ИЛИ СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120 Тогда СтавкаНДСЧислом = 20; ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС10 ИЛИ СтавкаНДС = Перечисления.СтавкиНДС.НДС10_110 Тогда СтавкаНДСЧислом = 10; ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС18 ИЛИ СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118 Тогда СтавкаНДСЧислом = 18;  //1С-Минск ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС909 Тогда СтавкаНДСЧислом = 9.09; ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС1525 Тогда СтавкаНДСЧислом = 15.25; ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС1667 Тогда СтавкаНДСЧислом = 16.67; ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС25 ИЛИ СтавкаНДС = Перечисления.СтавкиНДС.НДС25_125 Тогда СтавкаНДСЧислом = 25;  //1С-Минск КонецЕсли; Исключение КонецПопытки; суммандс=окр(сумма/100*СтавкаНДСЧислом,2,1);  //Индексация=Лев(СокрЛП(Примечание),99);  //Индексация1=Сред(СокрЛП(Примечание),100,99);  //Индексация2=Сред(СокрЛП(Примечание),(99+99+1),99);  //Индексация3=Сред(СокрЛП(Примечание),(99+99+99+1),99);  //Индексация4=Сред(СокрЛП(Примечание),(99+99+99+99+1),99);  //Индексация5=СокрЛП(ИтУсл.Субконто(Сч3))+" за "+СокрЛП(ДатаИндексацииТ); ИндексируемаяУслуга=УслугаТ_; МесяцИндексации=ДатаИндексацииТ; новстрока.номенклатура=Поискинд(УслугаТ_); Новстрока.содержание=сокрлп(примечание)+СокрЛП(УслугаТ_)+" за "+СокрЛП(ДатаИндексацииТ); Новстрока.количество=1; Новстрока.цена=Сумма; Новстрока.сумма=Сумма; Новстрока.ставкандс=УслугаТ_.ставкандс; Новстрока.суммандс=суммандс;  //Новстрока.Всего=Сумма+суммандс; Новстрока.счетдоходов=планысчетов.Хозрасчетный.НайтиПоКоду("90.1.1").Ссылка; Новстрока.субконто=стр.субконто; Новстрока.СчетУчетаНДСПоРеализации=планысчетов.Хозрасчетный.НайтиПоКоду("90.2.1").Ссылка; Новстрока.счетрасходов=планысчетов.Хозрасчетный.НайтиПоКоду("90.4.1").Ссылка; новстрока.номенклатураинд=УслугаТ_; новстрока.ДатаИндексации=МесяцИндексации; КонецЕсли;  //КонецЕсли;  //КонецЦикла; КонецПроцедуры#КонецОбласти | ||
Креатив 2 - 28.05.20 - 13:12 | (0)В сам документ ничего не добавляется. А количество проводок, исходя из этого кода Для Каждого стр Из Источник.услуги Цикл ВидУслуги=ПоискУслуги(стр.номенклатура); Если сокрлп(видуслуги)<>"" Тогда при удачном поиске соответствует количеству строк в таблице документа(источник) услуги. | ||
sergik79 3 - 28.05.20 - 13:28 | немного не понял Вас? | ||
sergik79 4 - 28.05.20 - 13:33 | (2) В сам документ ничего не добавляется. А количество проводок, исходя из этого кода...
это не то место, здесь добавляются проводки забалансовые да... | ||
Ненавижу 1С 5 - 28.05.20 - 13:36 | а в чем отличие между дебетом и кредитом:
Проводка.СчетДт = сч; Проводка.субконтодт.контрагенты=Источник.контраген//Пр; Проводка.субконтодт.Договоры=Источник.ДоговорКонтрагент//Пр; Проводка.субконтодт.Номенклатура=стр.номенклатур//Пр; Проводка.СчетКт = сч; Проводка.субконтокт.контрагенты=Источник.контраген//Пр; Проводка.субконтокт.Договоры=Источник.ДоговорКонтрагент//Пр; Проводка.субконтокт.Номенклатура=стр.номенклатур//Пр; Проводка.Сумма = стр.сумма; Проводка.количестводт = стр.количество; Проводка.количествокт = стр.количество; | ||
sergik79 6 - 28.05.20 - 13:41 | (5) если по забалансовому счету УСЛ.1 и УСЛ.2 то отличий нет...но так нужно чтобы высчитывать индексацию разницу между услугами, которая нужна потом для пропорции при поиске оплаты... | ||
sergik79 7 - 28.05.20 - 13:52 | Не могу понять почему строка не записывается в табличную часть, вернее записывается одна последняя Водоотведение((( | ||
Ненавижу 1С 8 - 28.05.20 - 13:57 | поставить точку на строке НаборЗаписей.Записать();
смотреть сколько строк в наборе, если сколько нужно - дальше анализировать модуль набора записей | ||
sergik79 9 - 28.05.20 - 15:15 | (8) в этой строке уже записываются проводки при нажатии Провести документ..
а табличная часть заполняется до этого, не в ручную добавить, а рассчитывается индексация и добавляется строка с примечаниями... | ||
sergik79 10 - 28.05.20 - 15:28 | ошибка где то в [code]Процедура РасчетИндексации(ТЗ,ДокТ) Экспорт.....................[/code] | ||
hhhh 11 - 28.05.20 - 15:40 | (9) документ при проведении не записывается. Он записывается раньше. Вам-то уже пора знать. | ||
sergik79 12 - 28.05.20 - 15:49 | (11) меня интересует почему в табличной часть не две новых строки учлуги (индексация по водопротреблению и еще одна по воодоотведению) появляются я а одна услуга (водоотведение) |
|
Список тем форума
|