Имя: Пароль:
1C
1С v8
общая переменная для всех документов
0 stateg
 
25.11.13
15:36
Суть такова: необходима переменная, которая будет хранить порядковый номер месяца и, если месяц текущей даты не совпадает с этой переменной, то произвести_действия, переменная=текущий месяц.
Сначала мой взгляд пал на общие реквизиты, но значение реквизита привязано к конкретному документу, необходимо чтобы было одно значение для всех документов.
Потом подумал об использовании констант, но 1с ругается на недопустимость программной записи констант.
1 Ненавижу 1С
 
гуру
25.11.13
15:37
>> но 1с ругается на недопустимость программной записи констант

руки надо выпрямлять
2 НикДляЗапросов
 
25.11.13
15:38
то произвести_действия, переменная=текущий месяц - если такое действие то просто делай его всегда
3 МойКодУныл
 
25.11.13
15:39
Чую, что хотят сделать сто-то уже реализованное.
Границу последовательности, например.
4 Wobland
 
25.11.13
15:40
ну попробуй интерактивно установить значение константы
5 Dmitry1c
 
25.11.13
15:40
(0) зачем?
6 stateg
 
25.11.13
15:43
(1) направление мыслей понял, полез гуглить про константы
(5) номенклатурной единице присваивается номер который составляется из месяц+год+порядковый_номер, порядковый номер надо ежемесячно обнулять
7 1dvd
 
25.11.13
15:46
(6) Чудесная трава в этом году уродилась
8 unregistered
 
25.11.13
15:47
(6) >>  номенклатурной единице присваивается номер который составляется из месяц+год+порядковый_номер


" месяц+год" - это называется "Префикс"...

В типовых есть подписка на событие ПриУстановкеНомера (ПриУстановкеКода для справочников), которая этот префикс устанавливает.

В обработчике этой подписки рисуй префикс какой хочешь.
9 stateg
 
25.11.13
15:52
(7) не хуже, чем в прошлом
(8) конфигурация не типовая
Впаял константу короче, норм
10 kiruha
 
25.11.13
15:58
А зачем месяц текущий + год текущий надо хранить в константе ?

Ничего не понял
11 stateg
 
25.11.13
16:00
(10) храню месяц и при добавлении номера сравниваю хранимый месяц с текущим, если отличаются, то порядковый номер начинается с 1
я только учусь, с удовольствием выслушаю идеи как реализовать сей процесс рациональнее
12 Wobland
 
25.11.13
16:01
(11) ПриУстановкеНомера делаешь свою магию без лишних данных
13 stateg
 
25.11.13
16:08
(12) конфигурация не типовая, я уже писал
14 Wobland
 
25.11.13
16:09
(13) бывает..
15 Rie
 
25.11.13
16:11
(0) Я вот так и не понял... Этот порядковый номер месяца - он для всех пользователей? Или у каждого - свой? Или вообще - в пределах сеанса?

И зачем производить действие
переменная = текущиймесяц;

Не проще ли вместо этой "переменная" везде использовать Месяц(ТекущаяДата())?
16 Полька
 
25.11.13
16:16
А я не поняла. Если это для того, чтобы формировать номер у номенклатурной единицы, то зачем общий реквизит для ВСЕХ документов?
И если каждый месяц вновь прибывшую номенклатуру заводить по новой- для чего? Уж не методы ФИФО ЛИФО реализовать?
17 stateg
 
25.11.13
16:20
В общем при создании документа, табличная часть заполняется данными из другой ТЧ при этом добавляется номер в формате месяц+год+порядковый_номер (1113/5, 1113/6, 1113/7 и т.д.). Так вот в моем ТЗ есть требование чтобы каждый новый месяц нумерация (та что после слеша / ) должна начинаться заново (1213/1, 1213/2 и т.д.), вот у меня и возникла мысль хранить в константе месяц, который я буду сравнивать с Формат(ТекущаяДата(), "ДФ=ММ"). Я не знаю как объяснить доступнее)
18 Полька
 
25.11.13
16:24
А что, по дате документа не понятно- какой месяц на дворе? :) Тогда логичнее хранить не месяц, а последний порядковый номер.
19 Полька
 
25.11.13
16:24
а если док задним числом делать? тогда и дату и номер
20 Wobland
 
25.11.13
16:25
нумерацию в пределах месяца не предлагать?
21 stateg
 
25.11.13
16:30
(20) а как реализовать с помощью нумератора нумерацию строк табличной части документа?
22 Wobland
 
25.11.13
16:31
(21) никак
23 Wobland
 
25.11.13
16:32
опля! какая-то херь в ТЧ? на зачем?
24 Rie
 
25.11.13
16:34
"О сколько нам открытий чудных готовит..."
Вот кто готовит - тут не совсем ясно.
25 stateg
 
25.11.13
16:36
(18) По дате документа не понятно надо ли обнулять нумерацию (23) нумерация номенклатурных позиций в табличной части документа, вот зачем
26 Wobland
 
25.11.13
16:36
на зачем тебе нумерация номенклатурных позиций в табличной части документа?
27 stateg
 
25.11.13
16:40
(26) техническое задание. Встречный вопрос: а где если не там?
28 Wobland
 
25.11.13
16:41
(27) не ответил. а мне зело интересно
29 Wobland
 
25.11.13
16:43
внезапно одному элементу справочника может соответствовать несколько номеров. пока это смахивает на что-то неприятно пахнущее
30 Infsams654
 
25.11.13
16:47
(29)+ может прочитать техническое задание повнимательнее?
31 stateg
 
25.11.13
16:53
Справочники тут вообще не при чем.

В общем если есть ещё у кого-то желание поделиться опытом реализации единого счетчика для всех документов буду рад выслушать, на вопросы зачем ответ - "надо"
32 zakidonoff
 
25.11.13
16:54
К (0) 3 вопроса:
1) Заполняется ли треба ТЧ неоперативно (задним числом)? И если да, то нужно ли отслеживать нумерацию с учётом этого?
2) Каким образом, имея в константе текущий месяц, можно понять, требуется ли заводить новый номер или нет? И как узнать последний используемый номер, если в константе только дата?
3) Хранится ли этот номер где-нибудь ещё, кроме ТЧ?
33 stateg
 
25.11.13
16:57
(32)
1) Да, нумерацию отслеживаю запросом (выбор последнего номера) с параметром дата
2) Если Формат(Объект.Дата, "ДФ=ММ") <> Формат(Константы.Месяц.Получить(), "ДФ=ММ") Тогда
вот таким, последний номер узнаю с помощью запроса с параметром дата
3) нет
34 Rie
 
25.11.13
17:01
(33) А не проще ли в 2)
Если Месяц(Объект.Дата)<>Месяц(Константы.Месяц.Получить()) Тогда

Или в Формат есть своя непознанная прелесть?
35 stateg
 
25.11.13
17:02
(34) проще, ок, но не суть же
36 hhhh
 
25.11.13
17:13
(35) ну например, вот 1 ноября, а нужно сделать пару документов за октябрь: эта твоя константа идет в задницу?
37 KAO111
 
25.11.13
17:15
для озвученных условий константа все равно не нужна
максимальный номер (или в случае пустого результата - первый) даст запрос

выбрать максимум(Таблица.Номер) из Таблица где
Таблица.Номер Подобно &Параметр

Параметр тут "1213%", получается из даты документа
38 Обработка
 
25.11.13
17:21
(0) Из-за таких кодеров "заказчики" наши становится капризными и вскую чушь требуют.
Представь себе архитектору-строителю хозяин дома скажет хочу чтоб вместо фундамента был песок а вместо кирпичей глина....
39 Обработка
 
25.11.13
17:24
Я бы задал вопрос постановщикам зачем нумеровать ТЧ? Для каких целей. И быть может доказал бы абсурдность их хотелки.
40 zakidonoff
 
25.11.13
17:25
Хорошо. Автора я понял.
Как бы сделал это Я.

Во-первых, никаких констант.
Во-вторых, создал бы подчинённый регистр сведений, который заносил бы префикс (тот самый месяц+год) в одну строку с каждой строкой номенклатуры ТЧ.
В третьих, никакой порядковый номер не хранил бы в принципе. Вообще нигде. Даже в самой ТЧ - он формировался бы при выводе строки по принципу:
Запрос = Новый запрос выбрать количество() из регистра сведений, где НачалоМесяца(ДатаДокумента) < период <= ДатаДокумента и регистратор <> искомый объект.

При выводе строки:
Номер = Год(ДатаДокумента) + Месяц(ДатаДокумента) + КоличествоСтрокИзЗАпроса + НомерСтроки.

??
Профит
41 zakidonoff
 
25.11.13
17:27
(39) Скорее всего, для печатной формы. Бывает, реально нужна потоковая нумерация. Не зарекайся.
42 stateg
 
25.11.13
17:40
(40) Благодарю, завтра со свежими силами буду исходить от регистра сведений. Правда есть один момент, помимо самой ТЧ порядковый номер должен отображаться в отчете, поэтому видимо его всё-таки хранить надо, но с этим я разберусь, главная проблема была реализовать счетчик.
43 stateg
 
25.11.13
17:42
(38) кстати на звание гуру 1с не петендую, как я сказал пока учусь, поэтому да, я "такой" кодер)
44 zakidonoff
 
25.11.13
17:45
(43) В печатной форме легко и просто нумерация генерируется по тому же принципу.
+ при удалении \ изменении документов задним числом, не нужно будет перепроводить все последующие документы - номера будут сдвигаться сами в пределах текущего месяца.
45 stateg
 
26.11.13
11:05
(40) не совсем понял про "регистратор <> искомый объект", что за искомый объект и как это определить в запрсое?
А нельзя ли обойтись без этого и просто выбирать количество всех строк в регистре и делать инкремент на 1 для новых строк?
46 zakidonoff
 
26.11.13
11:13
(45) Регистратор <> документ, в для которого производится формирование списка ТЧ.
Иначе получится, что запрос будет считать количество строк включая и те, что уже есть в документе.

В коде будет выражено так:

|Регистратор<>&Ссылка
Запрос.УстановитьПараметр("Ссылка", ЭтотОбъект.Ссылка);

Кстати, если уже есть регистр сведений или регистр накопления, фиксирующий каждую строку в ТЧ, то нового можно и не создавать