Имя: Пароль:
1C
1С v8
Не могу программно заполнить документ
,
0 Альбатрос
 
14.09.11
08:12
Всем привет! конфа - УТ10.3. Нужно программно заполнить документ "Корректировка долга". С заполнением реквизитов проблемы нет, а вот с таб. частями... Мне нужно провести списание задолженности. Таб. часть в док-те одна: СуммыДолга. Делаю так (для проверки):
    Для Каждого стр из рез цикл
       // Сообщить(""+стр.Орг+" "+стр.Контра+" "+стр.Дк+" "+стр.Сво);
        Док = Документы.КорректировкаДолга.СоздатьДокумент();
        Док.Дата ='20110702235959';
        Док.Организация = Стр.Орг;
        Док.ВидОперации = Перечисления.ВидыОперацийКорректировкаДолга.СписаниеЗадолженности;
        Док.КонтрагентДебитор = стр.Контра;
        новСтрока = Док.СуммыДолга.Добавить();
        НовСтрока.ДоговорКонтрагента = стр.ДК;
        Док.Записать();
        Прервать;
        Возврат;
    КонецЦикла;


Так вот. При открытии документа таб части пустые. Как их заполнить
1 Dmitriy_76
 
14.09.11
08:15
Док = Документы.КорректировкаДолга.СоздатьДокумент();
        Док.Дата ='20110702235959';
        Док.Организация = Стр.Орг;
        Док.ВидОперации = Перечисления.ВидыОперацийКорректировкаДолга.СписаниеЗадолженности;
        Док.КонтрагентДебитор = стр.Контра;
    Для Каждого стр из рез цикл

        новСтрока = Док.СуммыДолга.Добавить();
        НовСтрока.ДоговорКонтрагента = стр.ДК;
        Док.Записать();
        Прервать;
        Возврат;
    КонецЦикла;
2 Dmitriy_76
 
14.09.11
08:16
ошибся

Док = Документы.КорректировкаДолга.СоздатьДокумент();
        Док.Дата ='20110702235959';
        Док.Организация = Стр.Орг;
        Док.ВидОперации = Перечисления.ВидыОперацийКорректировкаДолга.СписаниеЗадолженности;
        Док.КонтрагентДебитор = стр.Контра;
    Для Каждого стр из рез цикл

        новСтрока = Док.СуммыДолга.Добавить();
        НовСтрока.ДоговорКонтрагента = стр.ДК;
    КонецЦикла;
Док.Записать();
3 Альбатрос
 
14.09.11
08:20
(1)(2) ну так ведьэто тоже самое. Просто заполнение реквизитов и сохранение вынесено из цикла. Что, кстати, не верно, так как по каждой строчке из "рез" должен создаваться отдельный документ.
Почему не работает:
новСтрока = Док.СуммыДолга.Добавить();
НовСтрока.ДоговорКонтрагента = стр.ДК;
4 Kassius
 
14.09.11
08:24
Суммы долга точно ТЧ или все же наборзаписей?
5 Альбатрос
 
14.09.11
08:25
(4) Точно ТЧ.
6 Kassius
 
14.09.11
08:40
(5) и док записывается пустым, т.е. без строк но с заполненными реквизитами?
Строк точно нет или они пустые?
7 Альбатрос
 
14.09.11
08:41
Именно так. Строк точно нет.
8 lxs
 
14.09.11
08:45
Тебе вот это ни о чем не говорит?


   ТабСумм         = ЭтотОбъект.СуммыДолга.Выгрузить();
   
   Если ВалютаДокумента = мВалютаРегламентированногоУчета или ВалютаДокумента = Справочники.Валюты.ПустаяСсылка() Тогда
       ТабСумм.Свернуть("ВидЗадолженности","Сумма");
   Иначе
       ТабСумм.Свернуть("ВидЗадолженности","СуммаВзаиморасчетов");
       ТабСумм.Колонки.СуммаВзаиморасчетов.Имя = "Сумма";
   КонецЕсли;
9 lxs
 
14.09.11
08:46
и вот это


   // Укажем, что надо проверить:
   СтруктураОбязательныхПолей = Новый Структура("ДоговорКонтрагента, КурсВзаиморасчетов, КратностьВзаиморасчетов, СчетУчетаРасчетов");
10 lxs
 
14.09.11
08:47
Даже на (8) не нужно смотреть.
11 Kassius
 
14.09.11
08:50
Процедура ОчиститьСтрокиТабЧасти(ВыбранноеЗначение, ОбъектСравнения, ТекстВопроса, СтандартнаяОбработка)
   Если СуммыДолга.Количество() > 0
      И СуммыДолга[0].ДоговорКонтрагента[ОбъектСравнения] <> ВыбранноеЗначение Тогда

       Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да);
       Если Ответ = КодВозвратаДиалога.Да Тогда
           СуммыДолга.Очистить();
           ВывестиНадписи();
       Иначе  
           //Отказ от выбора
           СтандартнаяОбработка = Ложь;
       КонецЕсли;        
   КонецЕсли;
КонецПроцедуры
12 Kassius
 
14.09.11
08:54
в (11) бред.
Не то скинул ...
Суть в том что долга нет в строке.
Заполни как в (9)
13 Альбатрос
 
14.09.11
09:03
(9)(12) Если Вы говорили про то, что у меня были не заполнены все поля,то не взлетело.
14 Челмедведосвин
 
14.09.11
09:03
(0) Можешь отладчиком пройти по процедурам ПередЗаписью и ПриЗаписи.
15 Челмедведосвин
 
14.09.11
09:04
(14) Посмотри, у тебя договор устанавливается, а потом где-то сбрасывается или вообще не устанавливается.
16 Альбатрос
 
14.09.11
09:11
(14) Эти процедуры не описаны в данном документе, и они ведь срабатывают толь при интеравктивном действии.
17 Альбатрос
 
14.09.11
09:14
И еще, тут есть таб.поле на форме, которое не задано в описании документа, то есть как элемент формы. Как можно к нему обратиться и заполнить его?
18 lxs
 
14.09.11
09:21
(17) не поверишь, так же
19 Альбатрос
 
14.09.11
09:28
(18){Форма.Форма.Форма(29)}: Поле объекта не обнаружено (СуммыДолгаУменьшение)
новСтрока = Док.СуммыДолгаУменьшение.Добавить();

Не поверишь, не так же =)
20 hhhh
 
14.09.11
09:44
(19) там одна ТЧ СуммыДолга, но разбрасывается по разным закладкам в документе. Так как ты офигенно ленивый и кроме договора ничего не указал, то понятно, что эта строчка есть, но ни на одной закладке не видна.
21 Челмедведосвин
 
14.09.11
09:51
+(20) У таб. поля есть свойство Данные, там таб. значений, табличная часть... Вот с этим объектом и работай.

(16) Т.е., если в модуле объекта есть процедура ПередЗаписью, она работает только при интерактивной записи? Кстати, еще могут быть подписки на событие по этому документу.
22 Альбатрос
 
14.09.11
09:58
(20)Неправда. На закладке "уменьшение долга" есть таб.поле "СуммыДолгаУменьшение", где, собссно, и отображается инфа о списании. При этом, если я в уже созданном этой обработой доке меняю вид операции, и ТОГДА отображается записанная мной инфа в таб.части. Так что да, строчка есть. А как ее привязать к виду операции "Списание" и соответст. таб. полю???
23 lxs
 
14.09.11
10:05
(22) Олень, посмотри в конфигуратор.. там одна табличная часть
24 lxs
 
14.09.11
10:06
Уже начинают парить дятлы, которые учет ни хера не знают, даже в конфигуратор ленятся заглянуть, а еще лезут спорить.
25 lxs
 
14.09.11
10:06
Разберись с метаданными и правилами заполнения, потом спорь.
26 Альбатрос
 
14.09.11
10:11
(24) А ты не парься, расслабся. Я и не спорил про таб. часть. Я знаю, что она там одна. Но на ФОРМЕ есть ЭЛЕМЕНТ ФОРМЫ таб. поле "СуммыДолгаУменьшение"!!! В ней отображается нужная мне информация по операции "списание"!!! Могу предположить, что данные в нее берутся из таб. части документа, и я что-то не заполнил, раз они туда не попадают. Но, чорт побери, ЧТО ЕЩЕ тут можно заполнить???

        Док = Документы.КорректировкаДолга.СоздатьДокумент();
        Док.Дата ='20110702235959';
        Док.Организация = Стр.Орг;
        Док.ВидОперации = Перечисления.ВидыОперацийКорректировкаДолга.СписаниеЗадолженности;
        Док.КонтрагентДебитор = стр.Контра;
        Док.ДоговорКонтрагента = Стр.ДК;
        Док.ВалютаДокумента = стр.ввр;
        новСтрока = Док.СуммыДолгаУменьшение.Добавить();
        НовСтрока.ДоговорКонтрагента = стр.ДК;
        НовСтрока.Сумма = 4500;
        НовСтрока.КурсВзаиморасчетов = 1;
        НовСтрока.КратностьВзаиморасчетов = 1;
        Док.Записать();
27 Альбатрос
 
14.09.11
10:17
то есть: новСтрока = Док.СуммыДолга.Добавить();
28 lxs
 
14.09.11
10:17
вид задолженности установи, там отбор устанавливается при открытии.
29 lxs
 
14.09.11
10:18
ЭлементыФормы.СуммыДолгаУменьшение.ОтборСтрок.ВидЗадолженности.Использование = Истина;
       ЭлементыФормы.СуммыДолгаУменьшение.ОтборСтрок.ВидЗадолженности.Значение      = Перечисления.ВидыЗадолженности.Дебиторская;
       ЭлементыФормы.СуммыДолга.ОтборСтрок.ВидЗадолженности.Использование = Истина;
       ЭлементыФормы.СуммыДолга.ОтборСтрок.ВидЗадолженности.Значение      = Перечисления.ВидыЗадолженности.Кредиторская;
30 Альбатрос
 
14.09.11
10:28
(29)Да, действительно, спасибо, Уважаемый! И не стоит так нервничать из-за чужой тупости=)
31 zahar140382
 
14.09.11
10:28
НовСтрока.ДоговорКонтрагента = стр.ДК;
А в этой чтрочке стр.ДК это что? может нужно
НовСтрока.ДоговорКонтрагента = стр.ДК.Ссылка
32 Альбатрос
 
14.09.11
10:29
(31) Нет,там ссылка. В любом случае, проблема была в (28),(29)
33 lxs
 
14.09.11
10:34
(30) Утро у меня сегодня не доброе. Все ок.
2 + 2 = 3.9999999999999999999999999999999...