Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 00:21

Как заполнить колонки макета

Автор Tyshkan, 24 авг 2012, 15:49

0 Пользователей и 1 гость просматривают эту тему.

Tyshkan

Необходимо добавить в макет внешнего отчета "реестр документов"две колонки "Сумма НДС 10%" и "Сумма НДС 18%" и заполнение происходило СуммойНДСДокумента согласно СтавкеНДС. Как это можно осуществить???

Klyacksa

1. Открыть макет - добавить колонки
2. Найти выборку данных, отредактировать так, чтобы получались помимо прочего еще и новые нужные данные
3. Найти заполнение макета, отредактировать, чтобы заполнялись и новые колонки тоже.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Tyshkan

Это все ясно, но я не могу сравнить СтавкуНДС со значением Перечисление.СтавкиНДС.  Обработчик присваивает Ложь строке

Tyshkan

Как мне прописать именно что
Если "СтавкаНДС"=Перечисления.СтавкиНДС.НДС10 Тогда
СуммаНДС10 = "СуммаНДСДокумента";
ИначеЕсли "СтавкаНДС" = Перечисления.СтавкиНДС.НДС18 Тогда
СуммаНДС18 = "СуммаНДСДокумента"
КонецЕсли;
Я что-то не правильно делаю??? Отладчик не воспринимает (присваивает ЛОЖЬ) строке где сравнение

Klyacksa

Что есть "СтавкаНДС"?
В Вашем условии это просто строка, и естественно она никогда не будет равна ни одному из значений перечисления.
Откуда берется "СтавкаНДС"? Это конкретное значение ставки по каждой строке или что?

ЦитироватьЭто все ясно, но я не могу сравнить СтавкуНДС со значением Перечисление.СтавкиНДС.  Обработчик присваивает Ложь строке
Приведите хоть какой-то код, здесь же не экстрасенсы сидят. Откуда мы можем знать, что у Вас там не получается, если Вы сами нам этого не говорите? ;)
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Tyshkan

Это значение СтавкиНДС из документа. Каждая строка это данные одного документа

Tyshkan

Запрос.Текст = Запрос.Текст + "
   |ВЫБРАТЬ РАЗЛИЧНЫЕ
   |   Док.Ссылка,
   |   Док.Дата,
   |   Док.Номер,
   |   """ + МетаданныеДокумента.Представление() + """ КАК ВидДокумента,
   |   " + ?(ОбщегоНазначения.ЕстьРеквизитДокумента("ВидОперации", МетаданныеДокумента), "Док.ВидОперации", "NULL") + " КАК ВидОперации,
   |   " + ?(ОбщегоНазначения.ЕстьРеквизитДокумента("Организация", МетаданныеДокумента), "Док.Организация", "NULL") + " КАК Организация,
   |   ";
   Если ОбщегоНазначения.ЕстьРеквизитДокумента("СкладОрдер", МетаданныеДокумента) Тогда
      ИмяРеквизитаСклад = "СкладОрдер";
   Иначе
      ИмяРеквизитаСклад = "Склад";
   КонецЕсли;
   Если ОбщегоНазначения.ЕстьРеквизитДокумента("СтавкаНДС", МетаданныеДокумента) Тогда
      СтНДС = "СтавкаНДС";
      Если СтНДС = Перечисления.СтавкиНДС.НДС10 Тогда
         СуммаНДС10 = "СуммаНДСДокумента";
      ИначеЕсли СтНДС = Перечисления.СтавкиНДС.НДС18 Тогда
         СуммаНДС18 = "СуммаНДСДокумента";
      КонецЕсли;
   КонецЕсли;   


Запрос.Текст = Запрос.Текст + ?(ОбщегоНазначения.ЕстьРеквизитДокумента("Контрагент", МетаданныеДокумента), "Док.Контрагент", "NULL") + " КАК Контрагент,
   |   " + ?(ОбщегоНазначения.ЕстьРеквизитДокумента(ИмяРеквизитаСклад, МетаданныеДокумента), "Док."+ИмяРеквизитаСклад, "NULL") + " КАК Склад,
   |   " + ?(ОбщегоНазначения.ЕстьРеквизитДокумента("СуммаДокумента", МетаданныеДокумента), "Док.СуммаДокумента", "0.00") + " КАК СуммаДокумента,
   |   " + ?(ОбщегоНазначения.ЕстьРеквизитДокумента("ВалютаДокумента", МетаданныеДокумента), "Док.ВалютаДокумента", "NULL") + " КАК ВалютаДокумента,
   |   " + ?(ОбщегоНазначения.ЕстьРеквизитДокумента("Комментарий", МетаданныеДокумента), "ПОДСТРОКА(Док.Комментарий,1,1000)", "NULL") + " КАК Комментарий,
   |   " + ?(ОбщегоНазначения.ЕстьРеквизитДокумента("Ответственный", МетаданныеДокумента), "Док.Ответственный", "NULL") + " КАК Ответственный,
   |   "+ ?(ОбщегоНазначения.ЕстьРеквизитДокумента(СуммаНДС10, МетаданныеДокумента), "Док."+СуммаНДС10, "0.00") + " КАК НДС10,
   |   " + ?(ОбщегоНазначения.ЕстьРеквизитДокумента(СуммаНДС18, МетаданныеДокумента), "Док."+СуммаНДС18, "0.00") + " КАК НДС18,
   |   " + ?(истина, "Док.ДокументОснование.Проект", "NULL") + " КАК Проект,
   |   " + ?(истина, "Док.ДокументОснование.Агент", "NULL") + " КАК Агент
   |ИЗ
   |   Документ." + ВидДокумента + " КАК Док
   |";

Klyacksa

О, ну хоть какой-то код.
А где выполнение запроса? Выборка, заполнение макета? что вы потом с этим запросом делаете?

Повторюсь, код:
  Если ОбщегоНазначения.ЕстьРеквизитДокумента("СтавкаНДС", МетаданныеДокумента) Тогда
      СтНДС = "СтавкаНДС";
      Если СтНДС = Перечисления.СтавкиНДС.НДС10 Тогда
         СуммаНДС10 = "СуммаНДСДокумента";
      ИначеЕсли СтНДС = Перечисления.СтавкиНДС.НДС18 Тогда
         СуммаНДС18 = "СуммаНДСДокумента";
      КонецЕсли;
   КонецЕсли;   

никогда не выполнится, ибо нельзя сравнивать строку и значение перечисления. Ни в одно из условий, выполнение не попадет.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Tyshkan

как мне сделать это сравнение??? данные заполняются я провереля он мне выводит все значения СуммыНДСДокумента, только как сделать отбор именно 10% и 18%???

Klyacksa

Ну откуда ж я знаю?
Где выполняется весь этот текст? В контексте чего работает?
Ваш запрос выбирает данные ПО МНОГИМ документам, как Вы собираетесь опираться на данные какого-то конкретного?

Проверку надо ставить в момент вывода документов в макет, когда уже есть выборка, когда по каждому конкретному доку можем взять ставку ндс...
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск