Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Что не так?

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

////////////////////////////////////////////////////////////////////////////////

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

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

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

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

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

////////////////////////////////////////////////////////////////////////////////

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.