Имя: Пароль:
1C
1C 7.7
v7: Отчет о несоответсвии
, ,
0 dima-zgr
 
12.10.15
06:35
Добрый день. Нужен совет.

Есть код

//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Товар = Документ.РасходнаяНакладная.Товар;
    |КппПроизводителя = Документ.РасходнаяНакладная.КппПроизводителя;
    |Группировка Товар;
    |Группировка КппПроизводителя;
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл
        // Заполнение полей Товар
        Таб.ВывестиСекцию("Товар");
        Пока Запрос.Группировка(2) = 1 Цикл
            // Заполнение полей КппПроизводителя
            Таб.ВывестиСекцию("КппПроизводителя");
        КонецЦикла;
    КонецЦикла;
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
КонецПроцедуры

Он выводит товар и кпп производителя из документа расх накладная, как сделать чтоб еще выводил столбец сбоку "кпп производителя" из справочника "СерииНоменклатуры" чтобы сравнивать соответсвуют ли КПП в документе с КПП в справочнике.
1 dima-zgr
 
12.10.15
06:35
Никогда не работал с 1с 7.7=(((
2 vcv
 
12.10.15
06:52
А что такое СерииНоменклатуры? Где есть и как заполняется? И какое отношение имеет к документу?

Может реализовывать не запросом, а выборкой?
Док = СоздатьОбъект("Документ.РасходнаяНакладная");
Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода);
Пока Док.ПолучитьДокумент() = 1 Цикл
  Док.ВыбратьСтроки();
  Пока Док.ПолучитьСтроку() = 1 Цикл
    Если Док.КппПроизводителя <> Док.СерияНоменклатуры.КппПроизводителя Тогда
      Таб.ВывестиСекцию("КппПроизводителяСОшибкой");
    Иначе
      Таб.ВывестиСекцию("КппПроизводителя");
    КонецЕсли;
  КонецЦикла;
КонецЦикла;
3 dima-zgr
 
12.10.15
06:58
Ну это справочник из которого заполняется в документ расх накладная. но есть криворучки которые косячат и в доке меняют
4 dima-zgr
 
12.10.15
07:06
не получается у меня выборкой=(
5 Забияка
 
12.10.15
07:15
(0)А серии в документе есть?
6 dima-zgr
 
12.10.15
07:17
и серия и кпп в документе есть. вот мне нужно сравнить кпп из справочника и серию в документе.
7 Злопчинский
 
12.10.15
07:32
|КппПроизводителя = Документ.РасходнаяНакладная.КппПроизводителя;
|КппСерия = Документ.РасходнаяНакладная.Серия.КппПроизводителя;
8 dima-zgr
 
12.10.15
07:40
(7)я добавляю это и у меня присоединяется пустая колонка. и еще почему то по исходному коду который я писал выше. выходит по две строчки

  Товар                    Кпп
наименование1            (пусто)
наименование1             013244
9 dima-zgr
 
12.10.15
07:42
делаю вот так, и он выводит пустую колонку слева

//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Товар = Документ.РасходнаяНакладная.Товар;
    |КппПроизводителя = Документ.РасходнаяНакладная.КппПроизводителя;
    |ПроизводительКПП = Справочник.СерияНоменклатуры.ПроизводительКПП;
    |Группировка Товар без групп;
    |Группировка КппПроизводителя;
    |Группировка ПроизводительКПП;
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл
        // Заполнение полей Товар
        Таб.ВывестиСекцию("Товар");
        Пока Запрос.Группировка(2) = 1 Цикл
            // Заполнение полей КппПроизводителя
            Таб.ВывестиСекцию("КппПроизводителя");
            Пока Запрос.Группировка(3) = 1 Цикл
                // Заполнение полей ПроизводительКПП
                Таб.ВывестиСекцию("ПроизводительКПП");
            КонецЦикла;
        КонецЦикла;
    КонецЦикла;
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
КонецПроцедуры
10 dima-zgr
 
12.10.15
07:43
ой, справа)))
11 шаэс
 
12.10.15
08:15
(9) скрин документа с обведенным красным что с чем хотите сравнить и скрин структуры документа "РасходнаяНакладная" из конфигуратора
12 dima-zgr
 
12.10.15
08:24
эм... а как выложить скрин?
13 dima-zgr
 
12.10.15
08:28
14 dima-zgr
 
12.10.15
08:28
15 dima-zgr
 
12.10.15
08:29
вот то есть по товару надо сравнить КПП в документе(1 скрин) с КПП в справочнике(2 скрин)
16 HawkEye
 
12.10.15
08:35
(0) "КппПроизводителя" - это реквизит Документа РасходнаяНакладная?

а "ПроизводительКПП" - реквизит Справочника.СерияНоменклатуры?

это кто-же такое придумал? ))
17 dima-zgr
 
12.10.15
08:39
(16) все верно) да хз) вот как их сравнить?
18 HawkEye
 
12.10.15
08:43
(17) как справочник СерияНоменклатуры связан с Документом РасходнаяНакладная?
19 Масянька
 
12.10.15
08:46
Все понятно. Абсолютно. Кроме одного: а в док-те КПП - это что? Тип.

PS И я бы все-таки КПП сменила на другое название.
20 HawkEye
 
12.10.15
08:49
(19) КПП обычно строка ))) хотя конечно везде есть исключения )
21 dima-zgr
 
12.10.15
08:50
тип -строка
22 Масянька
 
12.10.15
08:52
(21) А теперь - подумай и ответь на (17).
23 шаэс
 
12.10.15
08:54
(22) перебором
24 Масянька
 
12.10.15
08:56
(23) Издеваешься? :)))
Перебором чего?
25 HawkEye
 
12.10.15
08:59
повторюсь...

Серии подчинен Номенклатуре - ок.

но как справочник СерияНоменклатуры связан с Документом РасходнаяНакладная?
26 шаэс
 
12.10.15
09:03
(24) берешь соответствие товара и КПП из РН и сравниваешь с такой же связкой из Серий.
27 HawkEye
 
12.10.15
09:05
(26) мне одному кажется, что задача поставлена иначе? ))
28 Масянька
 
12.10.15
09:09
(26) Да ну на фиг!
(27) Нет. Ты не один.
29 HawkEye
 
12.10.15
09:10
(28) это радует )))
30 шаэс
 
12.10.15
09:10
(27) я вообще слабо понимаю, как можно такое сравнивать, если производителей больше одного. только на предмет наличия связки из РН с такой же связкой в Сериях
31 Масянька
 
12.10.15
09:11
Если КПП в док-те должно соответствовать КПП справочника, то и тип в док-те должен быть справочник, а не строка.
32 Масянька
 
12.10.15
09:11
(30) А я вообще не понимаю - зачем сравнивать? :)
33 шаэс
 
12.10.15
09:14
(32) отслеживать движения?
тут пока не стоит задача - как это должно работать в идеале. пока стоит задача, чтобы сравнить то, что уже набито
34 HawkEye
 
12.10.15
09:14
(31) нет ))

(30) видимо все-таки в Расходной накладной где-то есть Серия...

у Серии есть КПП...
в документе есть КПП...

имхо надо понять, все ли КПП из серий в документе соответствуют КПП документа.
35 Масянька
 
12.10.15
09:16
(33) Автоматизация бардака приведет к автоматизированному бардаку (С)
(34) Почему - нет?
36 HawkEye
 
12.10.15
09:19
(35) потому что КПП строка,
есть справочник Серии, у него реквизит КПП - строка
в документе реквизит КПП - строка

в документе так-же должен быть реквизит Серии - тип Справочник, но сравнивать все рано надо КППсерии с КППдокумента, т.е. строку со строкой, надо определить поставщик серии и поставщик документа один и тот-же или нет, по крайней мере я так понял....
37 Масянька
 
12.10.15
09:28
(36) Уговорили...
Ну, сравнили и ... Дальше что?
38 HawkEye
 
12.10.15
09:32
(37) ну видимо отметили что не совпадает )) это уже к автору...
39 dima-zgr
 
12.10.15
09:50
Если не совпадают, то даешь по башке тому кто исправил и он переделывает!)
40 dima-zgr
 
12.10.15
09:51
(36) верно, именно так и надо, сравнивать кпп в документе товара с кпп товара в справочнике
41 Масянька
 
12.10.15
09:53
(39) По башке надо дать "специалисту", который завел неправильный реквизит и дал пользователю возможность изменять в док-те.
42 HawkEye
 
12.10.15
09:54
(40) Серия - реквизит табличной части документа? как называется?
43 dima-zgr
 
12.10.15
10:02
(42) серия так и есть реквизит серия в таб части документа. но мне то сравнивать надо по кпп! а не по сериям, это разное
44 Масянька
 
12.10.15
10:05
(43) КПП к чему относится?
45 dima-zgr
 
12.10.15
10:06
http://i008.radikal.ru/1510/62/58ee895d29b5.png
вот ссылка на фото справочника "Серии номенклатуры" откуда и берет кпп в документ
46 HawkEye
 
12.10.15
10:06
Ну тогда как-то так:

|Период с ВыбНачПериода по ВыбКонПериода;
|Товар = Документ.РасходнаяНакладная.Товар;
|КППСерии = Документ.РасходнаяНакладная.Серия.КПП;
|КппПроизводителя = Документ.РасходнаяНакладная.КппПроизводителя;
    |Группировка Товар;


потом в ТЗ и цикл по ТЗ сравниваешь СокрЛП(ТЗ.КППСерии) и СокрЛП(ТЗ.КппПроизводителя)
47 HawkEye
 
12.10.15
10:07
(45) это же форма списка... туда что угодно можно вынести... надо метаданные смотреть...
48 Масянька
 
12.10.15
10:13
(45) Ты её сделал строкой и открыл для редактирования. Поэтому (47).
49 Злопчинский
 
12.10.15
16:03
(8) Логично что выводит двес троки. У тебя группировка Товар-КППпроизводителя - есть серии, в которых не задан КППпроизводителя...