8.х КА 1C 8.2.15.318 Комплексная автоматизация 1.1.19.1 - акт сверки

Тема в разделе ""1С:Комплексная автоматизация"", создана пользователем bluntschi, 8 авг 2012.

  1. TopicStarter Overlay
    bluntschi
    Offline

    bluntschi Опытный в 1С

    Регистрация:
    18 июл 2012
    Сообщения:
    422
    Симпатии:
    0
    Баллы:
    26
    Добрый день.

    Вопрос такой. акт сверки взаиморасчетов формируется по данным управленческого и бух. учета.

    когда формируешь по данным бух. учета, тогда попадают все документы, с валютой и в рублях и в валюте.

    если же формируешь по управленческому учету, то выводит строго или только в рублях, или только в валюте.

    подскажите, что нужно добавить в процедуру
    Код:
    Процедура ЗаполнитьПоДаннымУправленческогоУчета() Экспорт
    
    , чтобы он тоже выводился и в рублях и в валюте

    Код:
    Процедура ЗаполнитьПоДаннымУправленческогоУчета() Экспорт
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ДатаНачала",		 ДатаНачала);
    Запрос.УстановитьПараметр("ДатаОкончания",	  КонецДня(ДатаОкончания));
    Запрос.УстановитьПараметр("Организация",	    Организация);
    Запрос.УстановитьПараметр("Контрагент",		 Контрагент);
    Запрос.УстановитьПараметр("Валюта",			 ВалютаДокумента),
    Запрос.УстановитьПараметр("ДоговорКонтрагента", ДоговорКонтрагента);
    Запрос.УстановитьПараметр("Сделка",			 Сделка);
    
    ТекстФильтра = "
    |  Организация = &Организация И Контрагент = &Контрагент ";
    Если ЗначениеЗаполнено(ДоговорКонтрагента) Тогда
    ТекстФильтра = ТекстФильтра + " И ДоговорКонтрагента = &ДоговорКонтрагента ";
    Иначе
    ТекстФильтра = ТекстФильтра + " И ДоговорКонтрагента.ВалютаВзаиморасчетов = &Валюта ";
    КонецЕсли;
    
    Если ЗначениеЗаполнено(Сделка) Тогда
    ТекстФильтра = ТекстФильтра + " И Сделка = &Сделка ";
    КонецЕсли;
    
    // Остатки
    
    Запрос.Текст =
    "ВЫБРАТЬ
    | ЕСТЬNULL(Взаиморасчеты.СуммаВзаиморасчетовНачальныйОстаток, 0) КАК ОстатокНаНачало,
    | ЕСТЬNULL(Взаиморасчеты.СуммаВзаиморасчетовКонечныйОстаток, 0)  КАК ОстатокНаКонец
    |ИЗ
    | РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, , ," + ТекстФильтра + ") КАК Взаиморасчеты";
    
    Результат = Запрос.Выполнить();
    Если Результат.Пустой() Тогда
    
    ОстатокНаНачало = 0;
    ОстатокНаКонец  = 0;
    
    Иначе
    
    Выборка = Результат.Выбрать();
    Выборка.Следующий();
    ОстатокНаНачало = Выборка.ОстатокНаНачало;
    ОстатокНаКонец  = Выборка.ОстатокНаКонец;
    
    КонецЕсли;
    
    // Обороты
    
    Запрос.Текст =
    "ВЫБРАТЬ
    | Взаиморасчеты.Период КАК Дата,
    | Взаиморасчеты.Регистратор КАК ДокументРегистратор,
    | ВЫБОР
    |  КОГДА Взаиморасчеты.СуммаВзаиморасчетовПриход - Взаиморасчеты.СуммаВзаиморасчетовРасход > 0
    |   ТОГДА Взаиморасчеты.СуммаВзаиморасчетовПриход - Взаиморасчеты.СуммаВзаиморасчетовРасход
    |  ИНАЧЕ 0
    | КОНЕЦ КАК Дебет,
    | ВЫБОР
    |  КОГДА Взаиморасчеты.СуммаВзаиморасчетовПриход - Взаиморасчеты.СуммаВзаиморасчетовРасход < 0
    |   ТОГДА -(Взаиморасчеты.СуммаВзаиморасчетовПриход - Взаиморасчеты.СуммаВзаиморасчетовРасход)
    |  ИНАЧЕ 0
    | КОНЕЦ КАК Кредит
    |ИЗ
    | РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор," + ТекстФильтра + ") КАК Взаиморасчеты
    |ГДЕ
    | Взаиморасчеты.СуммаВзаиморасчетовПриход <> Взаиморасчеты.СуммаВзаиморасчетовРасход
    |
    |УПОРЯДОЧИТЬ ПО
    |   Дата";
    
    Результат = Запрос.Выполнить();
    ТаблицаРезультата = Результат.Выгрузить();
    
    ЗаполнитьПредставлениеДокументов(ТаблицаРезультата);
    
    ПоДаннымОрганизации.Загрузить(ТаблицаРезультата);
    
    КонецПроцедуры
    
  2. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Доброго Всем
    Согласно куску кода :
    Код:
    ТекстФильтра = "
    |  Организация = &Организация И Контрагент = &Контрагент ";
    Если ЗначениеЗаполнено(ДоговорКонтрагента) Тогда
    ТекстФильтра = ТекстФильтра + " И ДоговорКонтрагента = &ДоговорКонтрагента ";
    Иначе
    ТекстФильтра = ТекстФильтра + " И ДоговорКонтрагента.ВалютаВзаиморасчетов = &Валюта ";
    КонецЕсли;
    Нужно задавать параметр ДоговорКонтрагента

    или исключить часть "Иначе"
  3. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Опыт программирования есть ?
  4. TopicStarter Overlay
    bluntschi
    Offline

    bluntschi Опытный в 1С

    Регистрация:
    18 июл 2012
    Сообщения:
    422
    Симпатии:
    0
    Баллы:
    26
    немного есть)
  5. TopicStarter Overlay
    bluntschi
    Offline

    bluntschi Опытный в 1С

    Регистрация:
    18 июл 2012
    Сообщения:
    422
    Симпатии:
    0
    Баллы:
    26
    да работает)
    теперь только в евро выводит, без перевода в рубли)
  6. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    У вас с условием что-то не понятное :(
  7. TopicStarter Overlay
    bluntschi
    Offline

    bluntschi Опытный в 1С

    Регистрация:
    18 июл 2012
    Сообщения:
    422
    Симпатии:
    0
    Баллы:
    26
    ну это код 1с, я ничего не меняла
  8. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Согласно вашему куску кода: Если договор в документе заполнен, тогда в переменную ТекстФильтра (это нужно для условия отбора) добавится этот договор, иначе валюта этого договора (вот тут мне что-то вообще не понятно почему так)
    Можно это условие переписать немного:
    Код:
    СписокВалют = Новый Массив;
    СписокВалют.Добавить(Константы.ВалютаУправленческогоУчета.Получить());
    СписокВалют.Добавить(Константы.ВалютаРегламентированногоУчета.Получить());
    
    Запрос.УстановитьПараметр("СписокВалют", СписокВалют),
    ТекстФильтра = "
    |  Организация = &Организация И Контрагент = &Контрагент ";
    Если ЗначениеЗаполнено(ДоговорКонтрагента) Тогда
    ТекстФильтра = ТекстФильтра + " И ДоговорКонтрагента = &ДоговорКонтрагента ";
    Иначе
    ТекстФильтра = ТекстФильтра + " И ДоговорКонтрагента.ВалютаВзаиморасчетов В &СписокВалют";
    КонецЕсли;
    Вот по поводу констант - не помню как они точно называются, посмотрите у себя в конфе точное наименование.
  9. TopicStarter Overlay
    bluntschi
    Offline

    bluntschi Опытный в 1С

    Регистрация:
    18 июл 2012
    Сообщения:
    422
    Симпатии:
    0
    Баллы:
    26


    константы правильные но он ругается
    Код:
    Результат = Запрос.Выполнить();
    по причине:
    {(6, 102)}: Ожидается выражение "("
    Организация = &Организация И Контрагент = &Контрагент  И ДоговорКонтрагента.ВалютаВзаиморасчетов В <<?>>&СписокВалют) КАК Взаиморасчеты
    
    а если в табло посмотреть что в этом запрос выполнить, то выводит:

    {(1,20)}: Ошибка в выражении

    а запрос в котором ошибка вспылывает:

    Код:
    Запрос.Текст =
    "ВЫБРАТЬ
    | ЕСТЬNULL(Взаиморасчеты.СуммаВзаиморасчетовНачальныйОстаток, 0) КАК ОстатокНаНачало,
    | ЕСТЬNULL(Взаиморасчеты.СуммаВзаиморасчетовКонечныйОстаток, 0)  КАК ОстатокНаКонец
    |ИЗ
    | РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, , ," + ТекстФильтра + ") КАК Взаиморасчеты";
    
    Результат = Запрос.Выполнить();
    
  10. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Ну вы же знаете программирование :), вот и смотрите что за ошибка, вам же явно указали на ошибку.
  11. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Правильно ругается, потому как если мы проверяем конструкцией "В" то источник внешних данных заключается в круглые скобки Ex. "В (&СписокВалют)"
  12. TopicStarter Overlay
    bluntschi
    Offline

    bluntschi Опытный в 1С

    Регистрация:
    18 июл 2012
    Сообщения:
    422
    Симпатии:
    0
    Баллы:
    26
    исправила, но он все равно выводит только по рублевым документам суммы, по валюте нет

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