Версия для печати темы (https://pro1c.org.ua/index.php?s=938d12d55da77439b68deade6e7363c7&showtopic=37074)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Групповое создание актов

Автор: axelk 12.05.17, 9:50

Есть некая система которая формирует таблицу xls. Две колонки, в первой ЕДРПОУ контрагента во второй Сумма с НДС.
Нужно втянуть его в 1С и сформировать акты. Акты с одинаковой услугой но разной суммой, ручками бухгалтера заносят их по пол дня.
Вот решили как-то это автоматизировать и попросили меня что-то им "придумать".
Скажу сразу, я не программист, но так сложилось что немного пришлось разбираться и простенькие обработки довелось создавать.
Реализовать решил следующим образом. Загрузка из файла в таблицу значений (заодно контроль сколько срок загружено), а дальше по кнопке "создать" создаются акты оказания услуг.
Частично все получается, данные загружаются, акты создаются, табличная часть в них заполняется НО не тянет контрагента. Я не могу сообразить как получить контрагента по коду ЕДРПОУ из таблицы значений.
Код процедуры ниже:

Процедура СоздатьАкт()    
  ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
    Док = СоздатьОбъект("Документ.ОказаниеУслуг");
    Док.Новый();
        Док.Фирма = глВосстановитьЗначение(,"БазФирма");
    Спр = СоздатьОбъект("Справочник.Контрагенты");
    Док.Контрагент = Спр.ПолучитьЗначение(ТЗ.НомерСтроки,1);
        Док.Касса = глВосстановитьЗначение(,"БазФирма").РС;
    Док.ВидНДС = Константа.БазНДС;
    Док.ВидТорговли = Перечисление.ВидыТорговли.Предоплата;
    Док.СчетКонтрагента = СчетПоКоду("36.1");
    Док.МестоСоставления = глВосстановитьЗначение(,"БазМестоСоставления");
    Док.Автор = Пользователь;
    Док.НоваяСтрока();
                    Док.Услуга = глПолучитьЗначениеКонстанты("АвтоАкт", "Название оказанной услуги",);        
                    глУстановкаБазЕд(Док,Док.Услуга,Док.Услуга.БазЕдиница);
                    Док.Кво = "1";
                    Док.Коэффициент = "1";
                    Док.СуммаСНДС = СокрЛП(ТЗ.ПолучитьЗначение(ТЗ.НомерСтроки,2));
                    Док.СуммаБезНДС = Док.СуммаСНДС/6*5;
                    Док.НДС = Док.СуммаСНДС - Док.СуммаБезНДС;
                    Док.ЦенаБезНДС = Док.СуммаБезНДС;
                    Док.СуммаБезСкидки = Док.СуммаБезНДС;
    
    Док.Записать();
    Сообщить("Введена новая "+Док);    
    КонецЦикла;
КонецПроцедуры

Подскажите, пожалуйста, как правильно.
пс
Платформа - 7.70.027. Конфа - Бухгалтерия для Украины 7.70.324

Автор: nysysimara 12.05.17, 10:34

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

и вынесите строки
Док = СоздатьОбъект("Документ.ОказаниеУслуг");
Спр = СоздатьОбъект("Справочник.Контрагенты");
до цикла по таблице

Автор: axelk 12.05.17, 12:04

nysysimara @ Сегодня, 11:34 * ,
Очень благодарен! Все получилось.
Возможно подскажите еще как открыть журнал Оказание Услуг и перейти на последний документ по окончанию или при закрытии обработки?

Уже не нужно, разобрался. Еще раз спасибо, тему можно закрывать.

Автор: nysysimara 12.05.17, 12:08

axelk @ Сегодня, 11:30 * ,
попробуйте:

КонтФормы = Док; 
ОткрытьФорму("Журнал.ОказаниеУслуг",КонтФормы);

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua