7.7 Проведение отдельных строк

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Allizar, 16 апр 2008.

  1. TopicStarter Overlay
    Allizar
    Offline

    Allizar Опытный в 1С

    Регистрация:
    24 сен 2006
    Сообщения:
    413
    Симпатии:
    0
    Баллы:
    26
    Задача такая: необходимо, чтобы в документе Оказание услуг (Бух 7.7.497) проводились только определенные строки табличной части. Для этого я ввел дополнительный реквезит с именем "Проведение" табличной части типа Перечисление, который может принимать значение "Проводить " (тогда строка проводится) или НеПроводить (строка, соответственно не проводится).

    Дальше внес некоторые изменения в модуль. Например

    Код:
    Если ТаблицаРеализации.Проведение =Перечисление.Проведение.Проводить Тогда
    Операция.НоваяПроводка();
    Операция.НомерЖурнала = "НУ";
    Операция.СодержаниеПроводки = "Выручка от реализации";
    Операция.ПервичныйДокумент  = глПредставлениеПервичногоДокумента(Контекст);
    Операция.Кредит.Счет = СчН06_01;
    Операция.Кредит.Номенклатура = ТаблицаРеализации.Услуга;
    Операция.Кредит.УсловияПоступленияИВыбытия=Перечисление.УсловияПоступленияИВыбытия.ЗаПлату;
    Операция.Кредит.Основание = Договор;
    Операция.Сумма = ВыручкаБезНалогов - СуммоваяРазница;
    
    глОтражениеСуммовыхРазницВНаловомУчете(Контекст, СуммоваяРазница, 0);
    
    КонецЕсли;
    
    Однако желаемого результата это не дало. То же самое и с остальными проводками. Проводки либо полностью, отсутствуют, либо документ проводится так, как если бы никакого условия не было. Что я делаю не так?
  2. Akulina
    Offline

    Akulina Опытный в 1С

    Регистрация:
    30 авг 2007
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    А делаешь это в цикле? При переборе строк ТаблицыРеализации?
    Приведи кусок кода побольше.
  3. Stado_adama
    Offline

    Stado_adama Модераторы Модератор

    Регистрация:
    27 ноя 2007
    Сообщения:
    1.086
    Симпатии:
    0
    Баллы:
    26
    Код:
    Если ТаблицаРеализации.Проведение<>Перечисление.Проведение.Проводить Тогда
    Продолжить;
    КонецЕсли;
    
    поставь это сразу же после цикла
    Код:
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1
    
    
  4. TopicStarter Overlay
    Allizar
    Offline

    Allizar Опытный в 1С

    Регистрация:
    24 сен 2006
    Сообщения:
    413
    Симпатии:
    0
    Баллы:
    26
    Совет Stado_Adama, в целом, помог. Правда, сразу после цикла поставить условие не получилось, так как при проведение документа ругается на то, что не может определить ВидНоменклатуры. Так что поставил двумя строками ниже, а затем в конце процедуры, чтобы не формировалась пустая проводка по счету 90.1, перед "Операция.Записать();" добавил

    Код:
    Операция.ВыбратьПроводки();
    Пока Операция.ПолучитьПроводку()=1 Цикл
    Если Операция.Сумма=0 Тогда
    Операция.УдалитьПроводку();
    КонецЕсли;
    КонецЦикла;
    
    Всем огромное спасибо!

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