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

Привет, уважаемые специалисты 1С!

Подскажите пожалуйста, как можно решить данную проблему.

Есть Справочник ДоговорыКонтрагентов с реквизитом "Тип договора" ("По договорам", "По накладным"). Так вот Тип договора "По накладным" - не правильный, он у нас действовал до 1 апреля, теперь нужно, чтобы все выбирали только договор с типом "По договорам". Как можно это быстро сделать и как лучше.

РЛС, Подписки?
Как можно, например при записи документа любого, пробежаться по всем реквизитам с типом "Договор" и проверить правильно ли выбран договор или нет.
может другой какой способ есть?

Спасибо большое!
Ответ:
Если РЛС, то тоже к каждому документу свой подход нужен, так что меньше работы не станет. С ПодпискойНаСобытие есть вариант сделать более универсально через метаданные:
Код:
Для Каждого Реквизит Из Документ.Метаданные().Реквизиты Цикл
        НоваяСтрока = РеквизитыДокумента.Добавить();
        НоваяСтрока.Реквизит = Реквизит.Имя;
        НоваяСтрока.Значение = Документ[Реквизит.Имя];
    КонецЦикла;
Код:
Для Каждого ТабличнаяЧасть Из Документ.Метаданные().ТабличныеЧасти Цикл
        Сообщить(ТабличнаяЧасть);
        Для Каждого РеквизитТЧ Из ТабличнаяЧасть.Реквизиты Цикл
            Сообщить("  -  " + РеквизитТЧ);
        КонецЦикла
    КонецЦикла;
Для каждого документа... список документов тоже можно получить:
Код:
мдТек = Метаданные["Документы"];
Для каждого ЭлементКоллекции Из мдТек Цикл
   стрНаименованиеДокумента = "Документ." + ЭлементКоллекции.Имя;
КонецЦикла;
Вопрос: Передача параметров в форму выбора.

Прошу подсказки.
Из документа "Реализация товаров и услуг" вызывается форма выбора по договору (ERP). Конфа правленая, сравниваю с типовой. В ОбработкеСозданияНаСервере формы выбора смотрю в отладчике Параметры.Отбор. Никак не могу понять как список отбора формируется - явного вызова этой формы с параметрами нет, в свойстве "СвязиПараметровВыбора" только один элемент отбора, а в Параметры.Отбор уже несколько. Может кто подскажет где искать.
Ответ: () Да, я понимаю что где-то они должны заполняться, но как они называются в реализации (то что есть "Параметры" в выборе)? Смотрю например выбор контрагента, там же должен измениться отбор по контрагенту.
Вопрос: Отчет ТОРГ-29 и Вид договора

Добрый день, Инфостартовцы!
Подскажите пожалуйста, с решением задачи.

Есть отчет, ТОРГ-29, который выводит Приход и Расход (по Основному договору и договору с Комитентом)
Необходимо реализовать вывод отчета только по Основному договору.

Код:
Процедура ОбновитьОтчет() Экспорт

    Если Не ЗначениеЗаполнено(ДатаНач) ИлИ Не ЗначениеЗаполнено(ДатаКон) Тогда
        Предупреждение("Не выбран период!");
        Возврат;
    КонецЕсли;

    Если Не ЗначениеЗаполнено(Склад) Тогда
        Предупреждение("Не выбран склад!");
        Возврат;
    КонецЕсли;
    СКомитентом = Справочники.ДоговорыКонтрагентов;
    Если Склад.ВидСклада = Перечисления.ВидыСкладов.Оптовый Тогда
        Предупреждение("Отчет можно формировать только по складам с видом ""Розничный"" или ""НТТ""!");
        Возврат;
    КонецЕсли;

    мТабДок = ЭлементыФормы.ДокументРезультат;

    мТабДок.Очистить();

    Макет = ЭтотОбъект.ПолучитьМакет("Макет");

    // Выведем заголовок.

    СведенияОПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Организация, ДатаКон);

    ВыбМОЛ = РегистрыСведений.ОтветственныеЛица.ПолучитьПоследнее(КонецДня(ДатаКон), Новый Структура("СтруктурнаяЕдиница", Склад)).ФизическоеЛицо;

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

    ОбластьМакета.Параметры.Номер = НомерОтчета;
    ВысотаЗаголовка = ОбластьМакета.ВысотаТаблицы;

    мТабДок.Вывести(ОбластьМакета);

    ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
    ПовторятьПриПечатиСтроки = мТабДок.Область(1 + ВысотаЗаголовка, ,2 + ВысотаЗаголовка);

    мТабДок.Вывести(ОбластьМакета);

    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Дата1", НачалоДня(ДатаНач));
    Запрос.УстановитьПараметр("Дата2", КонецДня(ДатаКон));
    Запрос.УстановитьПараметр("Склад", Склад);
    // ДС ( 

    Запрос.УстановитьПараметр("Вспомогательная", Справочники.Номенклатура.НайтиПоКоду("00000112515"));
    Запрос.УстановитьПараметр("НоменклатурнаяГруппа",НоменклатурнаяГруппа );
    // ДС )


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

                       |ВЫБРАТЬ РАЗРЕШЕННЫЕ
                       |    ОстаткиТоваров.Регистратор КАК Док,
                       |    ОстаткиТоваров.Период КАК ДатаДок,
                       |    ОстаткиТоваров.Регистратор.Номер КАК НомерДок,
                       |    СУММА(ОстаткиТоваров.СуммаПродажнаяНачальныйОстаток) КАК НачОст,
                       |    СУММА(ОстаткиТоваров.СуммаПродажнаяКонечныйОстаток) КАК КонОст,
                       |    СУММА(ВЫБОР
                       |            КОГДА ОстаткиТоваров.СуммаПродажнаяПриход - ОстаткиТоваров.СуммаПродажнаяРасход > 0
                       |                ТОГДА ОстаткиТоваров.СуммаПродажнаяПриход - ОстаткиТоваров.СуммаПродажнаяРасход
                       |            ИНАЧЕ 0
                       |        КОНЕЦ) КАК Приход,
                       |    СУММА(ВЫБОР
                       |            КОГДА ОстаткиТоваров.СуммаПродажнаяРасход - ОстаткиТоваров.СуммаПродажнаяПриход > 0
                       |                ТОГДА ОстаткиТоваров.СуммаПродажнаяРасход - ОстаткиТоваров.СуммаПродажнаяПриход
                       |            ИНАЧЕ 0
                       |        КОНЕЦ) КАК Расход
                       |ИЗ
                       |    РегистрНакопления.ТоварыВРознице.ОстаткиИОбороты(&Дата1, &Дата2, Регистратор, , Склад = &Склад) КАК ОстаткиТоваров
                       |ГДЕ
                       |    НЕ ОстаткиТоваров.Номенклатура В ИЕРАРХИИ (&Вспомогательная)
                       |    И ОстаткиТоваров.Номенклатура.НоменклатурнаяГруппа В ИЕРАРХИИ(&НоменклатурнаяГруппа)
                       |
                       |СГРУППИРОВАТЬ ПО
                       |    ОстаткиТоваров.Регистратор,
                       |    ОстаткиТоваров.Период,
                       |    ОстаткиТоваров.Регистратор.Номер
                       |
                       |УПОРЯДОЧИТЬ ПО
                       |    ОстаткиТоваров.Период";
    Иначе
        ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                       |    NULL КАК Док,
                       |    NULL КАК ДатаДок,
                       |    NULL КАК НомерДок,
                       |    СУММА(ОстаткиТоваров.КоличествоНачальныйОстаток * ОстаткиТоваров.ЦенаВРознице) КАК НачОст,
                       |    СУММА(ОстаткиТоваров.КоличествоКонечныйОстаток * ОстаткиТоваров.ЦенаВРознице) КАК КонОст,
                       |    СУММА(ВЫБОР
                       |            КОГДА ОстаткиТоваров.КоличествоПриход - ОстаткиТоваров.КоличествоРасход > 0
                       |                ТОГДА (ОстаткиТоваров.КоличествоПриход - ОстаткиТоваров.КоличествоРасход) * ОстаткиТоваров.ЦенаВРознице
                       |            ИНАЧЕ 0
                       |        КОНЕЦ) КАК Приход,
                       |    СУММА(ВЫБОР
                       |            КОГДА ОстаткиТоваров.КоличествоРасход - ОстаткиТоваров.КоличествоПриход > 0
                       |                ТОГДА (ОстаткиТоваров.КоличествоРасход - ОстаткиТоваров.КоличествоПриход) * ОстаткиТоваров.ЦенаВРознице
                       |            ИНАЧЕ 0
                       |        КОНЕЦ) КАК Расход
                       |ИЗ
                       |    РегистрНакопления.ТоварыВНТТ.ОстаткиИОбороты(&Дата1, &Дата2, , , Склад = &Склад) КАК ОстаткиТоваров
                       |
                       |ИМЕЮЩИЕ
                       |    (СУММА(ОстаткиТоваров.КоличествоНачальныйОстаток * ОстаткиТоваров.ЦенаВРознице) <> 0
                       |        ИЛИ СУММА(ОстаткиТоваров.КоличествоКонечныйОстаток * ОстаткиТоваров.ЦенаВРознице) <> 0
                       |        ИЛИ СУММА(ВЫБОР
                       |                КОГДА ОстаткиТоваров.КоличествоПриход - ОстаткиТоваров.КоличествоРасход > 0
                       |                    ТОГДА (ОстаткиТоваров.КоличествоПриход - ОстаткиТоваров.КоличествоРасход) * ОстаткиТоваров.ЦенаВРознице
                       |                ИНАЧЕ 0
                       |            КОНЕЦ) <> 0
                       |        ИЛИ СУММА(ВЫБОР
                       |                КОГДА ОстаткиТоваров.КоличествоРасход - ОстаткиТоваров.КоличествоПриход > 0
                       |                    ТОГДА (ОстаткиТоваров.КоличествоРасход - ОстаткиТоваров.КоличествоПриход) * ОстаткиТоваров.ЦенаВРознице
                       |                ИНАЧЕ 0
                       |            КОНЕЦ) <> 0)
                       |;
                       |
                       ////////////////////////////////////////////////////////////­////////////////////

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

    Запрос.Текст = ТекстЗапроса;

    МассивРезультатов = Запрос.ВыполнитьПакет();
    РезултатОстаков = МассивРезультатов[0];
    РезультатЗапроса = МассивРезультатов[1];

    Если РезултатОстаков.Пустой() Тогда
        НачОст = 0;
        КонОст = 0;
    Иначе
        ВыборкаСтрокаОстатков = РезултатОстаков.Выбрать();
        ВыборкаСтрокаОстатков.Следующий();
        НачОст = ВыборкаСтрокаОстатков.НачОст;
        //НачОст = ПолучитьОстаокВРозницеНаДату(НачалоДня(ДатаНач));

        КонОст = ВыборкаСтрокаОстатков.КонОст;
    КонецЕсли;
    Себестоимость = 0;
    ОбластьМакета = Макет.ПолучитьОбласть("ОстатокНачала");
    ОбластьМакета.Параметры.ДатаНачала = "Остаток на " + Формат(ДатаНач, "ДЛФ=Д");
    ОбластьМакета.Параметры.НачСтоимостьВсего = ОбщегоНазначения.ФорматСумм(НачОст);
    Себестоимость = ПолучитьСебестоимостьНаДату(НачалоДня(ДатаНач));
    ОбластьМакета.Параметры.Себестоимость = Себестоимость;
    мТабДок.Вывести(ОбластьМакета);

    ОбластьМакета = Макет.ПолучитьОбласть("Приход");
    мТабДок.Вывести(ОбластьМакета);

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

    ТЗПриходы.Сортировать("ДатаДок Возр");

    // ДС (

    ПрихСебестоимостьВсего = 0;
    // ДС )

    ОбластьМакета = Макет.ПолучитьОбласть("Строка");

    Для Каждого СтрокаПрихода Из ТЗПриходы Цикл
        ОбластьМакета.Параметры.Докум = СтрокаПрихода.Док;
        ОбластьМакета.Параметры.Расшифровка = СтрокаПрихода.Док;
        // ДС (

        Если Не СтрокаПрихода.Док.Метаданные().Имя = "ПоступлениеТоваровУслуг" Тогда
            ОбластьМакета.Параметры.ДатаДокумента = СтрокаПрихода.ДатаДок;
            ОбластьМакета.Параметры.НомерДокумента = СтрокаПрихода.НомерДок;
        Иначе
            ОбластьМакета.Параметры.ДатаДокумента = СтрокаПрихода.Док.ДатаВходящегоДокумента;
            ОбластьМакета.Параметры.НомерДокумента = СтрокаПрихода.Док.НомерВходящегоДокумента;
        КонецЕсли;    
        // ДС )

        ОбластьМакета.Параметры.СуммаТовара = ОбщегоНазначения.ФорматСумм(СтрокаПрихода.Приход);
        ОбластьМакета.Параметры.СуммаТары = ОбщегоНазначения.ФорматСумм(0);
        // ДС (

        Если ЗначениеЗаполнено(СтрокаПрихода.Док) Тогда
            Если ОбщегоНазначения.ЕстьРеквизитДокумента("Контрагент", СтрокаПрихода.Док.Метаданные()) Тогда
                ОбластьМакета.Параметры.Контрагент = СтрокаПрихода.Док.Контрагент;
            ИначеЕсли ТипЗнч(СтрокаПрихода.Док) = Тип("ДокументСсылка.ПеремещениеТоваров") Тогда
                ОбластьМакета.Параметры.Контрагент = СтрокаПрихода.Док.СкладОтправитель;
            Иначе 
                ОбластьМакета.Параметры.Контрагент = "";
            КонецЕсли;
        Иначе 
            ОбластьМакета.Параметры.Контрагент = "";
        КонецЕсли;
        ОбластьМакета.Параметры.Себестоимость = ПолучитьСебестоимостьПоДокументу(СтрокаПрихода.Док,"Приход");
        ПрихСебестоимостьВсего = ПрихСебестоимостьВсего + Число(?(ОбластьМакета.Параметры.Себестоимость = Null,0,ОбластьМакета.Параметры.Себестоимость));
        
        Если СтрокаПрихода.Док.Метаданные().Имя = "ПеремещениеТоваров" Тогда
            ОбластьМакета.Параметры.Инфо = "Отправитель: " + СтрокаПрихода.Док.СкладОтправитель + " Получатель: " + СтрокаПрихода.Док.СкладПолучатель; 
        ИначеЕсли    СтрокаПрихода.Док.Метаданные().Имя = "ОприходованиеТоваров" Тогда
            ОбластьМакета.Параметры.Инфо = "Отправитель: " + СтрокаПрихода.Док.СкладОтправитель + " Получатель: " + СтрокаПрихода.Док.Склад; 
        Иначе    
            ОбластьМакета.Параметры.Инфо = "";
        КонецЕсли;    

        
        // ДС )

        мТабДок.Вывести(ОбластьМакета);
    КонецЦикла;

    Приход = ТЗПриходы.Итог("Приход");

    ОбластьМакета = Макет.ПолучитьОбласть("ИтогоПриход");
    ОбластьМакета.Параметры.ПрихСтоимостьВсего = ОбщегоНазначения.ФорматСумм(Приход);
    // ДС (

    ОбластьМакета.Параметры.ПрихСебестоимостьВсего = ОбщегоНазначения.ФорматСумм(ПрихСебестоимостьВсего);
    // ДС )

    мТабДок.Вывести(ОбластьМакета);

    ОбластьМакета = Макет.ПолучитьОбласть("ВсегоПриход");
    ОбластьМакета.Параметры.ПриходСОстатком = ОбщегоНазначения.ФорматСумм(Приход + НачОст);
    // ДС (

    ОбластьМакета.Параметры.ПриходСебестоимостьСОстатком = ОбщегоНазначения.ФорматСумм(ПрихСебестоимостьВсего+Себестоимость);
    // ДС )

    мТабДок.Вывести(ОбластьМакета);

    мТабДок.ВывестиГоризонтальныйРазделительСтраниц();

    ОбластьМакета = Макет.ПолучитьОбласть("Расход");
    мТабДок.Вывести(ОбластьМакета);

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

    ТЗРасходы.Сортировать("ДатаДок Возр");

    ОбластьМакета = Макет.ПолучитьОбласть("Строка");
    // ДС (

    РасхСебестоимостьВсего = 0;
    // ДС )

    Расход = 0;
    Для Каждого СтрокаРасхода Из ТЗРасходы Цикл
        ОбластьМакета.Параметры.Докум = СтрокаРасхода.Док;
        ОбластьМакета.Параметры.Расшифровка = СтрокаРасхода.Док;
        ОбластьМакета.Параметры.ДатаДокумента = СтрокаРасхода.ДатаДок;
        ОбластьМакета.Параметры.НомерДокумента = СтрокаРасхода.НомерДок;
        // ДС (

        //Если НЕ СтрокаРасхода.Док.Метаданные().Имя = "ОтчетОРозничныхПродажах" Тогда

            ОбластьМакета.Параметры.СуммаТовара = ОбщегоНазначения.ФорматСумм(СтрокаРасхода.Расход);
            Расход = Расход + СтрокаРасхода.Расход;
        //Иначе    

        //    ОбластьМакета.Параметры.СуммаТовара = ОбщегоНазначения.ФорматСумм(дсРасчитатьСуммуПоДокументу(СтрокаРасхода.Док));

        //    Расход = Расход + дсРасчитатьСуммуПоДокументу(СтрокаРасхода.Док);

        //КонецЕсли;    

        // ДС )

        ОбластьМакета.Параметры.СуммаТары = ОбщегоНазначения.ФорматСумм(0);
        // ДС (

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

        
        Если СтрокаРасхода.Док.Метаданные().Имя = "ПеремещениеТоваров" Тогда
            ОбластьМакета.Параметры.Инфо = "Отправитель: " + СтрокаРасхода.Док.СкладОтправитель + " Получатель: " + СтрокаРасхода.Док.СкладПолучатель; 
        ИначеЕсли    СтрокаРасхода.Док.Метаданные().Имя = "ОприходованиеТоваров" Тогда
            ОбластьМакета.Параметры.Инфо = "Отправитель: " + СтрокаРасхода.Док.СкладОтправитель + " Получатель: " + СтрокаРасхода.Док.Склад; 
        Иначе    
            ОбластьМакета.Параметры.Инфо = "";
        КонецЕсли;    
        
        мТабДок.Вывести(ОбластьМакета);
    КонецЦикла;

    //Расход = ТЗРасходы.Итог("Расход");


    ОбластьМакета = Макет.ПолучитьОбласть("ИтогоРасход");
    ОбластьМакета.Параметры.РасхСтоимостьВсего = ОбщегоНазначения.ФорматСумм(Расход);
    // ДС (

    ОбластьМакета.Параметры.РасхСебестоимостьВсего = РасхСебестоимостьВсего;
    // ДС )

    мТабДок.Вывести(ОбластьМакета);

    ОбластьМакета = Макет.ПолучитьОбласть("ОстатокКонец");
    ОбластьМакета.Параметры.ДатаКонца = "Остаток на " + Формат(ДатаКон, "ДЛФ=Д");
    //ОбластьМакета.Параметры.КонСтоимостьВсего = ОбщегоНазначения.ФорматСумм(КонОст);

    ОбластьМакета.Параметры.КонСтоимостьВсего = ОбщегоНазначения.ФорматСумм(Приход + НачОст-Расход);
    ОбластьМакета.Параметры.КонСебестоимостьСтоимостьВсего = ОбщегоНазначения.ФорматСумм(ПрихСебестоимостьВсего+Себестоимость-РасхСебестоимостьВсего);
    мТабДок.Вывести(ОбластьМакета);

    ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
    ОбластьМакета.Параметры.МОЛ = ?(ЗначениеЗаполнено(ВыбМОЛ), ВыбМОЛ, "");
    мТабДок.Вывести(ОбластьМакета);

    мТабДок.ПовторятьПриПечатиСтроки = ПовторятьПриПечатиСтроки;

    НомерОтчета = НомерОтчета + 1;

КонецПроцедуры// ОбновитьОтчет()
Ответ: Если Договор.ВидДоговора = СКомитентом Тогда
Продолжить;
КонецЕсли
Вопрос: Обычные формы УПП выбор договора с отбором по контрагенту.

Здравствуйте.
Для выбора договора с отбором по контрагенту в УФ достаточно указать связь параметров выбора.
В обычных формах видимо не так? Установил связь. Но почему то не срабатывает. Список договоров весь открывается.
Ответ:
у договора по сути дела два владельца - этоорганизациия и контрагент. т.к по одному контрагенту может быть куча договоров по разным организациям.

Есть процедура
НачалоВыбораЗначенияДоговораКонтрагента

если вы ее откроетет то там увидет код, который устанвливает отборы

По контрагенту

Код:
ФормаВыбора = Справочники.ДоговорыКонтрагентов.ПолучитьФормуВыбора(,ЭлементФормы,);

    // Владельца менять по умолчанию не даем.
    ФормаВыбора.ПараметрОтборПоВладельцу = Контрагент;
    ФормаВыбора.ЭлементыФормы.СправочникСписок.НастройкаОтбора.Владелец.Доступность = Ложь;
затем там по виду договора с поставщиком подрядчиком и т.д
и далее по организации

Код:
// Еще надо фильтровать по организации, если она заполнена
    Если МетаданныеДокумента.Реквизиты.Найти("Организация") <> Неопределено
       И ЗначениеЗаполнено(ДокументОбъект.Организация) Тогда
        ФормаВыбора.СправочникСписок.Отбор.Организация.Значение                            = ДокументОбъект.Организация;
        ФормаВыбора.СправочникСписок.Отбор.Организация.Использование                       = Истина;
        ФормаВыбора.СправочникСписок.Отбор.Организация.ВидСравнения                        = ВидСравнения.Равно;
        ФормаВыбора.ЭлементыФормы.СправочникСписок.НастройкаОтбора.Организация.Доступность = Ложь;
    КонецЕсли;
Вопрос: Отбор договоров по контрагентам и вывод общей суммы заказа в документе.

Есть парочка задач:

1. в документе имеется реквизит контрагенты, и договор. При выборе контрагента нужно, чтобы в поле договор отображались договора, относящиеся к этому контрагенту.
В конфигураторе есть настройка "параметры выбора". Можно ли с помощью нее реализовать данный отбор? Или нужно делать это программно?

2. Имеется на форме реквизит "общая сумма заказа". Нужно чтобы в любой момент времени информация была актуальна. Можно в методе "при изменении" связанных переменных прописать изменение реквизита "общая сумма заказа". Или может быть есть другой способ реализации этого. Не хочется методе "при изменении" это писать.
Ответ: Миша Колесников, статью почитай.
В "ПриЗаписи" объект уже записан в базу, но транзакция еще не завершена.
Если проще, то:
1. Ты уверен, что пользователь выбрал нужный тип и записывает объект.
2. Если что-то случится с записью и транзакция откатится, то в договорах тоже все вернется взад. Не будет расхождений между контрагентом и договором.
Вопрос: Запрет на выбор реквизита

Здравствуйте, нужна помощь. Есть документ Договор, в нем присутствует реквизит Бригада(ссылка на другой документ), нужно запретить выбирать Бригаду, если она уже была выбрана в другом договоре. Подскажите, как справится с этой задачей.

Вот пример того, что смог сделать:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Процедура ОбработкаПроведения(Отказ, Режим)
    //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
 
    // регистр СостояниеДоговора
    Движения.СостояниеДоговора.Записывать = Истина;
    Движение = Движения.СостояниеДоговора.Добавить();
    Движение.Клиент = Клиент;
    Движение.Состояние = Состояние;
    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ 
    
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
   
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |   ДоговорПодряда.Бригада
        |ИЗ
        |   Документ.ДоговорПодряда КАК ДоговорПодряда
        |
        |СГРУППИРОВАТЬ ПО
        |   ДоговорПодряда.Бригада";
   
    РезультатЗапроса = Запрос.Выполнить();
   
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
   
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Если ВыборкаДетальныеЗаписи.Группировка() = Бригада Тогда
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = "Вы не можете выбрать данную бригаду";
            Сообщение.Сообщить();
            Отказ = Истина;
        КонецЕсли;
    КонецЦикла;
   
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
 
КонецПроцедуры
Ответ:
Сообщение от egor_22rus
есть договор(этот же) на его основании создается акт приема-передачи, а на основании этого акта создается счет фактура. У счет фактуры есть реквизит Акт приема-передачи. Нужно сделать так, чтобы при создании счет фактуры состояние созданного договора менялось на "Закрыт"
Создать реквизит Акта, содержащий ссылку на договор, на основании которого Акт создан. При создании счета-фактуры изменяем нужный реквизит договора, ссылка на который содержится в новом реквизите Акта.
Только при удалении актов/счетов-фактур могут проблемы возникнуть, наверное. Надо посмотреть, и при необходимости обрабатывать эти ситуации.
Вопрос: Не могу получить в запросе договор

Добрый день.
1С 8.3.
Пишу запрос к документу СписаниеБезналичныхДенежныхСредств. Договор вытаскиваю из Заказа, но в отчет выводятся договора только для нескольких документов, для остальных пустота, хотя в заказе договор есть.
Подскажите что я делаю не так? Как вообще по правильному получать договор?

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
ВЫБРАТЬ
        СписаниеБезналичныхДенежныхСредств.Дата КАК Дата,
        СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.Заказ.Договор КАК Договор,
                СписаниеБезналичныхДенежныхСредств.Номер КАК НомерПлатежногоДокумента,
        СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.НомерСтроки КАК НомерСтр,
        СписаниеБезналичныхДенежныхСредств.Контрагент КАК Контрагент,
        СписаниеБезналичныхДенежныхСредств.Контрагент.ИНН КАК КонтрагентИНН,
        СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.Сумма КАК Сумма,
        СписаниеБезналичныхДенежныхСредств.Валюта КАК Валюта,
        ПОДСТРОКА(СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.Комментарий,0,500) КАК Комментарий,
        СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств КАК СтатьяДДС,
        СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств.КОД КАК КодСДДС,
        СписаниеБезналичныхДенежныхСредств.НазначениеПлатежа КАК НазначениеПлатежа,
        СписаниеБезналичныхДенежныхСредств.БанковскийСчет.НомерСчета КАК Счет,
        СписаниеБезналичныхДенежныхСредств.БанковскийСчет.Банк.Код КАК БИК
    ИЗ
        Документ.СписаниеБезналичныхДенежныхСредств.РасшифровкаПлатежа КАК 
                       СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеБезналичныхДенежныхСредств КАК 
                       СписаниеБезналичныхДенежныхСредств   ПО СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка = СписаниеБезналичныхДенежныхСредств.Ссылка  
    ГДЕ
        СписаниеБезналичныхДенежныхСредств.Дата >= &ДатаС И 
        СписаниеБезналичныхДенежныхСредств.Дата <= &ДатаПО И
        СписаниеБезналичныхДенежныхСредств.ТипПлатежногоДокумента = 
                ЗНАЧЕНИЕ(Перечисление.ТипыПлатежныхДокументов.ПлатежноеПоручение) И
        СписаниеБезналичныхДенежныхСредств.ПометкаУдаления = ЛОЖЬ И 
                СписаниеБезналичныхДенежныхСредств.ПроведеноБанком = ИСТИНА
Ответ: emkaa, Уточняю (на всякий), если даже договор есть и записан в справочник, но в Соглашении "Договоры не используются", ваш первоначальный запрос не выведет договор
Вопрос: Договора в БП3.0 при синхронизации с УТ11.2

Добрый день!
На данный момент используем последние актуальные версии УТ 11.2 и БП3.0. Двухсторонняя синхронизация по типовым правилам.
После перехода с УТ11.1 на 11.2 начались проблемы с договорами контрагентов в БП. В УТ работаем по соглашениям без использования договоров. в ут11.1 была настройка по формированию договоров в БП, а в 11.2 такой настройки нет. и сейчас, при создании нового контрагента и оформлении на него заказа клиента, после синхронизации с БП в БП создаётся Основной договор, причём "С поставщиком" . А после изменения и перепроведения заказа клиента в УТ и последующей синхронизации, в БП создаётся ещё один договор и тоже "С поставщиком", хотя клиент только покупатель.
Кто знает какой алгоритм формирования договора контрагента в БП при синхронизации с УТ11.2.? на линии консультаций говорят про настройку какая была в УТ11.1, но в УТ11.2 такой настройки нет. Или я не там смотрел?
И ещё, при загрузке выписок их клиент-банка, поступление БДС, по контрагентам которые вновь создаются, вид операции ставится "Возврат от поставщика", а всегда ранее у любого поступления на р/с вид операции был "Оплата покупателя".
Ответ:
Не может договор поручительства оформляться без присутствия самого поручителя.

Речь может вестись только о заключении такого договора представителем поручителя при наличии письменной доверенности.

Все, что Вы описываете - это противозаконные действия.
Вопрос: Синхронизация УТ 11 - БП 3, правила формирования договоров

Здравствуйте!
У нас идет односторонний обмен УТ - БП. Правила формирования договоров стоит - Договоры контрагентов формируются без привязки к соглашениям или заказам.
Теперь бухгалтеру стало очень надо чтобы договора формировались как номер счета на оплату (счет на оплату у нас в данном случае в УТ Заказ клиента).
Вопрос: как это сделать безболезненно. если это вообще реально сделать, потому что в настройке я вижу только 3 правила:
1 Договоры контрагентов формируются без привязки к соглашениям или заказам.
2. Разным соглашениям соответствуют разные договоры контрагентов
3. Разным сделкам соответствуют разные договоры контрагентов.

Можно ли менять правила формирования договора вот так сходу? если не указана настройка формирования по заказам значит такой настройки в принципе нет? или по сделкам имеется ввиду по заказам? В более ранних версиях УТ 11 была такая настройка, насколько я погуглила и поняла.

Если есть где-то справка по синхронизации по УТ11.4 - БП3 . Буду благодрана ссылке.
и ответам по теме тоже)
Ответ: () Спасибо!
разобралась как сделать чтобы появилось по заказам. Надо отключить функциональные опции ("ИспользоватьПоступлениеПоНесколькимЗаказам") ("ИспользоватьРеализациюПоНесколькимЗаказам")
("ИспользоватьАктыВыполненныхРаботПоНесколькимЗаказам"))
Но теперь надо тестировать к чему это приведет и тестировать обмен((
бухгалтеру надо прям чтобы по заказам... договоры у нас в УТ не ведуться, все по соглашению
Вопрос: Конвертация данных. Найти и подставить договор в документ-приемник.

Добрый день!

Нужен совет!

Платформа 8.2. Через "Конвертацию данных" настроен перенос документа из самописной конфигурации в "Бухгалтерию 2.0".

В документе-источнике есть реквизит "Контрагент", который благополучно передается в документ-приемник "Реализация товаров и услуг".
Но в документе-источнике (и вообще в самописке) отсутствует реквизит "Договор контрагента", который необходим для документа-приемника!
В "Бухгалтерии" у каждого "Контрагента" есть только один договор и он у всех называется "Основной договор".

Каким наиболее простым образом задать в Конвертации правило поиска и подстановки договора в документ-приемник?


Возможно, вопрос примитивен, но я с 1С сталкиваюсь лишь изредка.
Ответ:
wamaco
при загрузке:
Если ЗначениеЗаполнено(Приемник.Контрагент.ОсновнойДоговор) тогда
Значение = Приемник.Контрагент.ОсновнойДоговор.Ссылка;
КонецЕсли;


Спасибо за совет - навело на нужные мысли!

Удалось решить следующим образом:

В правиле конвертации объекта (ПКО), создающем Объект-приемник: "ДокументСсылка.РеализацияТоваровУслуг",
в обработчик события "После загрузки" внес следующий код:

"Объект.ДоговорКонтрагента = Объект.Контрагент.ОсновнойДоговорКонтрагента;"

т.е. уже после загрузки всего документа по контрагенту находится и подставляется договор.

Все получилось!

p.s. кстати пришлось пробежаться ручками по всем "Контрагентам" в "Бухгалтерии" и "влоб" указать, что "Основной договор" действительно является Основным.