8.х расхождение данных в отчете и в документе

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

  1. TopicStarter Overlay
    mhl
    Offline

    mhl Опытный в 1С

    Регистрация:
    23 июн 2007
    Сообщения:
    418
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте. Проблема в следующем. Есть отчет, "карточка счета". В нем по аналогии подсчета начального сальдо, добавил подсчет начального сальдо по количеству. Эти данные необходимо добавить в документ при проведении. Вот код который должен это делать:
    Код:
    ЗапросНачСуммаКолво = Новый Запрос;
    ЗапросНачСуммаКолво.Текст =
    "ВЫБРАТЬ
    |	ХозрасчетныйОстатки.Счет,
    |	СУММА(ХозрасчетныйОстатки.КоличествоОстатокДт) КАК КоличествоОстатокДт,
    |	СУММА(ХозрасчетныйОстатки.КоличествоОстатокКт) КАК КоличествоОстатокКт,
    |	СУММА(ХозрасчетныйОстатки.СуммаОстатокДт) КАК СуммаОстатокДт,
    |	СУММА(ХозрасчетныйОстатки.СуммаОстатокКт) КАК СуммаОстатокКт
    |ИЗ
    |	РегистрБухгалтерии.Хозрасчетный.Остатки(&НачПериода, , , ) КАК ХозрасчетныйОстатки
    |ГДЕ
    |	ХозрасчетныйОстатки.Счет = &Счет41
    |
    |СГРУППИРОВАТЬ ПО
    |	ХозрасчетныйОстатки.Счет";
    
    Счет41_01 = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах;
    ЗапросНачСуммаКолво.УстановитьПараметр("Счет41", Счет41_01);
    ЗапросНачСуммаКолво.УстановитьПараметр("НачПериода", Дата);
    
    НачСуммаКолво = ЗапросНачСуммаКолво.Выполнить().Выбрать();
    Пока НачСуммаКолво.Следующий() Цикл
    КолвоДт = НачСуммаКолво.КоличествоОстатокДт;
    КолвоКт = НачСуммаКолво.КоличествоОстатокКт;
    СальдоКолво = КолвоДт - КолвоКт;
    
    СуммаДт = НачСуммаКолво.СуммаОстатокДт;
    СуммаКт = НачСуммаКолво.СуммаОстатокКт;
    СальдоСумма = СуммаДт - СуммаКт;
    КонецЦикла;
    
    Сообщить("Начальное сальдо сумма: " + СальдоСумма);
    Сообщить("Начальное сальдо кол-во: " + СальдоКолво);
    
    ЗапросСуммаКолво = Новый Запрос;
    ЗапросСуммаКолво.Текст =
    "ВЫБРАТЬ
    |	Хозрасчетный.Период,
    |	Хозрасчетный.СчетКт,
    |	Хозрасчетный.КоличествоКт,
    |	Хозрасчетный.КоличествоДт,
    |	Хозрасчетный.Сумма
    |ИЗ
    |	РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
    |ГДЕ
    |	Хозрасчетный.Период >= &ПериодНач
    |	И Хозрасчетный.Период <= &ПериодКон
    |	И Хозрасчетный.СчетКт = &СчетКт";
    
    ЗапросСуммаКолво.УстановитьПараметр("СчетКт", Счет41_01);
    ЗапросСуммаКолво.УстановитьПараметр("ПериодНач", Дата);
    ЗапросСуммаКолво.УстановитьПараметр("ПериодКон", Дата);
    
    СуммаКолвоОбороты = ЗапросСуммаКолво.Выполнить().Выбрать();
    Пока СуммаКолвоОбороты.Следующий() Цикл
    КолвоДебет = СуммаКолвоОбороты.КоличествоДт;
    КолвоКредит = СуммаКолвоОбороты.КоличествоКт;
    
    Если ПустоеЗначение(КолвоДебет) = Ложь Тогда
    СальдоКолво = СальдоКолво + КолвоДебет;
    ИначеЕсли ПустоеЗначение(КолвоКредит) = Ложь Тогда
    СальдоКолво = СальдоКолво - КолвоКредит;
    КонецЕсли;
    Сообщить("Сальдо кол-во: " + СальдоКолво);
    
    СуммаКредит = СуммаКолвоОбороты.Сумма;
    СальдоСумма = СальдоСумма - СуммаКредит;
    Сообщить("Сальдо сумма: " + СуммаКредит);
    КонецЦикла;
    
    Проблема в том, что он правильно работает только на самом первом документе(и на документах с той же датой), далее идет расхождение с данными отчета.
    Вот сам отчет

    Вложения:

  2. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Да, у вас не будет нормально работать пока периоды правильно задавать не начнете. Где-то он ограничен, где-то неограничен, в общем упорядочите периоды.

    Да, в запросах лучше использовать параметры, указываемые в скобках (у регистра), а не конструкцию ГДЕ

    И конечно - во втором запросе вы вообще только кредитовый оборот по 41.01 проанализируете, а не в целом Дт и Кт.
  3. TopicStarter Overlay
    mhl
    Offline

    mhl Опытный в 1С

    Регистрация:
    23 июн 2007
    Сообщения:
    418
    Симпатии:
    0
    Баллы:
    26
    В первый запрос добавил параметра
    Код:
    .......................
    .......................
    ........................
    РегистрБухгалтерии.Хозрасчетный.Остатки(&НачПериода,&КонПериода) КАК ХозрасчетныйОстатки
    ........................
    ........................
    ........................
    ЗапросНачСуммаКолво.УстановитьПараметр("КонПериода", Дата);
    
    Выдает ошибку:
    {Документ.ОтгрузкаПродукции(31)}: Ошибка при вызове метода контекста (Выполнить): {(8, 54)}: Неверные параметры "РегистрБухгалтерии.Хозрасчетный.Остатки, 1"
    РегистрБухгалтерии.Хозрасчетный.Остатки(&НачПериода,<<?>>&КонПериода) КАК ХозрасчетныйОстатки
    НачСуммаКолво = ЗапросНачСуммаКолво.Выполнить().Выбрать();
    В чем тут проблема?
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    MHL,
    Попробуй в конструкторе и будет тебе счастье :)

    Ты неправильно заполняешь параметры
  5. TopicStarter Overlay
    mhl
    Offline

    mhl Опытный в 1С

    Регистрация:
    23 июн 2007
    Сообщения:
    418
    Симпатии:
    0
    Баллы:
    26
    а как в конструкторе в параметрах виртуальной таблицы задать период начала и период конца? там ведь только одно поле для периода. Интересно что данная конструкция работает в таблице ОстаткиИОбороты
  6. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    &;НачПериода,&;КонПериода - сотри как минимум ";".

    А вообще обязательно делай в конструкторе, это решит проблему ошибок. Н осначала верни запрос к первоначальному виду, а то не откроется.

    Для периода будет два поля, если таблица Обороты или ОстаткиИОбороты - сам увидишь.
  7. TopicStarter Overlay
    mhl
    Offline

    mhl Опытный в 1С

    Регистрация:
    23 июн 2007
    Сообщения:
    418
    Симпатии:
    0
    Баллы:
    26
    В запросе ";" не было. Вероятно в браузере опечатался. Из твоих слов я понял, что в таблице Остатки два поля для периода ставить нельзя. Я прав?
  8. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Абсолютно!
  9. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    MHL,
    интересно посмотреть на Остатки, у которых две даты :)
Похожие темы
  1. Alex_Staf
    Ответов:
    4
    Просмотров:
    431
  2. Hunter
    Ответов:
    1
    Просмотров:
    664
  3. courageous
    Ответов:
    2
    Просмотров:
    309
  4. DmitryBratsk
    Ответов:
    5
    Просмотров:
    4.031
  5. Marat1994
    Ответов:
    2
    Просмотров:
    919
Загрузка...

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