Имя: Пароль:
1C
1C 7.7
v7: Загрузка из dbf в новый реквизит
0 slimuz
 
25.01.19
09:49
Создал новый реквизит в счет фактуру. В обработку (написанную ранее не мной) по загрузке dbf вписал поле в список значений всё по аналогии как с другими реквизитами, прописал Док.Реквизит=Шапка.ID, ниже сообщить(Док.Реквизит). При загрузке сообщение выводит значения по каждой строке, а в самом документе реквизит не заполнен. Прошу подсказать в чем может быть дело.
1 trdm
 
25.01.19
09:51
Несовпадение типов.
Реквизиту с агрегатрным типом присваевашь простое значение.
Не прокатит.
Или вид реквизита не определен.
2 Duke1C
 
25.01.19
09:52
(0) Реквизит так и называется - "Реквизит"?
3 slimuz
 
25.01.19
09:55
(1) Тип реквизита: Строка
Тип в dbf: Char
4 ZDenis
 
25.01.19
09:57
(3) либо где-то очищается, либо Док. не записывается
5 Ёпрст
 
25.01.19
10:00
Зачет, кто-то только клюшки осваивает..
6 slimuz
 
25.01.19
10:01
(4) Док.Записать(); - есть.
Другие реквизиты этого документа то заполняются
7 ДенисЧ
 
25.01.19
10:02
В отладчике на строку Док.Реквизит=Шапка.ID точку поставь и посмотри до и после.
8 ZDenis
 
25.01.19
10:03
(6) Выложи свой код, гадать можно долго
9 slimuz
 
25.01.19
10:12
(7) Присваивается значение "шапки" и до следующей строки в dbf  значение остается
10 slimuz
 
25.01.19
10:14
(8) Код очень большой, различные проверки контрагентов, номера, валюты, подразделений. Часть кода сейчас постараюсь выложить
11 Mikeware
 
25.01.19
10:22
(5) хорошо, что не 6.0
12 slimuz
 
25.01.19
10:28
Без всяких проверок.

        Шапка.Первая();
        Пока Шапка.ВКонце()=0 Цикл
                Если Записать=0 Тогда
                НеЗаписано=НеЗаписано+1 ;
                Протокол.ДобавитьСтроку("Не записано! "+Пояснения) ;
            Иначе
                Если ТолькоПротокол=0 Тогда
                    Док.Новый();
                    Док.ДатаДок=Шапка.DAT_BV ;
                    Док.ДатаДокумента=Шапка.DAT_S ;
                    Док.НомерДокумента=СокрП(Ном);        
                    Док.Содержание=СокрП(Шапка.NAZN);
                    Док.Комментарий=СокрП(Шапка.NAZN);
                    Док.Подразделение=Подразделение.ТекущийЭлемент();
                    Док.Ответственный=СокрП(Шапка.ISPOLN);
                    Док.ИДГК=СокрП(Шапка.ID_GK);
                    Док.НоваяСтрока();
                    Док.Сумма=Шапка.SUMMA ;
                    Сообщить(Док.Реквизит);
                    Док.Записать();
                КонецЕсли;
                Записано=Записано+1 ;
                Протокол.ДобавитьСтроку("Записано. "+Пояснения);
            КонецЕсли;
            Шапка.Следующая() ;
        КонецЦикла;
13 slimuz
 
25.01.19
10:29
Реквизит ИДГК
14 ZDenis
 
25.01.19
10:32
(13)  Сообщить Док.РеквизитЮ а присваиваешь Док.ИДГК, что-то ты недоговариваешь или?
15 trdm
 
25.01.19
10:32
Ну так не:
Сообщить(Док.Реквизит);
а
Сообщить(Док.ИДГК);

Ну и плюс:
не просто Док.Записать();
а:

Попытка
    Док.Записать();
Исключение
    Сообщить(ОписаниеОшибки()+" [20190125-1039] ");
КонецПопытки;
16 slimuz
 
25.01.19
10:33
(14) Это я изменить хотел название реквизита, но выложил с ИДГК случайно)
17 slimuz
 
25.01.19
10:38
(15) Дак ошибок нет
18 slimuz
 
25.01.19
10:38
Сообщить(Док.ИДГК); - выводит значения, я ж писал
19 D_E_S_131
 
25.01.19
10:41
В 7.7 же уже был отладчик, почему бы не посмотреть после какой строки кода этот ИДГК очищается?
20 trdm
 
25.01.19
10:41
(17) Лучше не называть Реквизит идентификатором "Реквизит".
Мало ли. Попробуй переименуй.
21 uno-group
 
25.01.19
10:42
ИДГК случаем не реквизит табличной части?
Тогда новая строка или позиционирование на ней нужно.
22 Ёпрст
 
25.01.19
10:48
(13) ИДГК  - реквизит чего хоть ? шапки ? Табличной части ? Общий реквизит дока ?
23 skafandr
 
25.01.19
10:49
(21) плюсую за эту версию
24 ZDenis
 
25.01.19
10:58
(21), (23) Он бы не выводился в сообщить. Скорее где-то очищается перед записью.
(18) Поставь Сообщить(Док.ИДГК); прямо перед Док.Записать();
25 slimuz
 
25.01.19
11:11
(20) (23) Дак он у меня называется не реквизит, а ИДГК. И в сообщить ИДГК
26 slimuz
 
25.01.19
11:13
(24) Ставил, сообщает. (19) Отладчиком смотрел я ж писал, очищается только когда следующая строка dbf идет на запись. Т.е. новое значение подставляется
27 Kigo_Kigo
 
25.01.19
11:14
(25) Ну та и давай так как есть, какой сакральный смысл перед выкладкой сюда, какие то реквизиты переименовывать и вводить все сообщество в заблуждение?
28 slimuz
 
25.01.19
11:14
(22) Реквизит шапки документа. Разместил на форму
29 slimuz
 
25.01.19
11:16
(27) Я уже много раз объяснил. Что вы докопались до Сообщить(Док.Реквизит); ?
30 ZDenis
 
25.01.19
11:18
(29) Может он и записывается, а на форму вынесен не он?
31 Kigo_Kigo
 
25.01.19
11:18
(29) Я не докапываюсь, пытаясь разобраться в проблеме я еще больше запутался, что да где у вас есть, а оно мне надо?
32 Ёпрст
 
25.01.19
11:19
(28) весь код в топку.
Для начала, нужно не Док.Новый делать, а искать по параметрам (ид дока или дата+номер хотя бы), и ежели не найден, только тогда Док.Новый лепить.
Иначе. повторно твою поделку лучше не запускать
33 D_E_S_131
 
25.01.19
11:39
"очищается только когда следующая строка dbf идет на запись" - так у тебя документ-то новый создается. Каким боком он к прошлому имеет отношение?
34 uno-group
 
25.01.19
12:16
Вариант 1 он не очищается просто на форме поле маленького размера и не отображает информацию.
Вариант 2 очищается при открытии документа.
Вариант 3 очищается при записи проведение.
Поиск  использования ИДГК в форме и модуле проведения
35 ДенисЧ
 
25.01.19
12:28
Сразу после Записать() в документе отладчиком реквизит смотрел?
36 slimuz
 
25.01.19
12:38
(35) После Док.Записать() значение в рек. заполнено
37 ДенисЧ
 
25.01.19
12:40
(36) А тогда откуда взялось, что он не заполняется?
В ПриОткрытии этого документа он есть?
38 slimuz
 
25.01.19
12:43
(37) Процедуре ПриОткрытии не прописан этот реквизит. Он вообще в модуле документа не прописан.
В открытых документах не заполнено, да и в отчет пустое значение выводит. Если вручную в документе заполнить этот реквизит, то значение остается в документе и в отчете выводится
39 ДенисЧ
 
25.01.19
12:48
(38) Обогиядумне....
В приОткрытии() у текущего документа реквизит заполнен?
Подсказываю: смотреть отладчиком и через сообщить()
40 uno-group
 
25.01.19
12:52
Глобальной переменной такой случаем нет?
41 uno-group
 
25.01.19
12:54
В отладчике включить секундомер запустить обработку, потом открыть документ. выключить секундомер. Искать где обнуляется.
42 ZDenis
 
25.01.19
12:55
(38) Практически у тебя на каждый запуск обработки создаются документы. Ты уверен что ты входишь в новые потом?
43 slimuz
 
25.01.19
12:55
(39) Оказывается значение не сохраняется при записи или проведении документа, хотя все норм было. Это может быть связано с тем что такое же название реквизита есть в другом документе
44 ZDenis
 
25.01.19
12:57
(43) "Это может быть связано с тем что такое же название реквизита есть в другом документе" - ерунда, реквизиты совпадают практически везде
45 uno-group
 
25.01.19
13:01
(43) гениально. А реквизит "Контрагент" в каждом документе по разному называется.
46 Kigo_Kigo
 
25.01.19
13:07
Сдается мне, что это реквизит формы
47 slimuz
 
25.01.19
13:08
(39) Не заполнен
48 Pit0n_08
 
25.01.19
13:08
А на форме выведен реквизит или поле ввода?
После проведения обработки посмотри значение реквизита универсальной обработкой DOCPRINT.ERT
49 slimuz
 
25.01.19
13:09
(46) Реквизит документа (48) Выведен реквизит на форму
50 slimuz
 
25.01.19
13:19
(48) Обработкой в отчете значение пустое
51 HawkEye
 
25.01.19
13:34
чё тут?! автор переписывает свой код с ошибками и просит найти ошибки в исходном коде? )))
52 Kigo_Kigo
 
25.01.19
13:35
(49) Реквизит шапки или табличной части?
53 Kigo_Kigo
 
25.01.19
13:36
(51) Тут у нас магия, в отладчике реквизит заполняется, после Записать сохраняется, при повторном открытии или в отчете поле пустое
54 slimuz
 
25.01.19
13:36
(52) Шапки шапки очевидно же)
55 slimuz
 
25.01.19
13:37
(53) Я б просто так не стал сюда писать
56 Дмитрий
 
25.01.19
13:37
Когда в форме заполняешь этот реквизит - он сохраняется?
57 slimuz
 
25.01.19
13:37
(53) (56) Нет, он не сохраняется. Выше писал
58 Ёпрст
 
25.01.19
13:37
(49) Открой в пофигураторе форму и нажми Ctrl+E.
у тебя на форме - реквизит формы, а не документа.
59 Ёпрст
 
25.01.19
13:38
(57) ясен пень. Реквизит формы нигде не сохраняется, он "живёт" только пока форма открыта.
60 Дмитрий
 
25.01.19
13:39
в дереве конфигуратора в шапке документа есть ИДГК?
61 slimuz
 
25.01.19
13:40
(58) (60) Да в шапке реквизит ИДГК.
Нажимаю вставить реквизит и вставляю.
62 Kigo_Kigo
 
25.01.19
13:40
(59) Так и программно он тогда не доступен, автор его заполняет из обработки без передачи контекста или я ошибаюсь?
63 ZDenis
 
25.01.19
13:41
(61) Щелкни по реквизиту в конфигураторе. Поле "Идентификатор" доступно для редактирования?
64 ZDenis
 
25.01.19
13:41
+ 63 на форме имею ввиду
65 slimuz
 
25.01.19
13:42
(64) Недоступен
66 Дмитрий
 
25.01.19
13:43
(61) Вставляешь таким же способом, как при нажатии на Ctrl+E ?
67 Ёпрст
 
25.01.19
13:44
(65) если это всё-же реквизит шапки у тебя, то
ты просто смотришь не те документы, не за тот период.

И, судя по коду обработки твоей - это так и есть.
68 uno-group
 
25.01.19
13:44
Какие ВК юзаются? Выдели "ИДГК" запомни в буфер обмена и перезапиши везде из буфера может где-то английская "К" затесалась.
69 slimuz
 
25.01.19
13:45
(45) У меня в документах рублевый платежный документ и счета фактуры два реквизита с название ИДГК. Когда реквизит по разному назывался значение реквизита сохранялось
70 slimuz
 
25.01.19
13:45
(66) Да
71 uno-group
 
25.01.19
13:46
добавь в код обработки после записать() ОткрытьФормуМодально(Док.ТекущийДокумент()) и проверь заполнение реквизита.
72 uno-group
 
25.01.19
13:47
И скопируй сюда код обработки без всяких редактрирований
73 Ёпрст
 
25.01.19
13:47
(71) "не могу, начальника, слишком много документов создаётся"
:))
74 uno-group
 
25.01.19
13:50
База ДБФ - СКЛ? переиндексировать не пребывал?
Вставить счетчик и открыть для 1 создаваемого.
или прервать после 1. смысл плодить милион кривых документов. после отладки убрать.
75 slimuz
 
25.01.19
13:50
(71) не заполняется
76 Kigo_Kigo
 
25.01.19
13:51
Типы реквизитов в конфе и в дбф?
77 ZDenis
 
25.01.19
13:52
(75) Может у тебя присутствует НачатьТранзакцию() без ее завершения?

И да, у тебя там куча документов уже должна быть, есть увененность в том что это новый?
78 uno-group
 
25.01.19
13:53
Вангую - Ёпрст тригер повесил в СКЛ и средствами скл, его очищает, 1с-ники могут месяц искать где он в 1с-ном коде очищается и ничего не найдут.;)
79 Дмитрий
 
25.01.19
13:54
(77) так он говорит, что даже если руками впишет, то после сохранения пропадает значение
80 slimuz
 
25.01.19
13:58
(74) ДБФ. Это же копия базы. (74) (77) (78) Конечно я удаляю все созданные документы и конечно я не жду пока все доки не загрузятся
81 slimuz
 
25.01.19
13:59
Всем спасибо, не тратьте свое время приколисты
82 uno-group
 
25.01.19
14:00
Размер файла и количество записей в нем для конкретного документа. Повторить в монопольном режиме
83 Ёпрст
 
25.01.19
14:00
давай уже мд и свою поделку сюда.
84 Pit0n_08
 
25.01.19
14:07
(81) Много раз убеждался, что чудес не бывает, а х--ня всякая случается...
85 HawkEye
 
25.01.19
14:19
(81) ну так начни с того, что покажи исходный код...
и напиши структуру документа с типами значений, без этого - это ветка для флуда....
86 Калиостро
 
25.01.19
14:33
+(40) Или переменная ИДГК, объявленная в начале модуля формы.