Имя: Пароль:
1C
1С v8
Добрый день. Подскажите, что не так в коде и как передать Номенклатуру и Номера строк
↓ (Волшебник 04.07.2023 14:12)
0 yabashu
 
04.07.23
14:01
Добрый день. Подскажите, что не так в коде и как передать Номенклатуру и Номера строк в массив для отображения в Вопрос();
Функция ПроверитьНоменклатуруНаДубли(Отказ)
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ДанныеТЧ.НомерСтроки КАК НомерСтроки,
    |    ДанныеТЧ.Номенклатура КАК Номенклатура
    |ПОМЕСТИТЬ ТекущиеДанныеТЧ
    |ИЗ
    |    &ДанныеТЧ КАК ДанныеТЧ
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ТекущиеДанныеТЧ.НомерСтроки КАК НомерСтроки
    |ИЗ
    |    ТекущиеДанныеТЧ КАК ТекущиеДанныеТЧ
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
    |        ПО ТекущиеДанныеТЧ.Номенклатура = СправочникНоменклатура.Ссылка
    |ГДЕ
    |    СправочникНоменклатура.ПометкаУдаления
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ТекущиеДанныеТЧ.Номенклатура КАК Номенклатура
    |ПОМЕСТИТЬ ДублиНоменклатуры
    |ИЗ
    |    ТекущиеДанныеТЧ КАК ТекущиеДанныеТЧ
    |
    |СГРУППИРОВАТЬ ПО
    |    ТекущиеДанныеТЧ.Номенклатура
    |
    |ИМЕЮЩИЕ
    |    КОЛИЧЕСТВО(ТекущиеДанныеТЧ.НомерСтроки) > 1
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ТекущиеДанныеТЧ.Номенклатура КАК Номенклатура,
    |    ТекущиеДанныеТЧ.НомерСтроки КАК НомерСтроки
    |ИЗ
    |    ДублиНоменклатуры КАК ДублиНоменклатуры
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТекущиеДанныеТЧ КАК ТекущиеДанныеТЧ
    |        ПО ДублиНоменклатуры.Номенклатура = ТекущиеДанныеТЧ.Номенклатура
    |ИТОГИ ПО
    |    Номенклатура";
    
    ВыборкаНоменклатуры = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаНоменклатуры.Следующий() Цикл
        Номенклатура = ВыборкаНоменклатуры.Номенклатура;
        
        ВыборкаНомеровСтрок = ВыборкаНоменклатуры.Выбрать();
        Пока ВыборкаНомеровСтрок.Следующий() Цикл
            НомерСтроки = ВыборкаНомеровСтрок.НомерСтроки;
        КонецЦикла;
        
    КонецЦикла;
    
    Режим = РежимДиалогаВопрос.ДаНет;
    Ответ = Вопрос("В табличной части «Материалы и работы» в строках " + НомерСтроки +" указаны дубли номенклатуры" + Номенклатура + ". Установить статус «Действует», несмотря на наличие дублей?", Режим, 0);
    Если Ответ = КодВозвратаДиалога.Нет Тогда
        Возврат;
    КонецЕсли;
    
КонецФункции
1 SleepyHead
 
04.07.23
14:05
В запросе не установлен параметр ДанныеТЧ.
2 SleepyHead
 
04.07.23
14:05
Дальше тоже ничего хорошего ))

Это что блин, тест такой что ли?
3 Kigo_Kigo
 
04.07.23
14:07
Выгрузить ТЧ в тз, ДобавитьКолонку -количествоДублей = 1, свернуть(Номенклатура,количество) Обойти циклом и количесте > 1 найти в ТЗ строки с дублями
4 Donkey_hot
 
04.07.23
14:09
(0) Как минимум, непонятно, зачем второй запрос в пакете, который выбирает помеченные на удаление, которые далее нигде не используются. Плюс номера строк наверное надо конкатенацией собрать в какую-то общую строку, а не заменять на каждой итерации на новый. Если это управляемые формы, также лучше уйти от модального окна.
5 Мультук
 
04.07.23
14:11
(4)

P.S.

>>конкатенацией

Я думаю автор слов то таких не знает.
А если знает, то не умеет
6 yabashu
 
04.07.23
14:26
(2) сеньор написал моими руками такой код после запроса и сказал, чтобы я доделал. Сижу в непонимании. Вот и спрашиваю, как с этим поступить.
7 yabashu
 
04.07.23
14:27
(4) там просто еще поиск пометки на удаление, но в этом случае я просто удалю лишнее.
8 yabashu
 
04.07.23
14:28
(5) Это очень не красиво, с вашей стороны.
9 yabashu
 
04.07.23
14:31
(3) спасибо!
10 Fish
 
04.07.23
14:32
(6) "сеньор написал моими руками такой код" - Надиктовал что ли?
11 yabashu
 
04.07.23
15:00
(10) Да)
12 azernot
 
04.07.23
15:30
(6) И что же вы хотите? Чтобы кто-то опять написал вам готовый код? Если вы не понимаете, что такое запрос, что такое выборка из запроса с обходом по группировкам, что такое массив, как работает цикл, то как вам помочь? Я уж молчу про "модальные вызовы" и почему такая конструкция вопроса неприменима в современных условиях....
Признайтесь себе и "синьору", что вы не способны решить эту задачу. Идите на курсы, читайте соответствующую литературу, используйте обучающую конфигурацию и т.п. Ну или меняйте профессию.

А по сути...
Просто представьте, что дублируются две и более номенклатуры, каждая более чем в двух строках, как же в итоге будет выглядеть текст вопроса? Какие номера строк должны быть перечислены, какая номенклатура должна быть указана? Очевидно же что там может быт много номеров и много номенклатур...
13 yabashu
 
04.07.23
16:52
(12) Готовое решение не просил. Хотел более опытных людей услышать, по вариантам реализации. (3) (4) Большое спасибо за советы. Задача выполнена.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан