8.х Печатная форма для документа операция Бух

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

  1. TopicStarter Overlay
    notaSS
    Offline

    notaSS Опытный в 1С

    Регистрация:
    22 ноя 2014
    Сообщения:
    73
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте. Создаю печатную форму для документа операция Бух. По условию нужно,чтобы форма печаталась, если в проводках счет 012 и в дебете и в кредите(без склада), либо если счета мц. В противном случае нужно вывести сообщение , что нет данных для печати. Я сделала так

    Код:
    Пока ВыборкаДвижений.Следующий() Цикл
            Если ВыборкаДвижений.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("012") и ВыборкаДвижений.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("012")Тогда
    
            СтрокаТаблицы.Параметры.НомерСтроки = нс;
            //СтрокаТаблицы.Параметры.склад = ВыборкаДвижений.СубконтоДт2;
            СтрокаТаблицы.Параметры.Товар = ВыборкаДвижений.СубконтоДт1;
            СтрокаТаблицы.Параметры.Количество = ВыборкаДвижений.КоличествоДт;
    
    Код:
    ИначеЕсли
        ВыборкаДвижений.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("МЦ.04.01") и ВыборкаДвижений.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("МЦ.04.01")
    Как мне поставить условие, что если не соблюдаются первые два,выводим сообщение пользователю. Дело в том, что если я в цикл вставляю, это сообщение дублируется в зависимости от количества строк., а мне нужно один раз.
    Если пишу так, то вообще не реагирует
    Код:
    ВыборкаДвижений = Запрос.Выполнить().Выбрать();
        Если  ВыборкаДвижений.СчетДт <> ВыборкаДвижений.СчетКт Тогда
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = "Нет данных для печати!";
            Сообщение.Сообщить();
            КонецЕсли;
    
  2. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.438
    Симпатии:
    373
    Баллы:
    104
    вот так прям 12 и в дебите и кредите? и МЦ.04 тоже?

    по вашему условию по идее так должно быть
    Код:
    ЕСЛИ ВыборкаДвижений.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("012") ИЛИ ВыборкаДвижений.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("012") ИЛИ
    ВыборкаДвижений.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("МЦ.04.01") ИЛИ ВыборкаДвижений.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("МЦ.04.01") ТОГДА
    // печатаем
    ИНАЧЕ
    // выводим сообщение
    КОНЕЦЕСЛИ;
    --- Объединение сообщений, 9 мар 2015 ---
    лучше конструкции типа "ПланыСчетов.Хозрасчетный.НайтиПоКоду("012")" определить заранее в переменую и потом сравнивать просто значение, а не искать в цикле
  3. TopicStarter Overlay
    notaSS
    Offline

    notaSS Опытный в 1С

    Регистрация:
    22 ноя 2014
    Сообщения:
    73
    Симпатии:
    0
    Баллы:
    26
    12 и в дебете и в кредите, внутреннее перемещение.
  4. Катюфка
    Offline

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

    Регистрация:
    3 июн 2013
    Сообщения:
    411
    Симпатии:
    72
    Баллы:
    54
    Здравствуйте.
    Такие вещи делаются обычно с помощью переменной. Вы делаете ее равной 0 (пустая строка, Ложь и т.п. - на Ваш вкус). Как только появляется невыполненное условие, меняете ее на противоположное значение. Если хотя бы раз условие не выполнено, то на выходе из цикла в вашей переменной будет 1 ("Вывести сообщение", Истина и т.п.). По нему выводите сообщение пользователю.

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