Имя: Пароль:
1C
1С v8
ЗУП3: программное создание и заполнение ВедомостиНаСчета
,
0 dft2014
 
27.03.19
18:24
ЗУП 3.1.8

Пытаюсь написать обработку по автоматическому созданию документа "Ведомость на счета" для версии ЗУП3.1.8. Документ создается, но табличная часть - не заполнена! Для заполнения использую типовую процедуру ВедомостьНаВыплатуЗарплатыКлиент.Заполнить(Форма), но в отладчике видно, что не заходит в эту процедуру, хотя условие Форма.Объект.Основания.Количество() возвращает 1.

Помогите!!! Вот мой код:

&НаКлиенте
Процедура СформироватьДокумент(Команда)
    Структура = ПодготовитьСписокСотрудников();
    док = СформироватьДокументВедомостьНаСервере(Структура.мФизЛица,СсылкаДН);  
    Парам = Новый Структура("Ключ", Док);
    Форма =  ПолучитьФорму("Документ.ВедомостьНаВыплатуЗарплатыПеречислением.Форма.ФормаДокумента", Парам);
    Если Форма.Объект.Основания.Количество() > 0 Тогда
        ВедомостьНаВыплатуЗарплатыКлиент.Заполнить(Форма); //Форма.Объект.Основания.Количество() возвращает 1, но сюда не проваливается!
    КонецЕсли;
КонецПроцедуры


&НаСервере
Функция СформироватьДокументВедомостьНаСервере (мФизЛица, СсылкаДН)
    
    ДатаДокумента = Объект.Дата;        
    НовыйДокументВедомость = Документы.ВедомостьНаВыплатуЗарплатыПеречислением.СоздатьДокумент();
    НовыйДокументВедомость.Дата = Объект.Дата;
    НовыйДокументВедомость.ПериодРегистрации = НачалоМесяца(ДатаДокумента);
    НовыйДокументВедомость.Организация = Объект.Организация;    
    НовыйДокументВедомость.СпособВыплаты = Справочники.СпособыВыплатыЗарплаты.НайтиПоНаименованию("Начисления по договорам");
    
    НовыйДокументВедомость.Комментарий = "Создан обработкой загрузки ДГПХ " + ТекущаяДата();
    НовыйДокументВедомость.Ответственный = ПараметрыСеанса.ТекущийПользователь;
    НовыйДокументВедомость.ПеречислениеНДФЛВыполнено = Истина;
    НовыйДокументВедомость.Округление = Справочники.СпособыОкругленияПриРасчетеЗарплаты.НайтиПоНаименованию("Без округления");
    НовыйДокументВедомость.ПроцентВыплаты = 100;
    Строка = НовыйДокументВедомость.Основания.Добавить();
    Строка.Документ = СсылкаДН;
    НовыйДокументВедомость.Записать();
    
    Возврат НовыйДокументВедомость.Ссылка;       
КонецФункции
1 dft2014
 
28.03.19
11:02
Ап!!!!
2 dft2014
 
28.03.19
13:08
Вообще никто не поможет :( ???
3 catena
 
28.03.19
13:11
Не заходит в процедуру или не заходит в Если при выполнении условия?
4 dft2014
 
28.03.19
13:51
(3) В Если заходит, но в процедуру не заходит!
5 ajax_new
 
28.03.19
14:06
Отладка на сервере включена?
6 Gbpltw
 
28.03.19
14:13
3.1.9 говорят, сама все делает
7 dft2014
 
28.03.19
14:18
(5) Да, отладка включена.
8 catena
 
28.03.19
14:20
Кыш чистили?
9 SleepyHead
 
гуру
28.03.19
14:31
Кэш тут ни при чем,нужно заполнить не только основания, но и тч "состав", и связать ее с тч "зарплата".
10 dft2014
 
28.03.19
14:36
(9) Сейчас у меня документ "Ведомость на счета" создается, но табличная часть не заполняется. Заполнить я ее пытаюсь типовыми процедурами и функциями, например использую типовую процедуру ВедомостьНаВыплатуЗарплатыКлиент.Заполнить(Форма). Но отладчик заходи в ЕСЛИ (т.е. условие выполняется), а вот в саму процедуру не заходит! Ниже фрагмент условия из (0):

Если Форма.Объект.Основания.Количество() > 0 Тогда
     ВедомостьНаВыплатуЗарплатыКлиент.Заполнить(Форма); //Форма.Объект.Основания.Количество() возвращает 1, но сюда не проваливается!
КонецЕсли;
11 SleepyHead
 
гуру
28.03.19
14:38
(10) я писал заполнение для зуп гу, структура там такач же, все работает. Все тч заполнял сам, без использования форм


Структура тч очень простая, не вижу смысла утяжелять заполнение так, как вы делаете.
12 1Сергей
 
28.03.19
14:44
"ВедомостьНаВыплатуЗарплатыКлиент" в данном контексте это что?
13 dft2014
 
28.03.19
15:00
ВедомостьНаВыплатуЗарплатыКлиент - это типовой общий модуль, в котором есть типовая процедура Заполнить(Форма):


Процедура Заполнить(Форма) Экспорт
    
    ОчиститьСообщения();
    Форма.ЗаполнитьНаСервере()
    
КонецПроцедуры
14 Gucci76
 
28.03.19
15:18
А что в параметр "форма" передается?
Форма = ПолучитьФорму("Документ.ВедомостьНаВыплатуЗарплатыВБанк.ФормаОбъекта", );???
15 dft2014
 
28.03.19
15:50
(14) В том-то и проблема, что не проваливается в ВедомостьНаВыплатуЗарплатыКлиент.Заполнить(Форма)!!!
16 dft2014
 
28.03.19
15:55
(14) Ой, неправильно ответила в (15), сейчас посмотрю...
17 dft2014
 
28.03.19
16:04
(14) В отладчике в Форма =  ПолучитьФорму("Документ.ВедомостьНаВыплатуЗарплатыПеречислением.Форма.ФормаДокумента", Парам);  передается значение "УправляемаяФорма", тип "УправляемаяФорма".
18 dft2014
 
28.03.19
16:38
Вообще убрала условие, оставила только ВедомостьНаВыплатуЗарплатыКлиент.Заполнить(Форма);
В отладчике, курсор на ВедомостьНаВыплатуЗарплатыКлиент.Заполнить(Форма) становится, но затем сразу переходит на следующую строку! В отладчике, нажала на "Вычислить выражение", в Значении пишет: "Обращение к процедуре объекта как к функции (Заполнить)"

Как так?! Ведь в общем модуле ВедомостьНаВыплатуЗарплатыКлиент, это процедура и я обращаюсь к ней как к процедуре! Ниже сама процедура:

Процедура Заполнить(Форма) Экспорт
    ОчиститьСообщения();
    Форма.ЗаполнитьНаСервере()
КонецПроцедуры
19 dft2014
 
28.03.19
18:17
Разобралась! Была нелепая ошибка: в конце строки ВедомостьНаВыплатуЗарплатыКлиент.Заполнить(Форма) не нужно было ставить ";". Ниже итоговый код:

&НаКлиенте
Процедура СформироватьДокумент(Команда)
    Структура = ПодготовитьСписокСотрудников();
    док = СформироватьДокументВедомостьНаСервере(Структура.мФизЛица,СсылкаДН);  
    Парам = Новый Структура("Ключ", Док);
    Форма =  ПолучитьФорму("Документ.ВедомостьНаВыплатуЗарплатыПеречислением.Форма.ФормаДокумента", Парам);
    Если Форма.Объект.Основания.Количество() > 0 Тогда
        ВедомостьНаВыплатуЗарплатыКлиент.Заполнить(Форма) // вот здесь надо было убрать ;
    КонецЕсли;
КонецПроцедуры
20 catena
 
29.03.19
05:04
(19)Это какая платформа так забавно трактует синтаксис?
21 1Сергей
 
29.03.19
09:46
(19) о_О
22 dft2014
 
29.03.19
11:30
(20) Платформа 8.3.13.1644. Сама в шоке!
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн