|
Автоматическое заполнение реквизита при проведении | ☑ | ||
---|---|---|---|---|
0
Natali15
07.07.22
✎
14:24
|
конфигурация Комплексная Автоматизация 2.4
нужно, чтобы при проведении документа автоматически заполнялась форма "Платежно-расчетные документы" и попадало в реквизит Платежно-расчетные документы на форму документа https://ibb.co/pdfHwmm что сделала: добавила расширение, в расширение добавила процедуру ПровестиДокументПосле(Команда), туда прописала получение формы Форма = ПолучитьФорму("Документ.СчетФактураВыданный.Форма.ФормаПлатежноРасчетныеДокументы"); в модуле формы "Платежно-расчетные документы" есть процедура, по ней и происходит заполнение &НаСервере Процедура ЗаполнитьПлатежноРасчетныеДокументыСервер() ТаблицаПлатежноРасчетныеДокументы = ПлатежноРасчетныеДокументы.Выгрузить(); Документы.СчетФактураВыданный.ЗаполнитьПлатежноРасчетныеДокументы( ТаблицаПлатежноРасчетныеДокументы, СписокОснований.ВыгрузитьЗначения(), Организация); ПлатежноРасчетныеДокументы.Загрузить(ТаблицаПлатежноРасчетныеДокументы); КонецПроцедуры Как мне передать эту процедуру в расширение моей процедуры? https://ibb.co/80bMhHz |
|||
1
Natali15
07.07.22
✎
14:26
|
начинающий программист, поэтому не понимаю пока как это реализовать
|
|||
2
YFedor
07.07.22
✎
14:26
|
Запполнять при проведении текущий документ - это не наш метод, заполнять нужно перед записью
|
|||
3
Kassern
07.07.22
✎
14:29
|
(0) "при проведении" вы объект не сможете модифицировать так как уже открыта транзакция на запись. Максимум вы можете перед записью что-то до заполнить.
|
|||
4
Natali15
07.07.22
✎
14:31
|
(2) (3) поняла, спасибо. а как вытянуть процедуру с формы документа в расширение?
|
|||
5
Kassern
07.07.22
✎
14:32
|
(4) вы собираетесь из модуля объекта дергать процедуры формы?)
|
|||
6
Natali15
07.07.22
✎
14:41
|
(5) Нет, думаю что нужно написать так https://ibb.co/d51rvdK , но ругается, что обращаюсь к объекту на клиенте
|
|||
7
Сергиус
07.07.22
✎
14:52
|
(6)Можно вытащить в серверную функцию, но ИМХО не совсем понятно по коду, для чего это нужно.
|
|||
8
Мимохожий Однако
07.07.22
✎
14:55
|
(6) Ну так и обращайся НаСервере
|
|||
9
Natali15
07.07.22
✎
15:04
|
(7) нужно, чтобы при проведении документа автоматически заполнялась форма "Платежно-расчетные документы" и попадало в реквизит Платежно-расчетные документы на форму документа https://ibb.co/pdfHwmm
в модуле формы "Платежно-расчетные документы" прописывается эта процедура по заполнению &НаСервере Процедура ЗаполнитьПлатежноРасчетныеДокументыСервер() ТаблицаПлатежноРасчетныеДокументы = ПлатежноРасчетныеДокументы.Выгрузить(); Документы.СчетФактураВыданный.ЗаполнитьПлатежноРасчетныеДокументы( ТаблицаПлатежноРасчетныеДокументы, СписокОснований.ВыгрузитьЗначения(), Организация); ПлатежноРасчетныеДокументы.Загрузить(ТаблицаПлатежноРасчетныеДокументы); КонецПроцедуры я могу воспользоваться этим кодом в процедуре "ПередЗаписью" документа или вообще не в том направлении иду? |
|||
10
Мимохожий Однако
07.07.22
✎
15:07
|
Да
|
|||
11
Natali15
07.07.22
✎
15:19
|
написала так
&НаКлиенте Процедура ПРД_ПередЗаписьюПосле(Отказ, ПараметрыЗаписи) ПРД_ПередЗаписьюПослеСервер(); КонецПроцедуры &НаСервере Процедура ПРД_ПередЗаписьюПослеСервер() форма = Документы.СчетФактураВыданный.ПолучитьФорму("ФормаПлатежноРасчетныеДокументы"); ТаблицаПлатежноРасчетныеДокументы = форма.ПлатежноРасчетныеДокументы.Выгрузить(); Документы.СчетФактураВыданный.ЗаполнитьПлатежноРасчетныеДокументы( ТаблицаПлатежноРасчетныеДокументы, СписокОснований.ВыгрузитьЗначения(), форма.Организация); форма.ПлатежноРасчетныеДокументы.Загрузить(ТаблицаПлатежноРасчетныеДокументы); КонецПроцедуры выдает ошибку при проведении дока: Интерактивные операции недоступны {ЗаполнитьПРД Документ.СчетФактураВыданный.Форма.ФормаДокумента.Форма(9)}:форма = Документы.СчетФактураВыданный.ПолучитьФорму("ФормаПлатежноРасчетныеДокументы"); {ЗаполнитьПРД Документ.СчетФактураВыданный.Форма.ФормаДокумента.Форма(4)}:ПРД_ПередЗаписьюПослеСервер(); {ОбщийМодуль.ОбщегоНазначенияУТКлиент.Модуль(1472)}:Результат = Форма.Записать(ПараметрыЗаписи); {ОбщийМодуль.ОбщегоНазначенияУТКлиент.Модуль(1425)}:ЗаписатьОбъект(Форма, ПараметрыЗаписи); {Документ.СчетФактураВыданный.Форма.ФормаДокумента.Форма(537)}:ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма); по причине: Интерактивные операции недоступны (10) |
|||
12
Мимохожий Однако
07.07.22
✎
15:28
|
Форма - на клиенте, а объект и запись объекта - на сервере
|
|||
13
Natali15
07.07.22
✎
15:37
|
(12) &НаКлиенте
Процедура ПРД_ПередЗаписьюПосле(Отказ, ПараметрыЗаписи) Форма = ПолучитьФорму("Документ.СчетФактураВыданный.Форма.ФормаПлатежноРасчетныеДокументы"); ПРД_ПередЗаписьюПослеСервер(); КонецПроцедуры &НаСервере Процедура ПРД_ПередЗаписьюПослеСервер() ТаблицаПлатежноРасчетныеДокументы = ПлатежноРасчетныеДокументы.Выгрузить(); Документы.СчетФактураВыданный.ЗаполнитьПлатежноРасчетныеДокументы( ТаблицаПлатежноРасчетныеДокументы, СписокОснований.ВыгрузитьЗначения(), Организация); ПлатежноРасчетныеДокументы.Загрузить(ТаблицаПлатежноРасчетныеДокументы); КонецПроцедуры ПлатежноРасчетныеДокументы, Организация - переменные неопределены, так как они с другой формы этого документа |
|||
14
Kassern
07.07.22
✎
15:41
|
(11) (13) " Форма = ПолучитьФорму("Документ.СчетФактураВыданный.Форма.ФормаПлатежноРасчетныеДокументы");" - зачем вам вообще форма нужна?
ПлатежноРасчетныеДокументы, Организация - переменные неопределены - ну так откуда 1ска знает, что такое ПлатежноРасчетныеДокументы и как их можно .Выгрузить(); ? Вместо Форма.ПлатежноРасчетныеДокументы.Выгрузить(); - вы можете сделать запрос и получить нужную таблицу. Вместо "форма.Организация" - вы можете использовать ЭтотОъект.Организация (а если вы в модуле объекта, то просто Организация) |
|||
15
Natali15
07.07.22
✎
16:45
|
(14) теперь с запросом беда
&НаКлиенте Процедура ПРД_ПередЗаписьюПосле(Отказ, ПараметрыЗаписи) ПРД_ПередЗаписьюПослеСервер(); КонецПроцедуры &НаСервере Процедура ПРД_ПередЗаписьюПослеСервер() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СчетФактураВыданныйПлатежноРасчетныеДокументы.Ссылка КАК Ссылка |ИЗ | Документ.СчетФактураВыданный.ПлатежноРасчетныеДокументы КАК СчетФактураВыданныйПлатежноРасчетныеДокументы |ГДЕ | СчетФактураВыданныйПлатежноРасчетныеДокументы.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", документы.СчетФактураВыданный); РезультатЗапроса = Запрос.Выполнить(); ТаблицаЗначений = РезультатЗапроса.Выгрузить(); Для Каждого ТекущаяСтрокаТаблицы Из ТаблицаЗначений Цикл Таблица = ТаблицаЗначений.ссылка; КонецЦикла; ТаблицаПлатежноРасчетныеДокументы = Таблица.Выгрузить(); Документы.СчетФактураВыданный.ЗаполнитьПлатежноРасчетныеДокументы( ТаблицаПлатежноРасчетныеДокументы, СписокОснований.ВыгрузитьЗначения(), ЭтотОбъект.Организация); Таблица.Загрузить(ТаблицаПлатежноРасчетныеДокументы); КонецПроцедуры ошибка Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых типов. СчетФактураВыданныйПлатежноРасчетныеДокументы.Ссылка <<?>>= &Ссылка |
|||
16
Natali15
07.07.22
✎
16:46
|
(14) какой параметр нужно передавать?
|
|||
17
Kassern
07.07.22
✎
16:52
|
(15) беда - это точно))
Попробую обрисовать вам ситуацию, что вы попытались в запросе сделать)) Приходите вы такая в больницу в регистратуру, чтобы получить там свою карточку медицинскую. Подходите в окошечку и говорите тетеньке, мол найдите мою мед карту, она у вас спрашивает, уточните, а кто вы, кого искать? А вы такая берете и суете ей свою мед карту, мол смотрите кто я) Запрос.Текст = "ВЫБРАТЬ | СчетФактураВыданныйПлатежноРасчетныеДокументы.Ссылка КАК Ссылка |ИЗ | Документ.СчетФактураВыданный.ПлатежноРасчетныеДокументы КАК СчетФактураВыданныйПлатежноРасчетныеДокументы |ГДЕ | СчетФактураВыданныйПлатежноРасчетныеДокументы.Ссылка = &Ссылка"; |
|||
18
Kassern
07.07.22
✎
17:01
|
Проще наверное вам вот так ТЗ получить:
Док=Документы.СчетФактураВыданный.СоздатьДокумент(); ТаблицаПлатежноРасчетныеДокументы =Док.ПлатежноРасчетныеДокументы.Выгрузить(); |
|||
19
Смотрящий
07.07.22
✎
17:04
|
Не туды уехали.
КА нет под рукой, но судя по (0) ПлатежноРасчетныеДокументы - это табличная часть документа СчетФактураВыданный. Заполняется она не в форме ФормаПлатежноРасчетныеДокументы а в процедуре ЗаполнитьПлатежноРасчетныеДокументы модуля документа СчетФактураВыданный Значит перехватить надо призаписи (после) документа СчетФактураВыданный вкорячив в нее ТаблицаПлатежноРасчетныеДокументы = ПлатежноРасчетныеДокументы.Выгрузить(); Документы.СчетФактураВыданный.ЗаполнитьПлатежноРасчетныеДокументы( ТаблицаПлатежноРасчетныеДокументы, СписокОснований.ВыгрузитьЗначения(), Организация); ПлатежноРасчетныеДокументы.Загрузить(ТаблицаПлатежноРасчетныеДокументы); |
|||
20
Natali15
07.07.22
✎
21:32
|
(19) подскажите, что передать в список оснований?
|
|||
21
Смотрящий
07.07.22
✎
21:56
|
(20) Скорее всего СписокОснований реквизит формы ФормаПлатежноРасчетныеДокументы который заполняется при ее открытии из формы документа
Надо в отладчике походить и посмотреть что там |
|||
22
Natali15
07.07.22
✎
22:09
|
(21) да, всё так
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; Параметры.Свойство("Организация", Организация); Параметры.Свойство("СписокОснований", СписокОснований); Если Параметры.Свойство("ДокументОснование") Тогда СписокОснований.Добавить(Параметры.ДокументОснование); КонецЕсли; Если Параметры.Свойство("АдресВХранилище") Тогда ПлатежноРасчетныеДокументы.Загрузить(ПолучитьИзВременногоХранилища(Параметры.АдресВХранилище)); КонецЕсли; СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка); КонецПроцедуры |
|||
23
Смотрящий
07.07.22
✎
22:12
|
(22) Ну так и подсунь в список основанийчто он там получает в присозданиинасервере
|
|||
24
Natali15
07.07.22
✎
22:14
|
(23) получить документ основание?
|
|||
25
Смотрящий
07.07.22
✎
22:21
|
(24) Не играй в угадайку.
Параметры.Свойство("СписокОснований", СписокОснований); - тут заполняется список оснований из параметров переданный в форму. Найти место где список оснований заполняется перед открытием формы. |
|||
26
Natali15
07.07.22
✎
22:54
|
(25)он создан на форме с типом "СписокЗначений", в модуле формы не описано где этот список заполняется, не понимаю куда смотреть
|
|||
27
Смотрящий
07.07.22
✎
22:58
|
(26) https://ibb.co/pdfHwmm
при нажатии на гиперссылку открывается окно. вот в процедуре обработчике и ищи заполнение |
|||
28
Natali15
07.07.22
✎
23:16
|
при нажатии попадает на эту процедуру
&НаКлиенте Процедура ПлатежноРасчетныеДокументыСтрокойНажатие(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("Организация", Объект.Организация); ПараметрыФормы.Вставить("СписокОснований", СписокОснований); ПараметрыФормы.Вставить("АдресВХранилище", ПоместитьПлатежноРасчетныеДокументыВХранилище()); НовыйАдресВХранилище = Неопределено; ОткрытьФорму( "Документ.СчетФактураВыданный.Форма.ФормаПлатежноРасчетныеДокументы", ПараметрыФормы,,,,, Новый ОписаниеОповещения("ПлатежноРасчетныеДокументыСтрокойНажатиеЗавершение", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); КонецПроцедуры (27) |
|||
29
Смотрящий
07.07.22
✎
23:19
|
(28) ну вот он
ПараметрыФормы.Вставить("СписокОснований", СписокОснований); В форме документа есть реквизит СписокОснований значит в перехватчике при записи ничего менять не надо |
|||
30
Natali15
07.07.22
✎
23:27
|
(29) получается перехватчик делать процедуры "ПриЗаписи" у модуля формы документа? все это время делала перехват в модуле объекта
|
|||
31
Смотрящий
07.07.22
✎
23:30
|
(30) В первом случае обработчик будет работать только при интерактивной записи.
Во втором - при интерактивной и при программной. Решай как надо |
|||
32
Natali15
07.07.22
✎
23:36
|
(31) а как быть во втором случае со списком оснований?
|
|||
33
Смотрящий
07.07.22
✎
23:42
|
(32) Формировать его самостоятельно. Толькоу тебя будет не список оснований а список значений.
Поройся в коде и структуре жддокумента счета фактуры - он где то формируется динамическеи, или сохраняется - от наркоманов, которые пилят типовые всего можно ожидать. |
|||
34
Natali15
07.07.22
✎
23:44
|
(33) спасибо вам
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |