Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как автоматичсеки считать данные из справочника в табличную часть счета?  (Прочитано 9630 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
ALeonova
Гость
« : 27-04-2009 08:12 » 

Добрый день!

Ситуация такая:

В справ-ке"Контрагенты" я сделала вкладку Базы клиента, на ней разместила табличную часть "БазыКлиента", где указывается наименование базы, рег.номер и признак Сопровождается (Булево).

Теперь необходимо, чтобы при формирование док-та Счет на оплату, выбрав контрагента, пользователь нажал кнопку Заполнить. В результате табличная часть  стандартного счета должна заполниться базами контрагента (из табл.части спр-ка Контрагенты) с признаком Сопровождается (Истина). Т.е в счет должны попасть сопровождаемые базы именно этого контрагента и именно автоматически.

Подскажите, пожалуйста, новичок в программировании:)
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 27-04-2009 08:40 » 

Простым циклом с условием:
Код:
	БазыКлиента.Очистить(); // Чистим ТЧ документа
Для каждого Стр Из Контрагент.БазыКлиента Цикл // По всем строкам клиента
Если Не Стр.Сопровождается Тогда Продолжить; КонецЕсли; // если проверка не проходит - следующая итерация цикла
СтрДок=БазыКлиента.Добавить(); // Новая строка в ТЧ документа
СтрДок.РеквизитТЧДокумента=Стр.РеквизитТЧКонтрагента; // Устанавливаем нужные реквизиты
...
КонецЦикла;
Записан
ALeonova
Гость
« Ответ #2 : 28-04-2009 05:54 » 

Вот ещё способо:
Код:
Процедура КоманднаяПанель1ЗаполнитьПоБазамКлиента(Кнопка)
      Если НЕ Контрагент.Пустая() Тогда

            ТекстВопроса = "Табличная часть будет очищена и " +Символы.ПС+
                    "заполнена по базам контрагента ";
            Ответ = Вопрос(ТекстВопроса , РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Нет,"Заполнение табличной части");
            Если Не Ответ = КодВозвратаДиалога.Да Тогда
                  Возврат;
            КонецЕсли;

    //получаем табчасть котрую из которой надо брать данные
    БазыКлиента = ЭтотОбъект.Контрагент.БазыКлиента;
    //получаем табчасть котрую надо заполнить
    ТабЧастьУслуги = ЭтотОбъект.Услуги;
    //очищаем  ее
    ТабЧастьУслуги.Очистить();
      Для каждого СтрокаТЧ Из БазыКлиента Цикл
      //берем только записи со значением Сопровождается =Истина
            Если СтрокаТЧ.Сопровождается =Истина Тогда
                    НовСтрока =ТабЧастьУслуги.Добавить();
                    НовСтрока.Номенклатура = СтрокаТЧ.Наименование;
                    НовСтрока.Содержание =  СтрокаТЧ.Наименование;
                    НовСтрока.Количество = СтрокаТЧ.Количество;
                    НовСтрока.РегНомер = СтрокаТЧ.РегНомер;
                    НовСтрока.СтавкаНДС =  СтрокаТЧ.Наименование.СтавкаНДС;
            КонецЕсли;
      КонецЦикла;
КонецЕсли;
КонецПроцедуры
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 28-04-2009 12:29 » 

Способ тот же - просто у тебя точный код под твою задачу, включая проверки и вопросы Улыбаюсь
А вот другим способом было бы использование методов Выгрузить()/Загрузить() табличной части.
Записан
vi100k
Гость
« Ответ #4 : 04-09-2009 07:16 » new

Подскажите пожалкуйста, почему при открытии ранее созданного документа все данные обнуленны, которые были внесены при создании документа? Что нужно, чтоб данные не обнулялись? Дополнительный модуль прописать или нужен какой то объект, хранящий эти данные?
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines