Имя: Пароль:
1C
1С v8
выгрузка ТаблицыЗначений в документ
,
0 Alexsey58
 
02.10.12
15:34
имеется ТаблицаЗначении нужно выгрузить в документ, сам документ выгружается, не получается сделать отбор по контрагенту, В Таблице есть колонки по контрагентам, нужно чтобы номенклатура записывалась в один документ контрагента, вот моя выгрузка

   ТаблицаЧтения=новый ТаблицаЗначений;
   ТаблицаЧтения.Колонки.Добавить("Заказ");
   ТаблицаЧтения.Колонки.Добавить("Контрагент");
   ТаблицаЧтения.Колонки.Добавить("Ожидается");
   ТаблицаЧтения.Колонки.Добавить("Баланс");
   ТаблицаЧтения.Колонки.Добавить("Срок");
   ТаблицаЧтения.Колонки.Добавить("ГарСрок");
   ТаблицаЧтения.Колонки.Добавить("Направление");
   ТаблицаЧтения.Колонки.Добавить("Комментарий");
   ТаблицаЧтения.Колонки.Добавить("Артикул");
   ТаблицаЧтения.Колонки.Добавить("Номенклатура");
   ТаблицаЧтения.Колонки.Добавить("Производитель");
   ТаблицаЧтения.Колонки.Добавить("Цена");
   ТаблицаЧтения.Колонки.Добавить("Количество");
   ТаблицаЧтения.Колонки.Добавить("СтавкаНДС");
   ТаблицаЧтения.Колонки.Добавить("Сумма");
   ТаблицаЧтения.Колонки.Добавить("Оплачено");
   ТаблицаЧтения.Колонки.Добавить("Долг");

   Для СчетчикСтрок = 0 По ТаблицаЧтения.Количество() - 1 Цикл
       ЗначениеЯчейки = ТаблицаЧтения[СчетчикСтрок]; //[СчетчикКолонок];
               
                   Докум = Документы.ЗаказПокупателя.СоздатьДокумент();
                   
                   Спр = Справочники.Номенклатура;
                   
                       Докум.Дата = ТекущаяДата();
                       Докум.Заказ = ЗначениеЯчейки.Заказ;
                       Докум.Контрагент = ЗначениеЯчейки.Контрагент;
                       Докум.Баланс = ЗначениеЯчейки.Баланс;
                       Докум.ГарСрок = ЗначениеЯчейки.ГарСрок;
                       Докум.Направление = ЗначениеЯчейки.Направление;
                       Если Докум.Контрагент = ЗначениеЯчейки.Контрагент Тогда
                           НоваяСтрока = Докум.Товары.Добавить();
                           НоваяСтрока.Артикул = ЗначениеЯчейки.Артикул;
                           НоваяСтрока.Номенклатура = Спр.НайтиПоНаименованию(ЗначениеЯчейки.Номенклатура);
                           НоваяСтрока.Производитель = ЗначениеЯчейки.Производитель;
                           НоваяСтрока.Количество = ЗначениеЯчейки.Количество;
                           НоваяСтрока.Цена = ЗначениеЯчейки.Цена;
                           НоваяСтрока.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
                           НоваяСтрока.Сумма = ЗначениеЯчейки.Сумма;
                           НоваяСтрока.Оплачено = ЗначениеЯчейки.Оплачено;
                           НоваяСтрока.Долг = ЗначениеЯчейки.Долг;
                       КонецЕсли;    
                   
           ФормадокументаЗаказКл = Докум.ПолучитьФорму();
           //ФормадокументаЗаказКл.Записать();
           ФормадокументаЗаказКл.Открыть();
   КонецЦикла;
1 zladenuw
 
02.10.12
15:35
найтистроки()
2 DrShad
 
02.10.12
15:38
весь код в топку
3 Alexsey58
 
02.10.12
15:48
ТаблицаЧтения=новый ТаблицаЗначений;
   ТаблицаЧтения.Колонки.Добавить("Заказ");
   ТаблицаЧтения.Колонки.Добавить("Контрагент");
   ТаблицаЧтения.Колонки.Добавить("Ожидается");
   ТаблицаЧтения.Колонки.Добавить("Баланс");
   ТаблицаЧтения.Колонки.Добавить("Срок");
   ТаблицаЧтения.Колонки.Добавить("ГарСрок");
   ТаблицаЧтения.Колонки.Добавить("Направление");
   ТаблицаЧтения.Колонки.Добавить("Комментарий");
   ТаблицаЧтения.Колонки.Добавить("Артикул");
   ТаблицаЧтения.Колонки.Добавить("Номенклатура");
   ТаблицаЧтения.Колонки.Добавить("Производитель");
   ТаблицаЧтения.Колонки.Добавить("Цена");
   ТаблицаЧтения.Колонки.Добавить("Количество");
   ТаблицаЧтения.Колонки.Добавить("СтавкаНДС");
   ТаблицаЧтения.Колонки.Добавить("Сумма");
   ТаблицаЧтения.Колонки.Добавить("Оплачено");
   ТаблицаЧтения.Колонки.Добавить("Долг");

   //**********************************************************************************************************************************************
   
   ЧтениеXML = Новый ЧтениеXML;
   ЧтениеXML.ОткрытьФайл("positions.xml");

   Имя = ЧтениеXML.Имя;
   Массив = Новый Структура(Имя);
   
   Пока ЧтениеXML.Прочитать() Цикл
       ПолучитьXMLТип(ЧтениеXML);
       Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
           
           Имя = ЧтениеXML.Имя;
           
           Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
               Атрибут = ЧтениеXML.Значение;
           КонецЦикла;
       КонецЕсли;

       Если ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда
           Массив.Вставить(Имя, ЧтениеXML.Значение);
       КонецЕсли;
       
       Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента И ЧтениеXML.Имя = "pst_article_display" Тогда
           СтрокаТабл=ТаблицаЧтения.Добавить();

           Если Массив.pst_ord_id <> "заказ" Тогда
               
               СтрокаТабл.Заказ = Массив.pst_ord_id;
               СтрокаТабл.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(Массив.customer);
               
               СтрокаТабл.Ожидается = Массив.pst_arrival_date;
               
               СтрокаТабл.Баланс = Массив.cst_balance;
               СтрокаТабл.Срок = Массив.pst_term;
               СтрокаТабл.ГарСрок = Массив.pst_max_term;
               СтрокаТабл.Направление = Массив.pst_destination;
               СтрокаТабл.Комментарий = Массив.pst_comment;
               Если Массив.pst_manager_comment <> "коммент. менеджера" Тогда
                   СтрокаТабл.КомментМенеджера = Массив.pst_manager_comment;
               КонецЕсли;
                 
               СтрокаТабл.Артикул = Массив.pst_article;
               СтрокаТабл.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Массив.pst_name);
               СтрокаТабл.Производитель = Массив.pst_brand;
               СтрокаТабл.Количество = Массив.pst_amount;
               СтрокаТабл.Цена = Массив.pst_price;
               СтрокаТабл.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
               СтрокаТабл.Сумма = Массив.summ;
               СтрокаТабл.Оплачено = Массив.payed;
               СтрокаТабл.Долг = Массив.debt;
           КонецЕсли;
       КонецЕсли;            
   КонецЦикла;
   //**********************************************************************************************************************************************
   
   Для СчетчикСтрок = 0 По ТаблицаЧтения.Количество() - 1 Цикл
       ЗначениеЯчейки = ТаблицаЧтения[СчетчикСтрок];
           Для Каждого Строка Из ТаблицаЧтения Цикл    
               Если Строка.Заказ <> Null Тогда
                   
                   Докум = Документы.ЗаказПокупателя.СоздатьДокумент();
                   
                   Спр = Справочники.Номенклатура;
                   
                       Докум.Дата = ТекущаяДата();
                       Докум.Заказ = ЗначениеЯчейки.Заказ;
                       Докум.Контрагент = ЗначениеЯчейки.Контрагент;
                       Докум.Баланс = ЗначениеЯчейки.Баланс;
                       Докум.ГарСрок = ЗначениеЯчейки.ГарСрок;
                       Докум.Направление = ЗначениеЯчейки.Направление;
                       Если Докум.Контрагент = ЗначениеЯчейки.Контрагент Тогда
                           НоваяСтрока = Докум.Товары.Добавить();
                           НоваяСтрока.Артикул = ЗначениеЯчейки.Артикул;
                           НоваяСтрока.Номенклатура = Спр.НайтиПоНаименованию(ЗначениеЯчейки.Номенклатура);
                           НоваяСтрока.Производитель = ЗначениеЯчейки.Производитель;
                           НоваяСтрока.Количество = ЗначениеЯчейки.Количество;
                           НоваяСтрока.Цена = ЗначениеЯчейки.Цена;
                           НоваяСтрока.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
                           НоваяСтрока.Сумма = ЗначениеЯчейки.Сумма;
                           НоваяСтрока.Оплачено = ЗначениеЯчейки.Оплачено;
                           НоваяСтрока.Долг = ЗначениеЯчейки.Долг;
                       КонецЕсли;    
               КонецЕсли;    
           КонецЦикла;
           ФормадокументаЗаказКл = Докум.ПолучитьФорму();
           //ФормадокументаЗаказКл.Записать();
           ФормадокументаЗаказКл.Открыть();
       //КонецЦикла;
   КонецЦикла;
4 ttk
 
02.10.12
15:49
(1)+Заполнитьзначениясвойств()
5 DrShad
 
02.10.12
15:49
(3) туда же
6 zladenuw
 
02.10.12
15:52
ТаблицаЗначений (ValueTable)
НайтиСтроки (FindRows)
Синтаксис:

НайтиСтроки(<ПараметрыОтбора>)
Параметры:

<ПараметрыОтбора> (обязательный)

Тип: Структура.
Задает условия поиска: ключ структуры определяет имя колонки, по которой будет осуществляться поиск, а значение структуры - искомое значение.
Возвращаемое значение:

Тип: Массив.
Массив строк таблицы значений, соответствующих условиям поиска.
Замечание! Массив хранит ссылки на строки таблицы значений, то есть при изменении строки в таблице, значение в массиве тоже будет измененным.
Описание:

Осуществляет поиск строк таблицы значений, отвечающих заданным условиям поиска.

И читаем СП до посинения
7 zladenuw
 
02.10.12
15:56
ВремТЗ = ТаблицаЧтения.Скопировать(,"Контрагент")
ВремТЗ.Свернуть("Контрагент")
Для каждого СТр по ВремТЗ Цикл
МассивНоменКонтра = ТаблицаЧтения.НайтиСтроки(новый структура("Контрагент",СТр.Контрагент));
КонецЦикла;

ну а дальше сам.
8 DrShad
 
02.10.12
15:59
ну или запихнуть ТЗ в запрос, сгруппировать по контрагентам и обходом по группировкам
9 zladenuw
 
02.10.12
16:01
(8) для ТС может быть сложно это.
10 DrShad
 
02.10.12
16:02
(9) ничего, тяжело в учении - легко в бою
11 zladenuw
 
02.10.12
16:02
можно общую таблицу где колонки шапка документа и еще 1 колонка ТЗ с ТЧ. и потом все через Заполнитьзначениясвойств :).
12 zladenuw
 
02.10.12
16:03
(10) согласен.
13 DrShad
 
02.10.12
16:04
(11) можно и так
14 Alexsey58
 
02.10.12
16:22
Где можно почитать про ТаблицуЗначений, дайте ресурс или какую книгу можно прочитать.
15 ukolabrother
 
02.10.12
16:48
(14) в конфигураторе нажми ctrl+F1
16 Alexsey58
 
03.10.12
16:44
zladenuw
ВремТЗ = ТаблицаЧтения.Скопировать(,"Контрагент")
ВремТЗ.Свернуть("Контрагент")
Для каждого СТр ИЗ ВремТЗ Цикл
МассивНоменКонтра = ТаблицаЧтения.НайтиСтроки(новый структура("Контрагент",СТр.Контрагент));
КонецЦикла;

нечего не получается, как сделать выборку, помогите с модулем, раньше не работал с таблицами значениями :-(
AdBlock убивает бесплатный контент. 1Сергей