Имя: Пароль:
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) Большое спасибо за советы. Задача выполнена.