8.х Пара вопросов от чайника

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем bespechnik, 28 сен 2010.

  1. TopicStarter Overlay
    bespechnik
    Offline

    bespechnik

    Регистрация:
    28 сен 2010
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Доброго дня всем!

    Начну немного издалека, зато сразу все будет ясно.
    Понадобилось для рабочей базы сделать так, чтобы наравне с расходной накладной можно было напечатать гарантийный талон.
    Немного погуглив, нашел код в сети. Вставил и все сделал по инструкции - не работает. Ну да ладно, гугл мне в помощь - нашел готовую обработку для печати товарного чека, поменял одно слово в коде, стало все ближе к делу.
    Далее необходимы были следующие доработки:

    - вместо суммы денег вписывать общее число единиц товара
    - вместо цен вставляем гарантийный срок (соответствующий реквизит есть в номенклатуре)
    - небольшая модификация макета

    Вопросы по порядку напишу. Конфигурация Управление Торговлей 10.3

    для суммы единиц товара.
    Пишу строку ВсегоЕдиниц = (ВсегоЕдиниц + Док.Количество);
    ругается на то, что не знает что такое Док. Хотя в запросе прописано. Проблема в том, что Док.Количество строковая? как её в число перевести?

    Для гарантии - не могу вытащить реквизит из номенклатуры. Пишу
    ОбластьМакета.Параметры.Гарантия = Справочники.Номенклатура.Формы.ФормаЭлемента.Форма.Гарантия
    Пишет что не знает что такое Формы.
    Оно будет в таком случае проходить по всем позициям или она просто не знает для какой позиции вытаскивать гарантию?

    - с макетом не очень понял как убрать ненужный столбец таблицы с номенклатурой... Такое впечатление что там таблица поверх таблицы, и редактируется только нижняя...

    буду очень благодарен за ответы на мои дилетантские вопросы... задавать из стыдно даже, но очень хочется понять, что я не так делаю, а мозг кипит уже...

    прикладываю саму обработку сюда

    Вложения:

  2. TopicStarter Overlay
    bespechnik
    Offline

    bespechnik

    Регистрация:
    28 сен 2010
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    этот вопрос снимаю, чуть-чуть отдохнув получилось :)
    остальное все еще очень надо...
  3. GRFru
    Offline

    GRFru Опытный в 1С

    Регистрация:
    22 июл 2008
    Сообщения:
    54
    Симпатии:
    0
    Баллы:
    26
    Отвечу по порядку:
    1.
    ВсегоЕдиниц = (ВсегоЕдиниц + ВыборкаТоваров.Количество) ;

    Для преобразования строки в число

    Код:
    Число(Строка)
    
    2.
    тоже надо брать из выборки, т.е.
    ОбластьМакета.Параметры.Гарантия = ВыборкаТоваров.Номенклатура.Гарантия;
  4. TopicStarter Overlay
    bespechnik
    Offline

    bespechnik

    Регистрация:
    28 сен 2010
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Тоже решено. Действительно дело оказалось в типе данных.
    Строа в цикле в итоге выглядит так:
    ВсегоЕдиниц = ВсегоЕдиниц + Число(ВыборкаТоваров.Количество);
    (иначе ругалось на синтаксис)
    и для вывода в печатную форму:
    ОбластьМакета.Параметры.Всего = Строка(ВсегоЕдиниц) + " единиц";

    к гарантийному сроку:
    спасибо, это уже начало приходить понимание...
    сейчас попробую совет, надо понять как запрос модифицировать. Тоже ведь одна строчка?
    Попробую что-то типа "Номенклатура.Гарантия"
  5. TopicStarter Overlay
    bespechnik
    Offline

    bespechnik

    Регистрация:
    28 сен 2010
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Конкретно на это база ответила следующее:

    Ошибка при вызове метода контекста (Выполнить): {(9, 2)}: Неправильный псевдоним "Номенклатура.Гарантия"
    <<?>>Номенклатура.Гарантия

    Ну это самая первая мысль была, дурацкая конечно. Сейчас буду что-то еще пробовать.
  6. BVB_berserk
    Offline

    BVB_berserk Опытный в 1С

    Регистрация:
    30 янв 2009
    Сообщения:
    162
    Симпатии:
    0
    Баллы:
    26

    Тебе же написали
    Где ВыборкаТоваров, это твоя выборка из запроса.
  7. GRFru
    Offline

    GRFru Опытный в 1С

    Регистрация:
    22 июл 2008
    Сообщения:
    54
    Симпатии:
    0
    Баллы:
    26
    Код:
    ВЫБРАТЬ
    Док.НомерСтроки КАК НомерСтроки,
    Док.Номенклатура.Код КАК Код,
    Док.Номенклатура.Представление КАК Номеклатура,
    Док.Количество КАК Количество,
    Док.Цена КАК Цена,
    Док.Сумма КАК Самма,
    Док.Номенклатура.Гарантия КАК Гарантия 
    ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК Док
    ГДЕ
    Док.Ссылка = &ТекущийДокумент
    
    Запрос примерно такого вида должен быть (у меня УТ нету, делаю на УПП, поэтому думаю Гарантия будет как реквизит).
    Что бы не заполнять каждый параметр макета рекомендую, что бы у параметров макета были такие же названия, как и в запросе. Тогда можно будет сделать

    Код:
    Пока ВыборкаТоваров.Следующий() 
    ОбластьМакета.Параметры.Заполнить(ВыборкаТоваров);
    ТабДокумент.Вывести(ОбластьМакета);
    //а тут можно делать суммирование количества
    КонецЦикла;
    
  8. TopicStarter Overlay
    bespechnik
    Offline

    bespechnik

    Регистрация:
    28 сен 2010
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    разобрался

    помогло так:
    добавить в запрос на выборку товаров следующее:

    | Док.Номенклатура.Гарантия КАК Гарантия,

    и в цикл заполняющий таблицу с позициями следующее:

    ОбластьМакета.Параметры.Гарантия = ВыборкаТоваров.Гарантия;

    Вопросов больше нет, тему можно закрыть.

    Спасибо всем, кто откликнулся!

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