8.х Внешняя обработка 8.2

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Дмитрий Сухов, 3 июл 2014.

  1. TopicStarter Overlay
    Дмитрий Сухов
    Offline

    Дмитрий Сухов

    Регистрация:
    3 июл 2014
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Всем привет! Знающие люди, помогите. У меня есть внеш обработка и в ней необходимо добавить колонку "марка", в которой будет наименование товара (н-р, бензин 92), только наименование выбирается методом сравнения, т.е. если цена < или = 19 руб то 92, а если > уже другое наименование. Вопрос как сделать, чтобы в колонке "марка" появлялась не сумма ( наименование + цена), а сразу появлялась марка бензин 92.
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Что уже сделали ?
  3. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Есть событие "При получении данных". Вот там и обрабатывайте каждую строку.
  4. TopicStarter Overlay
    Дмитрий Сухов
    Offline

    Дмитрий Сухов

    Регистрация:
    3 июл 2014
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Добавил колонку в макете. В запросе (он уже был) сделал что бы сумму считал
  5. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Колонка в макете, колонка в форме, колонка в таблице, господи, ну почему нельзя сразу написать все. У Вас пустяковое решение (ну для нас по крайней мере), а мы из Вас вытягиваем ответы. Кому надо это? Удосужитесь потратить 10 минут своего времени и составить нормальный вопрос.
    1) Приложите сюда свою обработку.
    2) Назовите версию платформы и конфигурации на которой все это запускаете.
    3) Сформулируйте нормальный заголовок темы. Чтобы он был емкий и отражал всю полноту обсуждения.
    Бесит уже.
  6. TopicStarter Overlay
    Дмитрий Сухов
    Offline

    Дмитрий Сухов

    Регистрация:
    3 июл 2014
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    1с Предприятие 8.2.19.83.
    Бухгалтерия предприятия 2.0.58.6

    Код модуля формы


    Процедура ВыбПериодНажатие(Элемент)
    НастройкаПериода = Новый НастройкаПериода;
    НастройкаПериода.УстановитьПериод(ДатаНач, ?(ДатаКон='0001-01-01', ДатаКон, КонецДня(ДатаКон)));
    НастройкаПериода.РедактироватьКакИнтервал = Истина;
    НастройкаПериода.РедактироватьКакПериод = Истина;
    НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период;
    Если НастройкаПериода.Редактировать() Тогда
    ДатаНач = НастройкаПериода.ПолучитьДатуНачала();
    ДатаКон = НастройкаПериода.ПолучитьДатуОкончания();
    КонецЕсли;
    КонецПроцедуры

    Процедура ДействияФормыСформировать(Кнопка)

    Отказ = Ложь;

    Если Не ЗначениеЗаполнено(ДатаНач) Или Не ЗначениеЗаполнено(ДатаКон) Тогда
    Сообщить("Не указан период!");
    Отказ = Истина;
    ИначеЕсли ДатаНач > ДатаКон Тогда
    Сообщить("Период указан неверно!");
    Отказ = Истина;
    КонецЕсли;

    Если Отказ Тогда
    Возврат;
    КонецЕсли;

    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
    Запрос.УстановитьПараметр("ДатаКон", КонецДня(ДатаКон));
    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | ИспользованныеМатериалы.НоменклатурнаяГруппа,
    | ИспользованныеМатериалы.Дата КАК Дата,
    | СУММА(ИспользованныеМатериалы.Количество) КАК Количество
    |ПОМЕСТИТЬ ИспользованныеМатериалы
    |ИЗ
    | РегистрСведений.ИспользованныеМатериалы КАК ИспользованныеМатериалы
    |ГДЕ
    | ИспользованныеМатериалы.Дата МЕЖДУ &ДатаНач И &ДатаКон
    |
    |СГРУППИРОВАТЬ ПО
    | ИспользованныеМатериалы.НоменклатурнаяГруппа,
    | ИспользованныеМатериалы.Дата
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | ВложенныйЗапрос.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
    | ВложенныйЗапрос.Дата КАК Дата,
    | СУММА(ВложенныйЗапрос.КоличествоФакт) КАК КоличествоФакт,
    | СУММА(ВложенныйЗапрос.КоличествоПлан) КАК КоличествоПлан,
    | СУММА(ВложенныйЗапрос.КоличествоФакт - ВложенныйЗапрос.КоличествоПлан) КАК КоличествоОтклонение,
    | СУММА(ВложенныйЗапрос.КоличествоФакт * 4) КАК Марка
    |ИЗ
    | (ВЫБРАТЬ
    | ИспользованныеМатериалы.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
    | ИспользованныеМатериалы.Дата КАК Дата,
    | ИспользованныеМатериалы.Количество / 1000 КАК КоличествоФакт,
    | 0 КАК КоличествоПлан
    | ИЗ
    | ИспользованныеМатериалы КАК ИспользованныеМатериалы
    |
    | ОБЪЕДИНИТЬ ВСЕ
    |
    | ВЫБРАТЬ
    | ХозрасчетныйОбороты.КорСубконто1.НоменклатурнаяГруппа,
    | ХозрасчетныйОбороты.Период,
    | 0,
    | ВЫРАЗИТЬ(ХозрасчетныйОбороты.КоличествоКорОборот КАК ЧИСЛО(10, 0))
    | ИЗ
    | РегистрБухгалтерии.Хозрасчетный.Обороты(
    | &ДатаНач,
    | &ДатаКон,
    | День,
    | Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновноеПроизводство)),
    | ,
    | КорСубконто1.НоменклатурнаяГруппа В
    | (ВЫБРАТЬ РАЗЛИЧНЫЕ
    | ИспользованныеМатериалы.НоменклатурнаяГруппа
    | ИЗ
    | ИспользованныеМатериалы КАК ИспользованныеМатериалы),
    | КорСчет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Материалы)),
    | ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура)) КАК ХозрасчетныйОбороты) КАК ВложенныйЗапрос
    |
    |СГРУППИРОВАТЬ ПО
    | ВложенныйЗапрос.НоменклатурнаяГруппа,
    | ВложенныйЗапрос.Дата
    |
    |УПОРЯДОЧИТЬ ПО
    | Дата
    |ИТОГИ
    | СУММА(КоличествоФакт),
    | СУММА(КоличествоПлан),
    | СУММА(КоличествоОтклонение),
    | СУММА(Марка)
    |ПО
    | НоменклатурнаяГруппа,
    | Дата";



    Если СпособВывода = 1 Тогда
    Запрос.Текст = СтрЗаменить(Запрос.Текст, "ВложенныйЗапрос.Дата", "&ДатаКон");
    ИначеЕсли СпособВывода = 2 Тогда
    Запрос.Текст = СтрЗаменить(Запрос.Текст, "ВложенныйЗапрос.Дата", "НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Дата, ДЕНЬ)");
    КонецЕсли;

    Результат = Запрос.Выполнить();

    ВыборкаПоДатам = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Дата", "Все");

    Макет = ПолучитьМакет("Макет");
    ТабДок = ЭлементыФормы.ТабДок;
    ТабДок.Очистить();

    Область = Макет.ПолучитьОбласть("Заголовок");
    Область.Параметры.ДатаНач = Формат(ДатаНач, "ДФ=dd.MM.yyyy; ДЛФ=D");
    Область.Параметры.ДатаКон = Формат(ДатаКон, "ДФ=dd.MM.yyyy; ДЛФ=D");
    ТабДок.Вывести(Область);

    Если СпособВывода <> 1 Тогда
    ТабДок.Вывести(Макет.ПолучитьОбласть("ШапкаТаблицыПериод"));
    Иначе
    ТабДок.Вывести(Макет.ПолучитьОбласть("ШапкаТаблицы"));
    КонецЕсли;

    Пока ВыборкаПоДатам.Следующий() Цикл

    Выборка = ВыборкаПоДатам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "НоменклатурнаяГруппа");
    Пока Выборка.Следующий() Цикл
    Если СпособВывода <> 1 Тогда
    Область = Макет.ПолучитьОбласть("СтрокаТаблицыПериод");
    Иначе
    Область = Макет.ПолучитьОбласть("СтрокаТаблицы");
    КонецЕсли;
    Область.Параметры.Заполнить(Выборка);
    Если СпособВывода = 2 Тогда
    Область.Параметры.Дата = Формат(Выборка.Дата, "ДФ=dd.MM.yyyy; ДЛФ=D");
    КонецЕсли;

    ТабДок.Вывести(Область);
    КонецЦикла;

    КонецЦикла;

    ВыборкаПоНоменклатурнымГруппам = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "НоменклатурнаяГруппа", "Все");
    Пока ВыборкаПоНоменклатурнымГруппам.Следующий() Цикл

    Если СпособВывода <> 1 Тогда
    Область = Макет.ПолучитьОбласть("ПодвалТаблицыПериод");
    Иначе
    Область = Макет.ПолучитьОбласть("ПодвалТаблицы");
    КонецЕсли;
    Область.Параметры.Заполнить(ВыборкаПоНоменклатурнымГруппам);
    ТабДок.Вывести(Область);

    КонецЦикла;

    ТабДок.ФиксацияСверху = 4;
    ТабДок.ТолькоПросмотр = Истина;

    КонецПроцедуры

    Процедура ПриОткрытии()
    СпособВывода = 1;
    КонецПроцедуры


    upload_2014-7-3_15-25-45.png
  7. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    При обработке запроса и перед выводом областей - проверяйте ваше значение на условие, и в соответствии с ним выводите что хотите.
  8. TopicStarter Overlay
    Дмитрий Сухов
    Offline

    Дмитрий Сухов

    Регистрация:
    3 июл 2014
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    как написать программно это условие - я слабо знаю язык 1с
    --- Объединение сообщений, 3 июл 2014 ---
    как вообще это пишется
    --- Объединение сообщений, 3 июл 2014 ---
    например если расход факт 100 а мне надо условие <= 215 тогда 75 как ?
  9. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Язык 1С мало чем отличается от других языков программирования в плане условий и т.д. Вывод области у Вас происходит в цикле. Вот в этом цикле и задать необходимые условия.
    Код:
    Если РасходФакт <= 215 Тогда 
    // то то, то то 
    КонецЕсли;
  10. TopicStarter Overlay
    Дмитрий Сухов
    Offline

    Дмитрий Сухов

    Регистрация:
    3 июл 2014
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Если в колонке "марка раствора / бетонная смесь" в параметре "марка" значение (количество факт*4), то как надо написать код чтобы вместо значение (количество факт*4) выводилось условие:
    если номенклатура "цемент " | количество факт 0,77 | марка (0,77*4)=0,308 - 150-ый (если колфакт <=420 тогда 150-ый), только по цементу

    Вот картинка (что должно получиться)
    upload_2014-7-4_9-32-44.png

    Вложения:

Похожие темы
  1. Alexander2
    Ответов:
    3
    Просмотров:
    633
Загрузка...

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