![]() |
|
Программно созданные документы не проводятся | ☑ | ||
---|---|---|---|---|
0
lion366
10.06.10
✎
13:49
|
Добрый день!
Есть обработка кот создает документы. После заполнения реквизитов выполняется код Док.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный); Ошибок никак не появляется, но документы не сохраняются и не проводятся Если в форме нажать кнопку "Провести", появляется такая ошибка: "{Документ.БлабЛа.Форма.ФормаДокумента(50)}: Ошибка при установке значения атрибута контекста (Изменил): Документ не выбран Изменил=глТекущийПользователь; по причине: Документ не выбран" В чем ошибка понять не могу, переменная заполнена, тип совпадает. Помогите кто знает!!! |
|||
1
Maxus43
10.06.10
✎
13:52
|
точку останова в строке 50 поставь, отладчик врать не будет
|
|||
2
bask
10.06.10
✎
13:56
|
"Изменил" - реквизит документа? переменную с таким именем не объявлял в модуле?
|
|||
3
bask
10.06.10
✎
13:57
|
и вообще побольше бы кода для анализа
|
|||
4
Ненавижу 1С
гуру
10.06.10
✎
13:58
|
Ошибок никак не появляется, но документы не сохраняются и не проводятся
все делается в попытке/исключении? |
|||
5
lion366
10.06.10
✎
13:59
|
код передзаписью документа
Изменил=глТекущийПользователь; ЭлементыФормы.ВерхняяПанельФормы.Кнопки.Автор.Текст="Создал: "+Автор+". Изменил: "+Изменил; ошибка вылазит когда выполняеться присвоение. "Изменил" это реквизит, тип справочникссылка.пользователи. переменная "глТекущийПользователь" того же типа. реквизит заполнен |
|||
6
lion366
10.06.10
✎
14:01
|
Попытку не использую, т.к. это в модуле формы. я только обработку трогаю(внешняя)
Еще такой момент: если вручную документ создавать то проводится нормально |
|||
7
bask
10.06.10
✎
14:06
|
а что перед
Док.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный); ? |
|||
8
lion366
10.06.10
✎
14:10
|
там идет заполнение реквизитов, установка даты (прошлой), номера :
Док.Организация = СтрОрг.Организация; Док.Дата = (формат(НаборЗаписей.Fields("aDay").Value, "ЧЦ=2; ЧВН=" )+"."+формат(НаборЗаписей.Fields("aMonth").Value, "ЧЦ=2; ЧВН=" )+"."+формат(НаборЗаписей.Fields("aYear").Value, "ЧЦ=2; ЧВН=" )+" 00:00:00"); Док.Автор = ПараметрыСеанса.ТекущийПользователь.Ссылка; Док.Изменил = ПараметрыСеанса.ТекущийПользователь.Ссылка; Док.Количество = НаборЗаписей.Fields("aIn").Value; Док.Комментарий = ТекущаяДата(); док.УстановитьНовыйНомер(Док.Организация.Префикс); |
|||
9
bask
10.06.10
✎
14:13
|
блин, а где Док объявляется и чему присваивается? еще коду, да побольше :)
|
|||
10
ASU_Diamond
10.06.10
✎
14:13
|
а если кнопку не "провести", а "записать" нажать?
|
|||
11
Mitriy
10.06.10
✎
14:13
|
+ "Если в форме нажать кнопку "Провести", появляется такая ошибка:" - откуда форма взялась?
|
|||
12
ASU_Diamond
10.06.10
✎
14:16
|
(11) кстати да, если документы не сохранялись, откуда форма появилась?
|
|||
13
lion366
10.06.10
✎
14:16
|
создаю документ:
док = документы.блабла.СоздатьДокумент(); с записыванием ошибка такаяже А вот так показываю форму: Док.ПолучитьФорму("ФормаДокумента").Открыть(); |
|||
14
Ненавижу 1С
гуру
10.06.10
✎
14:17
|
(13) переменная Док после этого не меняется?
|
|||
15
lion366
10.06.10
✎
14:17
|
можно документ не записывать а сразу формы показать, он тогда как новый идет и при закрытии спрашивает сохранять или нет
|
|||
16
ASU_Diamond
10.06.10
✎
14:18
|
(13) на кнопке "провести" запись висит?
|
|||
17
lion366
10.06.10
✎
14:18
|
нет только реквизиты его. все это делается в цикле
|
|||
18
lion366
10.06.10
✎
14:19
|
(15) что это значит? про обработчик проведения?? если да то нет ничего там, только перед записью из 2х строк
|
|||
19
Mitriy
10.06.10
✎
14:19
|
(17) да покажи ты весь код уже... или стесняешься?
|
|||
20
bask
10.06.10
✎
14:20
|
между
док = документы.блабла.СоздатьДокумент(); и Док.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный); есть открытие формы? сама переменная док нигде не переопределяется? да вообще много чего может быть. +(19) не боись, покажи |
|||
21
lion366
10.06.10
✎
14:21
|
Пока НЕ НаборЗаписей.eof Цикл
Если (НаборЗаписей.Fields("aIn").Value > 0) И (НаборЗаписей.Fields("aOut").Value > 0) Тогда Сообщить(" "+Строка(НаборЗаписей.Fields("ID_Enter").Value)+" "+Строка(НаборЗаписей.Fields("aIn").Value)+" "+Строка(НаборЗаписей.Fields("aOut").Value)); СтрОрг = Счетчики.Найти(Строка(НаборЗаписей.Fields("ID_Enter").Value),"Идентификатор"); Если строрг<>Неопределено и строрг.получать тогда док = документы.КоличествоПокупателей.СоздатьДокумент(); ИначеЕсли строрг=Неопределено тогда Сообщить("Для идентификатора " + Строка(НаборЗаписей.Fields("ID_Enter").Value) + " не найдена организация"); перейти ~метка1; КонецЕсли; Док.Организация = СтрОрг.Организация; Док.Дата = (формат(НаборЗаписей.Fields("aDay").Value, "ЧЦ=2; ЧВН=" )+"."+формат(НаборЗаписей.Fields("aMonth").Value, "ЧЦ=2; ЧВН=" )+"."+формат(НаборЗаписей.Fields("aYear").Value, "ЧЦ=2; ЧВН=" )+" 00:00:00"); // сообщить(формат(НаборЗаписей.Fields("aDay").Value, "ЧЦ=2; ЧВН=" )+"."+формат(НаборЗаписей.Fields("aMonth").Value, "ЧЦ=2; ЧВН=" )+"."+формат(НаборЗаписей.Fields("aYear").Value, "ЧЦ=2; ЧВН=" )+" 00:00:00"); Док.Автор = ПараметрыСеанса.ТекущийПользователь.Ссылка; Док.Изменил = ПараметрыСеанса.ТекущийПользователь.Ссылка; Док.Количество = НаборЗаписей.Fields("aIn").Value; Док.Комментарий = ТекущаяДата(); док.УстановитьНовыйНомер(Док.Организация.Префикс); //док.Ссылка = док.ПолучитьСсылкуНового(); //Если Сохранять или Проводить Тогда //Док.Записать(РежимЗаписиДокумента.Запись,РежимПроведенияДокумента.Неоперативный); // КонецЕсли; Если Проводить Тогда Док.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный); КонецЕсли; Если Показывать или Док.Организация.Пустая() Тогда Док.ПолучитьФорму("ФормаДокумента").Открыть(); КонецЕсли; КонецЕсли; ~метка1:НаборЗаписей.MoveNext(); Инт = Инт+1; КонецЦикла; |
|||
22
bask
10.06.10
✎
14:22
|
(21) OMG, хоть отформатируй и быстро спрячь метку, а то убьют
|
|||
23
asyr83
10.06.10
✎
14:23
|
~метка1 o_0
|
|||
24
lion366
10.06.10
✎
14:23
|
дааа я не такой ка к все))))
|
|||
25
ASU_Diamond
10.06.10
✎
14:23
|
а после создания документа его записывать не надо?
|
|||
26
lion366
10.06.10
✎
14:27
|
Для удобства:
Пока НЕ НаборЗаписей.eof Цикл Если (НаборЗаписей.Fields("aIn").Value > 0) И (НаборЗаписей.Fields("aOut").Value > 0) Тогда СтрОрг = Счетчики.Найти(Строка(НаборЗаписей.Fields("ID_Enter").Value),"Идентификатор"); Если строрг<>Неопределено и строрг.получать тогда док = документы.КоличествоПокупателей.СоздатьДокумент(); ИначеЕсли строрг=Неопределено тогда Сообщить("Для идентификатора " + Строка(НаборЗаписей.Fields("ID_Enter").Value) + " не найдена организация"); перейти ~метка1; КонецЕсли; Док.Организация = СтрОрг.Организация; Док.Дата = (формат(НаборЗаписей.Fields("aDay").Value, "ЧЦ=2; ЧВН=" )+"."+формат(НаборЗаписей.Fields("aMonth").Value, "ЧЦ=2; ЧВН=" )+"."+формат(НаборЗаписей.Fields("aYear").Value, "ЧЦ=2; ЧВН=" )+" 00:00:00"); Док.Автор = ПараметрыСеанса.ТекущийПользователь.Ссылка; Док.Изменил = ПараметрыСеанса.ТекущийПользователь.Ссылка; Док.Количество = НаборЗаписей.Fields("aIn").Value; Док.Комментарий = ТекущаяДата(); Док.УстановитьНовыйНомер(Док.Организация.Префикс); Если Проводить Тогда Док.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный); КонецЕсли; Если Показывать или Док.Организация.Пустая() Тогда Док.ПолучитьФорму("ФормаДокумента").Открыть(); КонецЕсли; КонецЕсли; ~метка1:НаборЗаписей.MoveNext(); Инт = Инт+1; КонецЦикла; |
|||
27
akronim
10.06.10
✎
14:27
|
(24) "То, чот ты не такой как все, не означает, что ты на что-то годен". Цитата. Ничего личного.
|
|||
28
lion366
10.06.10
✎
14:28
|
(25) необязательно. Будет в уме
|
|||
29
bask
10.06.10
✎
14:29
|
если без меток, то так:
Пока НЕ НаборЗаписей.eof Цикл Если (НаборЗаписей.Fields("aIn").Value > 0) И (НаборЗаписей.Fields("aOut").Value > 0) Тогда СтрОрг = Счетчики.Найти(Строка(НаборЗаписей.Fields("ID_Enter").Value),"Идентификатор"); Если строрг<>Неопределено и строрг.получать тогда док = документы.КоличествоПокупателей.СоздатьДокумент(); ИначеЕсли строрг=Неопределено тогда Сообщить("Для идентификатора " + Строка(НаборЗаписей.Fields("ID_Enter").Value) + " не найдена организация"); НаборЗаписей.MoveNext(); Инт = Инт+1; Продолжить; КонецЕсли; Док.Организация = СтрОрг.Организация; Док.Дата = (формат(НаборЗаписей.Fields("aDay").Value, "ЧЦ=2; ЧВН=" )+"."+формат(НаборЗаписей.Fields("aMonth").Value, "ЧЦ=2; ЧВН=" )+"."+формат(НаборЗаписей.Fields("aYear").Value, "ЧЦ=2; ЧВН=" )+" 00:00:00"); Док.Автор = ПараметрыСеанса.ТекущийПользователь.Ссылка; Док.Изменил = ПараметрыСеанса.ТекущийПользователь.Ссылка; Док.Количество = НаборЗаписей.Fields("aIn").Value; Док.Комментарий = ТекущаяДата(); док.УстановитьНовыйНомер(Док.Организация.Префикс); Если Проводить Тогда Док.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный); КонецЕсли; Если Показывать или Док.Организация.Пустая() Тогда Док.ПолучитьФорму("ФормаДокумента").Открыть(); КонецЕсли; КонецЕсли; НаборЗаписей.MoveNext(); Инт = Инт+1; КонецЦикла; |
|||
30
Ненавижу 1С
гуру
10.06.10
✎
14:29
|
открывается за раз куча форм?
|
|||
31
lion366
10.06.10
✎
14:30
|
(24) но и переделывать все я тоже смысла не вижу. Вот когда наступлю на граблю, тогда и отрекусь от меток
|
|||
32
bask
10.06.10
✎
14:30
|
по ходу так
|
|||
33
bask
10.06.10
✎
14:30
|
(32) к (30)
|
|||
34
lion366
10.06.10
✎
14:30
|
(30) если пользователь хочет, то пусть смотрит, нет так у него галочка есть
|
|||
35
RomaH
naïve
10.06.10
✎
14:31
|
у тебя это все в попытке?
ошибок не выводит потому как |
|||
36
RomaH
naïve
10.06.10
✎
14:31
|
Попытка
Если Проводить Тогда Док.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный); КонецЕсли; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки |
|||
37
RomaH
naïve
10.06.10
✎
14:32
|
что в процедурах про запись документа?
т.е. в модуле дока .. не помню - что-то типа ПередЗаписью ПриЗаписи |
|||
38
bask
10.06.10
✎
14:33
|
есть ситуации когда ни одно из условий не выполняется в:
Если строрг<>Неопределено и строрг.получать тогда ИначеЕсли строрг=Неопределено тогда конецесли; ? |
|||
39
hhhh
10.06.10
✎
14:33
|
может дата кривая? Куда-нибудь в 31-й век попадают документы.
|
|||
40
lion366
10.06.10
✎
14:34
|
Было в попытке, но без нее все работает аналогично.
Есть только ПередЗаписью в модуле формы: Изменил=глТекущийПользователь; ЭлементыФормы.ВерхняяПанельФормы.Кнопки.Автор.Текст="Создал: "+Автор+". Изменил: "+Изменил; Модуль документа вообще пустой |
|||
41
ASU_Diamond
10.06.10
✎
14:34
|
Док.ПолучитьФорму("ФормаДокумента").Открыть();
на этом разве останавливается выполнение программы? |
|||
42
Serg_1960
10.06.10
✎
14:35
|
(просто так, любопытно, как автор думает) Что происходит после строки?
Док.ПолучитьФорму("ФормаДокумента").Открыть() |
|||
43
RomaH
naïve
10.06.10
✎
14:36
|
мда, алгоритм вообще кривой
Пока НЕ НаборЗаписей.eof Цикл Если (НаборЗаписей.Fields("aIn").Value > 0) И (НаборЗаписей.Fields("aOut").Value > 0) Тогда СтрОрг = Счетчики.Найти(Строка(НаборЗаписей.Fields("ID_Enter").Value),"Идентификатор"); Если строрг<>Неопределено и строрг.получать тогда док = документы.КоличествоПокупателей.СоздатьДокумент(); Сообщить("Создали новый док"); ИначеЕсли строрг=Неопределено тогда Сообщить("Для идентификатора " + Строка(НаборЗаписей.Fields("ID_Enter").Value) + " не найдена организация"); НаборЗаписей.MoveNext(); Инт = Инт+1; Продолжить; КонецЕсли; Док.Организация = СтрОрг.Организация; Док.Дата = (формат(НаборЗаписей.Fields("aDay").Value, "ЧЦ=2; ЧВН=" )+"."+формат(НаборЗаписей.Fields("aMonth").Value, "ЧЦ=2; ЧВН=" )+"."+формат(НаборЗаписей.Fields("aYear").Value, "ЧЦ=2; ЧВН=" )+" 00:00:00"); Док.Автор = ПараметрыСеанса.ТекущийПользователь.Ссылка; Док.Изменил = ПараметрыСеанса.ТекущийПользователь.Ссылка; Док.Количество = НаборЗаписей.Fields("aIn").Value; Док.Комментарий = ТекущаяДата(); док.УстановитьНовыйНомер(Док.Организация.Префикс); Если Проводить Тогда Сообщить("попытались провести док"); Док.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный); КонецЕсли; Если Показывать или Док.Организация.Пустая() Тогда Док.ПолучитьФорму("ФормаДокумента").Открыть(); КонецЕсли; КонецЕсли; НаборЗаписей.MoveNext(); Инт = Инт+1; КонецЦикла; что в окне сообщений после выполнения? |
|||
44
lion366
10.06.10
✎
14:37
|
(39) дата в документ садиться
|
|||
45
lion366
10.06.10
✎
14:37
|
(38) условие работает как надо
|
|||
46
bask
10.06.10
✎
14:37
|
(45) да, я прогнал, сорри
|
|||
47
lion366
10.06.10
✎
14:38
|
(41) (42) идет дальше, просто открываются формы документов
|
|||
48
RomaH
naïve
10.06.10
✎
14:39
|
короче - точку останова за записи - и смотреть ссылку в объекте после записи
|
|||
49
lion366
10.06.10
✎
14:39
|
(43) а там вы товарищ срочку добавили
Сообщить("Создали новый док"); |
|||
50
lion366
10.06.10
✎
14:40
|
(43) по вашему напишет что создали документ (2 раза в моем случае)
|
|||
51
RomaH
naïve
10.06.10
✎
14:40
|
(49) и ? я там две строчки добавил - посмотреть ка в условия заходит
|
|||
52
RomaH
naïve
10.06.10
✎
14:41
|
почему два раза?
|
|||
53
lion366
10.06.10
✎
14:41
|
(48) вот тут еще интересный момент. ссылка то пустая, хоть до хоть после. но и когда вручную делаю тоже(хотя тогда проводиться)
|
|||
54
lion366
10.06.10
✎
14:44
|
(51)(52) инт вообще только для того чтобы потом сказать сколько сделали.
никакой нагрузки смысловой 2 раза т.к. по условию и по наличию данных. на это тоже не стоит обращать внимания |
|||
55
RomaH
naïve
10.06.10
✎
14:46
|
... ты давай сюда выложи сообщение которое выводится при выполнении кода из (43)
|
|||
56
lion366
10.06.10
✎
14:46
|
(43) это не пойдет мне, т.к. если он не нашел то надо просто показать документ с незаполненным реквизитом(тем который ненашли). а по вашей методике мы это пропустим
|
|||
57
hhhh
10.06.10
✎
14:47
|
(53) вот это шокирует
Если строрг<>Неопределено и строрг.получать тогда док = документы.КоличествоПокупателей.СоздатьДокумент(); то есть получается, если строрг.получать не равно ИСТИНА у тебя вообще получается бред. Документы не создаются, а формы открываются тем не менее. |
|||
58
lion366
10.06.10
✎
14:49
|
(55)
Для идентификатора 2~474~160 не найдена организация //тут еще куча аналогичных строк Создали новый док попытались провести док Создали новый док попытались провести док Для идентификатора 660~295~818 не найдена организация |
|||
59
lion366
10.06.10
✎
14:50
|
(55)создаем новый док только 2 раза т.к. тока 2 галочки.
апочему я In не использую |
|||
60
lion366
10.06.10
✎
14:51
|
(53) читать внимательней, там сразу за этим переход на метку где все пропущено уже
|
|||
61
hhhh
10.06.10
✎
14:52
|
(58) а как ищешь организацию? Что-то в коде нет этого поиска.
|
|||
62
lion366
10.06.10
✎
14:52
|
(60)для (57) ответ
|
|||
63
ASU_Diamond
10.06.10
✎
14:52
|
(53) до записи ссылка и должна быть пустая, а вот то что после пустая - это уже что-то нездоровое
у тебя в модуле документа (не формы документа) точно ничего нет? |
|||
64
lion366
10.06.10
✎
14:53
|
(58) организация сидит в таблице, в ней я и ищю
СтрОрг = Счетчики.Найти(Строка(НаборЗаписей.Fields("ID_Enter").Value),"Идентификатор"); |
|||
65
ASU_Diamond
10.06.10
✎
14:54
|
(60) Если у тебя
строрг.получать=Ложь то в строрг=Неопределено не зайдет |
|||
66
lion366
10.06.10
✎
14:54
|
(63) совсем пусто там
|
|||
67
ASU_Diamond
10.06.10
✎
14:54
|
(66) а модуль проведения тогда где?
|
|||
68
hhhh
10.06.10
✎
14:56
|
(62) сам вчитайся повнимательнее в код: переход на метку у тебя идет только если СтрОрг = Неопределено. Вник?
|
|||
69
bask
10.06.10
✎
14:57
|
(65) пипец, тогда я не прогнал в (38)
|
|||
70
lion366
10.06.10
✎
14:58
|
(65)
Если строрг<>Неопределено и строрг.получать тогда док = документы.КоличествоПокупателей.СоздатьДокумент(); ИначеЕсли строрг=Неопределено или не строрг.получать тогда Сообщить("Для идентификатора " + Строка(НаборЗаписей.Fields("ID_Enter").Value) + " не найдена организация"); НаборЗаписей.MoveNext(); Инт = Инт+1; Продолжить; КонецЕсли; Тут был касяк, согласен. но он выявлялся только когда мы галочки снимали. а я этого не делал |
|||
71
lion366
10.06.10
✎
14:59
|
(68) да нашол, но опять же в этом случае этого не случалось
|
|||
72
lion366
10.06.10
✎
15:02
|
(67) есть общий модуль, там событие ПередЗаписьюДокументовПередЗаписью
сейчас его ковырну досканально |
|||
73
ASU_Diamond
10.06.10
✎
15:03
|
(71) без
Док.ПолучитьФорму("ФормаДокумента").Открыть(); пробовал? |
|||
74
lion366
10.06.10
✎
15:04
|
(73) конечно, на форме есть галочка которая рулит показывать или нет. эффект одинаковый
|
|||
75
lion366
10.06.10
✎
15:21
|
(72) модуль посмотрел, ничего интересного одни если и все проскакиваю
|
|||
76
hhhh
10.06.10
✎
15:31
|
а Основной реквизит формы какой у тебя там задан?
|
|||
77
lion366
10.06.10
✎
15:35
|
(76) непонял что значит основной реквизит. Думаю это наименование
а может ли быть касяк изза того что я через 1 переменную прогоняю все документы? т.е. когда второй документ фактически перекрывает первый |
|||
78
hhhh
10.06.10
✎
15:39
|
(77) нет - это объект документ - другими словами "контекст", который у тебя теряется в строке 50.
|
|||
79
lion366
10.06.10
✎
15:42
|
еще такой момент: после проведения ссылка заполнена и флажок проведен у документа стоит, а в списке документов его нет
|
|||
80
hhhh
10.06.10
✎
15:47
|
(79) это внутри транзакции, а если потом отмена тразакции: Отказ = Истина; то всё херится. Откатывается назад.
|
|||
81
lion366
10.06.10
✎
15:57
|
!!!!!!!!!!!!!!!!!!!ВСЕ!!!!!!!!!!!!!!!!!!!!!!!
трабл был в транзакции. ПоЛучаеться я начинал транзакцию, но не заканчивал! перемудрил одним словом |
|||
82
lion366
10.06.10
✎
15:58
|
Всем участвующим спасибо за содействие. Отдельное спасибо уважаемому hhhh, за наводку на мысль!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |