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

Хранилище

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

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



> Объединение строк табличной части          
Meest Подменю пользователя
сообщение 14.03.13, 16:04
Сообщение #1

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 170
Из: Украина
Спасибо сказали: 32 раз
Рейтинг: 0

Добрый день!

Возникла проблема с дублированием номенклатуры в табличной части документа, так как пользователи нечего не хотят слушать и знать, пытаюсь решить проблему объединением строк табличной части документа, но у вы все попытки увенчались полным провалом.
Может кто-то сталкивался с данной проблемой, дайте пенок в нужное направление.
Конфигурация не типовая, платформа (8.1.11.67).
Заранее благодарен.

pablo Подменю пользователя
сообщение 14.03.13, 16:09
Сообщение #2

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

В какой момент должно происходить объединение и, самое главное, как? Ответите на эти 2 вопроса и сразу будет виден алгоритм требуемых действий.
Могу только предположить, что нужно будет просуммировать в одинаковых строчках поле количество, а остальные поля - пересчитать.


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Meest Подменю пользователя
сообщение 14.03.13, 16:16
Сообщение #3

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 170
Из: Украина
Спасибо сказали: 32 раз
Рейтинг: 0

Цитата(pablo @ 14.03.13, 16:09) *
В какой момент должно происходить объединение и, самое главное, как? Ответите на эти 2 вопроса и сразу будет виден алгоритм требуемых действий.
Могу только предположить, что нужно будет просуммировать в одинаковых строчках поле количество, а остальные поля - пересчитать.



Нужно объединить все строки ТЧ по определенной номенклатуре (Услуга) и просуммировать не только количество но еще пару числовых полей.

pablo Подменю пользователя
сообщение 14.03.13, 16:17
Сообщение #4

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

Вы не ответили на первый вопрос


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Meest Подменю пользователя
сообщение 14.03.13, 16:19
Сообщение #5

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 170
Из: Украина
Спасибо сказали: 32 раз
Рейтинг: 0

Цитата(pablo @ 14.03.13, 16:09) *
В какой момент должно происходить объединение


При окончании редактирования табличного поля

zay Подменю пользователя
сообщение 14.03.13, 17:08
Сообщение #6

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 164
Из: Киев
Спасибо сказали: 132 раз
Рейтинг: 138.1

Вам нужно найти номенклатуру с похожим, но не идентичным наименованием? Посмотрите алгоритм сравнения лексем на основании расстояния Левенштейна
Если это вам подходит - могу выложить обработку по поиску дублей контрагентов, которая использует этот алгоритм.

Вообще, я думаю вы себе большую проблему создаете
Цитата
так как пользователи нечего не хотят слушать и знать

Сейчас проблема из-за того, что пользователи создают дубли номенклатуру.
После того как вы реализуете механизм свертки - любое дублирование номенклатуры будет уже из-за того что вы что-то сделали, но все равно ничего не работает. Вне зависимости, работает алгоритм свертки как надо или нет. Люди, которые "ничего не хотят слушать и знать", с большим удовольствием сделают свою вину - вашей.

Meest Подменю пользователя
сообщение 14.03.13, 17:51
Сообщение #7

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 170
Из: Украина
Спасибо сказали: 32 раз
Рейтинг: 0

Цитата(zay @ 14.03.13, 17:08) *
Вам нужно найти номенклатуру с похожим, но не идентичным наименованием? Посмотрите алгоритм сравнения лексем на основании расстояния Левенштейна
Если это вам подходит - могу выложить обработку по поиску дублей контрагентов, которая использует этот алгоритм.

Вообще, я думаю вы себе большую проблему создаете

Сейчас проблема из-за того, что пользователи создают дубли номенклатуру.
После того как вы реализуете механизм свертки - любое дублирование номенклатуры будет уже из-за того что вы что-то сделали, но все равно ничего не работает. Вне зависимости, работает алгоритм свертки как надо или нет. Люди, которые "ничего не хотят слушать и знать", с большим удовольствием сделают свою вину - вашей.



Со слов пользователей я и так во всех бедах виноват.
Сворачивать номенклатуру нужно только по одному элементу спр.номенклатура, он всегда один и он не меняется (у тех самых пользователей прав чуть не хватает).
Вся беда в том что данная позиция номенклатуры является услугой, при выборе ее необходимо указывать такие параметры как вес, длина, ширина и высота, вот собственно из чего весь сыр-бор, при заполнении перечня номенклатуры пользователю удобно указывать в разных строках разные параметры так как вес может быть от 0,01кг до 20000 тон и таких позиций может быть 20.

Vofka Подменю пользователя
сообщение 14.03.13, 19:48
Сообщение #8

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

А кто мешает выбрать и свернуть запросом либо выгрузить данные в ТЗ и методом Свернуть сделать это там?

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

Avgust Подменю пользователя
сообщение 15.03.13, 9:15
Сообщение #9

Молчаливый
*
Группа: Пользователи
Сообщений: 2
Спасибо сказали: 1 раз
Рейтинг: 0

КМК самый простой и правильный способ - это сворачивание, типа:
Табло="";
    ВыгрузитьТабличнуюЧасть(Табло);
    Табло.Свернуть("Услуга,Цена,Вес,Длина,Ширина,Цвет,Запах.......",);
    Табло.ВыбратьСтроки();
и т.п....

Приведите пример дублирующихся строк и правильный результат объединения (как Вам нужно их свернуть/объединить), тогда может будет понятней, в чем проблема...

logist Подменю пользователя
сообщение 15.03.13, 9:42
Сообщение #10

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата
Табло="";
    ВыгрузитьТабличнуюЧасть(Табло);
    Табло.Свернуть("Услуга,Цена,Вес,Длина,Ширина,Цвет,Запах.......",);
    Табло.ВыбратьСтроки();

Что это?


Signature
Личные бесплатные консультации не даю, для этого есть форум!

zay Подменю пользователя
сообщение 15.03.13, 9:53
Сообщение #11

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 164
Из: Киев
Спасибо сказали: 132 раз
Рейтинг: 138.1

Цитата(Meest @ 14.03.13, 17:51) *
Вся беда в том что данная позиция номенклатуры является услугой, при выборе ее необходимо указывать такие параметры как вес, длина, ширина и высота, вот собственно из чего весь сыр-бор, при заполнении перечня номенклатуры пользователю удобно указывать в разных строках разные параметры так как вес может быть от 0,01кг до 20000 тон и таких позиций может быть 20.

Понятно.
В конфигурации УТП в справочнике "Единицы измерения" есть реквизиты ЕдиницаПоКлассификатору и Коэффициент. Если у вас Бухгалтерия для Украины - добавьте эти реквизиты.
Использовать их можно так:
"Единицы измерения" 
-------------------------------------------------------------------
| Название | ЕдиницаПоКлассификатору | Коэффициент |
-------------------------------------------------------------------
| г             | кг                                       | 0.001              |
| кг           | кг                                       | 1                     |
| т             | кг                                       | 1000               |
-------------------------------------------------------------------

Сделайте пользователю кнопку "Свернуть" (Делать это при окончании редактирования табличного поля - неудачная идея)
При нажатии на кнопку отрабатывает процедура:
Выгружаем ТЧ.
Обходим все строки и конвертируем все граммы/килограммы/тонны в килограммы используя Коэффициент
Сворачиваем ТЗ
Загружаем ТЧ

Сообщение отредактировал zay - 15.03.13, 9:54

logist Подменю пользователя
сообщение 15.03.13, 10:03
Сообщение #12

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(zay @ 15.03.13, 9:53) *
В конфигурации УТП в справочнике "Единицы измерения" есть реквизиты ЕдиницаПоКлассификатору и Коэффициент. Если у вас Бухгалтерия для Украины - добавьте эти реквизиты.

Цитата(Meest @ 14.03.13, 16:04) *
Конфигурация не типовая, платформа (8.1.11.67).


Signature
Личные бесплатные консультации не даю, для этого есть форум!

sava1 Подменю пользователя
сообщение 15.03.13, 10:31
Сообщение #13

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Запретить простое добавление - только через Подбор

Avgust Подменю пользователя
сообщение 15.03.13, 12:39
Сообщение #14

Молчаливый
*
Группа: Пользователи
Сообщений: 2
Спасибо сказали: 1 раз
Рейтинг: 0

Цитата(logist @ 15.03.13, 9:42) *
Что это?

кусочек кода из рабочей базы. Да, из конфы 7.7, в переводе на язык 8.х будет:
Состав.Свернуть("Номенклатура", "Количество, Сумма, Всего");

А на что это похоже? smile.gif

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

logist Подменю пользователя
сообщение 15.03.13, 13:40
Сообщение #15

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Avgust @ 15.03.13, 12:39) *
в переводе на язык 8.х будет:

В следующий раз пишите сразу перевод. У нас тут разделы форума специально созданы для отдельных платформ.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

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

Meest Подменю пользователя
сообщение 17.03.13, 22:05
Сообщение #16

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 170
Из: Украина
Спасибо сказали: 32 раз
Рейтинг: 0

Нашел два способа для решения данной проблемы

1.
СтрокаТЧ = ЭлементыФормы.ПереченьНоменклатуры.ТекущиеДанные;      
    СтрокаСНоменклатурой = ПереченьНоменклатуры.Найти(СтрокаТЧ.Номенклатура);
    
    Если ПереченьНоменклатуры.Количество() > 1  и  (СтрокаСНоменклатурой.Номенклатура = СтрокаТЧ.Номенклатура)
        И (СтрокаСНоменклатурой <> СтрокаТЧ) и  СтрокаТЧ.КвоМест > 0  Тогда
        СтрокаСНоменклатурой.Вес = СтрокаСНоменклатурой.Вес+СтрокаТЧ.Вес;
        СтрокаСНоменклатурой.Высота = СтрокаСНоменклатурой.Высота+СтрокаТЧ.Высота;
        СтрокаСНоменклатурой.Длина = СтрокаСНоменклатурой.Длина+СтрокаТЧ.Длина;
        СтрокаСНоменклатурой.КвоЕд = СтрокаСНоменклатурой.КвоЕд+СтрокаТЧ.КвоЕд;
        СтрокаСНоменклатурой.КвоМест = СтрокаСНоменклатурой.КвоМест+СтрокаТЧ.КвоМест;
        СтрокаСНоменклатурой.Объем = СтрокаСНоменклатурой.Объем+СтрокаТЧ.Объем;
        СтрокаСНоменклатурой.Сумма = СтрокаСНоменклатурой.Сумма+СтрокаТЧ.Сумма;
        СтрокаСНоменклатурой.Ширина = СтрокаСНоменклатурой.Ширина+СтрокаТЧ.Ширина;
        ПереченьНоменклатуры.Удалить(СтрокаТЧ);
    КонецЕсли;


2. Более оптимальный

Если ПереченьНоменклатуры.Количество() > 1 и (СтрокаСНоменклатурой.Номенклатура = СтрокаТЧ.Номенклатура)
        и (СтрокаСНоменклатурой <> СтрокаТЧ) и СтрокаТЧ.КвоМест > 0  Тогда
        ПереченьНоменклатуры.Свернуть("Номенклатура","Вес,Высота,Длина,КвоЕд,КвоМест,Объем,Сумма,Ширина,КвоУпаковки,СуммаУпаковки");
    КонецЕсли;


Огромное спасибо за пенок в нужное направление)

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


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

 

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