7.7 Присвоить функцию кнопке

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем AlaN, 11 сен 2015.

  1. TopicStarter Overlay
    AlaN
    Offline

    AlaN

    Регистрация:
    7 сен 2015
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    как присвоить функцию кнопке, чтобы когда я делаю взаиморасчёты с контрагентами, при выборе даты и выборе группы контрагентов, я нажимал на кнопку "не оплаченные накладные", автоматически мониторились все накладные, и отсеивались все оплаченные, а отображались неоплаченные за заданный период времени
    Безымянный.jpg
    пример показа на картинке
  2. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    403
    Симпатии:
    71
    Баллы:
    54
    Здравствуйте.
    Вам скорее не кнопка нужна, а флажок. Если он установлен, при формировании отчета будет производиться фильтрация.
  3. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Не, ну можно и кнопку вместо флажка использовать при острой необходимости :)
  4. TopicStarter Overlay
    AlaN
    Offline

    AlaN

    Регистрация:
    7 сен 2015
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    /*******************************************
    Код:
    Процедура Сформировать()
    перем Реж;
    Спис = СоздатьОбъект("СписокЗначений");
    Спис.ДобавитьЗначение(0,"Итоги");
    Спис.ДобавитьЗначение(1,"Кратко");
    Спис.ДобавитьЗначение(2,"Подробно");
    Спис.ДобавитьЗначение(3,"Неоплаченные документы");
    если Спис.ВыбратьЗначение(Реж,"Режим печати",,,1) = 0 тогда
    возврат;
    конецЕсли;
    Спис = 0;
    Если реж=3 Тогда//Неоплаченные документы
    Состояние("Выполняется обработка. Ждите...");
    Таб = СоздатьОбъект("Таблица");
    Заг=1;
    Если ПустаяСтрока(выбПост)<>1 Тогда
    Заг="По "+ВыбПост;
    КонецЕсли;
    Заг1="";
    Таб.ИсходнаяТаблица("Таблица1");
    Таб.ВывестиСекцию("Шапка");
    Рег=создатьОбъект("Регистр.Взаиморасчеты");
    Рег1=создатьОбъект("Регистр.Партии");
    сумДолг4=0;
    СумНадо4=0;
    Табл = СоздатьОбъект("ТаблицаЗначений");
    б=1;
    Табл.НоваяКолонка();
    Табл.НоваяКолонка();
    Табл.НоваяКолонка();
    Табл.НоваяКолонка();
    Табл.НоваяКолонка();
    Таб1 = СоздатьОбъект("ТаблицаЗначений");
    Сп = СоздатьОбъект("СписокЗначений");
    Таб1.НоваяКолонка();
    Таб1.НоваяКолонка();
    Таб1.НоваяКолонка();
    Таб1.НоваяКолонка();
    СпрФ=СоздатьОбъект("Справочник.ФирмыК");
    ин=1;
    Док=СоздатьОБъект("Документ");
    Док.ОбратныйПорядок(1);
    Если ВыбПост.Выбран()=1 Тогда
    Док.ВыбратьПоЗначению(Дата(2004,9,1),ДатаПо,"Поставщик",ВыбПост);
    Иначе
    Док.ВыбратьДокументы(Дата(2004,9,1),ДатаПо);
    КонецЕсли;
    Пока (Док.ПолучитьДокумент()>0) Цикл
    Если Док.проведен()=0 Тогда
    Продолжить;
    КонецЕсли;
    Если (Док.Вид()="ПрихНакладная") Тогда
    Если выбФир.Выбран()=1 Тогда
    Если (Док.Фирма=ВыбФир) Тогда
    Иначе
    Продолжить;
    КонецЕсли;
    КонецЕсли;
    Стр="";
    Если сп.НайтиЗначение(Док.Поставщик)<>0 тогда
    КонецЕсли;
    Если Таб1.НайтиЗначение(Док.Поставщик,Стр,1)=0 Тогда
    Если ПустоеЗначение(выбфир)=1 Тогда
    СумДолг=Рег.СводныйОстаток(Док.Поставщик,,,"Сумма");
    Иначе
    СумДолг=Рег.СводныйОстаток(Док.Поставщик,,ВыбФир,"Сумма");
    КонецЕсли;
    СпрФ.ИспользоватьВладельца(Док.Поставщик);
    СпрФ.ИспользоватьДату(ДатаПо);
    Если СПРФ.НайтиПоРеквизиту("Фирма",Константа.ОснФирма,0)<>0 Тогда
    Срок=СпрФ.Дни;
    ВидР=СпрФ.ПоУмолчанию;
    КонецЕсли;
    СумДолг1=0;
    Если видР=0 Тогда
    Ост=Рег1.СводныйОстаток(,,ВыбФир,Док.Поставщик,"Себестоимость");
    СумДолг1=СумДолг-Ост;
    КонецЕсли;
    Сп.ДобавитьЗначение(Док.Поставщик);
    Если СумДолг>0 Тогда
    Таб1.НоваяСтрока();
    Стр=Таб1.КоличествоСтрок();
    Таб1.УстановитьЗначение(стр,1,Док.Поставщик);
    Таб1.УстановитьЗначение(стр,2,СумДолг);
    Таб1.УстановитьЗначение(стр,3,СумДолг1);
    Таб1.УстановитьЗначение(стр,4,ВидР);
    Иначе
    Сп.ДобавитьЗначение(Док.Поставщик);
    Продолжить;
    Конецесли;
    КонецЕсли;
    СумДолг=Таб1.ПолучитьЗначение(стр,2);
    Если сумДолг<=0 Тогда
    Продолжить;
    КонецЕсли;
    Докум=Док.ТекущийДокумент();
    ПрихДолг=Док.Итог("Сумма");
    Если ПрихДолг<=СумДолг Тогда
    Долг=ПрихДолг;
    СумДолг=СумДолг-ПрихДолг;
    Иначе
    Долг=СумДолг;
    СумДолг=0;
    КонецЕсли;
    Таб1.УстановитьЗначение(стр,2,СумДолг);
    Табл.НоваяСтрока();
    Табл.УстановитьЗначение(ин,1,Докум.ДатаДок);
    Табл.УстановитьЗначение(ин,2,Докум);
    Табл.УстановитьЗначение(ин,3,ПрихДолг);
    Табл.УстановитьЗначение(ин,4,Долг);
    Табл.УстановитьЗначение(ин,5,Докум.Поставщик);
    ин=ин+1;
    КонецЕсли;
    КонецЦикла;
    СумНадо=0; б=1; СумДолг2=0;СумНадо=0;
    Табл.Сортировать("5,1");
    Если Табл.КоличествоСтрок()=0 Тогда
    Предупреждение("Неоплаченных документов нет!");
    Возврат;
    КонецЕсли;
    Пс=Табл.ПолучитьЗначение(1,5);
    Таб.ВывестиСекцию("Контрагент");
    Стр=""; СумДолг1=0;ВидР=1;
    Если таб1.НайтиЗначение(Пс,Стр,1)<>0 Тогда
    Если таб1.ПолучитьЗначение(Стр,4)=0 Тогда
    ВидР= таб1.ПолучитьЗначение(Стр,4);
    СумДолг1=таб1.ПолучитьЗначение(Стр,3);
    КонецЕсли;
    КонецЕсли;
    Для ин=1 По Табл.КоличествоСтрок() Цикл
    Если Пс<>Табл.ПолучитьЗначение(ин,5) Тогда
    Таб.ВывестиСекцию("Итог");
    СумДолг4=СумДолг4+СумДолг2;
    СумНадо4=СумНадо4+СумНадо;
    Пс=Табл.ПолучитьЗначение(ин,5);
    Таб.ВывестиСекцию("Контрагент");
    Стр=""; СумДолг1=0;ВидР=1;
    Если таб1.НайтиЗначение(Пс,Стр,1)<>0 Тогда
    Если таб1.ПолучитьЗначение(Стр,4)=0 Тогда
    СумДолг1=таб1.ПолучитьЗначение(Стр,3);
    ВидР= таб1.ПолучитьЗначение(Стр,4);
    КонецЕсли;
    КонецЕсли;
    СумДолг2=0;
    СумНадо=0;
    б=0;
    КонецЕсли;
    Докум=Табл.ПолучитьЗначение(ин,2);
    ПрихДолг=Табл.ПолучитьЗначение(ин,3);
    Долг=Табл.ПолучитьЗначение(ин,4);
    СумДолг2=СумДолг2+Долг;
    Если ВидР=0 Тогда
    Надо=?(СумДолг1>Долг,Долг,СумДолг1);
    СумДолг1=?(СумДолг1>Долг,СумДолг1-Долг,0);
    Иначе
    Надо=?(Докум.ДатаОплаты>ДатаПо,0,Долг);
    КонецЕсли;
    СумНадо=СумНадо+Надо;
    Таб.ВывестиСекцию("Док");
    КонецЦикла;
    Таб.ВывестиСекцию("Итог");
    СумДолг4=СумДолг4+СумДолг2;
    СумНадо4=СумНадо4+СумНадо;
    Если СумНадо4<>СумНадо Тогда
    Таб.ВывестиСекцию("Всего");
    КонецЕсли;
    ОчиститьОкноСообщений();
    Таб.Опции(0,0,5,0,0);
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Взаиморасчеты","");
    Возврат;
    КонецЕсли;
    ТекстЗапроса = "Период с ДатаС";
    если ДатаПо >= ПолучитьДатуТА() тогда
    ТекстЗапроса = ТекстЗапроса + ";";
    иначе
    ТекстЗапроса = ТекстЗапроса + " по ДатаПо;";
    конецЕсли;
    ТекстЗапроса = ТекстЗапроса +  "//{{ЗАПРОС(хочу)
    |Контрагент = Регистр.Взаиморасчеты.Контрагент;
    |ВидЗакупки = Регистр.Взаиморасчеты.ВидЗакупки;
    |Фирма = Регистр.Взаиморасчеты.Фирма;
    |Сум = Регистр.Взаиморасчеты.Сумма;
    |Докум = Регистр.Взаиморасчеты.ТекущийДокумент;
    |Проект = Регистр.Взаиморасчеты.ТекущийДокумент.Проект;
    |Функция Сумма = КонОст(Сум);
    |Функция НачДолг = НачОст(Сум);
    |Функция ПрихДолг = Приход(Сум);
    |Функция РасхДолг = Расход(Сум);
    |"//}}ЗАПРОС
    ;
    Если Проект = 1 тогда
    ТекстЗапроса = ТекстЗапроса + "Группировка Проект;
      |Группировка Контрагент " + ?(БезГрупп = 1, "Без Групп", "") + " упорядочить по " + ?(Упорядочить = 1, "Контрагент.Наименование", "Сумма") + ";"//Контрагент.Наименование;";//
    Иначе
    ТекстЗапроса = ТекстЗапроса + "Группировка Контрагент " + ?(БезГрупп = 1, "Без Групп", "") + " упорядочить по " + ?(Упорядочить = 1, "Контрагент.Наименование", "Сумма") + ";"//Контрагент.Наименование;";
    конецЕсли;
    Итог=0;
    если Реж = 2 тогда
    ТекстЗапроса = ТекстЗапроса + "Группировка Докум упорядочить по Докум.ДатаДок;";
    конецЕсли;
    если выбПост.Выбран()=1 тогда
    если выбПост.ЭтоГруппа()=1 тогда
    ТекстЗапроса = ТекстЗапроса + "Условие (Контрагент.ПринадлежитГруппе(выбПост)=1);";
    Заг = "По контрагентам группы "+выбПост.Наименование;
    иначе
    ТекстЗапроса = ТекстЗапроса + "Условие (Контрагент = выбПост);";
    Заг = "По контрагенту " + выбПост.Наименование;
    конецЕсли;
    иначе
    Заг = "По всем конрагентам";
    конецЕсли;
    если выбВид.Выбран() = 1 тогда
    Заг1 = Заг1 + ", По "+строка(выбВид);
    ТекстЗапроса = ТекстЗапроса + "Условие (ВидЗакупки = выбВид);";
    иначе
    Заг1 = Заг1 + ", По всем взаиморасчетам";
    конецЕсли;
    если выбФир.Выбран() = 1 тогда
    Заг1 = Заг1 + ", По "+строка(выбФир);
    ТекстЗапроса = ТекстЗапроса + "Условие (Фирма = выбФир);";
    иначе
    Заг1 = Заг1 + ", По всем фирмам";
    конецЕсли;
    если ВыбПроект.Выбран() = 1 тогда
    Заг1 = Заг1 + ", По проекту: "+строка(ВыбПроект);
    ТекстЗапроса = ТекстЗапроса + "Условие (Проект = ВыбПроект);";
    иначе
    Заг1 = Заг1 + ", По всем проектам";
    конецЕсли;
    Запрос = СоздатьОбъект("Запрос");
    Запрос.ВключитьSQL(1);
    если Запрос.Выполнить(ТекстЗапроса) = 0 тогда
    возврат;
    конецЕсли;
    Таб = СоздатьОбъект("Таблица");
    если Реж = 0 тогда
    Таб.ИсходнаяТаблица("Итоги");
    конецЕсли;
    Таб.ВывестиСекцию("Шапка");
    НачДолг=0;
    ПрихДолг=0;
    РасхДолг=0;
    КонДолг=0;
    Прих1=0;
    Расх1=0;
    Если Проект = 1 Тогда
    пока Запрос.Группировка("Проект") = 1 цикл
    Таб.ВывестиСекцию("Проект");
    пока Запрос.Группировка("Контрагент") = 1 цикл
    Если (НашДолг = 0) И (Запрос.Сумма > 0) Тогда
    Продолжить
    КонецЕсли//НашДолг = 1
    Если (Нулевые = 0) И (Запрос.Сумма = 0) Тогда
    Продолжить
    КонецЕсли//Нулевые = 1
    Если (ДолгКонтрагента = 0) И (Запрос.Сумма < 0) Тогда
    Продолжить
    КонецЕсли//ДолгКонтрагента = 1
    если Запрос.Контрагент.ЭтоГруппа()=1 тогда
    Таб.ВывестиСекцию("Группа");
    иначе
    Таб.ВывестиСекцию("Контрагент");
    НачДолг=НачДолг+Запрос.НачДолг;
    ПрихДолг=ПрихДолг+Запрос.ПрихДолг;
    РасхДолг=РасхДолг+Запрос.РасхДолг;
    КонДолг=КонДолг+Запрос.Сумма;
    конецЕсли;
    Итог=Итог+Запрос.Сумма;
    если Реж = 2 тогда
    Сум1 = Запрос.НачДолг;
    Пока Запрос.Группировка("Докум")=1 цикл
    если Запрос.Докум.Выбран()=1 тогда
    Прих1=Прих1+Запрос.ПрихДолг;
    Расх1=Расх1+Запрос.РасхДолг;
    Сум1=Сум1+Запрос.ПрихДолг-Запрос.РасхДолг;
    Таб.ВывестиСекцию("Докум");
    конецЕсли;
    КонецЦикла;
    конецЕсли;
    конецЦикла;
    конецЦикла;
    Иначе
    пока Запрос.Группировка("Контрагент") = 1 цикл
    Если (НашДолг = 0) И (Запрос.Сумма > 0) Тогда
    Продолжить
    КонецЕсли//НашДолг = 1
    Если (Нулевые = 0) И (Запрос.Сумма = 0) Тогда
    Продолжить
    КонецЕсли//Нулевые = 1
    Если (ДолгКонтрагента = 0) И (Запрос.Сумма < 0) Тогда
    Продолжить
    КонецЕсли//ДолгКонтрагента = 1
    если Запрос.Контрагент.ЭтоГруппа()=1 тогда
    Таб.ВывестиСекцию("Группа");
    иначе
    Таб.ВывестиСекцию("Контрагент");
    НачДолг=НачДолг+Запрос.НачДолг;
    ПрихДолг=ПрихДолг+Запрос.ПрихДолг;
    РасхДолг=РасхДолг+Запрос.РасхДолг;
    КонДолг=КонДолг+Запрос.Сумма;
    конецЕсли;
    Итог=Итог+Запрос.Сумма;
    если Реж = 2 тогда
    Сум1 = Запрос.НачДолг;
    Пока Запрос.Группировка("Докум")=1 цикл
    если Запрос.Докум.Выбран()=1 тогда
    Прих1=Прих1+Запрос.ПрихДолг;
    Расх1=Расх1+Запрос.РасхДолг;
    Сум1=Сум1+Запрос.ПрихДолг-Запрос.РасхДолг;
    Таб.ВывестиСекцию("Докум");
    конецЕсли;
    КонецЦикла;
    конецЕсли;
    конецЦикла;
    КонецЕсли//Проект = 1
    Таб.ВывестиСекцию("Подвал");
    Таб.Опции(0,0,5,0,0);
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Взаиморасчеты","");
    КонецПроцедуры
    
    
    ДатаС = Мин(ПолучитьДатуТА(),НачМесяца(РабочаяДата()));
    ДатаПо = РабочаяДата();
    Вот мой код, куда и какой код мне нужен для флажка?
    Последнее редактирование модератором: 11 сен 2015
  5. ТехБухПривет
    Offline

    ТехБухПривет Профессионал в 1С Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    504
    Симпатии:
    53
    Баллы:
    54
    Создаете реквизит число - с длиной 1 устанавливаете на форме в виде флажка, далее у вас идет запрос - в него встраиваете условие получающее параметр данного реквизита и в зависимости от него добавляете условие необходимое вам или пустое поле если флажок ноль...

    Код оформляйте пожалуйста следующим образом:

    screenshot.2015-09-09 12.23.30.jpg
  6. TopicStarter Overlay
    AlaN
    Offline

    AlaN

    Регистрация:
    7 сен 2015
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    хорошо звиняйте, не знал, исправлюсь ;)
  7. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    В след.раз предупреждение :)
  8. TopicStarter Overlay
    AlaN
    Offline

    AlaN

    Регистрация:
    7 сен 2015
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    хорошо, а по вопросу помочь можете7
    Последнее редактирование: 11 сен 2015
  9. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Вам же уже все объяснили, что не получается - то ??? Код за вас написать ???
  10. TopicStarter Overlay
    AlaN
    Offline

    AlaN

    Регистрация:
    7 сен 2015
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Если не трудно
  11. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    В семерке не особо :)
  12. TopicStarter Overlay
    AlaN
    Offline

    AlaN

    Регистрация:
    7 сен 2015
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    не верю
  13. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104

Поделиться этой страницей