7.7 Сводный счет-фактура в 1С Предприниматель

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

  1. TopicStarter Overlay
    mrleo1964
    Offline

    mrleo1964

    Регистрация:
    29 окт 2010
    Сообщения:
    49
    Симпатии:
    0
    Баллы:
    1
    Нужно сделать программу для создания сводного счет-фактуры по выбранному количеству накладных.
    Не совсем хорошо владею написанием внешних процедур, поэтому столкнулся со следующей проблемой:
    Из Документа Реализация считал все поля - Номенклатура.Наименование, Номенклатура.ЕдиницаИзмерения, Сумма, СуммаНДС, СтавкаНДС и т.д.
    При записи в Документ СчетФактураПолученный - Сумма, СуммаНДС, СтавкаНДС, Количество - все записывается, а текстовые поля - Номенклатура.Наименование, Номенклатура.ЕдиницаИзмерения не записываются, возможно они по-другому называются в этом Документе. Подскажите как?
    Фрагмент программы:

    Здесь Док - Реализация, СводныйСчФ - СчетФактураВыданный
    Код:
     
    Пока Док.ПолучитьСтроку()=1 Цикл
    ТекТовар=Док.Номенклатура.Наименование;
    ТекЦена=Док.Цена;
    ТекЕдИзм=Док.Номенклатура.ЕдиницаИзмерения;
    ТекСтавкаНДС=Док.СтавкаНДС;
    ТекКоличество=Док.Количество;
    ТекСумма=Док.Сумма;
    ТекСуммаНДС=Док.СуммаНДС;
    ТекСуммаБезНДС=ТекСумма-ТекСуммаНДС;
    
    СводныйСчФ.ВыбратьПоНомеру(Строка(НомерСводногоСчФ), ДатаСводногоСчФ,"СчетФактураВыданный");
    СводныйСчФ.ВыбратьСтроки();
    СводныйСчФ.НоваяСтрока();
    СводныйСчФ.Номенклатура.Наименование=ТекТовар;
    СводныйСчФ.Номенклатура.ЕдиницаИзмерения=ТекЕдИзм;
    СводныйСчФ.Цена=Окр(ТекСуммаБезНДС/ТекКоличество,2);
    СводныйСчФ.Количество=ТекКоличество;
    СводныйСчФ.Сумма=ТекСумма;
    СводныйСчФ.СуммаНДС=ТекСуммаНДС;
    СводныйСчФ.СтавкаНДС=ТекСтавкаНДС;
    СводныйСчФ.СуммаБезНДС=ТекСумма-ТекСуммаНДС;
    СводныйСчФ.ВидДеятельности.Наименование="Основной вид деятельности";
    
    СводныйСчФ.Записать();
    КонецЦикла;
    
    
  2. Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    Отладчик что показывает по этим строкам?
  3. TopicStarter Overlay
    mrleo1964
    Offline

    mrleo1964

    Регистрация:
    29 окт 2010
    Сообщения:
    49
    Симпатии:
    0
    Баллы:
    1
    именно по этим строкам все нормально- из документа Реализация эти данные считываются, не удается записать эти данные в СчетФактураВыданный:

    СводныйСчФ.Номенклатура.Наименование=ТекТовар;
    СводныйСчФ.Номенклатура.ЕдиницаИзмерения=ТекЕдИзм;

    на этих строчка выдается - "Поле агрегатного объекта не обнаружено (Номенклатура)"
  4. Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    оставьте просто СводныйСчФ.Наименование=ТекТовар;
    в печатной форме у вас что написано?
  5. TopicStarter Overlay
    mrleo1964
    Offline

    mrleo1964

    Регистрация:
    29 окт 2010
    Сообщения:
    49
    Симпатии:
    0
    Баллы:
    1
    Если оставляю только Наименование:

    СводныйСчФ.Наименование=ТекТовар;

    программа выполянется без ошибок, но при открытии свормированного программой счет-фактуру - там строки с пустым наименованием, а цировые данные - количество, цена, сумма НДС и др. все заполнены! Проверял переменную ТекТовар - там наименование товара из накладной присутствует!
  6. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Это потому что в конфигураторе данное поле имеет вид Неопределено. При присвоении надо использовать конструкцию НазначитьТип(). С 77 уже почти не работаю, но эта процедура доступна только в форме документа. Как назначить тип "из-вне" не помню (и не помню вообще возможно ли это).
  7. TopicStarter Overlay
    mrleo1964
    Offline

    mrleo1964

    Регистрация:
    29 окт 2010
    Сообщения:
    49
    Симпатии:
    0
    Баллы:
    1
    Попробовал сделать так:

    СводныйСчФ.НазначитьТип("Наименование","Строка",50);

    Строка в сформированном счет-фактуре действительно заполняется, но для корректного заполнения нужно указать тип ни "Строка". Подскажите, какой тип указывать, чтобы было корректное отображение позиций счет-фактуры?
  8. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    "Справочник.Номенклатура"
  9. TopicStarter Overlay
    mrleo1964
    Offline

    mrleo1964

    Регистрация:
    29 окт 2010
    Сообщения:
    49
    Симпатии:
    0
    Баллы:
    1
    Попробовал:

    СводныйСчФ.НазначитьТип("Наименование","Справочник.Номенклатура");

    в сформированном счет-фактуре снова пустые строки!
  10. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Блин.
    У вас же идет:
    Код:
    ТекТовар=Док.Номенклатура.Наименование;
    
    Т.е. тип "Строка".
    Либо оставляйте тип строка, либо перепишите на
    Код:
    ТекТовар=Док.Номенклатура;
    
  11. TopicStarter Overlay
    mrleo1964
    Offline

    mrleo1964

    Регистрация:
    29 окт 2010
    Сообщения:
    49
    Симпатии:
    0
    Баллы:
    1
    Если переписать ничего не работает -
    Когда я беру
    ТекТовар=Док.Номенклатура.Наименование;
    Это я беру наименование из Документа Реализация, а когда ставлю
    СводныйСчФ.Наименование=ТекТовар;
    это наименование вставляется в Документ СчетФактураВыданный, выходит там поля объектов разные;
    Кстати, вставка единицы измерения в виде
    ТекЕдИзм=Док.Номенклатура.ЕдиницаИзмерения;
    СводныйСчФ.Единица=ТекЕдИзм;
    дает корректный результат без выполнения Назначить Тип(), а заполнение номенклатуры и вида деятельности по-прежнему некорректно, что делать?
  12. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Док.Номенклатура имеет тип "Справочник.Номенклатура"
    Док.Номенклатура.Наименование имеет тип "Строка"
  13. TopicStarter Overlay
    mrleo1964
    Offline

    mrleo1964

    Регистрация:
    29 окт 2010
    Сообщения:
    49
    Симпатии:
    0
    Баллы:
    1
    Вот ситуация:
    с единицами измерения

    ТекЕдИзм=Док.Номенклатура.ЕдиницаИзмерения;
    СводныйСчФ.Единица=ТекЕдИзм;

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

    ТекВидДеятельности=Док.ВидДеятельности;
    СводныйСчФ.ВидДеятельности=ТекВидДеятельности;

    и заполняется и можно выбрать из списка.
    А с номенклатурой ничего не получается, если установить тип "Справочник.Номенклатура", в счет фактуре пустые строки для наименования, если устновить тип "Строка" - в счет фактуре отображаются усеченные наименования (даже если задовать длинную длину строки), но при выборе любой строки, открывается справочник, как будто этот выбор производится изначально...
  14. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Эту строку "ТекТовар=Док.Номенклатура.Наименование;" переписали как было сказано выше?

    Код сейчас покажите.
  15. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    [warn="!!! Внимание !!!"]Пользуйтесь тегами, уважайте друг друга[/warn]
  16. TopicStarter Overlay
    mrleo1964
    Offline

    mrleo1964

    Регистрация:
    29 окт 2010
    Сообщения:
    49
    Симпатии:
    0
    Баллы:
    1
    Сейчас программа выглядит так:
    #
  17. TopicStarter Overlay
    mrleo1964
    Offline

    mrleo1964

    Регистрация:
    29 окт 2010
    Сообщения:
    49
    Симпатии:
    0
    Баллы:
    1
    (Не знаю как пользоваться тегами) Сейчас программа выглядит так:
    Пока Док.ПолучитьСтроку()=1 Цикл
    ТекТовар=Док.Номенклатура.Наименование;
    ТекЦена=Док.Цена;
    ТекЕдИзм=Док.Номенклатура.ЕдиницаИзмерения;
    ТекСтавкаНДС=Док.СтавкаНДС;
    ТекКоличество=Док.Количество;
    ТекСумма=Док.Сумма;
    ТекСуммаНДС=Док.СуммаНДС;
    ТекСуммаБезНДС=ТекСумма-ТекСуммаНДС;
    ТекВидДеятельности=Док.ВидДеятельности;
    СводныйСчФ.ВыбратьПоНомеру(Строка(НомерСводногоСчФ), ДатаСводногоСчФ,"СчетФактураВыданный");
    СводныйСчФ.ВыбратьСтроки();
    СводныйСчФ.НоваяСтрока();
    СводныйСчФ.НазначитьТип("Наименование","Справочник.Номенклатура");
    СводныйСчФ.Наименование=СокрЛП(ТекТовар);
    СводныйСчФ.Единица=ТекЕдИзм;
    СводныйСчФ.Цена=Окр(ТекСуммаБезНДС/ТекКоличество,2);
    СводныйСчФ.Количество=ТекКоличество;
    СводныйСчФ.Сумма=ТекСумма;
    СводныйСчФ.СуммаНДС=ТекСуммаНДС;
    СводныйСчФ.СтавкаНДС=ТекСтавкаНДС;
    СводныйСчФ.СуммаБезНДС=ТекСумма-ТекСуммаНДС;
    СводныйСчФ.ВидДеятельности=ТекВидДеятельности;

    СводныйСчФ.Записать();
    КонецЦикла;

    Все работает, за исключением щаполнения строк Наименование в документе счет-фактура - пустые строки. Если заменить строку назначения типа на

    СводныйСчФ.НазначитьТип("Наименование","Строка", 75);

    то строки заполняются усеченными до 22 символов наименованиями (почему до 22-х не знаю) и при выборе колонки наименования из счет-фактуры, открывается не текущая позиция, а выбор начинается с самого начала - с закрытого справочника Номенклатура. Что делать не знаю...
  18. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Код:
    Пока Док.ПолучитьСтроку()=1 Цикл
    ТекТовар=Док.Номенклатура;
    ТекЦена=Док.Цена;
    ТекЕдИзм=Док.Номенклатура.ЕдиницаИзмерения;
    ТекСтавкаНДС=Док.СтавкаНДС;
    ТекКоличество=Док.Количество;
    ТекСумма=Док.Сумма;
    ТекСуммаНДС=Док.СуммаНДС;
    ТекСуммаБезНДС=ТекСумма-ТекСуммаНДС;
    ТекВидДеятельности=Док.ВидДеятельности;
    СводныйСчФ.ВыбратьПоНомеру(Строка(НомерСводногоСчФ), ДатаСводногоСчФ,"СчетФактураВыданный");
    СводныйСчФ.НоваяСтрока();
    СводныйСчФ.НазначитьТип("Наименование","Справочник.Номенклатура");
    СводныйСчФ.Наименование=ТекТовар;
    СводныйСчФ.Единица=ТекЕдИзм;
    СводныйСчФ.Цена=Окр(ТекСуммаБезНДС/ТекКоличество,2);
    СводныйСчФ.Количество=ТекКоличество;
    СводныйСчФ.Сумма=ТекСумма;
    СводныйСчФ.СуммаНДС=ТекСуммаНДС;
    СводныйСчФ.СтавкаНДС=ТекСтавкаНДС;
    СводныйСчФ.СуммаБезНДС=ТекСумма-ТекСуммаНДС;
    СводныйСчФ.ВидДеятельности=ТекВидДеятельности;
    
    СводныйСчФ.Записать();
    КонецЦикла;
    
    
    
    так?
  19. TopicStarter Overlay
    mrleo1964
    Offline

    mrleo1964

    Регистрация:
    29 окт 2010
    Сообщения:
    49
    Симпатии:
    0
    Баллы:
    1
    Все работает, за исключением заполнения строк Наименование в документе счет-фактура - пустые строки. Если заменить строку назначения типа на

    СводныйСчФ.НазначитьТип("Наименование","Строка", 75);

    то строки заполняются усеченными до 22 символов наименованиями (почему до 22-х не знаю) и при выборе колонки наименования из счет-фактуры, открывается не текущая позиция, а выбор начинается с самого начала - с закрытого справочника Номенклатура. Что делать не знаю...
  20. TopicStarter Overlay
    mrleo1964
    Offline

    mrleo1964

    Регистрация:
    29 окт 2010
    Сообщения:
    49
    Симпатии:
    0
    Баллы:
    1
    Обошел проблему заполнения номенклатуры следующим образом, но вот почему напрямую не записывалась номенклатура, не понимаю. Кому интересно, посмотрите:
    Код:
    Пока Док.ПолучитьСтроку()=1 Цикл
    ТекТовар=Док.Номенклатура.Наименование;
    ТекЦена=Док.Цена;
    ТекЕдИзм=Док.Номенклатура.ЕдиницаИзмерения;
    ТекСтавкаНДС=Док.СтавкаНДС;
    ТекКоличество=Док.Количество;
    ТекСумма=Док.Сумма;
    ТекСуммаНДС=Док.СуммаНДС;
    ТекСуммаБезНДС=ТекСумма-ТекСуммаНДС;
    ТекВидДеятельности=Док.ВидДеятельности;
    СводныйСчФ.ВыбратьПоНомеру(Строка(НомерСводногоСчФ), ДатаСводногоСчФ,"СчетФактураВыданный");
    СводныйСчФ.ВыбратьСтроки();
    СводныйСчФ.НоваяСтрока();
    СводныйСчФ.НазначитьТип("Наименование","Строка",75);
    СправочникНоменклатуры=СоздатьОбъект("Справочник.Номенклатура");
    СправочникНоменклатуры.НайтиПоНаименованию(ТекТовар,0);
    СводныйСчФ.Наименование=СправочникНоменклатуры.Наименование;
    СводныйСчФ.Единица=ТекЕдИзм;
    СводныйСчФ.Цена=Окр(ТекСуммаБезНДС/ТекКоличество,2);
    СводныйСчФ.Количество=ТекКоличество;
    СводныйСчФ.Сумма=ТекСумма;
    СводныйСчФ.СуммаНДС=ТекСуммаНДС;
    СводныйСчФ.СтавкаНДС=ТекСтавкаНДС;
    СводныйСчФ.СуммаБезНДС=ТекСумма-ТекСуммаНДС;
    СводныйСчФ.ВидДеятельности=ТекВидДеятельности;
    СводныйСчФ.Записать();
    КонецЦикла;
    
    
    [/quote]

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