Вход | Регистрация
 
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 или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.