Имя: Пароль:
1C
 
Данные были изменены, сохранить изменения ?
0 NIGHTHUNTER
 
27.07.21
12:24
В документ Внутренний заказ, в процедуру ПередЗаписью, добавлен код.
Открываю документ. Пытаюсь записать. В соответствии с введенным кодом, его записать не удается.
Но, тепери, при его закрытии выдается сообщение, -

Данные были изменены. Сохранить изменения?

Почему начинает выдаваться это сообщение? Ведь ничего не менялось в документе. Что сделать что бы оно не выводилось?

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Настройка       = ГлобальныйМодуль.ПолучитьСтруктуруНастроек();
    РегистрСведений = ГлобальныйМодуль.ОтборРегистраНастроек(Настройка.ТоварыНаКомиссии);
    Если РегистрСведений.Количество() > 0 Тогда
        ТоварыНаКомиссии = РегистрСведений[0].Хранилище.Получить();
    КонецЕсли;
    //
    Запрос       = Новый Запрос;
    Запрос.Текст = "
        |ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    ВнутреннийЗаказТовары.Номенклатура КАК Номенклатура
        |ПОМЕСТИТЬ ВТ_ВнутреннийЗаказ
        |ИЗ
        |    &ТЧВнутреннийЗаказ КАК ВнутреннийЗаказТовары
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТ_ВнутреннийЗаказ.Номенклатура
        |ИЗ
        |    ВТ_ВнутреннийЗаказ КАК ВТ_ВнутреннийЗаказ
        |ГДЕ
        |    НЕ ВТ_ВнутреннийЗаказ.Номенклатура В ИЕРАРХИИ (&СпТоварыНаКомиссии)";
    Запрос.УстановитьПараметр("ТЧВнутреннийЗаказ",  Товары.Выгрузить());
    Запрос.УстановитьПараметр("СпТоварыНаКомиссии", ТоварыНаКомиссии);
    Рез = Запрос.Выполнить();
    Если Не Рез.Пустой() Тогда
        Сообщить("В табличной части документа присутствуют товары не относящиеся к группе «Товары на комиссии»!");
        Сообщить("Запись документа не возможна.");
        Отказ = Истина;    
    КонецЕсли;
    //
    
    // <-    
КонецПроцедуры
1 Kassern
 
27.07.21
12:27
Модифицированность= ложь
2 NIGHTHUNTER
 
27.07.21
12:47
(1) Спасибо!

Вставлять до выполнения кода в процедуре ПередЗаписью, после?
3 Kassern
 
27.07.21
12:49
(2) после строчки Отказ = Истина;
4 mikecool
 
27.07.21
12:51
(1) ща ты его научишь...
понять - какой реквизит, связанный с данными или у которого взводится признак "сохраняемые данные", модифицируется при открытии и убрать этот косяк
5 NIGHTHUNTER
 
27.07.21
12:51
(3) Ясно, я вот сейчас сделал перед всем этим кодом что в (0) и не выдало сообщения.
Вставлю после отказ
6 mikecool
 
27.07.21
12:51
+4 идешь в отладке пошагово и понимаешь, где взводится Модифицированность
7 NIGHTHUNTER
 
27.07.21
12:52
(3) А если в условие не заходит . где отказ истина. то и вообще там не нужно тогда? Можно тогда в само условие и заключить это
8 Kassern
 
27.07.21
12:53
(7) верно вам говорят в (6)  посмотрите в отладке в какой момент у вас модифицированность истина становится. А то блин сейчас реально научу стрелять себе в ногу)
9 Мультук
 
гуру
27.07.21
12:53
(7) ТоварыНаКомиссии = РегистрСведений[0].Хранилище.Получить();

"ТоварыНаКомиссии" - в документе есть реквизит или таб.часть с таким именем ?

P.S.
А
РегистрСведений
Настройка

?
10 ДенисЧ
 
27.07.21
12:53
(8) Фиг ты в отладке это выяснишь )))
11 NIGHTHUNTER
 
27.07.21
13:01
(9) нет, реквизита такого в документе вроде как нет.
Этот кусок кода я взял из общего модуля, для получения этого списка значений из хранилища.
12 Kassern
 
27.07.21
13:10
(11) скорее всего попытка проведения делает документ модифицированным, а раз проведение завершается с ошибкой, то и модифицированность остается. Если же документ успешно проведен, то модифицированность снимается.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший