7.7 Обработка

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем клёнов_1С, 9 авг 2007.

  1. TopicStarter Overlay
    клёнов_1С
    Offline

    клёнов_1С Опытный в 1С

    Регистрация:
    27 июл 2007
    Сообщения:
    50
    Симпатии:
    0
    Баллы:
    26
    попросили написать обраотку которая выписывалабы акты на оказание услуг т.к. номенклатура одна и таже а контрагентов много... вот думаю как по проще и побыстрее сделать. Коечто придумал но как то...
  2. Steel Rain
    Offline

    Steel Rain Опытный в 1С

    Регистрация:
    29 сен 2006
    Сообщения:
    408
    Симпатии:
    2
    Баллы:
    29
    Что то не совсем понятна суть задачи. Есть список контрагентов которым нужно выписать одинаковые акты? или что?
  3. TopicStarter Overlay
    клёнов_1С
    Offline

    клёнов_1С Опытный в 1С

    Регистрация:
    27 июл 2007
    Сообщения:
    50
    Симпатии:
    0
    Баллы:
    26
    Да , меняется только номенклатура, обслуживание за январь, февраль,...
  4. Steel Rain
    Offline

    Steel Rain Опытный в 1С

    Регистрация:
    29 сен 2006
    Сообщения:
    408
    Симпатии:
    2
    Баллы:
    29
    Ну могу предложить, например, такой вариант: Написать обработку, которая будет брать данные по номенклатуре из дока, а потом перебирая в цикле список контрагентов формировать нужные печатные формы.
  5. TopicStarter Overlay
    клёнов_1С
    Offline

    клёнов_1С Опытный в 1С

    Регистрация:
    27 июл 2007
    Сообщения:
    50
    Симпатии:
    0
    Баллы:
    26
    Я сделал обработку в которой для выбранных контрагентов создается док.реализация, в форме обработки пресудствует поле ввода ВыбНоменклатуры Спр.Номенклатура, так вот номенклатуру я сейчас не могу поместить в новую строку Нового Док. Как быть...
    //*******************************************
    Перем СписокКонтрагентов;
    Перем Контрагент;
    Перем Размер;
    Перем НСтроки;
    Перем ТекСтрока;
    //_______________________________________________________________________________________________________
    Процедура ПереносГруппы(Источник, Приемник)
    Для i=1 По Источник.РазмерСписка() Цикл
    Представление = "";
    Значение = Источник.ПолучитьЗначение(i, Представление);
    Приемник.ДобавитьЗначение(Значение, Представление);
    КонецЦикла;
    Источник.УдалитьВсе();
    Приемник.СортироватьПоПредставлению();
    КонецПроцедуры //ПереносГруппы
    //_______________________________________________________________________________________________________
    Процедура ПереносЭлемента(Источник,Приемник)
    Если Источник.ТекущаяСтрока() > 0 Тогда
    Представление = "";
    Значение = Источник.ПолучитьЗначение(Источник.ТекущаяСтрока(), Представление);
    Приемник.ДобавитьЗначение(Значение, Представление);
    ИсточникПозиция = Источник.ТекущаяСтрока();
    Если ИсточникПозиция = Источник.РазмерСписка() Тогда
    ИсточникПозиция = ИсточникПозиция - 1;
    КонецЕсли;
    Источник.УдалитьЗначение(Источник.ТекущаяСтрока());
    Источник.ТекущаяСтрока(ИсточникПозиция);
    Приемник.СортироватьПоПредставлению();
    КонецЕсли;
    КонецПроцедуры //ПереносЭлемента
    //_______________________________________________________________________________________________________
    Процедура ПриОткрытии()
    СписокКонтрагентов = СоздатьОбъект("СписокЗначений");
    Спр = СоздатьОбъект("Справочник.Контрагенты");
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент() = 1 Цикл
    Если (Спр.ПометкаУдаления() = 0) И (Спр.ЭтоГруппа() = 0) Тогда
    СписокКонтрагентов.ДобавитьЗначение(Спр.ТекущийЭлемент());
    КонецЕсли;
    КонецЦикла;
    СписокКонтрагентов.Выгрузить(ВсеКонтрагенты);
    КонецПроцедуры
    //_______________________________________________________________________________________________________
    Процедура Выполнить()
    Если ВыбранныеКонтрагенты.РазмерСписка() = 0 Тогда
    Возврат;
    КонецЕсли;
    Размер = ВыбранныеКонтрагенты.РазмерСписка();
    Для Нстроки = 1 По Размер Цикл
    ТекСтрока = ВыбранныеКонтрагенты.ПолучитьЗначение(Нстроки,Контрагент);
    Док = СоздатьОбъект("Документ.Реализация");
    Док.Новый();
    Док.УстановитьНовыйНомер();
    Док.ДатаДок = ПериодСтр(НачДата,КонДата);
    Док.Контрагент = ТекСтрока;
    Док.Договор = ("ОсновнойДоговор");
    Док.МестоХранения = глЗначениеПоУмолчанию("ОсновнойСклад");
    Док.НоваяСтрока();
    Док.Номенклатура = ВыбНоменклатуры;
    Док.Количество = 1;
    Док.Записать();
    Док.Провести(1,"Програмно");

    КонецЦикла;

    КонецПроцедуры
  6. Steel Rain
    Offline

    Steel Rain Опытный в 1С

    Регистрация:
    29 сен 2006
    Сообщения:
    408
    Симпатии:
    2
    Баллы:
    29
    То есть? Строка вообще не формируется? Или туда пустое значение номенклатуры попадает?

    Вот кусок моего кода 100% работает. При проведении одного дока, создается несколько других:
    Код:
        Лист=СоздатьОбъект("Документ.ТранспортныйЛист");
    Док=СоздатьОбъект("Документ.ЗаявкаНаТранспорт");
    Док=ТекущийДокумент();
    ВыбратьСтроки();
    Пока ПолучитьСтрокуПоНомеру(НомСтроки)=1 Цикл
    ПолучитьСтрокуПоНомеру(НомСтроки);
    Имя=Водитель;
    Лист.Новый();
    Лист.Водитель=Водитель;
    Лист.ДокументОснование=Док;
    глЗаполнитьШапку(Лист,0);
    Лист.ДатаДок=ДатаДок;
    Для й=1 По КоличествоСтрок() Цикл
    ПолучитьСтрокуПоНомеру(НомСтроки);
    Если Имя=Водитель Тогда
    Лист.НоваяСтрока();
    Лист.ВремяНачЧ=ВремяНачЧ;
    Лист.ВремяНачМин=ВремяНачМин;
    Лист.ВремяКонЧ=ВремяКонЧ;
    Лист.ВремяКонМин=ВремяКонМин;
    Лист.Заказчик=Заказчик;
    Лист.Место=Место;
    Лист.ПунктОтправления=ПунктОтправления;     
    Лист.Машина=Машина;
    ТрЛист=Лист.ТекущийДокумент();
    НомСтроки=НомСтроки+1;
    Иначе
    
    КонецЕсли;
    КонецЦикла; 
    Лист.Записать();
    КонецЦикла;
    
    
  7. TopicStarter Overlay
    клёнов_1С
    Offline

    клёнов_1С Опытный в 1С

    Регистрация:
    27 июл 2007
    Сообщения:
    50
    Симпатии:
    0
    Баллы:
    26
    Строка создавалась но вписывалось пустое значение в поле... спасибо за помощь, Я то же разобрался...
  8. Steel Rain
    Offline

    Steel Rain Опытный в 1С

    Регистрация:
    29 сен 2006
    Сообщения:
    408
    Симпатии:
    2
    Баллы:
    29
    Так напиши, в чем проблема то была?
  9. TopicStarter Overlay
    клёнов_1С
    Offline

    клёнов_1С Опытный в 1С

    Регистрация:
    27 июл 2007
    Сообщения:
    50
    Симпатии:
    0
    Баллы:
    26
    ТипЗначенияСтр(ВыбНоменклатуры);
    Док.Номенклатура=ВыбНоменклатуры;
    Дело было не в лыжах... а в типе передаваемого значения... Вот.

    Теперь проблема серьезней... Смыс этой обработки в том что бы облегчить нелегкий труд бухгалтера по выписке этих ДокРеализация. Как сегодня оказалась у каждого контрагента цена на оказываемые услуги разная и нигде она не прописана, не считая старых проведенных документов. Вот теперь сижу и думаю как же это так мне придумать получить Цену из Журнала документов по каждому конкретному контрагенту... а их за сотню и ручками вбивать ее(Цену) ну просто анрилл...
  10. Steel Rain
    Offline

    Steel Rain Опытный в 1С

    Регистрация:
    29 сен 2006
    Сообщения:
    408
    Симпатии:
    2
    Баллы:
    29
    Ну тут, на самом деле, может быть куча вариантов. Например:
    Завести в справочник Контрагенты новый реквизит ЦенаУслуг и при проведении документов скидывать туда цену. Потом в обработке брать значение из справочника.
    Для первичного заполнения этого реквизита соответственно надо написать простенькую обработку, которая должна выбирать доки по контрагенту и скидывать из них цену в соответствующий элемент справочника.
    Второй вариант, это непосредственно из обработке делать выборку доков по контрагенту (лучше запросом) и доставать оттуда цену.
    Правда все это справедливо только для случая, когда цена на услуги фиксированная для каждого контрагента.
    Можно ещё чёнить придумать :)
  11. TopicStarter Overlay
    клёнов_1С
    Offline

    клёнов_1С Опытный в 1С

    Регистрация:
    27 июл 2007
    Сообщения:
    50
    Симпатии:
    0
    Баллы:
    26
    Я приблизительно так и думал, но только думалось мне что стоит использовать константы, но твой вариант подходит лучше... Ладно будем пробовать...

    ...Так вот Запрос... выбираю я значит цены согласно Конртагентов и Номенклатуры из документов Реализация...Теперь вот вопрос как мне из Запроса теперь взять цены для каждого контрагента...Выгрузить данные из Запроса в ТЗ и уже оттуда или же можно както записать эти данные в справочник где я создам Реквизит цена???
  12. Steel Rain
    Offline

    Steel Rain Опытный в 1С

    Регистрация:
    29 сен 2006
    Сообщения:
    408
    Симпатии:
    2
    Баллы:
    29
    Можно и в ТЗ выгрузить, можно прямо из результатов запроса взять значения. Допустим сделать в запросе группировку по Контрагенту, потом цикл по этой группировке и в цикле что то наподобии этого:
    Код:
    Спр=СоздатьОбъект("Справочник.Контрагенты");
    Спр.НайтиЭлемент(Запрос.Контрагент);
    Элем=Спр.ТекущийЭлемент();
    Элем.ЦенаУслуг=Запрос.Цена;
    Элем.Записать();
    
  13. TopicStarter Overlay
    клёнов_1С
    Offline

    клёнов_1С Опытный в 1С

    Регистрация:
    27 июл 2007
    Сообщения:
    50
    Симпатии:
    0
    Баллы:
    26
    Если оч долго мучатся что ни будь получится. Короче я в запросе установил пару условий выгрузил запрос в ТЗ и питерь там только то что мне нужно и впринципе нет необходимости в записи в справочник...

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