Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 3
Регистрация: 16.02.2016
Сообщений: 83
1
1C 8.x

Перейти к следующей записи в выборке

07.09.2016, 22:32. Показов 1901. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброй ночи. Стоит задача найти номенклатуру, у серии которой одинаковое наименование, но разные ссылки, и создать документ "корректировка серий и х-к", который заменит такие серии какой-нибудь одной.
Номенклатуру нашла, начинаю создавать документ, и заполнять его ТЧ. В переменную "НоваяСерия" кидаю серию из первой записи выборки. Соответственно, ее нужно подставить в другие записи.
Как перейти к следующей записи сразу после того, как записываю новую серию в переменную?

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Процедура ЗаполнитьТЧ(Док)
    
    НоваяСерия = "";
    
    Запрос = Новый Запрос;
    Запрос.Текст =  "ВЫБРАТЬ
                    |   ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Номенклатура КАК Номенклатура,
                    |   ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.СерияНоменклатуры.Ссылка КАК Серия,
                    |   ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.СерияНоменклатуры.Наименование КАК НаименованиеСерии,
                    |   ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток КАК Остаток,
                    |   ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Склад КАК Склад,
                    |   ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Номенклатура.ЕдиницаХраненияОстатков КАК Ед
                    |ИЗ
                    |   РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.Остатки(&Период, ) КАК ПартииТоваровНаСкладахБухгалтерскийУчетОстатки
                    |ГДЕ
                    |   ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Склад = &Склад
                    |
                    |УПОРЯДОЧИТЬ ПО
                    |   Номенклатура
                    |ИТОГИ
                    |   КОЛИЧЕСТВО(Серия),
                    |   СУММА(Остаток)
                    |ПО
                    |   Номенклатура,
                    |   НаименованиеСерии";
                    
    Запрос.УстановитьПараметр("Период", ЭтаФорма.Период);               
    Запрос.УстановитьПараметр("Склад", ЭтаФорма.Склад);
    
    Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Пока Выборка.Следующий() Цикл       
        Если ЗначениеЗаполнено(Выборка.Серия) И Выборка.Серия >=2 Тогда
            
            ВыборкаНом = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
            
            Пока ВыборкаНом.Следующий() Цикл 
                Если ЗначениеЗаполнено(ВыборкаНом.Серия) И ВыборкаНом.Серия >= 2 Тогда
                    
                    ВыборкаСерия = ВыборкаНом.Выбрать();
                    Пока ВыборкаСерия.Следующий() Цикл
                        //здесь заполняется тч
                        СтрокаТЧ = Док.Товары.Добавить();
                        Если НоваяСерия =  "" Тогда НоваяСерия = ВыборкаСерия.Серия;
                        КонецЕсли;
                        СтрокаТЧ.Номенклатура = ВыборкаСерия.Номенклатура;
                        СтрокаТЧ.СерияНоменклатурыСтарая = ВыборкаСерия.Серия;
                        СтрокаТЧ.СерияНоменклатурыНовая = НоваяСерия;
                        СтрокаТЧ.Количество = ВыборкаСерия.Остаток;
                        СтрокаТЧ.Качество = Справочники.Качество.Новый;
                        СтрокаТЧ.ЕдиницаИзмерения =  ВыборкаСерия.Ед;
                        
                    КонецЦикла;
                    
                КонецЕсли;
            КонецЦикла;
            
        КонецЕсли;
        
        НоваяСерия = "";
        
    КонецЦикла;
 
 
КонецПроцедуры
Добавлено через 52 минуты
1C
1
2
3
4
 Если НоваяСерия =  "" Тогда 
              НоваяСерия = ВыборкаСерия.Серия;
              ВыборкаСерия.Следующий();
       КонецЕсли;
Оказалось, все просто. Почему-то не отработало сначала.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.09.2016, 22:32
Ответы с готовыми решениями:

Как при нажатию на кнопку перейти к следующей сцене?
как мне сделать переход при нажатии на кнопку что осуществился переход с меню на пустую сцену??...

Как в потоковом вводе перейти на чтение следующей строки?
Подскажите пожалуйста, как в потоковом вводе из текстового файла перейти на чтение следующей...

Как в цикле for (не выходя из цикла) перейти к следующей итерации?
как в цикле for не выходя их цикла, перейти ко следующей итерации, пропустив данную по...

Как перейти к следующей форме, когда прогресс бар max?
uses Unit4, Unit1, Unit2; {$R *.dfm} procedure THAVK_S.Timer1Timer(Sender: TObject); begin...

0
07.09.2016, 22:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.09.2016, 22:32
Помогаю со студенческими работами здесь

Проверка на совпадение последней и следующей записи при записи в файл
Доброго времени суток) У меня в файл записывается произошло соединение с сервером или нет, но...

Помощью цикла просмотреть все элемнты массива структуры, а потом перейти к просмотру следующей
И так дорогие программисты, прошу помощи ибо сам уже не осиливаю. В общем такая тема: мне в цикле...

Порядковый номер записи в выборке
Использую postgresql Есть прекрасная возможность узнать порядковый номер записи в выборке SELECT...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru