Имя: Пароль:
1C
1С v8
Заполнение табличной поле 8.1
,
0 Sem0709
 
30.11.12
06:26
На форме табличное поле, в ней колонки Код, Номенклатура, Центр, Вил, Вул. Задача состоит в том, чтобы добавлялась в ОДНУ строку наименование Номенклатура заполнялись соответствующие значения колонок Центр, Вил и Вул. Сейчас добавляется три строки одинакового Номенклатура к каждому значению Центр, Вил и Вул. Что в принципе логично. Не могу понять на уровне чего, Запроса или Цикла должна решаться проблема. Буду рад советам и примерам. надеюсь понятно объясняюсь, если что спрашивайте, постараюсь объяснить иначе. Заранее благодарен!

Нынешней код:

Процедура ЗаполнитьОстаткиНажатие(Элемент)
   
   ПереченьТоваров.Очистить();
   
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    ТоварыНаСкладахОстатки.Склад КАК Склад,
                  |    ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество,
                  |    ТоварыНаСкладахОстатки.Номенклатура.Код КАК Код,
                  |    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура
                  |ИЗ
                  |    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    Код";
   Результат = Запрос.Выполнить().Выбрать();
   
   Пока Результат.Следующий() цикл
       НоваяСтрока                = ПереченьТоваров.Добавить();
       НоваяСтрока.Код            = Результат.Код;
       НоваяСтрока.Номенклатура    = Результат.Номенклатура;
       НоваяСтрока.Количество        = Результат.Количество;
       
       Если Результат.Склад = "131 Центральный" тогда
           НоваяСтрока.Центр            = Результат.Количество;
       ИначеЕсли Результат.Склад = "131 Вулканная" тогда
           НоваяСтрока.Вул                = Результат.Количество;
       ИначеЕсли Результат.Склад = "131 Вилючинск" тогда
           НоваяСтрока.Вил                = Результат.Количество;
           
       КонецЕсли;
       
   КонецЦикла;
   
КонецПроцедуры
1 Wobland
 
30.11.12
06:27
постарайся объяснить иначе
2 Wobland
 
30.11.12
06:28
Задача состоит в том, чтобы добавлялась...наименование...заполнялись соответствующие значения

что это за набор слов?
3 Wobland
 
30.11.12
06:30
остатки на какую дату? зачем склад со строкой сравниваешь?
предлагаю сделать нормальный запрос и тупо заполнить твою таблицу
4 Sem0709
 
30.11.12
06:34
Сейчас таблица выглядит так:

|Наиименование|Центр|Вил|Вул|
-----------------------------
|Какая туфта  |10   |   |   |
|Какая туфта  |     |5  |   |
|Какая туфта  |     |   |2  |

Мне надо так:

|Наиименование|Центр|Вил|Вул|
-----------------------------
|Какая туфта  |10   |5  |2  |
5 Килограмм
 
30.11.12
06:35
сделай группировку по номенклатуре
6 Килограмм
 
30.11.12
06:35
в запросе
7 Килограмм
 
30.11.12
06:36
Номенклатура, код - поля группируются, а остальные суммируются
8 Godofsin
 
30.11.12
06:37
Сортирнуть ТЗ на выходе?
9 w2k3
 
30.11.12
06:39
или сделай тупо: после Следующий() наложи условие на проверку что элементы равны и просто дополняй дальше без новой строки. так по молодости делал когда запросов не знал
10 Килограмм
 
30.11.12
06:39
(3) + склад со строкой сравнивать нельзя
Вот это:
Если Результат.Склад = "131 Центральный" тогда

Всегда будет давать ложь, это разные типы значений
11 Wobland
 
30.11.12
06:47
(5) сделать запрос ему надо, а не группировку
12 Wobland
 
30.11.12
06:50
выбрать по первому складу полное по второму ...
13 Sem0709
 
30.11.12
07:02
(3) остатки на какую дату?
Нет периода, даты. Остатки актуальные, доступные на момент заполнения

(3)(10)+ склад со строкой сравнивать нельзя
Исправил на

ТоварыНаСкладахОстатки.Склад.Наименование КАК Склад

(7) Тогда значение Склад = 3, для условия (Если Результат.Склад = "131 Центральный" тогда) не приемлемо...

(12) Можно пример, пожалуйста!?
14 Wobland
 
30.11.12
07:10
(13) нет. додумывай сам
15 Килограмм
 
30.11.12
07:24
(0) Ещё пища для размышления: можно вообще избавится от условий
Если Результат.Склад = "131 Центральный" тогда
И делать Это в самом запросе с помощью конструкций
Выбор УСЛОВИЕ Тогда
ВЫРАЖЕНИЕ
Иначе
ВЫРАЖЕНИЕ
Конец

Только для этого нужно будет склады в виде параметров в запрос передать.
16 Wobland
 
30.11.12
07:27
(15) дошло? ;) см (3)
17 Килограмм
 
30.11.12
07:33
(16) аха ;)
18 cw014
 
30.11.12
07:49
> Заполнение табличной поле

Заполнение табличной полИ... :)

Ну и центр, вил и вул - чук и гек :)))))

Процедура ЗаполнитьОстаткиНажатие(Элемент)
   
   ПереченьТоваров.Очистить();
   
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    ТоварыНаСкладахОстатки.Склад КАК Склад,
                  |    ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество,
                  |    ТоварыНаСкладахОстатки.Номенклатура.Код КАК Код,
                  |    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура
                  |ИЗ
                  |    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    Код
                  |ИТОГИ ПО
                  |    Номенклатура";
   Результат = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   
   Пока Результат.Следующий() цикл
       НоваяСтрока                 = ПереченьТоваров.Добавить();
       НоваяСтрока.Код             = Результат.Код;
       НоваяСтрока.Номенклатура     = Результат.Номенклатура;
       НоваяСтрока.Количество        = Результат.Количество;
       ВыборкаСкладов = Результат.Выбрать();
       Пока ВыборкаСкладов.Следующий() Цикл
           Если Результат.Склад = "131 Центральный" тогда
               НоваяСтрока.Центр            = Результат.Количество;
           ИначеЕсли Результат.Склад = "131 Вулканная" тогда
               НоваяСтрока.Вул                = Результат.Количество;
           ИначеЕсли Результат.Склад = "131 Вилючинск" тогда
               НоваяСтрока.Вил                = Результат.Количество;
           КонецЕсли;
       КонецЦикла;
       
   КонецЦикла;
   
КонецПроцедуры
19 Sem0709
 
30.11.12
10:59
(18)Огромное спасибо, немного дошаманил, все работает. Долго кубаторил почему))

(16)Вечером поищу, почитаю как с условием в запросе сделать... только начал изучать 1С, в будущем пригодится.
20 cw014
 
30.11.12
11:00
(19) Спасибо не булькает