| 
    
        
     
     | 
    
  | 
Номер платежного поручения. | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        MiracMC    
     05.12.18 
            ✎
    21:38 
 | 
         
        Добрый вечер.
 
        1С:Підприємство 8.3 (8.3.13.1513) Бухгалтерия для Украины, редакция 1.2. (1.2.46.1) Программно заполняю платежное поручение исходящее. Передаю в него значение реквизита "НомерПоручения"... ДокППИ = Документы.ПлатежноеПоручениеИсходящее.СоздатьДокумент(); ДокППИ.Контрагент = Контрагент; ДокППИ.Организация = Фирма; ДокППИ.СчетОрганизации = СчетФирмы; ДокППИ.ВалютаДокумента = Вадюта; ДокППИ.Дата = ДатаДок; ДокППИ.СуммаДокумента = Сумма; ДокППИ.НомерПоручения = НомерПлатежки; ..... ДокППИ.Записать(); но в итоге получаю в этом поле сквозной нумератор системы... как обойти проблему?  | 
|||
| 
    1
    
        AlvlSpb    
     naïve 
    05.12.18 
            ✎
    23:07 
 | 
         
        (0) Если типовая, то в модуле объекта Документа.ПлатежноеПоручениеИсходящее в ПередЗаписью
 
        устанавливается номер. Т.е. чтобы вы не назначили как номер при программном создании документа, при записи или проведении установится стандартный номер. Отключите в коде его установку (только надо ли)  | 
|||
| 
    2
    
        MiracMC    
     06.12.18 
            ✎
    02:03 
 | 
         
        Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
 
        Если (НЕ РасшифровкаПлатежа.Итог("СуммаПлатежа")= СуммаДокумента) и (ЕстьРасчетыСКонтрагентами или ЕстьРасчетыПоКредитам) Тогда Если Вопрос(НСтр("ru='Не совпадают сумма документа и ее расшифровка. Пересчитать сумму документа?';uk='Не збігаються сума документа і її розшифровка. Перерахувати суму документа?'"),РежимДиалогаВопрос.ДаНет,,КодВозвратаДиалога.Да)=КодВозвратаДиалога.Да Тогда СуммаДокумента=РасшифровкаПлатежа.Итог("СуммаПлатежа"); Иначе Отказ = Истина; КонецЕсли; КонецЕсли; Если Ответственный.Пустая() Тогда Ответственный = глЗначениеПеременной("глТекущийПользователь"); КонецЕсли; Если РасшифровкаПлатежа.Количество()=1 Тогда ДоговорКонтрагента = СтрокаПлатеж.ДоговорКонтрагента; Если НЕ ЗначениеЗаполнено(СтрокаПлатеж.СчетУчетаРасчетовСКонтрагентом) Тогда СтрокаПлатеж.СчетУчетаРасчетовСКонтрагентом=СчетУчетаРасчетовСКонтрагентом; КонецЕсли; Иначе ДоговорКонтрагента=Новый(Тип("СправочникСсылка.ДоговорыКонтрагентов")); КонецЕсли; Если НЕ Оплачено Тогда ДатаВыписки = Дата; КонецЕсли; мМассивПлатежныхВедомостей = Новый Соответствие; Если Проведен Тогда Для каждого СтрокаТЧ Из Ссылка.ВыплатаЗаработнойПлаты Цикл мМассивПлатежныхВедомостей.Вставить(СтрокаТЧ.Ведомость,СтрокаТЧ.Ведомость) КонецЦикла; КонецЕсли; КонецПроцедуры  | 
|||
| 
    3
    
        MiracMC    
     06.12.18 
            ✎
    02:05 
 | 
         
        Дело в том что я перерыл весь модуль этого документа... нет там нигде явного НомерПоручения = ....
 
        а заполняю я программно это документ из обработки импорта клиент-банка... и естественно мне надо вписать номер поручения который пришло из банка... значение передается... но где то теряется по пути... и не могу найти где((((  | 
|||
| 
    4
    
        Кулибин    
     06.12.18 
            ✎
    02:53 
 | 
         
        Подписка?     
         | 
|||
| 
    5
    
        dchumak    
     06.12.18 
            ✎
    05:59 
 | 
         
        Процедура ПриУстановкеНовогоНомера или подписка на событие.     
         | 
|||
| 
    6
    
        Мимохожий Однако    
     06.12.18 
            ✎
    06:55 
 | 
         
        (3) Возможно, это реквизит формы , а не документа     
         | 
|||
| 
    7
    
        MiracMC    
     06.12.18 
            ✎
    08:19 
 | 
         
        (5)
 
        Там всего 2 процедуры которые как то затрагивают нужный мне параметр Процедура УстановитьДоступностьПоляВводаНомерПоручения() ЭлементыФормы.НомерПоручения.ТолькоПросмотр = НЕ ЗначениеЗаполнено(НомерПоручения); Если ЭлементыФормы.НомерПоручения.ТолькоПросмотр Тогда ЭлементыФормы.НомерПоручения.Подсказка = НСтр("ru='Номер поручения будет присвоен при записи объекта.';uk=""Номер доручення буде привласнений при записі об'єкта."""); Иначе ЭлементыФормы.НомерПоручения.Подсказка = НСтр("ru='Номер поручения';uk='Номер доручення'"); КонецЕсли; КонецПроцедуры Процедура СброситьУстановленныйНомерПоручения() НомерПоручения = ""; УстановитьДоступностьПоляВводаНомерПоручения(); КонецПроцедуры При всем этом СброситьУстановленныйНомерПоручения() вызываеться всего в одном слечае Процедура ДатаПриИзменении(Элемент) ... // Номер меняем, если документ не проведен и "перемещается" в другой день Если (НЕ Проведен) И (НачалоДня(Дата)<> НачалоДня(мТекущаяДатаДокумента)) Тогда СброситьУстановленныйНомерПоручения(); КонецЕсли; ... КонецПроцедуры  | 
|||
| 
    8
    
        MiracMC    
     06.12.18 
            ✎
    08:20 
 | 
         
        (6) увы нет.. это именно реквизит документа...     
         | 
|||
| 
    9
    
        catena    
     06.12.18 
            ✎
    08:34 
 | 
         
        (8)Подписки на событие смотрел?     
         | 
|||
| 
    10
    
        Мимохожий Однако    
     06.12.18 
            ✎
    09:08 
 | 
         
        Если конфигурация на УФ, то можно добавить код изменения номера через Расширение после\вместо типовой процедуры установки нового номера     
         | 
|||
| 
    11
    
        AlvlSpb    
     naïve 
    06.12.18 
            ✎
    10:05 
 | 
         
        (7) Ищи УстановитьНомерПоручения(). По крайней мере в УТП для Украины эта процедура устанавливает номер в ПлатежноеПоручениеИсходящее. Вполне возможно, что и в БП так же     
         | 
|||
| 
    12
    
        dchumak    
     06.12.18 
            ✎
    10:42 
 | 
         
        (7) нужно смотреть в модуле объекта, а не формы. Плюс подписки на события.     
         | 
|||
| 
    13
    
        MiracMC    
     08.12.18 
            ✎
    00:45 
 | 
         
        Да как бы все перерыл но так и не могу понять происходящее.
 
        Сам в 8-рке очень не давно.. в 7.7. такого не было... Натыкаюсь регулярно на какую то мистику... Может мне кто то сможет объяснить происходящее... Все та же обработка что я писал выше.. Еще несколько полей заполняю (Комментарий, СумаПлатежа...) и тоже они не отображаются в документе... С ТаблицейЗначения на форме играюсь... Делаю так же как написано везде... уже все методы перепробовал... она на форме "табСДДС" втаб = Новый ТаблицаЗначений; втаб.Колонки.Добавить("Действие",,"Дейтвие",); втаб.Колонки.Добавить("статья",Новый ОписаниеТипов("Справочники.СтатьиДвиженияДенежныхСредств"),"Статья движения денежных средств",); новстр = втаб.Добавить(); новстр.Действие = "Получение денег от покупателя"; новстр.статья = Справочники.СтатьиДвиженияДенежныхСредств.ПустаяСсылка(); ЭлементыФормы.табСДДС.Ширина = 500; ЭлементыФормы.табСДДС.Высота = 350; ЭлементыФормы.табСДДС.Лево = 20; ЭлементыФормы.табСДДС.Верх = 20; ЭлементыФормы.табСДДС.Значение = втаб; ЭлементыФормы.табСДДС.СоздатьКолонки(); ЭлементыФормы.табСДДС.Колонки[0].Ширина = 20; Сообщить("пришли туда куда надо"); ЭтаФорма.Обновить(); Но таблица "визуально" просто пустая... Сообщить(табСДДС.Колонки.Количество()) возвращает 2 Сообщить(табСДДС.Количество()) возвращает 1 А ан форме нет ничего.... Я, толи мало пъю что б это понять, то ли надо что то покрепче))) Заранее благодарен всем за помощь....  | 
|||
| 
    14
    
        hhhh    
     08.12.18 
            ✎
    02:23 
 | 
         
        (13) а в какую процедуру вставляете этот код? может он не выполняется?     
         | 
|||
| 
    15
    
        Мимохожий Однако    
     08.12.18 
            ✎
    08:12 
 | 
         
        (13) "С ТаблицейЗначения на форме играюсь..."
 
        В этом ошибка. Надо обращаться к реквизитам объекта. И второе. Этот код к изменению номера никак не относится.  | 
|||
| 
    16
    
        MiracMC    
     08.12.18 
            ✎
    11:06 
 | 
         
        (14) Вопрос снят... действительно не выполнялся код из (13). Наверно вчера совсем уже уставший был))
 
        (15) Согласен. не имеет. По теме ДокППИ.НомерПоручения = НомерПлатежки; // не работает ДокППИ.Комментарий = Назначение; // не работает ДокППИ.ОтражатьВБухгалтерскомУчете = Истина; // не работает ДокППИ.ОтраженоВОперУчете = Истина; // не работает Переда каждой передачей значение я проверил что б значение было... оно есть... и даже "по пути" выводил Сообщить(ДокППИ.НомерПоручения ); // значение есть! Но после того как документ записывается значение значения меняются на что то иное НомерПоручения = заполняет автонумеротор Комментарий = пустое ОтражатьВБухгалтерскомУчете = Ложь ОтраженоВОперУчете = Ложь Про касается модуля документа... Про НомерПоручения там есть вот такая формулировка Если НЕ ЗначениеЗаполнено(НомерПоручения) ИЛИ ЭтоНовый() Тогда Попытка НомерПорученияЧисло = Число(ТаблицаЗначений[0].Номер) + 1; НомерПоручения = Формат(НомерПорученияЧисло, "ЧГ=0"); Исключение НомерПоручения = 1; КонецПопытки; КонецЕсли; Я так понимаю что именно это и влияет. Как обойти ЭтоНовый()? Про остальные реквизиты ничего похожего ни в модуле форму документа, ни в модуле документ нет( Заранее спасибо за Вашу помощь.  | 
|||
| 
    17
    
        Мимохожий Однако    
     08.12.18 
            ✎
    11:14 
 | 
         
        (16) В каком модуле находится этот код, в какой процедуре?     
         | 
|||
| 
    18
    
        MiracMC    
     08.12.18 
            ✎
    11:21 
 | 
         
        (17) в модуле Объекта, процедура ПередЗаписью()     
         | 
|||
| 
    19
    
        hhhh    
     08.12.18 
            ✎
    12:43 
 | 
         
        (18) почему тогда
 
        ДокППИ.НомерПоручения = НомерПлатежки; ?? надо НомерПоручения = НомерПлатежки;  | 
|||
| 
    20
    
        MiracMC    
     10.12.18 
            ✎
    14:37 
 | 
         
        (19) Вы немного недопоняли..
 
        Конечно же в моей обработке, где у меня не получается сделать то о чем я пишу выше должно быть написано ДокППИ.НомерПоручения = НомерПлатежки; Выше приведен пример из тела самого документа в системе где я пытаюсь найти логику происходящего... так вот там есть Процедура ПередЗаписью() ..... Если НЕ ЗначениеЗаполнено(НомерПоручения) ИЛИ ЭтоНовый() Тогда Попытка НомерПорученияЧисло = Число(ТаблицаЗначений[0].Номер) + 1; НомерПоручения = Формат(НомерПорученияЧисло, "ЧГ=0"); Исключение НомерПоручения = 1; КонецПопытки; КонецЕсли; ..... КонецПроцедуры; Так вот и вопрос... задействуется ли эта процедура из модуля документа при том что я выполняю ДокППИ.Записть() в своей обработке или нет? Если задействуется - то как тогда обойти ЭтоНовый() проверку.....????  | 
|||
| 
    21
    
        catena    
     11.12.18 
            ✎
    04:53 
 | 
         
        (20)Да, из модуля документа все событийные процедуры срабатывают.
 
        Если это типовая процедура, скорее всего у нее в самом начале есть Если ОбменДанными.Загрузка = Истина тогда Возврат; КонецЕсли;  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |