8.х Модифицированность и Модифицированность()

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем skv_79, 7 окт 2016.

  1. TopicStarter Overlay
    skv_79
    Offline

    skv_79 Опытный в 1С

    Регистрация:
    10 июл 2013
    Сообщения:
    204
    Симпатии:
    3
    Баллы:
    29
    Добрый день!
    Платформа 8.1
    Подскажите, при печати счета система просит записать объект, т.к. Модифицированность() в Истина. При выгрузке в ТЧ возникает модифицированность объекта, я запоминаю значение Модифицированность в ПризнакМодифицированности до загрузки в ТЧ и После загрузки восстанавливаю сохраненное значение, но Модифицированность() не снимается.

    Код:
        ЗапросТЧ = Новый Запрос;
        ЗапросТЧ.Текст = "ВЫБРАТЬ
                         |    СчеттКорректировка.Номенклатура
                         |ПОМЕСТИТЬ ВТ_НоменклатураТЧ
                         |ИЗ
                         |    Документ.Счет.тКорректировка КАК СчеттКорректировка
                         |ГДЕ
                         |    СчеттКорректировка.Ссылка = &Ссылка
                         |
                         |СГРУППИРОВАТЬ ПО
                         |    СчеттКорректировка.Номенклатура
                         |;
                         |
                         |////////////////////////////////////////////////////////////////////////////////
                         |ВЫБРАТЬ
                         |    ВТ_НоменклатураТЧ.Номенклатура
                         |ИЗ
                         |    ВТ_НоменклатураТЧ КАК ВТ_НоменклатураТЧ";
        ЗапросТЧ.УстановитьПараметр("Ссылка", Ссылка);
       
        Если ЭтоНовый() Тогда
            ЭтотОбъект.Записать();
        КонецЕсли;
       
        РезультатЗапросТЗ = ЗапросТЧ.Выполнить().Выгрузить();
        Если РезультатЗапросТЗ.Количество()=0 Тогда
            Сообщить("Не указана номенклатура в ТЧ Номенклатура");
            Возврат;
        КонецЕсли;
       
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       |    СчеттКорректировка.Номенклатура
                       |ПОМЕСТИТЬ ВТ_НоменклатураТЧ
                       |ИЗ
                       |    Документ.Счет.тКорректировка КАК СчеттКорректировка
                       |ГДЕ
                       |    СчеттКорректировка.Ссылка = &Ссылка
                       |
                       |СГРУППИРОВАТЬ ПО
                       |    СчеттКорректировка.Номенклатура
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    ВТ_НоменклатураТЧ.Номенклатура,
                       |    ХарактеристикиГотовойПродукцииСрезПоследних.Ширина,
                       |    ХарактеристикиГотовойПродукцииСрезПоследних.Высота,
                       |    ХарактеристикиГотовойПродукцииСрезПоследних.Глубина,
                       |    ХарактеристикиГотовойПродукцииСрезПоследних.Вес,
                       |    ХарактеристикиГотовойПродукцииСрезПоследних.ШВГ
                       |ИЗ
                       |    ВТ_НоменклатураТЧ КАК ВТ_НоменклатураТЧ
                       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ХарактеристикиГотовойПродукции.СрезПоследних(, ) КАК ХарактеристикиГотовойПродукцииСрезПоследних
                       |        ПО ВТ_НоменклатураТЧ.Номенклатура = ХарактеристикиГотовойПродукцииСрезПоследних.Номенклатура";
        Запрос.УстановитьПараметр("Ссылка", Ссылка);
        Результат = Запрос.Выполнить();
        тХарактеристикиГотовойПродукции.Загрузить(Результат.Выгрузить());
       
        РассчитатьСуммуОбъема();
        РассчитатьСуммуВеса();
       
        Модифицированность = ПризнакМодифицированности;
    КонецПроцедуры
    
    А дальше идет печать счета, вот процедура:

    Код:
    Функция ПроверитьМодифицированность(Документ) Экспорт
       
        Результат = Ложь;
        //Модифицированн = Неопределено;
        //Документ.ДополнительныеСвойства.Свойство("Модифицированность",Модифицированн);
        //Если Модифицированн = Неопределено Тогда
        //    Модифицированн = Ложь;
        //КонецЕсли;
       
    Тогда
        Если Документ.Модифицированность() Тогда
            Проведен = ?(Документ.Проведен, " и провести","");
           
            Ответ = Вопрос("Документ изменен. Для печати его необходимо записать "+ Проведен +".
            |Записать" + Проведен + "?",
            РежимДиалогаВопрос.ОКОтмена, ,
            КодВозвратаДиалога.Отмена,
            "Документ изменен");
           
            Если Ответ = КодВозвратаДиалога.ОК Тогда
                //
                //Если ТипЗнч(Документ) = Тип("ДокументОбъект.Счет") Тогда
                //    Документ.СоздатьКорректировку();
                //КонецЕсли;
                //
                Если Документ.Проведен Тогда
                   
                    ДатаДока = НачалоДня(Документ.Дата);
                    ДатаДня  = НачалоДня(ТекущаяДата());
                   
                    Попытка
                       
                        Если ДатаДока = ДатаДня и Документ.Метаданные().ОперативноеПроведение = Метаданные.СвойстваОбъектов.ОперативноеПроведение.Разрешить Тогда
                            Документ.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Оперативный);
                        Иначе
                            Документ.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
                        КонецЕсли;
                       
                    Исключение
                       
                        Предупреждение("Операция не выполнена!");
                        Возврат Результат = Истина;
                       
                    КонецПопытки;
                   
                Иначе
                    Документ.Записать();
                КонецЕсли;
               
                Результат = Истина;
               
            КонецЕсли;
           
        Иначе
            Результат = Истина;
        КонецЕсли;
       
        Возврат Результат;
       
    КонецФункции // ПроверитьМодифицированность()
    Тут Документ.Модифицированность() выдает Истина. Вопрос, как лучше всего добиться печати без срабатывания проверки без больших переработок кода?
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Начнем с того, что печать просит сохранение документа - не есть хорошо из этого следует не понимание всех остальных действий с модифицированностью.
  3. 1с-ник
    Online

    1с-ник Профессионал в 1С

    Регистрация:
    5 окт 2014
    Сообщения:
    313
    Симпатии:
    50
    Баллы:
    54
    Тогда может нужно так?
    Код:
    ПризнакМодифицированности = Модифицированность;
    А не наоборот.
    Зачем вообще запоминать модифицированность? Чушь какая-то:)
  4. TopicStarter Overlay
    skv_79
    Offline

    skv_79 Опытный в 1С

    Регистрация:
    10 июл 2013
    Сообщения:
    204
    Симпатии:
    3
    Баллы:
    29
    Ну так я сразу сказал что не понимаю как в надежде услышать полезные мысли по данному вопросу... то что Модифицированность и Модифицированность() разные вещи это понятно.

    Так и делаю, сначала запоминаю, потом восстанавливаю. Тут все логично, модифицированность формы изменяется корректно. Остается модифицированность объекта, а она уже в процедуре печати счета проверяется... похоже, придется передавать в нее еще Модифицированность, но очень не хотелось, потому что ранее уже писал, что хочу с минимальными доработками.

Поделиться этой страницей