Имя: Пароль:
1C
1С v8
Реквизит формы НомерВПределахДня
0 dmitriy_zima
 
03.06.12
20:07
Из внешней обработки создаю документ Установка цен номенклатуры в УТ 11, все создается, за исключением одного но. Как заполнить параметр НомерВПределахДня. Как к нему обратиться из модуля внешней обработки? Получить форму и потом обратиться как форма.реквизит не проходит.
1 aleks-id
 
03.06.12
20:10
(*поправляет пенсне*) гдей то такой реквизит?
2 dmitriy_zima
 
03.06.12
20:17
3 aleks-id
 
03.06.12
20:19
(2) это тебя обманули. это хавно кто то вкрячил в обход фирмы 1С
4 dmitriy_zima
 
03.06.12
20:20
значение его на картинке как раз и удивляет. При создании из обработки устанавливается по всей видимости хаотично
5 aleks-id
 
03.06.12
20:21
а меня удивляет его назначение. для зачем оно?
6 dmitriy_zima
 
03.06.12
20:22
aleks-id вы хоть УТ 11 в глаза видели? Конфа один из последних релизов с ИТС. Собственно какая разница откуда он взялся, вопрос в том как к нему обратиться что бы устоновить?
7 dmitriy_zima
 
03.06.12
20:24
Используется скорее всего в бизнеспроцессах, коих в УТ 11 появилось великое множество, пока времени разобраться основательно в них не было
8 aleks-id
 
03.06.12
20:26
(6) твою УТ11 не видел. и чо? откуда я знаю откуда у тебя этот бестолковый реквизит?
9 DrShad
 
03.06.12
20:34
да и я что-то в УТ не наблюдал такой фигни
10 dmitriy_zima
 
03.06.12
20:49
Млин, на днях качал последний релиз, пойду в нем посмотрю
11 dmitriy_zima
 
04.06.12
17:57
Сегодня даже обновился для верности. Так вот этот реквизит есть у многих документов. Подскажите как его заполнить?
12 DrShad
 
04.06.12
17:58
а у меня нету
13 shuhard
 
04.06.12
18:02
(11) [Подскажите как его заполнить]
ДокументОбъект.НомерВПределахДня="777";
ИЛИ
ДокументОбъект.НомерВПределахДня=777;

как то так
14 alxbzm
 
04.06.12
18:10
(13) Не угадал )))

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

...

Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
       НомерВПределахДня = ДатаДокумента(Объект.Дата) - НачалоДня(ДатаДокумента(Объект.Дата)) + 1;
   Иначе
       НомерВПределахДня = РассчитатьНомерВПределахДня(ДатаДокумента(Объект.Дата), Объект.Ссылка);
       Объект.Дата = РассчитатьДатуДокумента(ДатаДокумента(Объект.Дата), НомерВПределахДня);
   КонецЕсли;

...

КонецПроцедуры

из чего делаем вывод, что супермегафича "Номер в пределах дня" есть не что иное, как количество секунд с начала дня даты документа
15 DrShad
 
04.06.12
18:12
это какой же извращенный ум такое придумал? и зачем?
16 alxbzm
 
04.06.12
18:22
(15) Я предполагаю, для того, чтобы внести ясность в умы праведных пользователей, что установка цен номенклатуры с номером в пределах дня 1 имеет меньший приоритет, чем с номером 2, ибо сравнение двух документов с датами 04.06.2012 00:00:00 и 04.06.2012 00:00:01 не для всех является очевидным. Ну и плюс удобство корректировки размещения документов относительно друг друга.
17 DrShad
 
04.06.12
18:24
(16) а если у меня будет за день больше 86400 доков одного вида?
18 DrShad
 
04.06.12
18:30
(11) обновился только что, так вот этого реквизита нет у многих документов, а только в подсистеме ценообразования
19 dmitriy_zima
 
05.06.12
10:04
А вот как его заполнить при создании документа из обработки? Как рассчитать понятно, а вот как присвоить это значение элементу?
ЭтотДокумент.НомерВПределахДня не проходит, но это и понятно так как это элемент формы. Но и обращение ФормаДока.НомерВПределахДня после получения формы тоже ругается что реквизит не найден
20 Пеппи
 
05.06.12
10:06
(19) Элемент ?
21 experimentator76
 
05.06.12
10:15
(19) если реквизит объекта обработки то через имя объекта точка
если реквизит формы то через элементы точка
по памяти пишу обычно интуитивно пишу
22 alxbzm
 
05.06.12
15:02
(19) да ё-моё ))) никак не надо его заполнять - это реквизит формы вообще и он справочный и как он вычисляется я объяснил в (14). Если необходимо его "присвоить", то дату документу правильную назначить надо. Он сам заполняется при открытии формы, а если он меняется пользователем, то просто у документа пересчитывается дата при записи.
23 dmitriy_zima
 
05.06.12
15:48
(22)Правильную это какую еще? Присваиваю текущаядата() и получаю номер из четырех символов.
24 alxbzm
 
05.06.12
16:26
(22) ох грешно копипастить типовые, но если автор данного топика не может разобраться в тексте программы, то приведу текст назначения "правильной" даты

Функция РассчитатьНомерВПределахДня(ДатаДокумента, Ссылка)
   
   Запрос = Новый Запрос(
   "ВЫБРАТЬ
   |    МАКСИМУМ(УстановкаЦенНоменклатуры.Дата) КАК Дата
   |ИЗ
   |    Документ.УстановкаЦенНоменклатуры КАК УстановкаЦенНоменклатуры
   |ГДЕ
   |    УстановкаЦенНоменклатуры.Ссылка <> &Ссылка
   |    И УстановкаЦенНоменклатуры.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаДокумента, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаДокумента, ДЕНЬ)");
   
   Запрос.УстановитьПараметр("ДатаДокумента", ДатаДокумента);
   Запрос.УстановитьПараметр("Ссылка", Ссылка);
   
   Результат = Запрос.Выполнить();
   Выборка = Результат.Выбрать();
   
   Если Выборка.Следующий() И Выборка.Дата <> Null Тогда
       Возврат Выборка.Дата - НачалоДня(ДатаДокумента) + 2;
   Иначе
       Возврат 1;
   КонецЕсли;
   
КонецФункции

Функция РассчитатьДатуДокумента(ДатаДокумента, НомерВПределахДня)
   
   Возврат НачалоДня(ДатаДокумента) + НомерВПределахДня - 1;
   
КонецФункции

// сам алгоритм создания и заполнения документа

Объект = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
Объект.Дата = ТекущаяДата();

НомерВПределахДня = РассчитатьНомерВПределахДня(ДатаДокумента(Объект.Дата), Объект.Ссылка);
       Объект.Дата = РассчитатьДатуДокумента(ДатаДокумента(Объект.Дата), НомерВПределахДня);

// Далее текст заполнения реквизитов
// ...

Объект.Записать();

(с) авторство полностью 1С

так понятнее?
25 alxbzm
 
05.06.12
16:27
+(24) пардон - еще одну функцию забыл

Функция ДатаДокумента(Дата)
   
   Возврат ?(ЗначениеЗаполнено(Дата), Дата, ТекущаяДата());
   
КонецФункции
26 dmitriy_zima
 
06.06.12
00:04
Все эти функции я видел. Наконец то разобрался для в смысле всего этого процесса формирования номера. Теперь все понятно.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой