0
- 26.07.2013 - 12:14
|
Есть проведенный док, например "Отгрузка за день". У него в обработке проведения стоит АвтоВремяКонецДня(). Т.е. если Док новый, то он ставит время 23.59.59. Потом я накидываю еще доки другого вида и они становятся после него. Это ясно.(вопрос, можно ли в 77 сделать как то так, чтобы другие виды доков ставились перед Отгрузка за день".?) Если я перепровожу этот "Отгрузка за день", то он в конец не становится, а стоит там где и стоял с тем же временем с каким первый раз провелся. Вопрос, можно ли, чтобы "Отгрузка за день" становился в конец дня при любом проведение будь он новый или не новый? Спасибо! | |
1
- 26.07.2013 - 12:23
|
Можно. Для этого нужно запретить всем остальным документам становится в "конец дня". Или запретить вообще вводить документы после проведения своего любимого. Иначе никак. Исходя из "становился в конец дня при любом проведение будь он новый или не новый" | |
2
- 26.07.2013 - 12:31
|
1-VZ >Спасибо! ну насчет 1-го вопроса я так и думал, что гемор. а Насчет 2-го. неужели нет способа для документа при перепроведении занимать позиции последнего на день, на момент перепроведения его? | |
3
- 26.07.2013 - 12:47
|
2-Wanderer27 > У тебя как с логикой? Совсем-совсем плохо? Функция АвтоВремяКонецДня() ставит документ в конец списка, который существует в данный момент. И никак не умеет прогнозировать будущий состав этого списка. Тем паче, что назначать конкретную дату документа позволено как до, так и после этой даты (про искуственные ограничения упустим). И нет у этой функции параметра СписокДокументовКоторыхНельзяДвигать. Это системная функция. Библиотечная. Так что... Можно только потом перестроить очередь. И ревниво следить, чтоб этот порядок не нарушился. И как нарушится - опять перестраивать. | |
4
- 26.07.2013 - 12:47
|
2-Wanderer27 > Выбрать документы за некую дату (в обратном порядке). Пока ПолучитьДокумент()=1 Цикл Здесь РазобратьПозициюДокумента(Первый из полученных); Прервать КонецЦикла СформироватьПозициюДокумента(Твой документ, который проводится) | |
5
- 26.07.2013 - 13:12
| Я обычно отключаю изменение времени документа при его интерактивном перепроведении. Как ввели, так и сидит, если сознательно время не изменят через распроведение | |
6
- 26.07.2013 - 13:22
|
4-DeiMos > Проще надо быть, проще. И народ к тебе потянется со страшной силой. Чтоб документ встал в конец очереди, достаточно снять его с проведения, поставить "в конец дня", а потом снова провести. | |
7
- 26.07.2013 - 13:26
|
вот по этому иногда в скульных базах встречается дататайма типа 01:07:2013:24:01:15 | |
8
- 26.07.2013 - 13:30
|
4-DeiMos >я так понял это для новых документов. Потому как я не лепил(раньше не сталкивался с этим временем) в обработке проведения ДокВсе.ОбратныйПорядок(1); ДокВсе.ВыбратьДокументы(ДатаДок,ДатаДок ); Пока ДокВсе.ПолучитьДокумент()=1 Цикл Позиция = РазобратьПозициюДокумента(ДокВсе.ПолучитьПозицию() ); Прервать КонецЦикла; АвтоВремяОтключить(); СформироватьПозициюДокумента(Позиция,1); Может что-то и не так, но док при перепроведение где стоял там и стоит. :( | |
9
- 26.07.2013 - 13:33
|
Вообще, "23.59.59" - это только отображение. На самом деле, разрядность поля, где содержится время, больше, чем требуется для точности до секунды ;) Иначе в это время можно было бы поставить один-единственный документ ;) Или ликвидировать любую возможность управления очереди документов в пределах секунды. И сделать невозможным задать точку времени (для запросов, например), привязанной к документу. | |
10
- 26.07.2013 - 13:58
|
8-Wanderer27 > А если так? Не в модуль проведения, а В модуль формы - в процедуру ПриЗаписи(): ДокВсе.ОбратныйПорядок(1); ДокВсе.ВыбратьДокументы(ДатаДок,ДатаДок ); Пока ДокВсе.ПолучитьДокумент()=1 Цикл ТекДок=ДокВсе.ТекущийДокумент(); Позиция = РазобратьПозициюДокумента(ТекДок.ПолучитьПозицию() ); Прервать КонецЦикла; //АвтоВремяОтключить(); СформироватьПозициюДокумента(Позиция,1); | |
11
- 26.07.2013 - 13:59
|
Сорри, не так. Вот так: В модуль формы - в процедуру ПриЗаписи(): ДокВсе.ОбратныйПорядок(1); ДокВсе.ВыбратьДокументы(ДатаДок,ДатаДок ); Пока ДокВсе.ПолучитьДокумент()=1 Цикл ТекДок=ДокВсе.ТекущийДокумент(); Позиция = ТекДок.ПолучитьПозицию() ; Прервать КонецЦикла; //АвтоВремяОтключить(); СформироватьПозициюДокумента(Позиция,1); | |
12
- 26.07.2013 - 14:00
|
ДокВсе = СоздатьОбьект("Документ"); ДокВсе.ОбратныйПорядок(1); ДокВсе.ВыбратьДокументы(ДатаДок,ДатаДок ); Пока ДокВсе.ПолучитьДокумент()=1 Цикл ТекДок=ДокВсе.ТекущийДокумент(); Позиция = ТекДок.ПолучитьПозицию() ; Прервать КонецЦикла; //АвтоВремяОтключить(); СформироватьПозициюДокумента(Позиция,1); | |
13
- 26.07.2013 - 14:28
| 12-DeiMos >не..не работает :( | |
14
- 26.07.2013 - 14:40
|
вб.ВыбратьДокументы(док.ДатаДок, док.ДатаДок); вб.ПолучитьДокумент(); Если вб.ТекущийДокумент() <> док.ТекущийДокумент() Тогда чс = 0; мн = 0; ск = 0; вб.ПолучитьВремя(чс, мн, ск); Если ск = 0 Тогда Если мн = 0 Тогда чс = чс + 1; мн = 0; ск = 01; Иначе мн = мн + 1; ск = 01; КонецЕсли; Иначе ск = ск + 1; КонецЕсли; Если док.Проведен() = 1 Тогда док.СделатьНеПроведенным(); док.УстановитьВремя(чс, мн, ск); док.Провести(); Иначе док.УстановитьВремя(чс, мн, ск); КонецЕсли; КонецЕсли; | |
15
- 26.07.2013 - 15:17
|
14-DeiMos > Это точно хрень!...Если я провожу док на время 23.59.59 то куда еще увеличивать секунды то? Вообщем, в 77 это проблема не решается...только через задницу кроме..Овчинка выделки не стоит! | |
16
- 26.07.2013 - 15:41
|
15-Wanderer27 > Это "проблема" через задницу... Вот и "не решается". Не... делать документ там, где должен быть отчет. И не надо ссылаться, что юзер "не умеет". | |
17
- 27.07.2013 - 13:30
| скопируй его и проведи скопированный, а старый удали | |
18
- 27.07.2013 - 14:13
|
вариант 2, при активном участии Бухты, внешняя обработка: НашДок = СоздатьОбъект("Документ.Деньги"); НашДок.НайтиДокумент(Док); чч = 0; мм = 0; сс = 0; НашДок.ПолучитьВремя(чч,мм,сс); НашДок.УстановитьВремя(чч,мм,сс-1); НашДок.Записать(); НашДок.УстановитьВремя(чч,мм,сс+1); НашДок.Записать(); | |
19
- 27.07.2013 - 14:18
| (18) не работает ))) | |
20
- 27.07.2013 - 14:22
| (19) распроведи сначала | |
21
- 27.07.2013 - 14:51
|
(20) распроводил позиция документа состоит из датывремени + порядкового номера документа в базе. а порядковый номер (не НомерДок, хотя может и совпадать) у записанного документа поменять - никак. | |
22
- 29.07.2013 - 10:19
| 21-Зелёный тролль > "Распровести" - мало. Вначале нужно отменить проведение, и перезаписать (с новой временной меткой). Уже потом - перепровести. | |
| Интернет-форум Краснодарского края и Краснодара |