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

Обратится к полю таблицы значений

Автор Tanya_Lo, 13 авг 2013, 21:42

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

Tanya_Lo

выбрала результат запроса в таблицу значений и потом передала ее в форму.
...........
Запрос.УстановитьПараметр("НомерДоговора", ДоговорСсылка);
         Результат  =  Запрос .Выполнить(). Выгрузить ();
    возврат  Результат;
....................
На форме хочу по определенным условия выводить данные в созданную на форме Таблицу Значений.

   ТаблицаДоп=МояФункцияКотораяВыполнетЗапрос(Объект.Ссылка);   
      
   Для Каждого ТекущаяСтрока Из ТаблицаДоп Цикл
      НоваяСтрока = Доп.Добавить();
   //ИСПОЛНИТЕЛЬ
   Если ТекущаяСтрока.ИсполнительДолжность<>ТекущаяСтрока.ИсполнительДолжностьСтарый  тогда
       новаяСтрока.Исполнитель=ТекущаяСтрока.ИсполнительФио;
   конецЕсли;

Но так  как тип у поля "ИсполнительДолжность" - СправочникСсылка - значение не получаю и сравнивать нечего...... Подскажите как его получить???

mixqn

Цитата: Tanya_Lo от 13 авг 2013, 21:42Но так  как тип у поля "ИсполнительДолжность" - СправочникСсылка - значение не получаю и сравнивать нечего......
честно, не понял логики этого предложения. Почему тип СправочникСсылка мешает получить значение и затем сравнить его с другим?
Цитата: Tanya_Lo от 13 авг 2013, 21:42Подскажите как его получить???
ну раз вы таблицу получаете запросом, логично, что и ИсполнительДолжность следует получать в запросе.

если сложности с изменением запроса, покажите его текст

Tanya_Lo

Есть документ - ДОГОВОР, на его основании - документ ДОП.
У документа ДОП - те же реквизиты. Плюс создала еще некоторые реквизиты для запоминания значения.
К примеру - Поле1 (Заполняется на основании Поля1 документа Договор)
            Поле2 - аналогично
            ....
            ....
            Поле1Старое (Заполняется на основании документа Договор, НО не отображается на форме и не редактируется)
            Поле2Старое - аналогично.
           ......

Далее хочу вывести в таблице на форме список того - какие документы ДОП относятся к данному документу ДОГОВОР и какие реквизиты были изменены (вывести старое и новое значение).

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

Выбираю все документы  ДОП - относящие к нужному мне Договору.
Затем выгружаю Все в Таблицу Значений.
Анализирую данные и вывожу на экран информацию типа "Было - " + Значение1 + "Стало"+ Значение2

&НаСервере
процедура ТЗзаполнить(Договор)
   ТаблицаДоп=Новый ТаблицаЗначений;
   ТаблицаДоп=ВЫЗОВ_Моей_функции(Объект.Ссылка);   
      
   Для Каждого ТекущаяСтрока Из ТаблицаДоп Цикл
   НоваяСтрока = Доп.Добавить();
   НоваяСтрока.НомерДопСоглашения=ТекущаяСтрока.НомерДопСоглашения;
   НоваяСтрока.ДатаДоп=ТекущаяСтрока.Дата;

   //ИСПОЛНИТЕЛЬ
   Если ТекущаяСтрока.ИсполнительДолжность<>ТекущаяСтрока.ИсполнительДолжностьСтарый тогда
      НоваяСтрока.Исполнитель="Исполнитель было -
                   "+ТекущаяСтрока.ИсполнительДолжностьСтарый
                    +ТекущаяСтрока.ИсполнительФИОСтарый+" стало -"
                    +ТекущаяСтрока.ИсполнительДолжность+" "+текущаяСтрока.ИсполнительФИО;
   конецЕсли;

        аналогично сравниваю другие поля.....

Помогите оптимизировать ЭТО .... ведь я так понимаю можно все и в запросе сделать .... пока не знаю как ....

wise

автоматизируя ХАОС получите автоматизированный ХАОС...(с)
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Теги:

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

Рейтинг@Mail.ru

Поиск