Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Работа с Деревом в обработке: группирует данные, а не нужно          
Constantus Подменю пользователя
сообщение 15.02.19, 13:11
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Приветствую, форумчане!

1с 8.3, полностью самописная, уф.

Досталось в наследство: имеется обработка, в ней дерево. Одним из реквизитов является булево, если он отмечен, то обработка обходит всё дерево, далее отмеченные строки формирует нечто и создает документ с этими данными.

Всё работает, но, если в дереве имеются отмеченные строки с абсолютно одинаковыми реквизитами, то код типа их группирует и в создаваемый документ шлет одну строку.
Например:

1. Что-то 23/4 "дада" 5 шт
2. Что-то 23/4 "дада" 5 шт

В документ кидает "Что-то 23/4 "дада" 5 шт", а нужно все 2-е штуки позиций.

Никак не могу разобраться в коде, где этот код группирует одинаковые по реквизитам данные...

Код
    массНоменклатур = Новый Массив;
    ссылкаПрЗадание = Неопределено;
    ПрЗадание = Неопределено;
    
    Для шаг = 0 по 1 Цикл
        Для каждого тСтрокаЗаказа из ДеревоПроизводственныхЛистов.ПолучитьЭлементы() Цикл
            Если НЕ ЗначениеЗаполнено( тСтрокаЗаказа.ЗаказНоменклатура ) Тогда
                Продолжить;
                
            КонецЕсли;    
            
            массНоменклатур.Очистить();
            
            Для каждого тСтрокаНоменклатуры из тСтрокаЗаказа.ПолучитьЭлементы() Цикл
                Если тСтрокаНоменклатуры.Произвести И
                    НЕ ЗначениеЗаполнено( тСтрокаНоменклатуры.ПроизводственноеЗадание )
                    И ЗначениеЗаполнено( тСтрокаНоменклатуры.ЗаказНоменклатура )
                    И ТипЗнч( тСтрокаНоменклатуры.ЗаказНоменклатура ) = Тип("СправочникСсылка.Номенклатура") Тогда
                    
                    Если шаг = 0 И массНоменклатур.Найти( тСтрокаНоменклатуры.ЗаказНоменклатура ) = Неопределено Тогда
                        массНоменклатур.Добавить( тСтрокаНоменклатуры.ЗаказНоменклатура );
                        
                        Если ПрЗадание = Неопределено Тогда
                            ПрЗадание = Документы.ПроизводственноеЗадание.СоздатьДокумент();
                            ПрЗадание.Дата = ТекущаяДата();
                            
                        КонецЕсли;
                    
                        НовСтр = ПрЗадание.ОсновнаяКомплектация.Добавить();
                        ЗаполнитьЗначенияСвойств( НовСтр, тСтрокаНоменклатуры );
                            
                        НовСтр.Заказ         = тСтрокаЗаказа.ЗаказНоменклатура;
                        НовСтр.Номенклатура = тСтрокаНоменклатуры.ЗаказНоменклатура;
                        
                        НовСтр.ПроизводственныйЛист = тСтрокаЗаказа.ПроизводственныйЛистМодель;
                        НовСтр.Модель         = тСтрокаНоменклатуры.ПроизводственныйЛистМодель;
                            
                    ИначеЕсли шаг = 1 Тогда
                        тСтрокаНоменклатуры.ПроизводственноеЗадание = ссылкаПрЗадание;
                        
                    КонецЕсли;
                КонецЕсли;
            КонецЦикла;
            
        КонецЦикла;
        
        Если НЕ ПрЗадание = Неопределено Тогда
            ПрЗадание.Записать();
            ссылкаПрЗадание = ПрЗадание.Ссылка;
            
        КонецЕсли;
    КонецЦикла;


ЗаполнитьЗначенияСвойств( НовСтр, тСтрокаНоменклатуры ) - грешу на это, точнее на "тСтрокаНоменклатуры"

тСтрокаНоменклатуры из тСтрокаЗаказа.ПолучитьЭлементы() - такое ощущение, что ПолучитьЭлементы группирует сразу.

Помогите разобраться с этой группировкой!


 ! 

Правила: 9
 


Сообщение отредактировал Vofka - 18.02.19, 10:36

Bernet Подменю пользователя
сообщение 15.02.19, 14:40
Сообщение #2

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 319 раз
Рейтинг: 0

Constantus @ Сегодня, 13:11 * ,
скорее всего в этих строчках проблема, судя по всему на основании этого массива дальше товары добаляются, а тут проверка если товар уже есть в массиве - то его не добавляем
Если шаг = 0 И массНоменклатур.Найти( тСтрокаНоменклатуры.ЗаказНоменклатура ) = Неопределено Тогда
массНоменклатур.Добавить( тСтрокаНоменклатуры.ЗаказНоменклатура );


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Спасибо сказали: Constantus,

volodya1122 Подменю пользователя
сообщение 15.02.19, 14:40
Сообщение #3

Оратор
Иконка группы
Группа: Местный
Сообщений: 336
Из: Тернопіль
Спасибо сказали: 133 раз
Рейтинг: 135.7

Constantus @ Сегодня, 13:11 * ,

Вот тут Вы проверяете есть ли в массиве уже такая номенклатура
Если шаг = 0 И массНоменклатур.Найти( тСтрокаНоменклатуры.ЗаказНоменклатура ) = Неопределено Тогда

попробуйте проверять по ссылке

Сообщение отредактировал volodya1122 - 15.02.19, 14:41

Спасибо сказали: Constantus,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 19.04.24, 10:21
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!