8.х Помогите с Талицей

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

  1. TopicStarter Overlay
    Алф
    Offline

    Алф Опытный в 1С

    Регистрация:
    9 окт 2009
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26
    Помогите вывести такую таблицу.
    Сейчас вот так:
    Период Контрагент НачОс КонОст
    Акватест НПП ООО 20 774,00
    30.06.2010 23:59:59 Акватест НПП ООО 20 774,00
    01.07.2010 20:00:03 Акватест НПП ООО 20 774,00
    31.08.2010 0:00:00 Акватест НПП ООО 20 774,00

    а хочу вот так вывести:
    Период Контрагент НачОс КонОст
    30.06.2010 23:59:59 Акватест НПП ООО 20 774,00
    30.06.2010 23:59:59 Чайка ООО 10 084,00
    01.07.2010 20:00:03 АКНИЛС 40 114,00
    31.08.2010 0:00:00 Химпром-инвест ООО 120 774,00
    ____________________________________________________________________-
    Вот как то так делаю:

    ВВЫБРАТЬ
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент КАК Контрагент,
    ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток,0)КАК ВзаимНачОст
    ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток, 0) КАК ВзаимКонОст,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период
    ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , ) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
    ГДЕ
    (ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток <> 0
    ИЛИ ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток <> 0)
    |ИТОГИ
    | СУММА(ВзаимНачОст),
    | СУММА(ВзаимКонОст)
    |ПО
    | Контрагент"
    ВыборкаВзаим=Запрос.Выполнить().Выбрать();
    РезультатЗапроса= ВыборкаВзаим;

    ОбластьМакета = Макет.ПолучитьОбласть("Детали");
    Пока ВыборкаВзаим.Следующий() Цикл
    Если ВыборкаВзаим.ТипЗаписи()=ТипЗаписиЗапроса.ИтогПоГруппировке Тогда
    ОбластьМакета.Параметры.ВзаимНачОст = ВыборкаВзаим.ВзаимНачОст;
    ОбластьМакета.Параметры.ВзаимКонОст = ВыборкаВзаим.ВзаимКонОст;
    КонецЕсли;
    ОбластьМакета.Параметры.Период = ВыборкаВзаим.Период;
    ОбластьМакета.Параметры.Контрагент = ВыборкаВзаим.Контрагент;
    ТабДокумент.Вывести(ОбластьМакета);
    КонецЦикла;
    ВыборкаВзаим = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,,"Контрагент");

    _____________________________________________________________
  2. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    Код:
    Функция ПолучитьРезультатЗапроса_Алф()
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |	ТаблицаКонечныхОстатков.Контрагент КАК Контрагент,
    |	ЕСТЬNULL(ТаблицаНачальныхОстатков.СуммаВзаиморасчетовОстаток, 0) КАК НачальныйОстаток,
    |	ЕСТЬNULL(ТаблицаКонечныхОстатков.СуммаВзаиморасчетовОстаток, 0) КАК КонечныйОстаток
    |ИЗ
    |	РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&НачалоПериода, ) КАК ТаблицаНачальныхОстатков
    |		ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&КонецПериода, ) КАК ТаблицаКонечныхОстатков
    |		ПО ТаблицаНачальныхОстатков.Контрагент = ТаблицаКонечныхОстатков.Контрагент";
    //Параметры запроса
    Запрос.УстановитьПараметр("КонецПериода",КонецПериода);// Дата
    Запрос.УстановитьПараметр("НачалоПериода",НачалоПериода);// Дата
    Результат = Запрос.Выполнить().Выгрузить(); // Результат - таблица остатков по взаиморасчетам на начало и конец периода по контрагенту
    
    Возврат Результат;
    
    КонецФункции //ПолучитьРезультатЗапроса_Алф
    
  3. TopicStarter Overlay
    Алф
    Offline

    Алф Опытный в 1С

    Регистрация:
    9 окт 2009
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26
    mialord
    вашим методом не могу обход таблиц провести..я не знаю как по такому методу Запрос.Выполнить().Выгрузить() выгружать в табличную часть.
  4. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Если надо обход сделать: не выгружайте в таблицу (уберите Выгрузить()) и обходите выборку запроса в цикле.
    Если проблемы с написанием цикла - подсуньте этот запрос "Конструктору запроса с обработкой результата", он сам вам сформирует нужный цикл. (хотя чего тут формировать?)

    А вообще ваш вопрос непонятен, так вам надо в таблицу выгружать или не надо? Если надо, то пример вам привели, на выходе функции уже готовая ТЗ. Если не надо - делайте как я написал выше.
  5. TopicStarter Overlay
    Алф
    Offline

    Алф Опытный в 1С

    Регистрация:
    9 окт 2009
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26
    shurikvz,
    спасибо разобрался...
    помните вы вчера мне помогали,можете все таки помочь с вчерашней задачей,уже ближе к истине....
    Можно ли теперь задать условие чтобы это было все в одной таблице:

    1) 31.12.09|ООО"Лист" | 1000 |остаток на 31.12.2009
    2) 11,01.10|ООО"Лист" | -45000 |ПостТовиУслуГ
    3) 21,01,10|ООО"Лист" | 30000 |ПлатежПорИсх
    4) 31,01,10|ООО "Лист" | -5000 |Остаток на 31,01,10

    киньте намек,предложение

    Код:
    "ВЫБРАТЬ
    ВложенныйЗапрос.Comment,
    ВложенныйЗапрос.Amount,
    ВложенныйЗапрос.agent_name,
    ВложенныйЗапрос.счет,
    ВложенныйЗапрос.kpp,
    ВложенныйЗапрос.dt
    ИЗ
    (ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.Регистратор КАК Comment,
    ХозрасчетныйОстаткиИОбороты.Регистратор.СуммаДокумента КАК Amount,
    ХозрасчетныйОстаткиИОбороты.Регистратор.Контрагент КАК agent_name,
    ХозрасчетныйОстаткиИОбороты.Счет КАК счет,
    ХозрасчетныйОстаткиИОбороты.Регистратор.Контрагент.ИНН КАК inn,
    ХозрасчетныйОстаткиИОбороты.Регистратор.Контрагент.КПП КАК kpp,
    ХозрасчетныйОстаткиИОбороты.Период КАК dt
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , 
    Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПрочимиПоставщикамиИПодрядчиками), 
    ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПоставщиками)), , ) КАК ХозрасчетныйОстаткиИОбороты
    ГДЕ
    ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
    ТаблицаКонечныхОстатков.Контрагент,
    0,
    0,
    0,
    0,
    ЕСТЬNULL(ТаблицаНачальныхОстатков.СуммаВзаиморасчетовОстаток, 0),
    ЕСТЬNULL(ТаблицаКонечныхОстатков.СуммаВзаиморасчетовОстаток, 0)
    ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&НачалоПериода, ) КАК ТаблицаНачальныхОстатков
    ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&КонецПериода, ) КАК ТаблицаКонечныхОстатков
    ПО ТаблицаНачальныхОстатков.Контрагент = ТаблицаКонечныхОстатков.Контрагент
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.Регистратор,
    ХозрасчетныйОстаткиИОбороты.Регистратор.СуммаДокумента,
    ХозрасчетныйОстаткиИОбороты.Регистратор.Контрагент,
    ХозрасчетныйОстаткиИОбороты.Счет,
    ХозрасчетныйОстаткиИОбороты.Регистратор.Контрагент.ИНН,
    ХозрасчетныйОстаткиИОбороты.Регистратор.Контрагент.КПП,
    ХозрасчетныйОстаткиИОбороты.Период
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , 
    Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПрочимиПоставщикамиИПодрядчиками), 
    ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПоставщиками)), , ) КАК ХозрасчетныйОстаткиИОбороты
    ГДЕ
    ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПлатежноеПоручениеИсходящее) КАК ВложенныйЗапрос
    </span>
    УПОРЯДОЧИТЬ ПО
    ВложенныйЗапрос.agent_name,
    ВложенныйЗапрос.dt"
    
    
    </FONT></FONT></pre>
  6. BabySG
    Offline

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

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Алф,
    немного не по теме, но все же, в первом запросе стоит написать так
    Код:
    "ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Регистратор КАк Документ.ПоступлениеТоваровУслуг).СуммаДокумента КАК Amount,
    // ниже также...
    </span>
    ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Регистратор КАК Документ.ПлатежноеПоручениеИсходящее)СуммаДокумента,
    // Ниже также
    "
    
    </FONT></FONT></pre>
    А еще вместо Счет В ИЕРАРХИИ использовать пакетный запрос.
    1. Сначала во временную таблицу получаем нужные счета (например, ВТ называется НужныеСчета)
    2. Меняем условие выборки на такое:
    Счет В (ВЫБРАТЬ Счет.Ссылка ИЗ НужныеСчета КАК НужныеСчета)

    Это будет работать быстрее

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