|
v7: Нужна помощь в составлении отчета | ☑ | ||
---|---|---|---|---|
0
Osipov81
11.07.13
✎
09:55
|
Приветствую.
Нужна помощь в составлении отчета. Нужет отчет по расчетам организации. чтобы в одной строчке отображался: -Наименование организации -счет учета -субсчет -наименование контрагента -договор -сальдо начало по Д -Сальдо на начало по К -ОборотД -ОборотК -Сальдо на конец по Д -Сальдо на конец по К Пытался изменить в отчете "Расширенный анализ по субконто" - получилось, но немного кривовато, приходится в эксель еще не нужные строчки удалять. Может у кого-то есть что-то подобное? Подарите !! ;-))) |
|||
1
ДенисЧ
11.07.13
✎
09:56
|
интересно....
А по 10.1 кто будет контрагентом? |
|||
2
zak555
11.07.13
✎
09:56
|
скопируй из него код
|
|||
3
zak555
11.07.13
✎
09:57
|
(1) корсчет ?
|
|||
4
Osipov81
11.07.13
✎
10:00
|
//-----------------------------------------------
Перем Т; Перем Обновить; Перем Расшифровка; Перем Ит; Перем ПланСчетов; Перем ВыбПланСчетов; Перем ПредставлениеРУ; Перем СортировкаСубконто[3]; Перем ВидСубконто[3], Субконто[3], ОтборСубконто[3], ПоГруппам[3], Номер[3]; Перем Сортировка[3], НаправлениеСортировки[3], НапрСортировки[3]; Перем СписокСубконто, ДобавитьСубконто, ОтборСубк; // Таблицы для расчета развернутого сальдо. Перем СумСальдо, КолСальдо; Перем СНДР, СНКР, СКДР, СККР; Перем УровеньГруппировкиДляРасчетаСальдо[3]; Перем ВыборкаИтоговПоГруппеСправочника[3]; //----------------------------------------------- Процедура ПолучитьУровниГруппировокДляРасчетаСальдо() Индекс = 3; Для ТипСуммы = 1 по 3 Цикл УровеньГруппировкиДляРасчетаСальдо[ТипСуммы] = 0; КонецЦикла; ТипСуммы = 0; Пока Индекс > 0 Цикл ТипСуммы = ТипСуммы + 1; // Если установлен режим "разворачивать": Если ОтборСубконто[Индекс] = 1 Тогда УровеньГруппировкиДляРасчетаСальдо[Индекс] = Индекс; КонецЕсли; Индекс = Индекс - 1; КонецЦикла; УровеньГруппировкиДляРасчетаСальдо[1] = 1; КонецПроцедуры // ПолучитьУровниГруппировокДляРасчетаСальдо() //----------------------------------------------- Процедура ДобавитьИтогиПоСубконтоКРазвернутомуСальдо(БухИт, Индекс, ТЗ, ТипСуммы) Если Счет.Выбран() = 0 Тогда Если БухИт.Счет.Забалансовый = 1 Тогда Возврат; КонецЕсли; КонецЕсли; Если (УровеньГруппировкиДляРасчетаСальдо[Индекс] = Индекс) и (ВыборкаИтоговПоГруппеСправочника[Индекс] = 0) Тогда ТЗ.НоваяСтрока(); СН = БухИт.СНД(ТипСуммы) - БухИт.СНК(ТипСуммы); Если СН > 0 Тогда ТЗ.СНД = ТЗ.СНД + СН; Иначе ТЗ.СНК = ТЗ.СНК - СН; КонецЕсли; СК = БухИт.СКД(ТипСуммы) - БухИт.СКК(ТипСуммы); Если СК > 0 Тогда ТЗ.СКД = ТЗ.СКД + СК; Иначе ТЗ.СКК = ТЗ.СКК - СК; КонецЕсли; Если ТипСуммы = 2 Тогда ТЗ.Валюта = БухИт.Валюта; КонецЕсли; КонецЕсли; КонецПроцедуры // ДобавитьИтогиПоСубконтоКРазвернутомуСальдо() //----------------------------------------------- Процедура СобратьСальдоРазвернутое(Суммировать = 0) Если Суммировать = 1 Тогда СНДР = СНДР + СумСальдо.Итог("СНД"); СНКР = СНКР + СумСальдо.Итог("СНК"); СКДР = СКДР + СумСальдо.Итог("СКД"); СККР = СККР + СумСальдо.Итог("СКК"); Иначе СНДР = СумСальдо.Итог("СНД"); СНКР = СумСальдо.Итог("СНК"); СКДР = СумСальдо.Итог("СКД"); СККР = СумСальдо.Итог("СКК"); КонецЕсли; КонецПроцедуры //----------------------------------------------- Процедура РассчитатьСальдоРазвернутоеПоГруппе() КолСальдо.УдалитьСтроки(); СумСальдо.УдалитьСтроки(); ДобавитьИтогиПоСубконтоКРазвернутомуСальдо(Ит, 1, СумСальдо, 1); Если Ит.Счет.Количественный = 1 Тогда ДобавитьИтогиПоСубконтоКРазвернутомуСальдо(Ит, 1, КолСальдо, 3); КонецЕсли; КонецПроцедуры //----------------------------------------------- Процедура УстановитьВладельца(ПоВсем, РУ, Вид, Форма) Назначить = 0; Если ТипЗначенияСтр(РУ) = "Справочник" Тогда Если ПоВсем = 0 Тогда МДСубконто = Метаданные.Справочник(Вид); Если МДСубконто.Выбран() = 1 Тогда Если МДСубконто.Владелец.Выбран() = 1 Тогда Если МДСубконто.Владелец.Идентификатор = РУ.Вид() Тогда Назначить = 1; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; Если Назначить = 1 Тогда Форма.ИспользоватьВладельца(РУ); КонецЕсли; КонецПроцедуры //----------------------------------------------- Функция ПроверкаПериода() Если ПустоеЗначение(Дата1) = 1 Тогда Предупреждение("Не указана дата начала периода отчета!"); Возврат 0; КонецЕсли; Если Дата1 > Дата2 Тогда Предупреждение("Неправильно задан период отчета!"+РазделительСтрок+ "Дата начала больше даты окончания периода."); Возврат 0; КонецЕсли; Если Дата2 > КонецРассчитанногоПериодаБИ() Тогда Предупреждение("За выбранный период итоги не рассчитаны!"+РазделительСтрок+ "Расчет итогов выполняется в режиме"+РазделительСтрок+ """Операции - Управление бухгалтерскими итогами""."); Возврат 0; КонецЕсли; Возврат 1; КонецФункции //----------------------------------------------- Функция ЗначенияВСтроку(Значения) Если ТипЗначенияСтр(Значения) = "СписокЗначений" Тогда С = ""; Для А=1 По Значения.РазмерСписка() Цикл Если А <> 1 Тогда С = С+" "; КонецЕсли; С = С+Значения.ПолучитьЗначение(А); КонецЦикла; Возврат С; Иначе Возврат Значения; КонецЕсли; КонецФункции //----------------------------------------------- Процедура ПоменятьЗначения(А1, А2) А = А1; А1 = А2; А2 = А; КонецПроцедуры //----------------------------------------------- Процедура КопироватьСЗ(Куда, Откуда) Куда.УдалитьВсе(); Для А=1 По Откуда.РазмерСписка() Цикл Куда.ДобавитьЗначение(Откуда.ПолучитьЗначение(А)); КонецЦикла; КонецПроцедуры //----------------------------------------------- Функция РасшифровкаОбновить(Обновить) Расшифровка.Установить("Обновить", Обновить); Возврат Расшифровка; КонецФункции //----------------------------------------------- Процедура Поменять(Поз1, Поз2) ПоменятьЗначения(ВидСубконто[Поз1], ВидСубконто[Поз2]); ПоменятьЗначения(Субконто[Поз1], Субконто[Поз2]); ПоменятьЗначения(ОтборСубконто[Поз1], ОтборСубконто[Поз2]); ПоменятьЗначения(ПоГруппам[Поз1], ПоГруппам[Поз2]); ПоменятьЗначения(Номер[Поз1], Номер[Поз2]); ПоменятьЗначения(Сортировка[Поз1], Сортировка[Поз2]); ПоменятьЗначения(НапрСортировки[Поз1], НапрСортировки[Поз2]); КонецПроцедуры //----------------------------------------------- Процедура ЗаполнитьСортировку(ВыбВидСубконто, ВыбСортировка) Перем Сортировка; Сортировка = ""; Если ВыбСортировка.ТекущаяСтрока() <> 0 Тогда Сортировка = ВыбСортировка.ПолучитьЗначение(ВыбСортировка.ТекущаяСтрока()); КонецЕсли; ВыбСортировка.УдалитьВсе(); ВыбСортировка.ДобавитьЗначение("", "<Стандартная>"); МД = Метаданные.ВидСубконто(ВыбВидСубконто.Идентификатор()); Тип = МД.Тип; Если Тип = "Справочник" Тогда ВыбСортировка.ДобавитьЗначение("Код"); ВыбСортировка.ДобавитьЗначение("Наименование"); Если МД.Вид <> "" Тогда МД = Метаданные.Справочник(МД.Вид); Для А=1 По МД.Реквизит() Цикл ВыбСортировка.ДобавитьЗначение(МД.Реквизит(А).Идентификатор, МД.Реквизит(А).Синоним); КонецЦикла; КонецЕсли; ИначеЕсли Тип = "Документ" Тогда ВыбСортировка.ДобавитьЗначение("ДатаДок", "Дата"); ВыбСортировка.ДобавитьЗначение("НомерДок", "Номер"); Если МД.Вид <> "" Тогда МД = Метаданные.Документ(МД.Вид); Для А=1 По МД.РеквизитШапки() Цикл ВыбСортировка.ДобавитьЗначение(МД.РеквизитШапки(А).Идентификатор, МД.РеквизитШапки(А).Синоним); КонецЦикла; КонецЕсли; КонецЕсли; ВыбСортировка.ТекущаяСтрока(ВыбСортировка.НайтиЗначение(Сортировка)); КонецПроцедуры //----------------------------------------------- Процедура ОбновитьНапрСортировки(Номер, СортПоВозрастанию, СортПоУбыванию) СортПоВозрастанию.Видимость(1-НаправлениеСортировки[Номер]); СортПоУбыванию.Видимость(НаправлениеСортировки[Номер]); КонецПроцедуры //----------------------------------------------- Процедура ПереключитьСортировку(Номер, СортПоВозрастанию, СортПоУбыванию) СортПоВозрастанию.Видимость(НаправлениеСортировки[Номер]); НаправлениеСортировки[Номер] = 1-НаправлениеСортировки[Номер]; СортПоУбыванию.Видимость(НаправлениеСортировки[Номер]); КонецПроцедуры //----------------------------------------------- Процедура ДоступностьСубконто1() Выбран = ВыбВидСубконто1.Выбран(); Форма.ВыбОтборСубконто1.Доступность(Выбран); Форма.ВыбСортировка1.Доступность(?((Выбран = 1) И (ВыбСортировка1.РазмерСписка() > 1), 1, 0)); Форма.ВыбСубконто1.Доступность(Выбран); Форма.ВыбратьСубконто1.Доступность(Выбран); Форма.ДобавитьСубконто1.Доступность(Выбран); Форма.УдалитьСубконто1.Доступность(Выбран); Форма.УдалитьВсеСубконто1.Доступность(Выбран); Форма.СортПоВозрастанию1.Доступность(Выбран); Форма.СортПоУбыванию1.Доступность(Выбран); КонецПроцедуры //----------------------------------------------- Процедура ПриВыбореВидаСубконто1(Очистить = 1) Если Очистить = 1 Тогда ВыбСубконто1.УдалитьВсе(); КонецЕсли; Если ВыбВидСубконто1.Выбран() = 0 Тогда ВыбОтборСубконто1.ТекущаяСтрока(4); ВыбСортировка1.УдалитьВсе(); Иначе Если ВыбСубконто1.РазмерСписка() = 0 Тогда ВыбОтборСубконто1.ТекущаяСтрока(1); КонецЕсли; ЗаполнитьСортировку(ВыбВидСубконто1, ВыбСортировка1); КонецЕсли; ДоступностьСубконто1(); КонецПроцедуры //----------------------------------------------- Процедура ДоступностьСубконто2() Выбран = ВыбВидСубконто2.Выбран(); Форма.ВыбОтборСубконто2.Доступность(Выбран); Форма.ВыбСортировка2.Доступность(?((Выбран = 1) И (ВыбСортировка2.РазмерСписка() > 1), 1, 0)); Форма.ВыбСубконто2.Доступность(Выбран); Форма.ВыбратьСубконто2.Доступность(Выбран); Форма.ДобавитьСубконто2.Доступность(Выбран); Форма.УдалитьСубконто2.Доступность(Выбран); Форма.УдалитьВсеСубконто2.Доступность(Выбран); Форма.СортПоВозрастанию2.Доступность(Выбран); Форма.СортПоУбыванию2.Доступность(Выбран); КонецПроцедуры //----------------------------------------------- Процедура ПриВыбореВидаСубконто2(Очистить = 1) Если Очистить = 1 Тогда ВыбСубконто2.УдалитьВсе(); КонецЕсли; Если ВыбВидСубконто2.Выбран() = 0 Тогда ВыбОтборСубконто2.ТекущаяСтрока(4); ВыбСортировка2.УдалитьВсе(); Иначе Если ВыбСубконто2.РазмерСписка() = 0 Тогда ВыбОтборСубконто2.ТекущаяСтрока(1); КонецЕсли; ЗаполнитьСортировку(ВыбВидСубконто2, ВыбСортировка2); КонецЕсли; ДоступностьСубконто2(); КонецПроцедуры //----------------------------------------------- Процедура ДоступностьСубконто3() Выбран = ВыбВидСубконто3.Выбран(); Форма.ВыбОтборСубконто3.Доступность(Выбран); Форма.ВыбСортировка3.Доступность(?((Выбран = 1) И (ВыбСортировка3.РазмерСписка() > 1), 1, 0)); Форма.ВыбСубконто3.Доступность(Выбран); Форма.ВыбратьСубконто3.Доступность(Выбран); Форма.ДобавитьСубконто3.Доступность(Выбран); Форма.УдалитьСубконто3.Доступность(Выбран); Форма.УдалитьВсеСубконто3.Доступность(Выбран); Форма.СортПоВозрастанию3.Доступность(Выбран); Форма.СортПоУбыванию3.Доступность(Выбран); КонецПроцедуры //----------------------------------------------- Процедура ПриВыбореВидаСубконто3(Очистить = 1) Если Очистить = 1 Тогда ВыбСубконто3.УдалитьВсе(); КонецЕсли; Если ВыбВидСубконто3.Выбран() = 0 Тогда ВыбОтборСубконто3.ТекущаяСтрока(4); ВыбСортировка3.УдалитьВсе(); Иначе Если ВыбСубконто3.РазмерСписка() = 0 Тогда ВыбОтборСубконто3.ТекущаяСтрока(1); КонецЕсли; ЗаполнитьСортировку(ВыбВидСубконто3, ВыбСортировка3); КонецЕсли; ДоступностьСубконто3(); КонецПроцедуры //----------------------------------------------- Процедура ПриВыбореСчета() ВидСубк = ВыбВидСубконто1; НазначитьСчет(ВыбВидСубконто1, Счет, 1); Если Счет.Выбран() = 0 Тогда Форма.ВыбВидСубконто1.Доступность(1); ВыбВидСубконто1 = ВидСубк; Иначе Если Счет.КоличествоСубконто() < 1 Тогда Форма.ВыбВидСубконто1.Доступность(0); КонецЕсли; Если ВыбВидСубконто1 <> ВидСубк Тогда ПриВыбореВидаСубконто1(); КонецЕсли; КонецЕсли; ВидСубк = ВыбВидСубконто2; НазначитьСчет(ВыбВидСубконто2, Счет, 2); Если Счет.Выбран() = 0 Тогда Форма.ВыбВидСубконто2.Доступность(1); ВыбВидСубконто2 = ВидСубк; Иначе Если Счет.КоличествоСубконто() < 2 Тогда Форма.ВыбВидСубконто2.Доступность(0); КонецЕсли; Если ВыбВидСубконто2 <> ВидСубк Тогда ПриВыбореВидаСубконто2(); КонецЕсли; КонецЕсли; ВидСубк = ВыбВидСубконто3; НазначитьСчет(ВыбВидСубконто3, Счет, 3); Если Счет.Выбран() = 0 Тогда Форма.ВыбВидСубконто3.Доступность(1); ВыбВидСубконто3 = ВидСубк; Иначе Если Счет.КоличествоСубконто() < 3 Тогда Форма.ВыбВидСубконто3.Доступность(0); КонецЕсли; Если ВыбВидСубконто3 <> ВидСубк Тогда ПриВыбореВидаСубконто3(); КонецЕсли; КонецЕсли; Если Счет.Выбран() = 0 Тогда Форма.ДанныеПоСубсчетам.Доступность(1); Иначе ДанныеПоСубсчетам = 0; Форма.ДанныеПоСубсчетам.Доступность(0); КонецЕсли; КонецПроцедуры //----------------------------------------------- Процедура ПриВыбореПоВсемСчетам() Если ПоВсемСчетам = 1 Тогда Счет = 0; Форма.Счет.Доступность(0); ПриВыбореСчета(); Иначе Форма.Счет.Доступность(1); КонецЕсли; КонецПроцедуры //----------------------------------------------- Процедура ОбработкаПодбора(ВыбранноеЗначение) РазмерСписка = СписокСубконто.РазмерСписка(); Если (ДобавитьСубконто = 1) Или (СписокСубконто.РазмерСписка() = 0) Тогда СписокСубконто.ДобавитьЗначение(ВыбранноеЗначение); СписокСубконто.ТекущаяСтрока(СписокСубконто.РазмерСписка()); Иначе Позиция = СписокСубконто.ТекущаяСтрока(); СписокСубконто.УстановитьЗначение(Позиция, ВыбранноеЗначение); СписокСубконто.ТекущаяСтрока(Позиция); КонецЕсли; Если ДобавитьСубконто = 1 Тогда Если (РазмерСписка = 0) И (СписокСубконто.РазмерСписка() = 1) И (ОтборСубк.ТекущаяСтрока() = 1) Тогда ОтборСубк.ТекущаяСтрока(3); КонецЕсли; КонецЕсли; КонецПроцедуры //----------------------------------------------- Процедура ВводСубконто(ВыбВидСубконто, ВыбСубконто, РежимПодбора, ДобСубконто, ОтборСубконто) Перем Субк, Форма; Если (ВыбСубконто.РазмерСписка() > 0) И (ВыбСубконто.ТекущаяСтрока() > 0) Тогда Субк = ВыбСубконто.ПолучитьЗначение(ВыбСубконто.ТекущаяСтрока()); КонецЕсли; СписокСубконто = ВыбСубконто; ДобавитьСубконто = ДобСубконто; ОтборСубк = ОтборСубконто; МД = Метаданные.ВидСубконто(ВыбВидСубконто.Идентификатор()); Тип = МД.Тип; Если (Тип = "Справочник") Или (Тип = "Документ") Или (Тип = "Счет") Тогда ТипВид = Тип; Если МД.Вид <> "" Тогда ТипВид = ТипВид+"."+МД.Вид; Иначе СписокВидов = СоздатьОбъект("СписокЗначений"); Если Тип = "Справочник" Тогда Для а = 1 по Метаданные.Справочник() Цикл СписокВидов.ДобавитьЗначение(Метаданные.Справочник(а).Идентификатор, Метаданные.Справочник(а).Представление()); КонецЦикла; ИначеЕсли Тип = "Документ" Тогда Для а = 1 по Метаданные.Документ() Цикл СписокВидов.ДобавитьЗначение(Метаданные.Документ(а).Идентификатор, Метаданные.Документ(а).Представление()); КонецЦикла; КонецЕсли; ВыбВид = ""; Если СписокВидов.ВыбратьЗначение(ВыбВид, "Укажите вид объекта") = 0 Тогда Возврат; КонецЕсли; ТипВид = ТипВид+"."+ВыбВид; КонецЕсли; глРазделительУчета = РазделительУчета; ОткрытьПодбор(ТипВид,,Форма, РежимПодбора, Субк); Если (Тип = "Справочник") Или (Тип = "Счет") Тогда Форма.ВыборГруппы(1); Если Тип = "Справочник" Тогда УстановитьВладельца(ПоВсемРУ, РазделительУчета, МД.Вид, Форма); КонецЕсли; КонецЕсли; ИначеЕсли Тип = "Перечисление" Тогда СписокЗначений = СоздатьОбъект("СписокЗначений"); П = Перечисление.ПолучитьАтрибут(МД.Вид); Для А=1 По П.КоличествоЗначений() Цикл СписокЗначений.ДобавитьЗначение(П.ЗначениеПоНомеру(А)); Если РежимПодбора = 1 Тогда Если ВыбСубконто.НайтиЗначение(П.ЗначениеПоНомеру(А)) <> 0 Тогда СписокЗначений.Пометка(А, 1); КонецЕсли; КонецЕсли; КонецЦикла; Если РежимПодбора = 1 Тогда Если СписокЗначений.ОтметитьЗначения(, "Выберите "+МД.Синоним) = 1 Тогда РазмерСписка = ВыбСубконто.РазмерСписка(); ВыбСубконто.УдалитьВсе(); Для А=1 По СписокЗначений.РазмерСписка() Цикл Если СписокЗначений.Пометка(А) = 1 Тогда ВыбСубконто.ДобавитьЗначение(СписокЗначений.ПолучитьЗначение(А)); КонецЕсли; КонецЦикла; Если ДобавитьСубконто = 1 Тогда Если (РазмерСписка = 0) И (ВыбСубконто.РазмерСписка() = 1) И (ОтборСубк.ТекущаяСтрока() = 1) Тогда ОтборСубк.ТекущаяСтрока(3); КонецЕсли; КонецЕсли; КонецЕсли Иначе Если СписокЗначений.ВыбратьЗначение(Субк, "Выберите "+МД.Синоним) = 1 Тогда ОбработкаПодбора(Субк); КонецЕсли КонецЕсли; Иначе ВвестиЗначение(Субк, "Введите "+Тип, Тип, МД.Длина, МД.Точность); ОбработкаПодбора(Субк); КонецЕсли; КонецПроцедуры //----------------------------------------------- Процедура ПриРедактированииСубконто(ВыбВидСубконто, ВыбСубконто) ВводСубконто(ВыбВидСубконто, ВыбСубконто, 0, 0, ""); КонецПроцедуры //----------------------------------------------- Процедура ПриВыбореСубконто(ВыбВидСубконто, ВыбСубконто, ОтборСубконто) ВводСубконто(ВыбВидСубконто, ВыбСубконто, 0, 1, ОтборСубконто); КонецПроцедуры //----------------------------------------------- Процедура ПриДобавленииСубконто(ВыбВидСубконто, ВыбСубконто, ОтборСубконто) ВводСубконто(ВыбВидСубконто, ВыбСубконто, 1, 1, ОтборСубконто); КонецПроцедуры //----------------------------------------------- Процедура ПриУдаленииСубконто(ВыбСубконто, ОтборСубконто) Если (ВыбСубконто.РазмерСписка() > 0) И (ВыбСубконто.ТекущаяСтрока() > 0) Тогда ВыбСубконто.УдалитьЗначение(ВыбСубконто.ТекущаяСтрока()); Если (ВыбСубконто.РазмерСписка() = 0) И (ОтборСубконто.ТекущаяСтрока() = 3) Тогда ОтборСубконто.ТекущаяСтрока(1); КонецЕсли; КонецЕсли; КонецПроцедуры //----------------------------------------------- Процедура ПриУдаленииВсехСубконто(ВыбСубконто, ОтборСубконто) ВыбСубконто.УдалитьВсе(); Если ОтборСубконто.ТекущаяСтрока() = 3 Тогда ОтборСубконто.ТекущаяСтрока(1); КонецЕсли; КонецПроцедуры //----------------------------------------------- Процедура ЦиклПоСчетам(Индекс) Ит.ВыбратьСчета(); Расшифровка.Установить("Отчет", "КарточкаСчета"); Пока Ит.ПолучитьСчет() = 1 Цикл Расшифровка.Установить("Счет", Ит.Счет); Т.ВывестиСекцию("Секция_4"); Если ((ДанныеПоСубсчетам = 1) и (Ит.Счет.ЭтоГруппа() =0)) или (ДанныеПоСубсчетам <> 1) Тогда ДобавитьИтогиПоСубконтоКРазвернутомуСальдо(Ит, Индекс, СумСальдо, 1); КонецЕсли; Расшифровка.Установить("ПоВалюте", 1); Ит.ВыбратьВалюты(); Пока Ит.ПолучитьВалюту() = 1 Цикл Расшифровка.Установить("Валюта", Ит.Валюта); Т.ВывестиСекцию("Секция_6"); КонецЦикла; Расшифровка.Установить("Валюта"); Расшифровка.Установить("ПоВалюте"); Если Ит.Счет.Количественный = 1 Тогда Т.ВывестиСекцию("Секция_5"); Если ((ДанныеПоСубсчетам = 1) и (Ит.Счет.ЭтоГруппа() <> 0)) или (ДанныеПоСубсчетам <> 1) Тогда ДобавитьИтогиПоСубконтоКРазвернутомуСальдо(Ит, Индекс, КолСальдо, 3); КонецЕсли; КонецЕсли; КонецЦикла; Расшифровка.Установить("Счет"); Расшифровка.Установить("Отчет", "КарточкаСубконто"); КонецПроцедуры //----------------------------------------------- Процедура Сформировать(ФлагЗакрытияФормы = 0) Если (ВыбВидСубконто1.Выбран() = 0) И (ВыбВидСубконто2.Выбран() = 0) И (ВыбВидСубконто3.Выбран() = 0) Тогда Предупреждение("Не указан вид субконто!"); Возврат; КонецЕсли; Если ПроверкаПериода() = 0 Тогда Возврат; КонецЕсли; СумСальдо = СоздатьОбъект("ТаблицаЗначений"); СумСальдо.НоваяКолонка("Валюта"); СумСальдо.НоваяКолонка("СНД", "Число"); СумСальдо.НоваяКолонка("СНК", "Число"); СумСальдо.НоваяКолонка("СКД", "Число"); СумСальдо.НоваяКолонка("СКК", "Число"); КолСальдо = СоздатьОбъект("ТаблицаЗначений"); КолСальдо.НоваяКолонка("Валюта"); КолСальдо.НоваяКолонка("СНД", "Число"); КолСальдо.НоваяКолонка("СНК", "Число"); КолСальдо.НоваяКолонка("СКД", "Число"); КолСальдо.НоваяКолонка("СКК", "Число"); СНДР = 0; СНКР = 0; СКДР = 0; СККР = 0; ВидСубконто[1] = ВыбВидСубконто1; ВидСубконто[2] = ВыбВидСубконто2; ВидСубконто[3] = ВыбВидСубконто3; Субконто[1] = ВыбСубконто1; Субконто[2] = ВыбСубконто2; Субконто[3] = ВыбСубконто3; Если ВидСубконто[1].Выбран() = 1 Тогда ОтборСубконто[1] = ВыбОтборСубконто1.ТекущаяСтрока(); Если ОтборСубконто[1] > 1 Тогда ОтборСубконто[1] = ОтборСубконто[1]-1; КонецЕсли; Иначе ОтборСубконто[1] = 3; КонецЕсли; ПоГруппам[1] = ?(ВыбОтборСубконто1.ТекущаяСтрока()=2, 1, 0); Если ВидСубконто[2].Выбран() = 1 Тогда ОтборСубконто[2] = ВыбОтборСубконто2.ТекущаяСтрока(); Если ОтборСубконто[2] > 1 Тогда ОтборСубконто[2] = ОтборСубконто[2]-1; КонецЕсли; Иначе ОтборСубконто[2] = 3; КонецЕсли; ПоГруппам[2] = ?(ВыбОтборСубконто2.ТекущаяСтрока()=2, 1, 0); Если ВидСубконто[3].Выбран() = 1 Тогда ОтборСубконто[3] = ВыбОтборСубконто3.ТекущаяСтрока(); Если ОтборСубконто[3] > 1 Тогда ОтборСубконто[3] = ОтборСубконто[3]-1; КонецЕсли; Иначе ОтборСубконто[3] = 3; КонецЕсли; ПоГруппам[3] = ?(ВыбОтборСубконто3.ТекущаяСтрока()=2, 1, 0); НапрСортировки[1] = НаправлениеСортировки[1]; НапрСортировки[2] = НаправлениеСортировки[2]; НапрСортировки[3] = НаправлениеСортировки[3]; Если (ВидСубконто[1] = ВидСубконто[2]) И (ОтборСубконто[1] <> 3) И (ОтборСубконто[2] <> 3) Или (ВидСубконто[2] = ВидСубконто[3]) И (ОтборСубконто[2] <> 3) И (ОтборСубконто[3] <> 3) Или (ВидСубконто[3] = ВидСубконто[1]) И (ОтборСубконто[3] <> 3) И (ОтборСубконто[1] <> 3) Тогда Предупреждение("Выбраны одинаковые виды субконто!"); Возврат; КонецЕсли; Если (ВыбСортировка1.РазмерСписка() > 0) И (ВыбСортировка1.ТекущаяСтрока() > 0) Тогда Сортировка[1] = ВыбСортировка1.ПолучитьЗначение(ВыбСортировка1.ТекущаяСтрока()); Иначе Сортировка[1] = ""; КонецЕсли; Если (ВыбСортировка2.РазмерСписка() > 0) И (ВыбСортировка2.ТекущаяСтрока() > 0) Тогда Сортировка[2] = ВыбСортировка2.ПолучитьЗначение(ВыбСортировка2.ТекущаяСтрока()); Иначе Сортировка[2] = ""; КонецЕсли; Если (ВыбСортировка3.РазмерСписка() > 0) И (ВыбСортировка3.ТекущаяСтрока() > 0) Тогда Сортировка[3] = ВыбСортировка3.ПолучитьЗначение(ВыбСортировка3.ТекущаяСтрока()); Иначе Сортировка[3] = ""; КонецЕсли; Номер[1] = 1; Номер[2] = 2; Номер[3] = 3; Если ОтборСубконто[1] > ОтборСубконто[2] Тогда Поменять(1, 2); КонецЕсли; Если ОтборСубконто[2] > ОтборСубконто[3] Тогда Поменять(2, 3); Если ОтборСубконто[1] > ОтборСубконто[2] Тогда Поменять(1, 2); КонецЕсли; КонецЕсли; Расшифровка = СоздатьОбъект("СписокЗначений"); Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ВключатьСубСчета(ДанныеПоСубсчетам); Заголовок = ""; ВыбВидыСубконто = ""; Для А=1 По 3 Цикл Если ОтборСубконто[А] <> 3 Тогда ВыбВидыСубконто = ВыбВидыСубконто+?(А=1, " ", ", ")+Строка(ВидСубконто[А]); Заголовок = Заголовок+?(А=1, "", "; ")+Строка(ВидСубконто[А])+?(ОтборСубконто[А] = 2, ": "+ЗначенияВСтроку(Субконто[А]), ""); Ит.ИспользоватьСубконто(ВидСубконто[А], Субконто[А], ОтборСубконто[А], ПоГруппам[А]); КонецЕсли; КонецЦикла; Если ВыбПланСчетов = 1 Тогда ПланСчетов = ВыбранныйПланСчетов(); КонецЕсли; Ит.ИспользоватьПланСчетов(ПланСчетов); Ит.ИспользоватьРазделительУчета(РазделительУчета); Если Счет.Выбран() = 1 Тогда Ит.Опции(1,1); КонецЕсли; Если Ит.ВыполнитьЗапрос(Дата1, Дата2, Счет) = 0 Тогда Возврат; КонецЕсли; Если (ТипЗначенияСтр(Т) <> "Таблица")ИЛИ(Обновить=0) Тогда Т = СоздатьОбъект("Таблица"); Иначе Т.Очистить(); КонецЕсли; Т.ИсходнаяТаблица("Таблица"); НазваниеОрганизации = глНазваниеОрганизации(Контекст); Если Счет.Выбран() = 1 Тогда НаименованиеОтчета = "Анализ счета "+Счет+" по субконто"; Иначе НаименованиеОтчета = "Анализ субконто"; КонецЕсли; Расшифровка.Установить("Отчет", "РасширенныйАнализСубконто"); Расшифровка.Установить("РазделительУчета", РазделительУчета); Расшифровка.Установить("ПланСчетов", ПланСчетов); Расшифровка.Установить("Обновить", 1); Расшифровка.Установить("Дата1", Дата1); Расшифровка.Установить("Дата2", Дата2); Расшифровка.Установить("Счет", Счет); Для А=1 По 3 Цикл Расшифровка.Установить("ВидСубконто"+Номер[А], ВидСубконто[А]); Расшифровка.Установить("Субконто"+Номер[А], Субконто[А]); Расшифровка.Установить("ПоГруппам"+Номер[А], ПоГруппам[А]); Расшифровка.Установить("ОтборСубконто"+Номер[А], ОтборСубконто[А]); Расшифровка.Установить("Сортировка"+Номер[А], Сортировка[А]); Расшифровка.Установить("НаправлениеСортировки"+Номер[А], НапрСортировки[А]); КонецЦикла; Расшифровка.Установить("ДанныеПоСубсчетам", ДанныеПоСубсчетам); Т.ВывестиСекцию("Секция_12"); Т.ВывестиСекцию("Секция_1"); Расшифровка.УдалитьВсе(); Если Счет.Выбран() = 1 Тогда Расшифровка.Установить("Отчет", "КарточкаСчета"); Иначе Расшифровка.Установить("Отчет", "КарточкаСубконто"); КонецЕсли; Расшифровка.Установить("РазделительУчета", РазделительУчета); Расшифровка.Установить("ПланСчетов", ПланСчетов); Расшифровка.Установить("Дата1", Дата1); Расшифровка.Установить("Дата2", Дата2); Расшифровка.Установить("Счет", Счет); НеВыбраноСубконто = 0; Для А=1 По 3 Цикл Если ОтборСубконто[А] <> 3 Тогда Расшифровка.Установить("ВидСубконто"+Номер[А], ВидСубконто[А]); Расшифровка.Установить("ОтборСубконто"+Номер[А], ОтборСубконто[А]); Расшифровка.Установить("Субконто"+Номер[А], Субконто[А]); Иначе НеВыбраноСубконто = НеВыбраноСубконто + 1; КонецЕсли; КонецЦикла; Если НеВыбраноСубконто = 3 Тогда Предупреждение("Не указан вид субконто!"); Возврат; КонецЕсли; ПолучитьУровниГруппировокДляРасчетаСальдо(); Если ОтборСубконто[1] = 1 Тогда Ит.ВыбратьСубконто(1,,,, 1, Сортировка[1], НапрСортировки[1]); Пока Ит.ПолучитьСубконто(1) = 1 Цикл Расшифровка.Установить("ОтборСубконто"+Номер[1], 2); Расшифровка.Установить("Субконто"+Номер[1], Ит.Субконто()); ВыборкаИтоговПоГруппеСправочника[1] = ?( Счет.Выбран() = 1, 0, Ит.ЭтоГруппа()); Если ОтборСубконто[2] = 1 Тогда Т.ВывестиСекцию("Секция_2"); Ит.ВыбратьСубконто(2,,,, 1, Сортировка[2], НапрСортировки[2]); Пока Ит.ПолучитьСубконто(2) = 1 Цикл Расшифровка.Установить("ОтборСубконто"+Номер[2], 2); Расшифровка.Установить("Субконто"+Номер[2], Ит.Субконто(2)); ВыборкаИтоговПоГруппеСправочника[2] = Макс(Ит.ЭтоГруппа(), ВыборкаИтоговПоГруппеСправочника[1]); Если ОтборСубконто[3] = 1 Тогда Т.ВывестиСекцию("Секция_3"); Ит.ВыбратьСубконто(3,,,, 1, Сортировка[3], НапрСортировки[3]); Пока Ит.ПолучитьСубконто(3) = 1 Цикл Расшифровка.Установить("ОтборСубконто"+Номер[3], 2); Расшифровка.Установить("Субконто"+Номер[3], Ит.Субконто(3)); ВыборкаИтоговПоГруппеСправочника[3] = Макс(Ит.ЭтоГруппа(), ВыборкаИтоговПоГруппеСправочника[2]); Если Счет.Выбран() = 0 Тогда Т.ВывестиСекцию("Секция_10"); ЦиклПоСчетам(3); Т.ВывестиСекцию("Секция_11"); Иначе Т.ВывестиСекцию("Секция_13"); КонецЕсли; КонецЦикла; Расшифровка.Установить("Субконто"+Номер[3]); Расшифровка.Установить("ОтборСубконто"+Номер[3]); Т.ВывестиСекцию("Секция_7"); ИначеЕсли Счет.Выбран() = 0 Тогда Т.ВывестиСекцию("Секция_3"); ЦиклПоСчетам(2); Т.ВывестиСекцию("Секция_7"); Иначе Т.ВывестиСекцию("Секция_14"); КонецЕсли; КонецЦикла; & |
|||
5
zak555
11.07.13
✎
10:00
|
(4) что это ?
|
|||
6
Osipov81
11.07.13
✎
10:03
|
Скопировал из отчета код! (или что-то не так сделал??)
Когда формируешь расширенный анализ субконто по контрагентам и договорам, получается именно то, что необходимо. Я в печатной форме перенес необходимые данные в одну строчку. Все красиво выходит.... но... остаются лишние строчки которые потом в экселе приходится удалять. (Итого... Итого развернуто... колличество...) Хотелось бы без этих строчек. |
|||
7
mikecool
11.07.13
✎
10:03
|
мочи спамера!!! )))
|
|||
8
Osipov81
11.07.13
✎
10:05
|
ей... хорош... я не программер. поэтому в кодах не разбираюсь...
|
|||
9
zak555
11.07.13
✎
10:07
|
(8) высылай кабанчика тогда
|
|||
10
dedmoroz777
11.07.13
✎
10:09
|
(8) закомментируй не нужные тебе Т.ВывестиСекцию("")
|
|||
11
Osipov81
11.07.13
✎
10:09
|
(9) Что такое кабанчик?
|
|||
12
Пронькин
11.07.13
✎
10:28
|
(11) Кабанчик это, видимо, тот, что хрюкал, а сейчас под соусом...
Другими словами, Вам дают совет - нанять специалиста. Хотя, мож, и ошибаюсь - у каждого свои кабанчики :) |
|||
13
Osipov81
11.07.13
✎
10:30
|
(10) Пытаюсь выключить секцию в печатной форме, мне пишет ошибку формирования отчета.
Т.ВывестиСекцию("Секция_7"); \РАБОЧИЙ СТОЛ\РАСЧЕТЫ 1.ERT(791)}: Секция не найдена Секция_7 Нанять проще всего, Если на это бюджет выделяют... а если нет? Ладно Я не знал, что тут исключительно комерческий форум. |
|||
14
Пронькин
11.07.13
✎
10:33
|
Тут НЕ исключительно коммерческий форум!
А выключить секцию, наверное, нужно в модуле отчете, закомментировав нужную строку, а убрав секцию из самого макета получите сообщение об ошибке, что секция не найдена... |
|||
15
markgenuine
11.07.13
✎
11:01
|
Готов помочь, если у вас есть тим вьювер и аська;)
|
|||
16
Osipov81
11.07.13
✎
11:37
|
(14) Спасибо.
Пусть криво, но вроде получил тот отчет который необходимо!!!! Закрываем тему!!!! |
|||
17
Osipov81
11.07.13
✎
11:54
|
А второй вопрос.
Есть ячейк Контрагент Как мне в соседнюю вставить "ИНН Контрагента" |
|||
18
Пронькин
11.07.13
✎
12:51
|
Нужно определить это ИНН, проверив, что это справочник Контрагенты и присвоить переменной ПечИНН = Ит.Субконто().ЮрФизЛицо.ИНН. (я х.з. что за конфа...).ДО проверки определить переменную ПечИНН = "". После эту переменную выводить в новой колонке (или же добавив в существующую, где выводится контрагент).
|
|||
19
zak555
11.07.13
✎
12:52
|
(18) только там ещё и кпп хранится
|
|||
20
Пронькин
11.07.13
✎
12:54
|
Ну да, разберется, надеюсь!
|
|||
21
Эльниньо
11.07.13
✎
15:32
|
(4) Ошибка в 23049280958-й строчке
|
|||
22
Mikeware
11.07.13
✎
15:36
|
(21) в ДНК нет строчек...
|
|||
23
dedmoroz777
11.07.13
✎
15:44
|
(22) в 19368-ом гене
|
|||
24
Darych
11.07.13
✎
15:47
|
тонкий стеб... пишите еще
|
|||
25
zak555
11.07.13
✎
15:49
|
есть порядковый номер кислоты
=) |
|||
26
Darych
11.07.13
✎
15:50
|
порядковый номер нуклеотида
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |