|
Заполнение таблицы данными из таблицы значений | ☑ | ||
---|---|---|---|---|
0
timdim711
18.07.13
✎
12:28
|
На основании данных заполняется таблица значений и потом заполняется таблица.
Для Каждого СтрНом Из Отчет.Товары Цикл // Цикл по документу Запрос = новый Запрос; // Выбираем где есть комлектующие Запрос.Текст = "ВЫБРАТЬ | КомплектующиеНоменклатуры.Номенклатура, | КомплектующиеНоменклатуры.Комплектующая, | КомплектующиеНоменклатуры.Количество, | КомплектующиеНоменклатуры.ЕдиницаИзмерения |ИЗ | РегистрСведений.КомплектующиеНоменклатуры КАК КомплектующиеНоменклатуры |ГДЕ | КомплектующиеНоменклатуры.Номенклатура = &Номенклатура"; Запрос.УстановитьПараметр("Номенклатура", СтрНом.Номенклатура ); ТЗ = Запрос.Выполнить().Выгрузить(); Если ТЗ.Количество() > 0 Тогда // Если есть комплектуха то добавляем строчки в табличную часть НовСтр = Комплекты.Добавить(); //номенклатура НовСтр.Номенклатура = СтрНом.Номенклатура; НовСтр.Количество = СтрНом.Количество; НовСтр.ЕдИзм = СтрНом.ЕдиницаИзмерения; НовСтр.Загружать = Истина; //1 НовСтр.Комплектующее1 = ТЗ[0].Комплектующая; НовСтр.Количество1 = ТЗ[0].Количество * СтрНом.Количество; НовСтр.ЕдИзм1 = ТЗ[0].ЕдиницаИзмерения; //2 НовСтр.Комплектующее2 = ТЗ[1].Комплектующая; НовСтр.Количество2 = ТЗ[1].Количество *СтрНом.Количество; НовСтр.ЕдИзм2 = ТЗ[1].ЕдиницаИзмерения ; //3 НовСтр.Комплектующее3 = ТЗ[2].Комплектующая; НовСтр.Количество3 = ТЗ[2].Количество *СтрНом.Количество; НовСтр.ЕдИзм3 = ТЗ[2].ЕдиницаИзмерения ; //4 НовСтр.Комплектующее4 = ТЗ[3].Комплектующая; НовСтр.Количество4 = ТЗ[3].Количество *СтрНом.Количество; НовСтр.ЕдИзм4 = ТЗ[3].ЕдиницаИзмерения ; //5 НовСтр.Комплектующее5 = ТЗ[4].Комплектующая; НовСтр.Количество5 = ТЗ[4].Количество *СтрНом.Количество; НовСтр.ЕдИзм5 = ТЗ[4].ЕдиницаИзмерения ; Получается что у одной номенклатурной позиции 4 комплектующих, а другой 3. Выдает ошибку - индекс находится за границами массива. как и где указать что для данной номенклатуры массив состоит из 5, а для следующей из 3. |
|||
1
mikecool
18.07.13
✎
12:29
|
овСтр.Комплектующееххх - это жесть (((
|
|||
2
Ork
18.07.13
✎
12:30
|
(0) Изучите группировки и их обход.
|
|||
3
mikecool
18.07.13
✎
12:31
|
+1 почему так?
добавляй н строк по количеству комплектующих, они потом отбором будут фильтроваться по номенклатуре |
|||
4
timdim711
18.07.13
✎
12:32
|
(2) - переписать запрос через группировки и потом в цикле заполнять строки табличной части?
|
|||
5
timdim711
18.07.13
✎
12:34
|
(3) - можно пример кода.
|
|||
6
Ork
18.07.13
✎
12:35
|
(4) 100 пудов.
|
|||
7
Плот
18.07.13
✎
12:36
|
(0) Про запросы в цикле уже писали?
|
|||
8
timdim711
18.07.13
✎
12:37
|
(7) - нет
|
|||
9
mikecool
18.07.13
✎
12:38
|
(5) что за форма у тебя?
|
|||
10
Плот
18.07.13
✎
12:38
|
(8) это самое, еще в школе про запросы в цикле так то двойки ставят.
|
|||
11
timdim711
18.07.13
✎
12:40
|
(9) 8.2 УТ10.3
|
|||
12
palpetrovich
18.07.13
✎
12:49
|
(7) уже да :)
примерно так делай, МассивНоменклатуры = Товары.Выгрузить("Номенклатура"): ВЫБРАТЬ КомплектующиеНоменклатуры.Номенклатура, КомплектующиеНоменклатуры.Комплектующая, СУММА(КомплектующиеНоменклатуры.Количество) КАК Количество ИЗ РегистрСведений.КомплектующиеНоменклатуры КАК КомплектующиеНоменклатуры ГДЕ КомплектующиеНоменклатуры.Номенклатура В ИЕРАРХИИ(&МассивНоменклатуры) СГРУППИРОВАТЬ ПО КомплектующиеНоменклатуры.Номенклатура, КомплектующиеНоменклатуры.Комплектующая |
|||
13
timdim711
18.07.13
✎
12:55
|
ВЫБРАТЬ
Отчет.Номенклатура, Отчет.Количество, КомплектующиеНоменклатуры.Комплектующая, КомплектующиеНоменклатуры.Количество ИЗ Документ.ОтчетОРозничныхПродажах.Товары КАК Отчет СОЕДИНЕНИЕ РегистрСведений.КомплектующиеНоменклатуры КАК КомплектующиеНоменклатуры ПО КомплектующиеНоменклатуры.Номенклатура = Отчет.Номенклатура ГДЕ Отчет.Ссылка=&Отчет уже написал так, только без группировки пока |
|||
14
palpetrovich
18.07.13
✎
13:01
|
(13) и что, не пофигуратор на это ругается? хоть так сделай:
КомплектующиеНоменклатуры.Количество КАК КоличествоКомплектующие ну и какое СОЕДИНЕНИЕ определи :) |
|||
15
timdim711
18.07.13
✎
13:05
|
(14) - ЛЕВОЕ?
|
|||
16
palpetrovich
18.07.13
✎
13:11
|
(15) конечно
|
|||
17
timdim711
18.07.13
✎
13:29
|
(16) - а как тебе сгруппировать???
СГРУППИРОВАТЬ ПО Отчет.Номенклатура |
|||
18
palpetrovich
18.07.13
✎
13:32
|
(17) мне группировать не надо :)
|
|||
19
timdim711
18.07.13
✎
13:35
|
(18) сорри, ошибся... мне конечно же
|
|||
20
palpetrovich
18.07.13
✎
13:41
|
(19)
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОтчетОРозничныхПродажахТовары.Номенклатура КАК Номенклатура, | ОтчетОРозничныхПродажахТовары.Количество КАК Количество, | КомплектующиеНоменклатуры.Комплектующая КАК Комплектующая, | КомплектующиеНоменклатуры.Количество КАК КоличествоКомплектующая |ИЗ | Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажахТовары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КомплектующиеНоменклатуры КАК КомплектующиеНоменклатуры | ПО ОтчетОРозничныхПродажахТовары.Номенклатура = КомплектующиеНоменклатуры.Номенклатура | И ОтчетОРозничныхПродажахТовары.Ссылка = &Отчет |ИТОГИ | СУММА(Количество), | СУММА(КоличествоКомплектующая) |ПО | Номенклатура, | Комплектующая"; Результат = Запрос.Выполнить(); ВыборкаНоменклатура = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаНоменклатура.Следующий() Цикл // Вставить обработку выборки ВыборкаНоменклатура ВыборкаКомплектующая = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаКомплектующая.Следующий() Цикл // Вставить обработку выборки ВыборкаКомплектующая КонецЦикла; КонецЦикла; |
|||
21
timdim711
18.07.13
✎
13:51
|
(20)
Пока ВыборкаНоменклатура.Следующий() Цикл // Вставить обработку выборки ВыборкаНоменклатура Я могу в этом цикле создать новый документ комплектация??? ВыборкаКомплектующая = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаКомплектующая.Следующий() Цикл // Вставить обработку выборки а здесь заполнить табличную часть документа??? ВыборкаКомплектующая КонецЦикла; КонецЦикла; |
|||
22
palpetrovich
18.07.13
✎
15:01
|
(21) можешь, а зачем? открой для себя:
НовыйДокументОбъект = СтарыйДокумент.Скопировать(); |
|||
23
timdim711
18.07.13
✎
16:05
|
(22) - смысл затеи в том, чтобы на основании документа о розничных продажа, обработкой создать документы комплектация на каждую номенклатурную строку.
|
|||
24
timdim711
18.07.13
✎
17:04
|
Запрос = новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | ОтчетОРозничныхПродажахТовары.Номенклатура КАК Номенклатура, | КомплектующиеНоменклатуры.Комплектующая КАК Комплектующая, | ОтчетОРозничныхПродажахТовары.Количество КАК Количество, | (КомплектующиеНоменклатуры.Количество*ОтчетОРозничныхПродажахТовары.Количество) КАК КоличествоКомплектующая |ИЗ | Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажахТовары |ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КомплектующиеНоменклатуры КАК КомплектующиеНоменклатуры |ПО ОтчетОРозничныхПродажахТовары.Номенклатура = КомплектующиеНоменклатуры.Номенклатура |ГДЕ ОтчетОРозничныхПродажахТовары.Ссылка = &Отчет |ИТОГИ //СУММА(Количество), | СУММА(КоличествоКомплектующая) |ПО Номенклатура, Комплектующая"; Запрос.УстановитьПараметр("Отчет", Отчет); Результат=Запрос.Выполнить(); ВыборкаНоменклатура=Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаНоменклатура.Следующий() Цикл Докум = Документы.КомплектацияНоменклатуры.СоздатьДокумент(); Докум.Дата = Отчет.Дата ; Докум.ВидОперации = Перечисления.ВидыОперацийКомплектацияНоменклатуры.Комплектация; Докум.Комментарий = "Создан автоматически на основе товарного отчета "+ВыборкаНоменклатура.Номенклатура; Докум.ОтражатьВУправленческомУчете = Истина; Докум.ОтражатьВБухгалтерскомУчете = Истина; Докум.ОтражатьВНалоговомУчете = Ложь; Докум.Организация = Отчет.Организация ; Докум.Склад = Отчет.Склад; Докум.НДСвСтоимостиТоваров = Перечисления.ДействиеНДСВСтоимостиТоваров.НеИзменять; Докум.Номенклатура = ВыборкаНоменклатура.Номенклатура; Докум.Количество = ВыборкаНоменклатура.Количество; //Докум.ЕдиницаИзмерения = строк.ЕдИзм; Докум.Коэффициент = 1; ВыборкаКомплектующая=ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаКомплектующая.Следующий() Цикл НовСтрок = Докум.Комплектующие.Добавить(); НовСтрок.Номенклатура = ВыборкаКомплектующая.Комплектующая; НовСтрок.Количество = выборкаКомплектующая.КоличествоКомплектующая; //НовСтрок.ЕдиницаИзмерения = Строк.ЕдИзм1; НовСтрок.Коэффициент = 1; КонецЦикла; Докум.Записать(РежимЗаписиДокумента.Запись); Сообщить("Создан документ комплектация номенклатуры N " + Докум.Номер + " для " + ВыборкаНоменклатура.Номенклатура ) Как написать количество номенклатуры??? |
|||
25
timdim711
18.07.13
✎
17:07
|
Докум.Количество = ВыборкаНоменклатура.Количество;
В данном варианте - количество пустое значение |
|||
26
palpetrovich
18.07.13
✎
17:18
|
//СУММА(Количество),
|
|||
27
timdim711
18.07.13
✎
17:22
|
если написать СУММА (Количество), то в запросе суммируется
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |