|   |   | 
| 
 | 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). точнее, для нового документа рассчитывается на дату документа НЕ_ВКЛЮЧИТЕЛЬНО, а для записанного  - конкретно на его позицию. если конечно ТА не в прошлом. другой логики там нет.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |