Имя: Пароль:
1C
1С v8
Как написать запрос.
,
0 dred999
 
20.07.15
13:09
Всем привет! Есть Бухгалтерия предприятия редакция 3.0 (3.0.40.36).
В ней документ РасходноКассовыйОрдер. В этом документе надо сменить нумерацию документа (допустим с мая 2015). Написал запрос который выбирает документы по указанному периуду, и в принципе меняет нмерацию. Но Нужно сделать так чтобы когда выбирается периуд - Май. чтоб он цеплял последний документ за апрель, цеплял его номер и продолжал номерацию с этого номера за май.
1 cw014
 
20.07.15
13:10
Шито?
2 dred999
 
20.07.15
13:11
вот сам запрос

Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
|    ПриходныйКассовыйОрдер.Ссылка КАК Документ,
|    """" КАК Номер,
|    ПриходныйКассовыйОрдер.Номер КАК ИсходныйНомер,
|    ПриходныйКассовыйОрдер.Дата КАК Дата,
|    ПриходныйКассовыйОрдер.ПодразделениеОрганизации КАК ПодразделениеОрганизации
|ИЗ
|    Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
|ГДЕ
|    ПриходныйКассовыйОрдер.Дата МЕЖДУ &ДатаН И &ДатаК
|    И ПриходныйКассовыйОрдер.Организация = &Организация
|
|УПОРЯДОЧИТЬ ПО
|    ПриходныйКассовыйОрдер.МоментВремени";
3 aka AMIGO
 
20.07.15
13:12
(0) имхо - это две разные задачи, решай каждую отдельно
4 dred999
 
20.07.15
13:14
(3) Тоесть нужно еще один запрос писать? А не этот дописывать?
5 cw014
 
20.07.15
13:16
Ну во-первых выяснить, какая периодичность нумерации у ПКО (или РКО, уже не поймешь, ибо в задачи РКО, а в запросе ПКО)
6 Redkiy
 
20.07.15
13:18
(0) есть готовое решение - 999руб.
7 cw014
 
20.07.15
13:18
Демпингую - 800 р
8 dred999
 
20.07.15
13:20
(5)  РКО и ПКО. там дальше он подменяет ПКО на РКО если ты выбираешь ПКО. А переодичность нумерации сбита . Надо выловит если выбираем периуд май. последний документ апреля и продолжить нумерацию.
9 cw014
 
20.07.15
13:21
(8) У тебя в апреле последний документ 000000363, то есть в мае все документы должны иметь один и тот же номер, равный 000000364
10 cw014
 
20.07.15
13:21
(8) Так?
11 dred999
 
20.07.15
13:21
(9) да!
12 dred999
 
20.07.15
13:23
(10) 000000364, 000000365, 000000366
13 cw014
 
20.07.15
13:24
(12) > Надо выловит если выбираем периуд май. последний документ апреля и продолжить нумерацию.

Читаем и думаем. Алгоритм:
1) Создаем документ, получаем последний номер за апрель = 000000363
2) Инкрементируем номер 000000363 + 1 = 000000364
3) Создаем еще один документ, получаем последний номер за апрель = 000000363
4) Инкрементируем у нового документа номер 000000363 + 1 = 000000364

Дальше описывать?
14 dred999
 
20.07.15
13:27
(13) Тк вот как написать запрос чтоб получать последний номер за апрель?
15 cw014
 
20.07.15
13:29
(14) Как в 13 и описано
16 cw014
 
20.07.15
13:29
Можешь запросом
17 Redkiy
 
20.07.15
13:31
(14) а почему именно апрель? Если в апреле не было движений по кассе то номер 1? Думай... или 999...
18 dred999
 
20.07.15
13:31
(16)  добавить в существующий запрос параметры?
19 cw014
 
20.07.15
13:32
(18) Таки да, в (17) тебе прямо таки сказали в чем косяк твоего тз
20 dred999
 
20.07.15
13:34
(19) Нет не именно апрель. и движения по кассе были.в апреле.
21 cw014
 
20.07.15
13:36
(20) периодичность у нумератора какая?
22 dred999
 
20.07.15
13:43
(21) В переделах года
23 cw014
 
20.07.15
13:44
(22) То есть тебе все равно, что номера в течение года будут дублироваться, что приведет к нарушению уникальности?
24 aka AMIGO
 
20.07.15
13:45
(23) кмк, ему нужно узнать последний помер за апрель, чтобы перенумеровать все оставшиеся, начиная с 1 мая..
25 dred999
 
20.07.15
13:46
(24) номер последнего документа за апрель чтоб дальше продолжить его
26 dred999
 
20.07.15
13:47
(24)  да.!
27 cw014
 
20.07.15
13:47
(26) Ты разово это хочешь сделать?
28 aka AMIGO
 
20.07.15
13:48
должна-ж быть в 8-ке функция "ВыбратьДокументы()" с указанием "ОбратныйПорядок"..
Начать цикл (за апрель), и прервать его на документе..
Вот и будет номер, и Запрос тут .. не нужен..
29 cw014
 
20.07.15
13:49
(28) Ты уверен, что последний документ за апрель имеет максимальный номер до этого периода?
30 aka AMIGO
 
20.07.15
13:49
(29) нет, но судя по желанию ТС, это так..
31 dred999
 
20.07.15
13:50
(29) Да
32 cw014
 
20.07.15
13:52
(31) Не дакай, Ответь на вопрос в (27)
33 dred999
 
20.07.15
13:53
Да разово (32)
34 cw014
 
20.07.15
13:53
А хотя... За криворукость ТС ответственности не несу.

ВЫБРАТЬ МАКСИМУМ(Номер) КАК Номер ИЗ Документ.ПриходныйКассовыйОрдер ГДЕ Дата МЕЖДУ (НАЧАЛОПЕРИОДА(&Период, ГОД)) И (КОНЕЦПЕРИОДА(&Период, МЕСЯЦ))
35 aka AMIGO
 
20.07.15
13:54
(32) :))
Думаю, шаловливые ручонки веселых бушек не позволят заплесневеть "разовой" обработке :)
наверняка испортят, и не раз :)

(34) Во! шедевр готов :)
36 aka AMIGO
 
20.07.15
13:56
+35 молодец :)
37 cw014
 
20.07.15
13:57
(36) Ага, можно еще и так:

ВЫБРАТЬ МАКСИМУМ(Документ.ПриходныйКассовыйОрдер.Номер) КАК Номер ГДЕ Документ.ПриходныйКассовыйОрдер.Дата МЕЖДУ (НАЧАЛОПЕРИОДА(&Период, ГОД)) И (КОНЕЦПЕРИОДА(&Период, МЕСЯЦ))
38 dred999
 
20.07.15
14:00
(34) Но туту не указанно что выбрать номер документа перед началом периуда
39 aka AMIGO
 
20.07.15
14:02
ЗЫ. я - 7-рочник, редко мыслю категориями Запросов :)
потому и гнул своё с Выборкой документов :)

(38) зато получишь то, что просил: последний номер в апреле..

ты уж определись как-нибудь, чего хочешь, не путай форумчан..
40 cw014
 
20.07.15
14:02
(38) P.S. &Период - любая дата апреля
41 cw014
 
20.07.15
14:03
(38) Что у тебя "перед началом периУда"? Что это?
42 aka AMIGO
 
20.07.15
14:05
а вернее-то не последний номер в апреле.. , а наибольший номер в периоде Запроса.. если бушки накосячили еще и в нём..
43 floody
 
20.07.15
14:06
обработку с ИТС использовать для перенумерации не модно?
44 Redkiy
 
20.07.15
14:10
(43) ТС хочет разово сделать перенумерацию, но вбить начальный номер в обработку с ИТС ему в лом...
45 aka AMIGO
 
20.07.15
14:15
(44) если есть ИТС .. Хозяева могут экономить каждый рубль :)

(38) найди на ИТСе "УниверсальныеПодборИОбработкаОбъектов"
46 aka AMIGO
 
20.07.15
14:16
+45 а интереснее-то самому-бы написать..
Вход-то парадный указан..
47 dred999
 
20.07.15
14:19
Всем спасибо.
48 aka AMIGO
 
20.07.15
14:23
перевел-бы ты "спасибо" на пластиковую карточку твоему помощнику: cw014
...