|
выгрузка ТаблицыЗначений в документ | ☑ | ||
---|---|---|---|---|
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
ВремТЗ = ТаблицаЧтения.Скопировать(,"Контрагент") ВремТЗ.Свернуть("Контрагент") Для каждого СТр ИЗ ВремТЗ Цикл МассивНоменКонтра = ТаблицаЧтения.НайтиСтроки(новый структура("Контрагент",СТр.Контрагент)); КонецЦикла; нечего не получается, как сделать выборку, помогите с модулем, раньше не работал с таблицами значениями :-( |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |