Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Групповое создание актов
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
axelk
Есть некая система которая формирует таблицу xls. Две колонки, в первой ЕДРПОУ контрагента во второй Сумма с НДС.
Нужно втянуть его в 1С и сформировать акты. Акты с одинаковой услугой но разной суммой, ручками бухгалтера заносят их по пол дня.
Вот решили как-то это автоматизировать и попросили меня что-то им "придумать".
Скажу сразу, я не программист, но так сложилось что немного пришлось разбираться и простенькие обработки довелось создавать.
Реализовать решил следующим образом. Загрузка из файла в таблицу значений (заодно контроль сколько срок загружено), а дальше по кнопке "создать" создаются акты оказания услуг.
Частично все получается, данные загружаются, акты создаются, табличная часть в них заполняется НО не тянет контрагента. Я не могу сообразить как получить контрагента по коду ЕДРПОУ из таблицы значений.
Код процедуры ниже:
Процедура СоздатьАкт()    
  ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
    Док = СоздатьОбъект("Документ.ОказаниеУслуг");
    Док.Новый();
        Док.Фирма = глВосстановитьЗначение(,"БазФирма");
    Спр = СоздатьОбъект("Справочник.Контрагенты");
    Док.Контрагент = Спр.ПолучитьЗначение(ТЗ.НомерСтроки,1);
        Док.Касса = глВосстановитьЗначение(,"БазФирма").РС;
    Док.ВидНДС = Константа.БазНДС;
    Док.ВидТорговли = Перечисление.ВидыТорговли.Предоплата;
    Док.СчетКонтрагента = СчетПоКоду("36.1");
    Док.МестоСоставления = глВосстановитьЗначение(,"БазМестоСоставления");
    Док.Автор = Пользователь;
    Док.НоваяСтрока();
                    Док.Услуга = глПолучитьЗначениеКонстанты("АвтоАкт", "Название оказанной услуги",);        
                    глУстановкаБазЕд(Док,Док.Услуга,Док.Услуга.БазЕдиница);
                    Док.Кво = "1";
                    Док.Коэффициент = "1";
                    Док.СуммаСНДС = СокрЛП(ТЗ.ПолучитьЗначение(ТЗ.НомерСтроки,2));
                    Док.СуммаБезНДС = Док.СуммаСНДС/6*5;
                    Док.НДС = Док.СуммаСНДС - Док.СуммаБезНДС;
                    Док.ЦенаБезНДС = Док.СуммаБезНДС;
                    Док.СуммаБезСкидки = Док.СуммаБезНДС;
    
    Док.Записать();
    Сообщить("Введена новая "+Док);    
    КонецЦикла;
КонецПроцедуры

Подскажите, пожалуйста, как правильно.
пс
Платформа - 7.70.027. Конфа - Бухгалтерия для Украины 7.70.324
nysysimara
СпрКонтрагенты    = СоздатьОбъект("Справочник.Контрагенты");
Если СпрКонтрагенты.НайтиПоРеквизиту("ЕДРПОУ",<ваш код из таблицы>,1)= 1 Тогда
    текущийКонтрагент    = СпрКонтрагенты.ТекущийЭлемент();
КонецЕсли;

и вынесите строки
Док = СоздатьОбъект("Документ.ОказаниеУслуг");
Спр = СоздатьОбъект("Справочник.Контрагенты");
до цикла по таблице
axelk
nysysimara @ Сегодня, 11:34 необходимо зарегистрироваться для просмотра ссылки ,
Очень благодарен! Все получилось.
Возможно подскажите еще как открыть журнал Оказание Услуг и перейти на последний документ по окончанию или при закрытии обработки?

Уже не нужно, разобрался. Еще раз спасибо, тему можно закрывать.
nysysimara
axelk @ Сегодня, 11:30 необходимо зарегистрироваться для просмотра ссылки ,
попробуйте:
КонтФормы = Док; 
ОткрытьФорму("Журнал.ОказаниеУслуг",КонтФормы);
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.