|
Номер платежного поручения. | ☑ | ||
---|---|---|---|---|
0
MiracMC
05.12.18
✎
21:38
|
Добрый вечер.
1С:Підприємство 8.3 (8.3.13.1513) Бухгалтерия для Украины, редакция 1.2. (1.2.46.1) Программно заполняю платежное поручение исходящее. Передаю в него значение реквизита "НомерПоручения"... ДокППИ = Документы.ПлатежноеПоручениеИсходящее.СоздатьДокумент(); ДокППИ.Контрагент = Контрагент; ДокППИ.Организация = Фирма; ДокППИ.СчетОрганизации = СчетФирмы; ДокППИ.ВалютаДокумента = Вадюта; ДокППИ.Дата = ДатаДок; ДокППИ.СуммаДокумента = Сумма; ДокППИ.НомерПоручения = НомерПлатежки; ..... ДокППИ.Записать(); но в итоге получаю в этом поле сквозной нумератор системы... как обойти проблему? |
|||
1
AlvlSpb
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
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)Да, из модуля документа все событийные процедуры срабатывают.
Если это типовая процедура, скорее всего у нее в самом начале есть Если ОбменДанными.Загрузка = Истина тогда Возврат; КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |