7.7 Печать поступления с аналогами номенклатуры

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем man37, 27 июл 2015.

  1. TopicStarter Overlay
    man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    197
    Симпатии:
    5
    Баллы:
    29
    1С 7.7 ТиС 9.2
    Хочу поправить внешнюю печатную форму ПоступленияТМЦ - postup.ert так, чтобы на печать выводился Аналог (если но есть) или Номенклатура (если его нет).
    Вставил ТекстЗапроса в печатную форму (КАК СЮДА ВСТАВЛЯТЬ КОД, ЧТОБЫ ЧИТАТЬ БЫЛО УДОБНО):

    Код:
    Процедура Печать(Докум, Устройство=0, КолвоКопий=1)
        Перем НачПовт, КонПовт;
    
    Таблица = СоздатьОбъект("ТаблицаЗначений");
    СписокНоменклатуры = СоздатьОбъект("СписокЗначений");
    Таблица.НоваяКолонка ("Номенклатура");
    Таблица.Свернуть("Номенклатура","");
    Таблица.Выгрузить(СписокНоменклатуры,,,"Номенклатура");
    
    ТекстЗапроса =
    "
    |Номенклатура = Справочник.Аналоги.Владелец;
    |Аналог = Справочник.Аналоги.ТекущийЭлемент;
    |Поставщик = Справочник.Аналоги.Каталог.ВладелецКаталога;
    |Артикул = Справочник.Аналоги.ИдентификаторВКаталоге;
    |Группировка Номенклатура без групп;
    |Группировка Аналог без групп;
    |Условие(Номенклатура в СписокНоменклатуры);
    |Условие(Поставщик = СокрЛП(Докум.Контрагент.ЮрФизЛицо.Наименование));
    |Условие(Номенклатура = СокрЛП(Докум.Номенклатура.Наименование));
    |"
    ;
    
    Запрос = СоздатьОбъект("Запрос");
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли;
    ТаблицаАналогов = СоздатьОбъект("ТаблицаЗначений");
    Запрос.Выгрузить(ТаблицаАналогов,0,0);
    
    Потом:
        Пока Докум.ПолучитьСтроку() = 1 Цикл
            НомСтроки = НомСтроки + 1;
    
            Строчка = 0;
            Если ТаблицаАналогов.НайтиЗначение(Докум.Номенклатура.Наименование,Строчка,"Номенклатура") = 1 Тогда     
            Аналог = ТаблицаАналогов.ПолучитьЗначение(Строчка,"Аналог");
            ПечНоменклатура = Докум.Аналог.Наименование;
            ПечАртикул = Докум.Аналог.ИдентификаторВКаталоге;
            Иначе
            ПечНоменклатура = Докум.Номенклатура.Наименование;
            ПечАртикул = Докум.Номенклатура.Артикул;
            КонецЕсли;
    Соответственно, в Таблице СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "") заменил на СокрЛП(ПечНоменклатура) и добавил колонку СокрЛП(ПечАртикул).

    Ошибок не выдает, но и не работает. Где я делаю не так?
    Последнее редактирование модератором: 27 июл 2015
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    искать по элементу, а не по наименованию

    Если ТаблицаАналогов.НайтиЗначение(Докум.Номенклатура,Строчка,"Номенклатура") = 1 Тогда
  3. TopicStarter Overlay
    man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    197
    Симпатии:
    5
    Баллы:
    29
    К сожалению, так тоже не работает!
    Если в самом документе добавить этот запрос (чуть изменив), то работает.
    Но выводит Аналог на всех печатных формах, а мне бы только на одной.

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