Имя: Пароль:
1C
1С v8
Что не так?
🠗 (Волшебник 21.03.2019 23:50)
, ,
0 Lecowi
 
21.03.19
22:34
Процедура ПередЗаписью(Отказ)
    
    РезультатПроверки=проверкаКомплекта();
    
    
    Если РезультатПроверки = 1 тогда
        Отказ=Истина;
        Сообщить("Нельзя сформировать такой комплект");
        конецЕсли;
КонецПроцедуры




функция проверкаКомплекта()
    
Выборка = Справочники.Комплекты.Выбрать();    
    
Пока Выборка.Следующий() цикл     //перебор всех комплектов
    
        флаг=0;      флаг1=0;
        
        Для каждого стр из Выборка.ЭлементыКомплекта цикл      // табчасть комплекта из списка всех комплектов
            
            флаг1=флаг1+1;
            
                колСтрокВТЧ=0; //количество строк в табличной части нашего текущего комплекта
            
                Для каждого стр1 из ЭтотОбъект.ЭлементыКомплекта цикл    // табчасть нашего текущего комплекта
                    
                    колСтрокВТЧ=колСтрокВТЧ+1;
                    Если сокрлп(стр.Номенклатура)=СОКРЛП(стр1.Номенклатура) и стр.Количество=стр1.Количество тогда
                        флаг=флаг+1;  //количество совпадений элементов в текущем комплекте с очередным проверяемым комплектом
                        
                     
                    конецЕсли;
                    
                    
                 Если флаг1=флаг и флаг1=колстроквтч тогда
                    Сообщить("Полное совпадение с комплектом" );
                    сообщить(выборка.Ссылка); //выводит название комплекта
                 возврат 1;
                
                конецесли;
        
        конецЦикла;        
            
конецЦикла;    
                        
конецЦикла;    
        Возврат 0;
конецФункции


Где ошибка? Суть в том, что если создать один комплект на шкаф в кол-ве 1 и на диван в кол-ве 1, а другой комплект на шкаф в кол-ве 1, на диван в кол-ве 1 и на стол в кол-ве 1, он мне не разрешает, говорит, что это тоже самое, что и комплект 1. А так не должно быть, и еще не разрешает помечать на удаление. Не знаю как это решить.
1 Vakhrin
 
21.03.19
22:42
Все не так! Так нельзя писать! )
2 Lecowi
 
21.03.19
22:46
Так что конкретно не так? Я же не профи, учусь только
3 palsergeich
 
21.03.19
22:54
Мои глаза.
Хинт набери Конец и нажми коонтрл + пробел. Это поможет хотя бы канонично писать ключевые слова.
4 palsergeich
 
21.03.19
22:54
Я даже читать и вникать в такой неряшливый код не хочу
5 palsergeich
 
21.03.19
22:55
сокрлп(стр.Номенклатура)=СОКРЛП(стр1.Номенклатура) Вот это вооще огонь
6 palsergeich
 
21.03.19
22:56
Для каждого стр из Выборка.ЭлементыКомплекта  - очень плохо - неявные запросы в цикле, да еще и с получением объекта, потом узкое место будет
7 Lecowi
 
21.03.19
23:00
Лучше бы писали, что конкретно исправить нужно
8 palsergeich
 
21.03.19
23:01
Во первых я ничего Вам не должен.
Во вторых просите помощи, хотя бы приведите код до читаемого состояния.
9 Vakhrin
 
21.03.19
23:06
ВЫБРАТЬ
   ТЧ.Ссылка,
   ТЧ.Номенклатура
ПОМЕСТИТЬ ТЧ
ИЗ
   &ТЧ КАК ТЧ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЭлементыКомплекта.Ссылка,
   ЭлементыКомплекта.Операция
ПОМЕСТИТЬ ВТ
ИЗ
   Справочник.Комплекты.ЭлементыКомплекта КАК ЭлементыКомплекта
ГДЕ
   ЭлементыКомплекта.Ссылка <> &Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ.Ссылка,
   КОЛИЧЕСТВО(ВТ.Номенклатура) КАК Номенклатура
ПОМЕСТИТЬ Контролька
ИЗ
   ВТ КАК ВТ

СГРУППИРОВАТЬ ПО
   ВТ.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ.Ссылка,
   КОЛИЧЕСТВО(ВТ.Операция) КАК Номенклатура
ПОМЕСТИТЬ Результат
ИЗ
   ВТ КАК ВТ
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЧ КАК ТЧ
       ПО ВТ.Номенклатура = ТЧ.Номенклатура

СГРУППИРОВАТЬ ПО
   ВТ.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Результат.Ссылка
ИЗ
   Результат КАК Результат
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Контролька КАК Контролька
       ПО Результат.Ссылка = м.Ссылка
           И Результат.Номенклатура = Контролька.Номенклатура
10 Lecowi
 
21.03.19
23:06
Во-первых, Вас никто не заставляет
Во-вторых, протрите глаза
11 palsergeich
 
21.03.19
23:07
(10) А пирожок то с говном
12 Vakhrin
 
21.03.19
23:08
в (9) параметры:
ТЧ - таблица значений из табличной части проверяемого элемента справочника
Ссылка - ссылка проверяемого элемента справочника

Если выборка вернет хоть одну запись - набор не уникален
13 H A D G E H O G s
 
21.03.19
23:17
(11) Скоро дембель у девчат.
14 ildary
 
22.03.19
05:27
(10) Вы за помощью пришли на форум или говнокодом похвастать?
15 ildary
 
22.03.19
05:29
Да, и тема сообщения не отражает суть вопроса, модераторы оценят.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой