Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 8
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Войти | Зарегистрироваться )


Свернуть

> Добро пожаловать на наш форум

Здравствуйте уважаемый посетитель. К сожалению вы не были распознаны форумом как зарегистрированный пользователь. Для полноценного использования возможностей нашего форума вам необходимо зарегистрироваться. Если вы уже зарегистрированы на форуме, то вам необходимо пройти авторизацию, используя Ваш логин и пароль.

Логин:   
Пароль:
 

Форум:

Новые темы (за 20 дней):

Последние сообщения:

Наши сервисы:

Дополнительно:

Новости для бухгалтера:

 
Деление на валюты [раздел Отчеты / Обработки]
Автор sanek6662009@gmail.com — 11.10.18, 14:40 — 0 комментариев
Всем доброго времени суток, столкнулся с такой ситуацией:
Руководство хочет работать с двумя валютами одновременно (грн. и usd), чтобы документы были в валюте товара.
Имея на руках типовую УТ 10.3 и поковыряв её понял что штатными средствами этого не сделать.
Штатная УТ может создать, сохранить и распечатать документ в валюте договора контрагента.

Но задача есть задача....

Вот код обработки:
Функция ПолучитьСтрЦЕны(Номенклатура,ТипЦен,Дата)
    
    стрРез = Новый Структура;
    стрРез.Вставить("Валюта","");
    стрРез.Вставить("Цена",0);
    //стрРез.Вставить("Валюта","");    
    
    З = Новый Запрос;
    Т = "ВЫБРАТЬ
        |    ЦеныНоменклатурыСрезПоследних.Валюта,
        |    ЦеныНоменклатурыСрезПоследних.Цена,
        |    ЦеныНоменклатурыСрезПоследних.Номенклатура,
        |    ЦеныНоменклатурыСрезПоследних.ТипЦен,
        |    ЦеныНоменклатурыСрезПоследних.Период
        |ИЗ
        |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
        |            &Дата,
        |            ТипЦен = &ТипЦен
        |                И Номенклатура = &Номенклатура) КАК ЦеныНоменклатурыСрезПоследних";
    З.УстановитьПараметр("Номенклатура",Номенклатура);
    З.УстановитьПараметр("ТипЦен",ТипЦен);
    З.УстановитьПараметр("Дата",Дата);
    З.Текст = Т;
    выб = З.Выполнить().Выбрать();
    Если выб.Следующий() Тогда
        стрРез.Валюта = выб.Валюта;
        стрРез.Цена = выб.Цена;
    КонецЕсли;
    Возврат стрРез;

КонецФункции

Функция НайтиДоговорКОнтрагента(Контрагент, Валюта)
    
    рез = "";
    
    З = Новый Запрос;
    Т = "ВЫБРАТЬ
    |    ДоговорыКонтрагентов.Ссылка
    |ИЗ
    |    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
    |ГДЕ
    |    ДоговорыКонтрагентов.Владелец = &Владелец
    |    И НЕ ДоговорыКонтрагентов.ПометкаУдаления
    |    И ДоговорыКонтрагентов.ВидДоговора = &ВидДоговора
    |    И ДоговорыКонтрагентов.ВалютаВзаиморасчетов = &ВалютаВзаиморасчетов";
    З.Текст = Т;
    З.УстановитьПараметр("Владелец",Контрагент);
    З.УстановитьПараметр("ВидДоговора",Перечисления.ВидыДоговоровКонтрагентов.СПокупателем);
    З.УстановитьПараметр("ВалютаВзаиморасчетов",Валюта);
    
    выб = З.Выполнить().Выбрать();
    Если выб.Следующий() Тогда
        рез = выб.Ссылка;
    //Иначе
    //    сО = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
    //    сО.Наименование = "С покупателем (ГРН)";
    //    сО.Владелец = Контрагент;
    //    сО.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоКоду("980");
    //    сО.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем;
    //    сО.ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом;
    //    сО.СхемаНалоговогоУчета = Справочники.СхемыНалоговогоУчетаПоДоговорамКонтрагентов.ПоПервомуСобытию;
    //    сО.Записать();
    //    рез = сО.Ссылка;
    КонецЕсли;
    
    Возврат рез;
    
КонецФункции

Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    дО = выбЗаказ.ПолучитьОбъект();
    тз = дО.Товары.Выгрузить();
    тз.Колонки.Добавить("Валюта");
    тз.Колонки.Добавить("ЦенаВал");
    тз.Колонки.Добавить("СуммаВал");
    тз.Колонки.Добавить("Договор");
    
    Для каждого стр из тз Цикл
        стрЦены = ПолучитьСтрЦЕны(стр.Номенклатура,дО.ТипЦен,дО.Дата);
        стр.Валюта = стрЦены.Валюта;
        стр.ЦенаВал = стрЦены.Цена;
        стр.СуммаВал = стр.Цена *  стр.Количество;
        
        стр.Договор = НайтиДоговорКОнтрагента(дО.Контрагент,стр.Валюта);
        
    КонецЦикла;    
    
    тзНаФОрме = тз;
    ЭлементыФОрмы.тзНаФОрме.СоздатьКолонки();
    
    дО_грн = Документы.ЗаказПокупателя.СоздатьДокумент();    
    ЗаполнитьЗначенияСвойств(дО_грн,дО,,"Номер");
    дО_грн.ДоговорКонтрагента = НайтиДоговорКОнтрагента(дО_грн.Контрагент,Справочники.Валюты.НайтиПоКоду("980"));
    Для каждого стр из  тз Цикл
        Если стр.Валюта.код = "980" Тогда
        НоваяСтрока = дО_грн.Товары.Добавить();
        ЗаполнитьЗначенияСвойств(НоваяСТрока,стр);
        НоваяСтрока.ЦЕна = стр.ЦЕнаВал;
        НоваяСтрока.Сумма = стр.СуммаВал;
        КонецЕсли;
    КонецЦикла;
    ф = дО_грн.ПолучитьФорму("ФормаДокумента");
    ф.Открыть();
    
    //дО_грн = Документы.ЗаказПокупателя.СоздатьДокумент();
    //дО_грн.ДоговорКонтрагента = НайтиДоговорКОнтрагента(дО_грн.Контрагент,Справочники.Валюты.НайтиПоКоду("980"));
    //ЗаполнитьЗначенияСвойств(дО_грн,дО,,"Номер");
    дО.Товары.Очистить();
    Для каждого стр из  тз Цикл
        Если стр.Валюта.код = "840" Тогда
        НоваяСтрока = дО.Товары.Добавить();
        ЗаполнитьЗначенияСвойств(НоваяСТрока,стр);
        НоваяСтрока.ЦЕна = стр.ЦЕнаВал;
        НоваяСтрока.Сумма = стр.СуммаВал;
        КонецЕсли;
    КонецЦикла;
    ф = дО.ПолучитьФорму("ФормаДокумента");
    ф.Открыть();
    
КонецПроцедуры


тоесть имея у контрагента 2 договора, в данном случае гривна и доллар, при нажатии на кнопку обработка уберет из документа позиции, которые не соответсвуют валюте договора и создаст документ с ними в нужной валюте.

тестировалась на УТ 10.3 (обычное приложение)
думаю для УТП и УПП тоже подойдёт. На других - тестите, главное условие : наличие у контрагента двух договоров с разными валютами и коды валют должны братся из класификатора, в противном случае прийдется немного допилить.

а вот собственно и обработка, пароль стандартный: Прикрепленный файл  DelenieZakazovPokupatelya.zip ( 7.81 килобайт ) Кол-во скачиваний: 1

Просмотров: 129, оставить комментарий   
RSS Текстовая версия Сейчас: 17.11.18, 2:53
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!

Курсы валют: доллар США к гривне Курсы валют: евро к гривне Курсы валют: российский рубль к гривне