|
v7: Поиск последнего документа выдаёт ошибку. | ☑ | ||
---|---|---|---|---|
0
Enlighted
28.06.16
✎
00:15
|
Код вроде по всей строгости 1с ного закона и по его же логике. однако ругается на вторую строку
ДокДляПроверки = СоздатьОбъект("Документ.ЗалоговыйБилет"); ДокДляПроверки.НайтиДокумент("ЗалоговыйБилет"); ДокДляПроверки.ОбратныйПорядок(1); ДокДляПроверки.ВыбратьПоПоследовательности(,ТекущаяДата(),); Сообщить(ДокДляПроверки.Номердок); ДокДляПроверки.ВыбратьПоПоследовательности(,ТекущаяДата(),); {Документ.ЗалоговыйБилет.Форма.Модуль(22)}: Объект - документ определенного вида! А вообще мне нужно найти последний созданный документ типа Залоговый билет определить его номер и вновь созданному придать номер на 1 больше. Автомат не работает ибо много хитропопых костылей. |
|||
1
hhhh
28.06.16
✎
00:31
|
(0) вот эту строчку объясните.
ДокДляПроверки.НайтиДокумент("ЗалоговыйБилет"); вообще непонятно, что здесь имеется в виду. Вы текст какой-то ищете? |
|||
2
Enlighted
28.06.16
✎
00:32
|
(1) По идее если я правильно понимаю синтаксис 1с то сначала надо найти документ/документы подходящие критерию, а затем их перебирать, вот я этой строчкой нахожу их/его
|
|||
3
Enlighted
28.06.16
✎
00:34
|
я ищу последний документ типа "залоговыйбилет"
|
|||
4
hhhh
28.06.16
✎
00:37
|
(3) и чего в НайтиДокумент действительно вот так можно писать тупо строку, кусок какого-то бреда? И где в этом тексте слово "последний"? Может он первый найдет?
|
|||
5
Enlighted
28.06.16
✎
00:39
|
(4) ДокДляПроверки.ВыбратьПоПоследовательности(,ТекущаяДата(),);
согласно СП это выбирает документы по периоду, а вот это ДокДляПроверки.ОбратныйПорядок(1); делает перебор от конца к началу, то-есть самый первый документ в выборке и будет самый новый. |
|||
6
ifso
28.06.16
✎
00:42
|
(5)
> согласно СП чего там же про вторую строку? |
|||
7
Enlighted
28.06.16
✎
00:48
|
(6) ОбратныйПорядок(<?>);
Синтаксис: ОбратныйПорядок(<Режим>) Назначение: Установить порядок выборки документов во времени. Возвращает значение порядка выборки до вызова: 1 - выборка документов в порядке убывания даты и времени; 0 - в порядке возрастания. |
|||
8
Enlighted
28.06.16
✎
00:49
|
(6) НайтиДокумент(<?>)
Синтаксис: НайтиДокумент(<Документ>) Назначение: Найти документ по значению. Возвращает: 1 - если действие выполнено (документ найден); 0 - если действие не выполнено. Параметры: <Документ> - выражение со значением типа 'Документ'. |
|||
9
Enlighted
28.06.16
✎
00:51
|
Переделал так:
НайтиДокумент(ДокДляПроверки); ошибка: {Документ.ЗалоговыйБилет.Форма.Модуль(20)}: Объект не может быть перепозиционирован! |
|||
10
ifso
28.06.16
✎
00:54
|
(8) и?
|
|||
11
hhhh
28.06.16
✎
00:57
|
(9) выкинь эту строчку.
|
|||
12
Enlighted
28.06.16
✎
01:09
|
(11) Убрал, теперь ругается на это:
ДокДляПроверки.ВыбратьПоПоследовательности(,ТекущаяДата(),); {Документ.ЗалоговыйБилет.Форма.Модуль(21)}: Объект - документ определенного вида! Так мне и надо документ определенного вида, а не всё подряд. |
|||
13
hhhh
28.06.16
✎
01:16
|
(12) ну так
ДокДляПроверки = СоздатьОбъект("Документ"); |
|||
14
Злопчинский
28.06.16
✎
01:17
|
читай для просветления сп по найтидокумент
Если самому тяжко понять смысл описания найтидокумент - спроси, но не пори хрень в надежде хрен знает чего |
|||
15
Злопчинский
28.06.16
✎
01:18
|
Если тяжко то стучись сейчас в скайп zlopun и спрашивай
|
|||
16
hhhh
28.06.16
✎
01:18
|
(12) и почему ВыбратьПоПоследовательности ?? В последовательности нумерация может вообще произвольная быть.
|
|||
17
Злопчинский
28.06.16
✎
01:24
|
(16) вот так тянешь человеку руку помощи ... И тишина.. И только мертвые с косами стоят...
|
|||
18
Enlighted
28.06.16
✎
01:27
|
(17) Благодарю за скайп просто у меня раннее утро пол пятого, да спят все. если только текстом переписываться. (16) Мне совершенно не интересует порядок номеров в посделовательности меня интересует самый последний номер документа
|
|||
19
Злопчинский
28.06.16
✎
01:32
|
(18) мутачная постановка
Самый последний номер документ не обязательно принадлежит последнему документу |
|||
20
Злопчинский
28.06.16
✎
01:35
|
док равно создать объект скобки ковычки документ точка залоговый
Док точка обратный порядок скобки один Док точка выбрать документ скобки если док точка получить документ скобки равно один тогда Вот здесь внутри если ты имеешь последний документ обработай его как надо и все |
|||
21
Enlighted
28.06.16
✎
01:39
|
(19) Хорошо поясню более детально, нумерация сейчас происходит вручную, распечатанные документы хранятся на полках по порядку номеров в пределах месяца, то-есть по номеру документа они смогут найти его распечатанную копию, в нужном месяце. Нужно чтобы нумерация была автоматическая, сделал алгоритм, который находит первый свободный номер, но он находит его внутри диапазона всех документов типа "залоговыйбилет", то-есть есть масса пропущенных номеров. А надо что бы находил самый большой номер и текущий документ был этот номер +1
|
|||
22
Enlighted
28.06.16
✎
01:39
|
(20) благодарю буду пробовать, уже наверное утром, сейчас вырубаюсь.
|
|||
23
Злопчинский
28.06.16
✎
01:42
|
(21) так работает штатный алгоритм
Ты какую то хрень изобретаешь |
|||
24
Михаил 1С
28.06.16
✎
04:36
|
(0) А может быть сделать поиск запросом? Будет очень просто. И не мучиться.
|
|||
25
DrZombi
гуру
28.06.16
✎
07:04
|
(21) Ужас, вы оценивали скорость получения номера? :)
И как правильно заметили (19) документ последний не обязательно с последним номером :) >>> Нужно чтобы нумерация была автоматическая Все просто. Верни префикс и нумерацию по правилу от 1С, т.е. от ХУ-00000001 до ХУ-99999999 И будет им счастья. Запретить руками нумеровать документы :) |
|||
26
DrZombi
гуру
28.06.16
✎
07:06
|
(24) Забавно, вы ему еще забыли упомянуть, что ему придется реализовывать механизм резервирования номера документа.
А то при одновременной записи несколькими пользователями, все идея к черту :) |
|||
27
Михаил 1С
28.06.16
✎
07:16
|
(26) Вы наверное писали на пост (25)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |