|
v7: Позиционирование на новом документе веденным на основании | ☑ | ||
---|---|---|---|---|
0
Роспатнюк Сергей Сер
20.06.19
✎
11:39
|
Добрый день, есть документ Заявка на склад там есть кнопочка называется ПоОстаткам так вот не получает нужные остатки при вводе на основании Предварительной заявки если документ еще не записан/сохранен, не получает остатки если
_Док.Выбран() = 0, как сделать _Док.Выбран() = 1? все это дело в глобальном модуле и его менять не хочется, а вод код документа переделал бы но методы АктивизироватьОбъект и Активизировать не помогают. |
|||
1
vip03
20.06.19
✎
11:44
|
а какая связь между выбран() (т.е. документ существует) и активизировать?
скорее всего остатки выводятся на момент выбраного документа. переделайте что если документ не записан - остатки на ТА |
|||
2
HawkEye
20.06.19
✎
11:49
|
(0) "как сделать _Док.Выбран() = 1?" - записать....
в остальном вообще ничего не понятно, какой-то поток сознания.... |
|||
3
Роспатнюк Сергей Сер
20.06.19
✎
11:49
|
Выбран() (т.е. спозиционирован)
Синтаксис: Выбран() Назначение: Определение факта позиционирования объекта типа документ. Возвращает: 1 - если документ выбран; 0 - если не выбран. Процедура ПоОстаткам() _Остатки = гсСформироватьОстаткиАдресаХранения(Контекст); далее Функция гсСформироватьОстаткиАдресаХранения(_Док,_Модуль = 0) Экспорт ..... Если _Док.Выбран() = 0 Тогда // Новый документ Если _Док.ДатаДок < ПолучитьДатуТА() Тогда РегОстатки.ВременныйРасчет(1); ОбщРег.РассчитатьРегистрыНа(_Док.ДатаДок); КонецЕсли; ИначеЕсли _Док.ДатаДок < _Док.ТекущийДокумент().ДатаДок Тогда // Поменяли дату документа. Если _Док.ДатаДок < ПолучитьДатуТА() Тогда // выписываемый задним числом РегОстатки.ВременныйРасчет(1); ОбщРег.РассчитатьРегистрыНа(_Док.ДатаДок); КонецЕсли; ИначеЕсли _Док.СравнитьТА() < 1 Тогда //Позиция не больше ТА. РегОстатки.ВременныйРасчет(1); ОбщРег.РассчитатьРегистрыНа(_Док.ТекущийДокумент()); КонецЕсли; нужно что бы не попадал в условие // Новый документ так как в этом условии остатки не правельные а вот если записать то все верно |
|||
4
Роспатнюк Сергей Сер
20.06.19
✎
11:50
|
(1) (2) причем здесь запись объекта ?
|
|||
5
Роспатнюк Сергей Сер
20.06.19
✎
11:51
|
(4) или сп что то не то говорит
|
|||
6
Bigbro
20.06.19
✎
11:53
|
а дата документа по умолчанию какая?
вообще то должен правильный остаток выдаваться код нормальный. |
|||
7
HawkEye
20.06.19
✎
11:53
|
(4) ты считаешь, тебе одному можно писать бессмысленный набор слов? ))
(5) СП всегда говорит то.... |
|||
8
HawkEye
20.06.19
✎
11:54
|
(3) для того, чтобы попадал в условие, надо смотреть что передается во входе.... но ты же считаешь, что там все ОК... да?
|
|||
9
Роспатнюк Сергей Сер
20.06.19
✎
11:55
|
(6) по умолчанию дата документа основание
|
|||
10
Роспатнюк Сергей Сер
20.06.19
✎
11:56
|
(8) вход я уже написал первая строка кнопки ПоОснованию передают Контекст
|
|||
11
Bigbro
20.06.19
✎
11:56
|
(9) уверен? покажи код
ВводНового(Основание) для твоего _Док |
|||
12
HawkEye
20.06.19
✎
11:57
|
(6) (9) при чем тут дата, если код даже не заходит в условие?
(10) ну и что тебе возвращает незаписанный контекст при применении Выбран() ? |
|||
13
Роспатнюк Сергей Сер
20.06.19
✎
11:58
|
Процедура ВводНаОсновании(ДокОснование)
Если ДокОснование.Проведен()=0 Тогда Сообщить("Документ заявка на склад нельзя вводить на основании не проведенного документа!","i"); СтатусВозврата(0); Возврат; КонецЕсли; Автор = глФамилияИмяОтчество(ПолноеИмяПользователя()); ДатаАктуальности = ТекущаяДата(); ДокументОснование = ДокОснование; Если ДокОснование.Вид() = "ПредварительнаяЗаявка" Тогда Машина = ДокОснование.Машина; Заказчик = ДокОснование.Заказчик; Склад = ДокОснование.Склад; ДатаДок = ДокОснование.ДатаДок; Если ДокОснование.ТолькоДляСнабжения = 1 Тогда Возврат; КонецЕсли; _ОстаткиЗаявок = сСформироватьОстаткиЗаявки(ДокОснование); _ТЗ = СоздатьОбъект("ТаблицаЗначений"); ДокОснование.ВыгрузитьТабличнуюЧасть(_ТЗ); _ТЗ.ВыбратьСтроки(); Пока _ТЗ.ПолучитьСтроку()=1 Цикл _СтрокаЗаявки = 0; _Флаг = _ОстаткиЗаявок.НайтиЗначение(_ТЗ.ГУИД,_СтрокаЗаявки,"СтрокаЗаявки"); Если _Флаг = 0 Тогда Продолжить; КонецЕсли; _ОстаткиЗаявок.ПолучитьСтрокуПоНомеру(_СтрокаЗаявки); _Осталось = _ОстаткиЗаявок.Заказано - _ОстаткиЗаявок.КОформлению - _ОстаткиЗаявок.Снабжению ; Если _Осталось <=0 Тогда Продолжить; КонецЕсли; _Количество = _ТЗ.Количество; Если _ТЗ.Количество > _Осталось Тогда _Количество = _Осталось; _Осталось = 0; Иначе _Осталось = _Осталось - _Количество ; КонецЕсли; НоваяСтрока(); Материал = _ТЗ.Материал; МатериалЗаявки = _ТЗ.Материал; Пояснение = _ТЗ.Пояснение; Количество = _Количество; ЕдИзм = _ТЗ.ЕдИзм; ГУИД = _ТЗ.Гуид; КонецЦикла; ИначеЕсли ДокОснование.Вид() = "ПередачаЗаявкиМенеджерам" Тогда _Параметры = Форма.Параметр; Менеджер = ""; Если ТипЗначенияСтр(_Параметры) = "СписокЗначений" Тогда Заказчик = _Параметры.Получить("Заказчик"); Машина = _Параметры.Получить("Объект"); Склад = _Параметры.Получить("МестоХранения"); Менеджер = _Параметры.Получить("Менеджер"); КонецЕсли; _ОстаткиЗаявок = сОстаткиЗаявкиДляПЗМ(ДокОснование); _ТЗ = СоздатьОбъект("ТаблицаЗначений"); ДокОснование.ВыгрузитьТабличнуюЧасть(_ТЗ); _ТЗ.ВыбратьСтроки(); Пока _ТЗ.ПолучитьСтроку()=1 Цикл _СтрокаЗаявки = 0; _Флаг = _ОстаткиЗаявок.НайтиЗначение(_ТЗ.СтрокаПредварительнойЗаявки,_СтрокаЗаявки,"СтрокаЗаявки"); Если _Флаг = 0 Тогда Продолжить; КонецЕсли; _ОстаткиЗаявок.ПолучитьСтрокуПоНомеру(_СтрокаЗаявки); Если (_ОстаткиЗаявок.Заказчик <> Заказчик ) И ( Заказчик.Выбран() = 1 ) Тогда Продолжить; КонецЕсли; _Осталось = _ОстаткиЗаявок.Заказано - _ОстаткиЗаявок.КОформлению - _ОстаткиЗаявок.Снабжению ; Если _Осталось <=0 Тогда Продолжить; КонецЕсли; Если _ТЗ.СтрокаПредварительнойЗаявки.Менеджер <> Менеджер Тогда Продолжить; КонецЕсли; НоваяСтрока(); Материал = _ТЗ.СтрокаПредварительнойЗаявки.Материал; МатериалЗаявки = _ТЗ.СтрокаПредварительнойЗаявки.Материал; Количество = _Осталось; ЕдИзм = _ТЗ.СтрокаПредварительнойЗаявки.Материал.ЕдиницаИзмерения; ГУИД = _ТЗ.СтрокаПредварительнойЗаявки; КонецЦикла; КонецЕсли; КонецПроцедуры // ВводНаОсновании() |
|||
14
HawkEye
20.06.19
✎
12:00
|
(11) проси сразу весь md-ник, чего мелочиться ))
|
|||
15
Роспатнюк Сергей Сер
20.06.19
✎
12:01
|
все понял незаписанный контекст при применении Выбран() будет 0 всегда(
|
|||
16
HawkEye
20.06.19
✎
12:01
|
(15) об это и написано в (2)....
|
|||
17
Роспатнюк Сергей Сер
20.06.19
✎
12:02
|
(6) но почему тогда не верный остаток если сдвинуть дату на 1 день вперед от даты предварительной заявки то получает верные в чем может быть проблема ?
|
|||
18
Bigbro
20.06.19
✎
12:47
|
я нигде не увидел что _Док.ДатаДок = ДокОснование.ДатаДок
так что по умолчанию там рабочаяДата() и остатки скорее всего верные, но вы ожидаете там видеть какие то другие. |
|||
19
Роспатнюк Сергей Сер
20.06.19
✎
14:11
|
(18) странно но я вижу
Если ДокОснование.Вид() = "ПредварительнаяЗаявка" Тогда Машина = ДокОснование.Машина; Заказчик = ДокОснование.Заказчик; Склад = ДокОснование.Склад; ДатаДок = ДокОснование.ДатаДок; |
|||
20
Arbuz
20.06.19
✎
17:12
|
(17) потому что так написано в коде (3). точнее, для нового документа рассчитывается на дату документа НЕ_ВКЛЮЧИТЕЛЬНО, а для записанного - конкретно на его позицию. если конечно ТА не в прошлом. другой логики там нет.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |