На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:

  • Перед тем, как задать вопрос, желательно почитать документацию и воспользоваться поиском.
  • Когда задаёте вопрос, то обязательно указывайте платформу (7.7, 8.0, 8.1, 8.2, etc), причем желательно в заголовке. Если речь идёт о типовой конфигурации, то указывайте её название и релиз. Текущие версии можно посмотреть здесь.
  • Ещё раз напоминаем о необходимости соблюдать не только правила, но и законы. Уважайте авторские права.

Высказать своё мнение о модераторах раздела можно здесь: evGenius
  
> Заполнение табличной части документа , 1С 8.2, управляемый интерфейс
    Помогите пожалуйста!!! Не знаю как решить следующую задачу :(
    Мне нужно, что бы при добавлении новой строки в табличную часть (добавляю я физ.лица) в соседнюю колонку автоматически прописывалась контактная информация этого физ лица.
    Все данные есть, не знаю как правильно написать код. Смогла только додуматься до того, что прописываться он будет в обработчике событий "ПриИзменении" :blush:
      Требую продолжения банкета.
      Цитата chychelko @
      Все данные есть, не знаю как правильно написать код.

      Где находятся данные на момент добавления? есть ли в табличной части колонка куда эти данные добавляются? побольше инфы.
      Цитата chychelko @
      в обработчике событий "ПриИзменении"

      что там происходит?
      Судя по обработчику версия 1С 8?
      и что за конфигурация? ЗУП? УПП? ??
      Сообщение отредактировано: Muxa_I -
        Цитата Muxa_I @
        Требую продолжения банкета.
        Цитата chychelko @
        Все данные есть, не знаю как правильно написать код.

        Где находятся данные на момент добавления? есть ли в табличной части колонка куда эти данные добавляются? побольше инфы.
        Цитата chychelko @
        в обработчике событий "ПриИзменении"

        что там происходит?
        Судя по обработчику версия 1С 8?
        и что за конфигурация? ЗУП? УПП? ??

        справочник, из которого берутся данные полностью заполнен, в нем есть "Телефон", вот этот "Телефон" мне в таблицу подтянуть и надо при выборе этого физ.лица. Колонка в табличной части предусмотрена. Там и там строковый тип данных.
        И да это 8.2

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

          Собрано на коленке с отвлечениями и не проверялось, но должно работать как один из вариантов
            Про запросы я знаю, это самое простое и самое громоздкое.
            В моем курином мозге отложилось то , что тоже самое можно выполнить каким-то другим способом, менее громоздким.
            Запрос - это хорошо, но не в денной ситуации. :oops:
              Цитата chychelko @
              Запрос - это хорошо, но не в денной ситуации.

              Почему?
                Цитата Rust @

                Он большой получается, да и чисто внутреннее осознание того, что должно быть как то проще.

                Добавлено
                Параллельно возник еще один вопрос, может кто знает.
                Мне надо что бы объект "ВремяНачала" был равен какому-то определенному времени.
                Как я понимаю это можно реализовать примерно следующем образом:

                ВремяНачала ='00010101140101';

                Проблема в том что он мне на значение "ВремяНачала" передает 0001.01.01.00.00.00 (время по нулям)

                Если же я беру любую переменную и прописываю ей такой код, то он мне выдает верное значение (0001.01.01.14.01.01)

                ВремяНачала: тип-Дата, состав даты-Время.

                Может я что-то не так делаю :crazy:
                  Цитата chychelko @
                  Он большой получается

                  Ну если исходить из принципа, что листинг любой функции или процедуры должен занимать не более двух экранов, то да.
                  где-то я такое слышал или читал.
                    Цитата Muxa_I @
                    Ну если исходить из принципа, что листинг любой функции или процедуры должен занимать не более двух экранов, то да.
                    где-то я такое слышал или читал.

                    Тут даже не в листинге дело, а в том, что нужен только один объект и из за него одного строить громоздкий запрос, как то не логично. Уж поймите меня правильно! :blink:
                      Цитата chychelko @
                      громоздкий запрос

                      Ещё как вариант попробовать
                      ExpandedWrap disabled
                        ТекущиеДанные = ЭлементыФормы.ТабличнаяЧастьДокумента.ТекущиеДанные;
                        ФизЛицоИзСправочника = ТекушиеДанные.Физлицо;
                        ТелефонИзСправочника = ФизЛицоИзСправочника.{ИмяРеквизитаТелефона};
                        ТекущиеДанные.Телефон = ТелефонИзСправочника;

                      Может работает, а может и нет. Попробовать можно. ;)
                      всё вышеприведенное можно объединить в 2 строки, если нужно.
                      Сообщение отредактировано: Muxa_I -
                        Цитата Muxa_I @
                        ExpandedWrap disabled
                          ТекущиеДанные = ЭлементыФормы.ТабличнаяЧастьДокумента.ТекущиеДанные;
                          ФизЛицоИзСправочника = ТекушиеДанные.Физлицо;
                          ТелефонИзСправочника = ФизЛицоИзСправочника.{ИмяРеквизитаТелефона};
                          ТекущиеДанные.Телефон = ТелефонИзСправочника;

                        Все бы ничего, он ругается на имя реквизита:

                        ExpandedWrap disabled
                          ТекущиеДанные = Элементы.Обзвон.ТекущиеДанные;
                          ФизЛицоИзСправочника = ТекущиеДанные.ФизЛицо.Телефон;
                          ТекущиеДанные.КонтактнаяИнформация = ТекущиеДанные;


                        ОШИБКА!!!
                        {Документ.ОбзвонКлиентов.Форма.ФормаДокумента.Форма(117)}: Поле объекта не обнаружено (Телефон)
                        ФизЛицоИзСправочника = ТекущиеДанные.ФизЛицо.Телефон;

                        В самом справочнике такой реквизит есть. :wall: Может я совсем чего-то не понимаю.
                          Я так полагаю, что в Текущих данных уже есть телефон :)

                          Поставь точку останова на
                          ТекущиеДанные = Элементы.Обзвон.ТекущиеДанные;
                          Посмотри в отладчике содержимое текущих данных (по F9; F2).
                          И если я прав в первом предположении, то в строке
                          ФизЛицоИзСправочника = ТекущиеДанные.ФизЛицо.Телефон;
                          убери ФизЛицо ;)

                          Я не знаю каким образом организован справочник, но
                          посмотрим что мы делаем в коде:
                          ExpandedWrap disabled
                            1      ТекущиеДанные = ЭлементыФормы.ТабличнаяЧастьДокумента.ТекущиеДанные;
                            2      ФизЛицоИзСправочника = ТекушиеДанные.Физлицо;
                            3      ТелефонИзСправочника = ФизЛицоИзСправочника.{ИмяРеквизитаТелефона};
                            4      ТекущиеДанные.Телефон = ТелефонИзСправочника;

                          Итак
                          строка 1 - позицианируемся на строке табличной части документа и присваиваем переменной ТекущиеДанные данные, находящиеся в строке.
                          В основном нас интересует ФизЛицо.
                          строка 2 - переменной ФизЛицоИзСправочника мы присваиваем это самое физлицо.
                          тут небольшое отступление: Если в табличной части документа, то бишь "Обзвон", реквизит "физлицо" это строка, то действовать таким образом не получится, т.к. во второй строке присваивается, строго говоря ссылка, указывающая на элемент справочника. (фух)
                          строка 3 - переменной ТелефонИзСправочника мы присваиваем значение реквизита элемента справочника (мы помним, что ФизЛицоИзСправочника это ссылка).
                          строка 4 - вносим телефон в строку табличной части документа (ТекущиеДанные), т.е. реквизиту телефон присваиваем значение переменной ТелефонИзСправочника. У реквизита "Телефон" должен быть тип "Строка".
                          Как-то так. Смотри внимательно. ;)

                          Если хочешь посмотри в аттаче простейшая конфигурация из одного документа с одной процедурой и одного справочника.

                          Прикреплённый файлПрикреплённый файл____.rar (31,61 Кбайт, скачиваний: 394)
                          Сообщение отредактировано: Muxa_I -
                            Все бы хорошо, но!!! Код у тебя написан в обычном приложении, а у меня управляемое, видимо поэтому ни чего и не получается :(

                            Добавлено
                            По логике 1 и 3 строка выполняются в разных местах. 1 на клиенте, 2 на сервере, их нужно как -то разбить на разные процедуры, но у меня мозгов не хватает как :crazy:
                              chychelko, выгрузи конфигурацию и прикрепи к сообщению. Без конфигурации будем воду в ступе толочь.
                              Если файл слишком большой - залей на какую нить файлопомойку и прикрепи ссылку
                              Сообщение отредактировано: Rust -
                                ага. из-за этого. С управляемыми приложениями я не сталкивался. Так что пардон
                                Цитата
                                выгрузи конфигурацию и прикрепи к сообщению

                                поддерживаю :yes:
                                Сообщение отредактировано: Muxa_I -
                                  Цитата Rust @
                                  chychelko, выгрузи конфигурацию и прикрепи к сообщению. Без конфигурации будем воду в ступе толочь.
                                  Если файл слишком большой - залей на какую нить файлопомойку и прикрепи ссылку

                                  Конфигурация, которая прикреплена парой сообщений раньше подходит, только в ней нужно переключить с обычного на управляемое приложение, а так данных достаточно.
                                    Цитата chychelko @
                                    Конфигурация, которая прикреплена парой сообщений раньше подходит

                                    Ошибка в вашей конфигурации, или в конфигурации которую прикрепил Muxa_I? Если в вашей, то нужна именно ваша.
                                      Цитата Rust @
                                      Цитата chychelko @
                                      Конфигурация, которая прикреплена парой сообщений раньше подходит

                                      Ошибка в вашей конфигурации, или в конфигурации которую прикрепил Muxa_I? Если в вашей, то нужна именно ваша.

                                      Ошибка в том, что код написан под обычное приложение, а мне нужна реализация этого кода в управляемом приложении.
                                        реализация в моей конфигурации :)

                                        ExpandedWrap disabled
                                          &НаКлиенте
                                          Процедура ТабличнаяЧасть1ЛицоПриИзменении(Элемент)
                                              ТекущиеДанные = Элементы.ТабличнаяЧасть1.ТекущиеДанные;
                                              ФЛ = ТекущиеДанные.Лицо;
                                              Тел = ВопросКСерверу(ФЛ);
                                              ТекущиеДанные.Телефон = Тел;
                                          КонецПроцедуры
                                           
                                          &наСервере
                                          Функция ВопросКСерверу(ФЛ)
                                              Тел = ФЛ.Телефон;
                                              Возврат Тел;
                                          КонецФункции

                                        Проверил. Работает.
                                        в управляемом приложении
                                        Сообщение отредактировано: Muxa_I -
                                          Цитата Muxa_I @
                                          реализация в моей конфигурации :)

                                          ExpandedWrap disabled
                                            &НаКлиенте
                                            Процедура ТабличнаяЧасть1ЛицоПриИзменении(Элемент)
                                                ТекущиеДанные = Элементы.ТабличнаяЧасть1.ТекущиеДанные;
                                                ФЛ = ТекущиеДанные.Лицо;
                                                Тел = ВопросКСерверу(ФЛ);
                                                ТекущиеДанные.Телефон = Тел;
                                            КонецПроцедуры
                                             
                                            &наСервере
                                            Функция ВопросКСерверу(ФЛ)
                                                Тел = ФЛ.Телефон;
                                                Возврат Тел;
                                            КонецФункции

                                          Проверил. Работает.
                                          в управляемом приложении

                                          :victory: *танцует* =* Спасибо огромное )))))))) то что надо!!!!

                                          Добавлено
                                          Цитата chychelko @
                                          Добавлено
                                          Параллельно возник еще один вопрос, может кто знает.
                                          Мне надо что бы объект "ВремяНачала" был равен какому-то определенному времени.
                                          Как я понимаю это можно реализовать примерно следующем образом:

                                          ВремяНачала ='00010101140101';

                                          Проблема в том что он мне на значение "ВремяНачала" передает 0001.01.01.00.00.00 (время по нулям)

                                          Если же я беру любую переменную и прописываю ей такой код, то он мне выдает верное значение (0001.01.01.14.01.01)

                                          ВремяНачала: тип-Дата, состав даты-Время.

                                          Может я что-то не так делаю :crazy:

                                          Вчера параллельно возник еще один вопрос, может вы и на него ответ знаете :blush:
                                            Цитата
                                            Параллельно возник еще один вопрос, может кто знает.
                                            Мне надо что бы объект "ВремяНачала" был равен какому-то определенному времени.
                                            Как я понимаю это можно реализовать примерно следующем образом:

                                            ВремяНачала ='00010101140101';

                                            Проблема в том что он мне на значение "ВремяНачала" передает 0001.01.01.00.00.00 (время по нулям)

                                            Если же я беру любую переменную и прописываю ей такой код, то он мне выдает верное значение (0001.01.01.14.01.01)

                                            ВремяНачала: тип-Дата, состав даты-Время

                                            И снова мало информации. :whistle:
                                            Для чего нужОн сей объект, и неможно ли обойтись переменной?
                                              Цитата Muxa_I @
                                              Цитата
                                              Параллельно возник еще один вопрос, может кто знает.
                                              Мне надо что бы объект "ВремяНачала" был равен какому-то определенному времени.
                                              Как я понимаю это можно реализовать примерно следующем образом:

                                              ВремяНачала ='00010101140101';

                                              Проблема в том что он мне на значение "ВремяНачала" передает 0001.01.01.00.00.00 (время по нулям)

                                              Если же я беру любую переменную и прописываю ей такой код, то он мне выдает верное значение (0001.01.01.14.01.01)

                                              ВремяНачала: тип-Дата, состав даты-Время

                                              И снова мало информации. :whistle:
                                              Для чего нужОн сей объект, и неможно ли обойтись переменной?

                                              Мне надо что бы при создании нового документа, табличная часть документа автоматически заполнялась 3 строчками:
                                              типо время начала работы и время окончания
                                              у меня код выглядит примерно следующим образом:
                                              ExpandedWrap disabled
                                                &НаКлиенте
                                                Процедура ПриОткрытии(Отказ)
                                                    Дата = '00010101140101'; // если брать обычную переменную то ее значение такое какое и должно быть (14:01:01)
                                                    НоваяСтрока = Объект.ВремяРаботы.Добавить();
                                                    НоваяСтрока.ВремяНачала ='00010101100000';     // а в реквизит ВремяНачала и ВремяОкончания он время обнуляет (00:00:00)
                                                        НоваяСтрока.ВремяОкончания ='00010101130000';
                                                    //...и т.д.
                                                        
                                                КонецПроцедуры
                                                Скопировал Ваш код.
                                                Подправил в "свою" конфигурацию (заменил
                                                ExpandedWrap disabled
                                                  НоваяСтрока = Объект.ВремяРаботы.Добавить();

                                                на
                                                ExpandedWrap disabled
                                                  НоваяСтрока = Объект.ТабличнаяЧасть1.Добавить();
                                                )
                                                Запустил. результат на скриншоте в приложении

                                                Прикреплённый файлПрикреплённый файл______.PNG (77,29 Кбайт, скачиваний: 611)
                                                  Цитата Muxa_I @
                                                  Скопировал Ваш код.
                                                  Подправил в "свою" конфигурацию (заменил
                                                  ExpandedWrap disabled
                                                    НоваяСтрока = Объект.ВремяРаботы.Добавить();

                                                  на
                                                  ExpandedWrap disabled
                                                    НоваяСтрока = Объект.ТабличнаяЧасть1.Добавить();
                                                  )
                                                  Запустил. результат на скриншоте в приложении

                                                  Прикреплённый файлПрикреплённый файл______.PNG (77,29 Кбайт, скачиваний: 611)

                                                  Я уже ни чего в этой жизни не понимаю (((( вчера не работало, сегодня тот же код заработал :wall:
                                                  Спасибо большое за помощь!!!
                                                    Рад был помочь ;)
                                                      Чувствую в ближайшее время мне еще ни раз понадобится твоя помощь :blush:
                                                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                      0 пользователей:


                                                      Рейтинг@Mail.ru
                                                      [ Script execution time: 0,0677 ]   [ 21 queries used ]   [ Generated: 26.04.24, 21:51 GMT ]