7.7 НачОстаток КонОстаток

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

  1. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Подскажите пожалуйста почему у меня запрос не считает начальный остаток и конечный?? Везде выводит нули. А вот Приход и расход показывает правильно!
    Что я не так сделал?

    Код:
    Процедура ВыборДокументов()
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(ВыборДокументов)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Сотрудник = Регистр.ОплатаТруда.Сотрудник;
    |Сумма = Регистр.ОплатаТруда.Сумма;
    |ТипДвижений = Регистр.ОплатаТруда.ТипДвижений;
    |Основание = Регистр.ОплатаТруда.Основание;
    |Функция СуммаРубНачОст = НачОст(Сумма);
    |Функция СуммаРубПриход = Приход(Сумма);
    |Функция СуммаРубРасход = Расход(Сумма);
    |Функция СуммаРубКонОст = КонОст(Сумма);
    |Группировка Документ;
    |Условие(Сотрудник = ВыбСотрудник);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;
    
    Пока Запрос.Группировка(1) = 1 Цикл
    ТЗ.НоваяСтрока();
    ТЗ.Документ=Запрос.Документ;
    ТЗ.НачОстаток=Запрос.СуммаРубНачОст; 
    ТЗ.КонОстаток=Запрос.СуммаРубКонОст; 
    ТЗ.СуммаНачисления=Запрос.СуммаРубПриход; 
    ТЗ.СуммаСписания=Запрос.СуммаРубРасход; 
    ТЗ.Основание=СокрЛП(Запрос.Основание);
    КонецЦикла;
    КонецПроцедуры
    
    
  2. Бухгалтерский угодник
    Offline

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

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

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    А что значит какой? Остатков либо оборотов? Этот запрос работает с регистром остатков.

    Меня кстати все время интересовал флажок в регистрах "Быстрая обработка движений" я никогда его не ставил потому что, не знаю на что он влияет. Если он быстрее обрабатывает движения значит по закону природы где-то должно что-то убывать! :)
  4. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Уберите группировку по документу.
    Зачем лишние переменные в запросе?
  5. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Переменные пока не описаны, но позже будут реализованы. Они же не сильно мешают. :)
    А по поводу убрать группировку по документам, в цикле будет работать Запрос.Группировка(1) ??
  6. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Вот что нашел:
    Следовательно для нашей базы этот флажок роли никакой не играет.
  7. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    отключите итоги в запросе (Без итогов;)
    уберите группировку по документу
    добавьте переменную документа из регистра (ТекущийДокумент = Регистр.МойРегистр.ТекущийДокумент);
    Группировка по переменной

    Тогда "взлетит".
    В качестве первой строки (нет документа) будут начальные и сразу конечные остатки. Это связано с тем что остатки хранятся ТОЛЬКО в разрезе измерений. По документу иначе не получится. Добавьте группировку по измернию и убедитсь.
  8. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Вот так не взлетело.
    Код:
    Процедура ВыборДокументов()
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(ВыборДокументов)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Сотрудник = Регистр.ОплатаТруда.Сотрудник;
    |ТекущийДокумент = Регистр.ОплатаТруда.ТекущийДокумент;
    |Сумма = Регистр.ОплатаТруда.Сумма;
    |ТипДвижений = Регистр.ОплатаТруда.ТипДвижений;
    |Основание = Регистр.ОплатаТруда.Основание;
    |Функция СуммаРубНачОст = НачОст(Сумма);
    |Функция СуммаРубПриход = Приход(Сумма);
    |Функция СуммаРубРасход = Расход(Сумма);
    |Функция СуммаРубКонОст = КонОст(Сумма);
    |Группировка ТекущийДокумент;
    |Условие(Сотрудник = ВыбСотрудник);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;
    
    Пока Запрос.Группировка(1) = 1 Цикл
    ТЗ.НоваяСтрока();
    ТЗ.Документ=Запрос.ТекущийДокумент;
    ТЗ.НачОстаток=Запрос.СуммаРубНачОст; 
    ТЗ.КонОстаток=Запрос.СуммаРубКонОст; 
    ТЗ.СуммаНачисления=Запрос.СуммаРубПриход; 
    ТЗ.СуммаСписания=Запрос.СуммаРубРасход; 
    ТЗ.Основание=СокрЛП(Запрос.Основание);
    КонецЦикла;
    КонецПроцедуры
    
    
    А как сделать по измерению я не понял :angry:
  9. kavak
    Offline

    kavak Опытный в 1С

    Регистрация:
    13 май 2010
    Сообщения:
    703
    Симпатии:
    0
    Баллы:
    26
    Какие то ошибки выдал?
  10. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Вообще никаких ошибок. Просто выдал в таблице все данные (прих, расх) кроме нач и кон остатков.
  11. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Внимательнее читаем руководство по языку 1С.
    При группировке по документам функции НачОст и КонОст просто не имеют смысла.
  12. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
  13. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Итоги все же вытащить можно... если отключить итоги))))
  14. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Так что же делают чтобы получить и остатки и движение?
    Вытаскивать их разными запросами?
  15. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Вот пока что сделал своими силами... понимаю что не красиво, но работает. И если вы подскажите как сделать красиво то я с удовольствием воспользуюсь вашим советом!

    Код:
    Процедура ПодсчетОстатка()
    Перем 	НачОтсчета;
    //Создание объекта типа Запрос
    
    НачОтсчета=Дата("01.01.10");
    
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(ПодстчетОстатка)
    |Период с НачОтсчета по ВыбНачПериода;
    |Сотрудник = Регистр.ОплатаТруда.Сотрудник;
    |ТекущийДокумент = Регистр.ОплатаТруда.ТекущийДокумент;
    |Сумма = Регистр.ОплатаТруда.Сумма;
    |Функция СуммаРубНачОст = НачОст(Сумма);
    |Функция СуммаРубПриход = Приход(Сумма);
    |Функция СуммаРубРасход = Расход(Сумма);
    |Функция СуммаРубКонОст = КонОст(Сумма);
    |Группировка ТекущийДокумент;
    |Условие(Сотрудник = ВыбСотрудник);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;
    
    НачОст=0;
    Пока Запрос.Группировка(1) = 1 Цикл
    НачОст=НачОст+Запрос.СуммаРубПриход-Запрос.СуммаРубРасход;
    КонецЦикла;
    КонецПроцедуры
    
    Процедура ВыборДокументов()
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(ВыборДокументов)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Сотрудник = Регистр.ОплатаТруда.Сотрудник;
    |ТекущийДокумент = Регистр.ОплатаТруда.ТекущийДокумент;
    |Сумма = Регистр.ОплатаТруда.Сумма;
    |ТипДвижений = Регистр.ОплатаТруда.ТипДвижений;
    |Основание = Регистр.ОплатаТруда.Основание;
    |Функция СуммаРубНачОст = НачОст(Сумма);
    |Функция СуммаРубПриход = Приход(Сумма);
    |Функция СуммаРубРасход = Расход(Сумма);
    |Функция СуммаРубКонОст = КонОст(Сумма);
    |Группировка ТекущийДокумент;
    |Условие(Сотрудник = ВыбСотрудник);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;
    
    Пока Запрос.Группировка(1) = 1 Цикл
    ТЗ.НоваяСтрока();
    ТЗ.Документ=Запрос.ТекущийДокумент;
    ТЗ.НачОстаток=Запрос.СуммаРубНачОст; 
    ТЗ.КонОстаток=Запрос.СуммаРубКонОст; 
    ТЗ.СуммаНачисления=Запрос.СуммаРубПриход; 
    ТЗ.СуммаСписания=Запрос.СуммаРубРасход; 
    ТЗ.Основание=СокрЛП(Запрос.Основание);
    КонецЦикла;
    КонецПроцедуры
    
    
  16. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Можно иначе.
    1) Существует функция Остаток
    2) Если вы отключите итоги в запросе (о чем я говорил дважды) и выгрузите запрос в таблицу значений.... В первой строке у вас будут "светиться" остатки
  17. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Я не знаю как это сделать. Как отключить итоги знаю, а как сделать в запросе группировку по итогам .. не знаю.. или просто в первой строке будут итоги?? Без всяких группировок?
  18. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Для того чтобы отключить итоги нужно прописать в запросе
    Без итогов;

    Пора бы научиться пользоваться конструктором запросов....

    По поводу перовй строки - выгрузите результат запроса в ТЗ и посмотрите как там и что

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