Имя: Пароль:
1C
1С v8
В форме документа есть надпись, долг покупателя(ссылка), хочу чтобы она появляла
0 НайманОртажуз
 
03.03.16
13:22
В форме документа есть надпись, долг покупателя(ссылка), хочу чтобы она появлялась в макете после нажатия флага.
1 НайманОртажуз
 
03.03.16
13:23
8 УТ
2 shuhard
 
03.03.16
13:26
(0)[хочу чтобы она появляла]
а ей пофиг ?
3 НайманОртажуз
 
03.03.16
13:28
Не поместилась, че ты?
4 mehfk
 
03.03.16
13:28
(0) Продолжайте хотеть.
5 Cyberhawk
 
03.03.16
13:30
"В форме", "в макете" - ЯННП
6 Fish
 
03.03.16
13:31
(0) Так надо попросить, она и появится.
7 Качели
 
03.03.16
13:32
(5) А про нажатие флага?
8 batman69
 
03.03.16
13:36
(7)Он имел ввиду, после махания флагом, видимо.
9 FIXXXL
 
03.03.16
13:37
(0) если УТ10.3, есть в настройках флаг типа "Рассчитывать долг при открытии формы"
10 Cyberhawk
 
03.03.16
13:41
(7) Я тебя путаю с Карупян, а того, в свою очередь, с Брегорьян
11 НайманОртажуз
 
03.03.16
13:45
https://yadi.sk/i/QKFtCnXwpsmrq
вот тут все понятно
12 Ёпрст
 
03.03.16
13:47
(11) ну дык воткни в процу на флажке обновление надписи на форме, а в обновленииотображения, или где там она присваевается - выкини.
13 Fish
 
03.03.16
13:54
(12) Может, под макетом имелась ввиду печатная форма?
14 НайманОртажуз
 
03.03.16
13:58
13 Печатная форма
15 Fish
 
03.03.16
14:01
(14) Ну тогда всё проще простого: в макете добавляешь параметр, а в процедуре печати (обычно она находится в модуле менеджера) подставляешь туда значение, которое получаешь так же, как оно получается в надписи на форме.
16 НайманОртажуз
 
03.03.16
14:44
Можно ли сюда воткнуть записи, чтобы это(надпись) появилась в печати?
Перем мПериод          Экспорт; // Период движений
Перем мТаблицаДвижений Экспорт; // Таблица движений

// Выполняет приход по регистру.
//
// Параметры:
//  Нет.
//
Процедура ВыполнитьПриход() Экспорт

    ОбщегоНазначения.ВыполнитьДвижениеПоРегистру(ЭтотОбъект, ВидДвиженияНакопления.Приход);

КонецПроцедуры // ВыполнитьПриход()

// Выполняет расход по регистру.
//
// Параметры:
//  Нет.
//
Процедура ВыполнитьРасход() Экспорт

    ОбщегоНазначения.ВыполнитьДвижениеПоРегистру(ЭтотОбъект, ВидДвиженияНакопления.Расход);

КонецПроцедуры // ВыполнитьРасход()

// Выполняет движения по регистру.
//
// Параметры:
//  Нет.
//
Процедура ВыполнитьДвижения() Экспорт

    Загрузить(мТаблицаДвижений);

КонецПроцедуры // ВыполнитьДвижения()

// Процедура контролирует остаток по данному регистру по переданному документу
// и его табличной части. В случае недостатка товаров выставляется флаг отказа и
// выдается сообщегние.
//
// Параметры:
//  ДокументОбъект    - объект проводимого документа,
//  ИмяТабличнойЧасти - строка, имя табличной части, которая проводится по регистру,
//  СтруктураШапкиДокумента - структура, содержащая значения "через точку" ссылочных реквизитов по шапке документа,
//  Отказ             - флаг отказа в проведении,
//  Заголовок         - строка, заголовок сообщения об ошибке проведения.
//
Процедура КонтрольОстатков(ДокументОбъект, ИмяТабличнойЧасти, СтруктураШапкиДокумента, Отказ, Заголовок, ИмяСуммы = "СуммаПлатежа", Знак="") Экспорт

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

                // Контроль числа дней задолженности
                Если СтруктураШапкиДокумента.КонтролироватьЧислоДнейЗадолженности Тогда
                    
                    Запрос = Новый Запрос;
                    Запрос.УстановитьПараметр("ДоговорКонтрагента", ДоговорКонтрагента);

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

                            РазницаДней = Цел(РазницаДатВСекундах/(24 * 60 * 60));
                        Иначе
                            РазницаДней = ЗаполнениеДокументов.ЧислоРабочихДней(Выборка.ДатаПервогоДокумента, СтруктураШапкиДокумента.Дата);
                        КонецЕсли;
                        
                        Если РазницаДней > ДопустимоеЧислоДнейЗадолженности Тогда

                            ОбщегоНазначения.СообщитьОбОшибке("Превышено допустимое число дней задолженности по договору " + ДоговорКонтрагента +
                            Символы.ПС + Символы.Таб +
                            " Допустимое число дней задолженности: " + ДопустимоеЧислоДнейЗадолженности +
                            ", дата самой старой задолженности: " + Выборка.ДатаПервогоДокумента +
                            ", превышение: " +
                            (РазницаДней - ДопустимоеЧислоДнейЗадолженности) + " дней",
                            Отказ, Заголовок);
                        КонецЕсли;
                    КонецЕсли;
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
    Иначе
        Запрос = Новый Запрос;
        Запрос.УстановитьПараметр("ДокументСсылка",        ДокументОбъект.Ссылка);
        
        Запрос.Текст = "
        |ВЫБРАТЬ // Для контроля суммы задолженности по расчетному документу (ведение взаиморасчетов - по расчетным документам)
        |   Док.ДоговорКонтрагента,
        |   Док.ДоговорКонтрагента.ВалютаВзаиморасчетов,
        |   Док.ДокументРасчетовСКонтрагентом,
        |   Док."+ ИмяСуммы + " КАК СуммаДокумента,
        |   Док.ДоговорКонтрагента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
        |   Взаиморасчеты.СуммаВзаиморасчетовОстаток
        |ИЗ
        |    Документ." + ИмяТаблицы + " КАК Док
        |ЛЕВОЕ СОЕДИНЕНИЕ
        |     РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(,
        |     ДоговорКонтрагента В (ВЫБРАТЬ РАЗЛИЧНЫЕ ДоговорКонтрагента ИЗ Документ." + ИмяТаблицы +"
        |                            ГДЕ Документ." + ИмяТаблицы + ".Ссылка = &ДокументСсылка)
        |     ) КАК Взаиморасчеты
        |ПО
        |    Док.ДоговорКонтрагента       = Взаиморасчеты.ДоговорКонтрагента
        |    И Док.ДокументРасчетовСКонтрагентом = Взаиморасчеты.ДокументРасчетовСКонтрагентом
        |ГДЕ
        |    Док.Ссылка = &ДокументСсылка
        |    И Док.ДоговорКонтрагента.ВестиПоДокументамРасчетовСКонтрагентом
        |";

        Выборка = Запрос.Выполнить().Выбрать();
        Пока Выборка.Следующий() Цикл
            
            Если НЕ ЗначениеЗаполнено(Выборка.ДокументРасчетовСКонтрагентом) Тогда
                Продолжить;
            КонецЕсли;
            
            СуммаВзаиморасчетовОстаток = ?(Выборка.СуммаВзаиморасчетовОстаток= NULL, 0, ?(Выборка.СуммаВзаиморасчетовОстаток > 0, 1, -1) * Выборка.СуммаВзаиморасчетовОстаток);
            
            СуммаВзаиморасчетовПоДокументу = Выборка.СуммаДокумента;

            Валюта = Выборка.ВалютаВзаиморасчетов;
            Если СуммаВзаиморасчетовОстаток < СуммаВзаиморасчетовПоДокументу Тогда
                УправлениеЗапасами.ОшибкаНетОстатка("Сумма по документу превышает текущую задолженность по расчетному документу " + Выборка.ДокументРасчетовСКонтрагентом + ".",
                СуммаВзаиморасчетовОстаток, СуммаВзаиморасчетовПоДокументу, Валюта, Отказ, Заголовок);
            КонецЕсли;
        КонецЦикла;
   КонецЕсли;
    
КонецПроцедуры // КонтрольОстатков()
17 НайманОртажуз
 
03.03.16
14:45
Это регистр накопления ВзаимоРасчетыСКонтрагентами
18 FIXXXL
 
03.03.16
16:51
(16) нет
но скопировать и модернизировать нужный кусок можно
19 mistеr
 
03.03.16
18:14
Я бы флаг не делал, а добавил печатную форму и пару строчек в процедуре Печать()