Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: УТП. Расчет себестоимости по организациям.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
justlink
Здравствуйте. У меня очень сложный, как мне кажется вопрос.
Суть в следующем - есть конфигурация УТП, обновленная до версии 1.2.6.1
В базе ведется учет по нескольким организациям. Товары нескольких организаций хранятся на одном складе. При списывании/реализации товаров по одной организации по управленческому учету списываются партии не обязательно этой организации. И это правильно, т.к. в УТП в регистре накопления Партии Товаров На Складах Упр нет измерения "Организация". Т.е. управленческий учет себестоимости ведется в разрезе склада.

А теперь - вопрос - как сделать так, чтобы при списании списывались партии именно той организации, по которой происходит списание. Ну, или хотя бы делалась такая попытка smile.gif
Алгоритм такой - при списании ищем партию нужной организации. Если такой партии нет, ну что ж поделаешь, списываем то что есть, но выдаем предупреждающее сообщение.

Пока сделал вот что - в общем модуле "УправлениеЗапасамипартионныйУчет" в процедуре "СписаниеПартий" добавил строки:

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


Но это не совсем то, т.к. в этом варианте если отсутствует товар нужной организации, то вообще ничего не спишется.
Мне бы подошла сортировка строк коллекции СтрокаДереваПартий.Строки по реквизиту ДокументОприходования.Организация. Сначала нужная мне организация, а потом всё остальное.

Вопрос - как отсортировать коллекцию строк строки дерева значений?
Ardi
Проходимся по остаткам 2 раза. Сначала
текОрг=НашаОрг.
Потом
текОрг<>НашаОрг
justlink
Проще всё-таки оказалось сделать сортировку дерева партий. Может кому-нибудь будет полезен кусочек кода:
Нужные партии сдвигаются в начало списка.

Если СтрокаДереваПартий <> Неопределено Тогда
        //Сортируем дерево партий по организации регистратора
        сч_индекс = 0;
        КоличествоСтрок = СтрокаДереваПартий.Строки.Количество();
        Для Каждого СтрокаПартииРаспределения ИЗ СтрокаДереваПартий.Строки Цикл
            Если СтрокаПартииРаспределения.ДокументОприходования.Организация = СтруктураПараметров.Регистратор.Организация Тогда
                ТекущийИндекс = СтрокаДереваПартий.Строки.Индекс(СтрокаПартииРаспределения);
                СтрокаДереваПартий.Строки.Сдвинуть(ТекущийИндекс,-ТекущийИндекс+сч_индекс);
                сч_индекс = сч_индекс + 1;
            КонецЕсли;    
        КонецЦикла;
Ardi
Интересный код.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.