×
Показано с 1 по 2 из 2

Тема: 1с 7.7 Отчет

  1. #1
    Аноним
    Гость

    Эврика 1с 7.7 Отчет

    Вот такое вот задание:
    пользователь выбирает счет, задает период и вид функции (СНД, СНК, ДО,

    КО, СКД или СКК), а также задает, по каким видам субконто и в каком

    порядке разворачивать.

    Визуально выбор видов субконто сделать в виде выпадающих списков

    (как в аутлуке - см. рис., только списки, без галок и переключателей).

    При написании отчета обратить внимание на оптимизацию кода.


    Вот решение:

    Перем Т;
    Перем Ит;
    Перем Заголовок;
    Перем Опер;
    Перем стр;
    Перем ДебитовоеСальдо;
    Перем КредитовоеСальдо;
    Перем ДебитовоеСальдоКонец;
    Перем КредитовоеСальдоКонец;
    Перем ДебитовыйОборот;
    Перем КредитовыйОборот;
    //Перем НомерСуб;


    Процедура ВывестиОбл()
    НомерФункции = ВыборВидаФункции.ПорядковыйНомер();
    Если НомерФункции = 1 Тогда
    ДебитовоеСальдо=Ит.СНД(ВыбСчет);
    Т.ВывестиСекцию("снд1");
    иначеЕсли НомерФункции = 2 Тогда
    КредитовоеСальдо=Ит.СНК(ВыбСчет);
    Т.ВывестиСекцию("снк1");
    иначеЕсли НомерФункции = 3 Тогда
    ДебитовоеСальдоКонец=Ит.СКД(ВыбСчет);
    Т.ВывестиСекцию("скд1");
    иначеЕсли НомерФункции = 4 Тогда
    КредитовоеСальдоКонец=Ит.СКК(ВыбСчет);
    Т.ВывестиСекцию("скк1");
    иначеЕсли НомерФункции = 5 Тогда
    ДебитовыйОборот=Ит.ДО(ВыбСчет);
    Т.ВывестиСекцию("до1");
    иначеЕсли НомерФункции = 6 Тогда
    КредитовыйОборот=Ит.КО(ВыбСчет);
    Т.ВывестиСекцию("ко1");
    КонецЕсли;

    КонецПроцедуры

    Процедура Сформировать()

    Если ВыбСчет.Выбран() = 0 Тогда
    Предупреждение("Не указан счет!");
    Возврат;
    КонецЕсли;
    Если ВыборВидаФункции.Выбран() = 0 Тогда
    Предупреждение("Не указан вид функции!");
    Возврат;
    КонецЕсли;
    Т = СоздатьОбъект("Таблица");
    //Т.ИсходнаяТаблица("Таблица1");

    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Если ВыбВидСубконто1.ТекущаяСтрока() > 0 Тогда
    Ит.ИспользоватьСубконто(ВыбВидСубконто1.ПолучитьЗначение(ВыбВидСубконто1.ТекущаяСтрока(),стр),,1);
    КонецЕсли;
    Если ВыбВидСубконто2.ТекущаяСтрока() > 0 Тогда
    Ит.ИспользоватьСубконто(ВыбВидСубконто2.ПолучитьЗначение(ВыбВидСубконто2.ТекущаяСтрока(),стр),,1);
    КонецЕсли;
    Если ВыбВидСубконто3.ТекущаяСтрока() > 0 Тогда
    Ит.ИспользоватьСубконто(ВыбВидСубконто3.ПолучитьЗначение(ВыбВидСубконто3.ТекущаяСтрока(),стр),,1);
    КонецЕсли;
    Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, ВыбСчет,,, 1,,"С");
    //Заголовок = "Карточка счета: "+ВыбСчет;

    Т.ВывестиСекцию("Секция_1");

    //Т.ВывестиСекцию("Шапка");

    //Т.Опции(0,0,Таб.ВысотаТаблицы(),0);


    НомерСуб = 1;
    Если ВыбВидСубконто1.ТекущаяСтрока() > 0 Тогда
    Ит.ВыбратьСубконто(НомерСуб);
    НомерСуб = НомерСуб + 1;
    Субконто = ВыбВидСубконто1.ПолучитьЗначение(ВыбВидСубконто1.ТекущаяСтрока(),стр);
    Т.ВывестиСекцию("Суб1");
    ВывестиОбл();

    КонецЕсли;
    Если ВыбВидСубконто2.ТекущаяСтрока() > 0 Тогда
    Ит.ВыбратьСубконто(НомерСуб);
    НомерСуб = НомерСуб + 1;
    Субконто = ВыбВидСубконто2.ПолучитьЗначение(ВыбВидСубконто2.ТекущаяСтрока(),стр);
    Т.ВывестиСекцию("Суб1");
    ВывестиОбл();
    КонецЕсли;
    Если ВыбВидСубконто3.ТекущаяСтрока() > 0 Тогда
    Ит.ВыбратьСубконто(НомерСуб);
    НомерСуб = НомерСуб + 1;
    Субконто = ВыбВидСубконто3.ПолучитьЗначение(ВыбВидСубконто3.ТекущаяСтрока(),стр);
    Т.ВывестиСекцию("Суб1");
    ВывестиОбл();
    КонецЕсли;

    ВывестиОбл();
    Т.ТолькоПросмотр(1);
    Т.Показать();

    КонецПроцедуры


    Процедура ПриОткрытии()

    //{{ИНИЦИАЛИЗАЦИЯ БУХГАЛТЕРСКОГО ЗАПРОСА(Сформировать)

    ВыбНачПериода = НачалоПериодаБИ();
    ВыбКонПериода = КонецПериодаБИ();
    //{{ИНИЦИАЛИЗАЦИЯ БУХГАЛТЕРСКОГО ЗАПРОСА




    КонецПроцедуры

    Процедура ПриВыбореСчета()
    Перем ВидСубконто;
    Если ВыбСчет.КоличествоСубконто() > 0 Тогда
    ВыбВидСубконто1.УдалитьВсе();
    ВыбВидСубконто2.УдалитьВсе();
    ВыбВидСубконто3.УдалитьВсе();
    ВидСубконто = ВыбСчет.ВидСубконто(1);
    ВыбВидСубконто1.ДобавитьЗначение(ВидСубконто, ВидСубконто.Идентификатор());
    Доступность = 1;
    Иначе
    ВыбВидСубконто1.УдалитьВсе();
    Доступность = 0;
    КонецЕсли;
    Форма.ВыбВидСубконто1.Доступность(Доступность);
    Форма.ОчиститьСубконто1.Доступность(Доступность);
    Если ВыбСчет.КоличествоСубконто() > 1 Тогда
    ВыбВидСубконто2.УдалитьВсе();
    ВыбВидСубконто3.УдалитьВсе();
    ВидСубконто = ВыбСчет.ВидСубконто(1);
    ВыбВидСубконто2.ДобавитьЗначение(ВидСубконто, ВидСубконто.Идентификатор());
    ВидСубконто = ВыбСчет.ВидСубконто(2);
    ВыбВидСубконто1.ДобавитьЗначение(ВидСубконто, ВидСубконто.Идентификатор());
    ВыбВидСубконто2.ДобавитьЗначение(ВидСубконто, ВидСубконто.Идентификатор());
    Доступность = 1;
    Иначе
    Доступность = 0;
    КонецЕсли;
    Форма.ВыбВидСубконто2.Доступность(Доступность);
    Форма.ОчиститьСубконто2.Доступность(Доступность);
    Если ВыбСчет.КоличествоСубконто() > 2 Тогда
    ВыбВидСубконто3.УдалитьВсе();
    ВидСубконто = ВыбСчет.ВидСубконто(1);
    ВыбВидСубконто3.ДобавитьЗначение(ВидСубконто, ВидСубконто.Идентификатор());
    ВидСубконто = ВыбСчет.ВидСубконто(2);
    ВыбВидСубконто3.ДобавитьЗначение(ВидСубконто, ВидСубконто.Идентификатор());
    ВидСубконто = ВыбСчет.ВидСубконто(3);
    ВыбВидСубконто1.ДобавитьЗначение(ВидСубконто, ВидСубконто.Идентификатор());
    ВыбВидСубконто2.ДобавитьЗначение(ВидСубконто, ВидСубконто.Идентификатор());
    ВыбВидСубконто3.ДобавитьЗначение(ВидСубконто, ВидСубконто.Идентификатор());
    Доступность = 1;
    Иначе
    Доступность = 0;
    КонецЕсли;
    Форма.ВыбВидСубконто3.Доступность(Доступность);
    Форма.ОчиститьСубконто3.Доступность(Доступность);

    КонецПроцедуры



    Процедура ПриОчиститьСубконто1()
    ВыбВидСубконто1.ТекущаяСтрока(0);
    КонецПроцедуры

    Процедура ПриОчиститьСубконто2()
    ВыбВидСубконто2.ТекущаяСтрока(0);
    КонецПроцедуры

    Процедура ПриОчиститьСубконто3()
    ВыбВидСубконто3.ТекущаяСтрока(0);
    КонецПроцедуры

    Процедура ПриВыбореВидаСубконто1()
    Если (ВыбВидСубконто1.ТекущаяСтрока() = ВыбВидСубконто2.ТекущаяСтрока()) ИЛИ (ВыбВидСубконто1.ТекущаяСтрока() = ВыбВидСубконто3.ТекущаяСтрока()) Тогда
    ВыбВидСубконто1.ТекущаяСтрока(0);
    Предупреждение("Это субконто уже выбрано!");
    КонецЕсли;
    КонецПроцедуры

    Процедура ПриВыбореВидаСубконто2()
    Если (ВыбВидСубконто2.ТекущаяСтрока() = ВыбВидСубконто1.ТекущаяСтрока()) ИЛИ (ВыбВидСубконто2.ТекущаяСтрока() = ВыбВидСубконто3.ТекущаяСтрока()) Тогда
    ВыбВидСубконто2.ТекущаяСтрока(0);
    Предупреждение("Это субконто уже выбрано!");
    КонецЕсли;
    КонецПроцедуры

    Процедура ПриВыбореВидаСубконто3()
    Если (ВыбВидСубконто3.ТекущаяСтрока() = ВыбВидСубконто1.ТекущаяСтрока()) ИЛИ (ВыбВидСубконто3.ТекущаяСтрока() = ВыбВидСубконто2.ТекущаяСтрока()) Тогда
    ВыбВидСубконто3.ТекущаяСтрока(0);
    Предупреждение("Это субконто уже выбрано!");
    КонецЕсли;
    КонецПроцедуры




    Является ли это решение правильным?
    Поделиться с друзьями

  2. #2
    Клерк-клерик Аватар для Octopus
    Регистрация
    04.12.2008
    Адрес
    Пермь
    Сообщений
    2,187
    Это что, из заданий по аттестации?
    Цитата Сообщение от Аноним Посмотреть сообщение
    (как в аутлуке - см. рис., только списки, без галок и переключателей).
    Простите, а где рис.?

    Цитата Сообщение от Аноним Посмотреть сообщение
    Перем ДебитовоеСальдо;
    Перем ДебитовоеСальдоКонец;
    Перем ДебитовыйОборот;
    Вообще-то, дебетовое

    Цитата Сообщение от Аноним Посмотреть сообщение
    Является ли это решение правильным?
    Возможно. Но вы бы лучше готовую обработку прикрепили. И комментариев побольше в тексте.
    Если бы я не был программистом, я б наверное хирургом стал. Люблю, знаете ли, покопаться во всякой фигне непонятной...

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)