Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
15 Дек 2017, 09:38
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: "Свой метод" типа Свернуть  (Прочитано 4390 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн beztrud

Здравствуйте. Необходимо свернуть строки табличной части. Делаю так



&НаКлиенте
Процедура Объединить(Команда)
ОбъединитьНаСервере();
КонецПроцедуры

&НаСервере
Процедура ОбъединитьНаСервере()
   ТаблицаЗначений = Объект.ИсходныеДанные.Выгрузить();
   ТаблицаЗначений.Свернуть("ВысотаПанели, ШиринаПанели", "НаименованиеПанели, Количество, Примечание");
   Объект.ИсходныеДанные.Загрузить(ТаблицаЗначений);
КонецПроцедуры

Где Исходные данные - табличная часть, Количество - число, НаименованиеПанели и Примечание - строки.


Как говорится в справке:
Если в колонке установлен тип и он единственный, то при суммировании будет предприниматься попытка преобразования значения к типу Число.
Если колонке не присвоены типы, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
Если в колонке несколько типов и среди них есть тип Число, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
Если в колонке несколько типов и среди них нет типа Число, то результат суммирования будет 0, который будет присвоен в соответствующую колонку, где будет преобразован к значению по умолчанию для типа, установленного в колонке.


Мне же нужно, чтобы НаименованиеПанели и Примечание не преобразовывались в 0.


Попытаюсь объяснить наглядно. Есть строки
1) р300  700  300  1  глухая
2) р600  700  300  2  глухие


Хотелось бы получить строку


р300, р600  700  300 3  глухая, глухие
Вопрос. Подскажите пожалуйста как сделать подобное преобразование.


Если использовать Свернуть получаю


0  700  300  3  0.


Оффлайн дфтын

  • Могу решить ЛЮБУЮ задачу в 1С и не только.. С вопросами в личку:)
  • *****
  • Сообщений: 2720
  • РЕПУТАЦИЯ: 325
  • КПД: 12%
  • 1С наше все
  • Регистрация: 2014-04-29
    • Skype: Soprov1C
  • Компания: Корпорация зонтиков
  • Профессия: Разработчик 1С
дык вы точно внимательно справку читали?
второй параметр у Свернуть чего значит?
мне просто интересно, как вы хотите примечания с примечаниями сложить
блин ето же 1  класс начальной школы... ужас ужас ужас..
Помог? Нажми - Спасибо :)
skype: Soprov1C

Оффлайн MuI_I_Ika

  • Гончаров Михаил
  • Администратор
  • *****
  • Сообщений: 6558
  • РЕПУТАЦИЯ: 775
  • КПД: 12%
  • Регистрация: 2012-08-15
    • Skype: MuI_I_Ika
  • Сайт: 
  • Профессия: Программист 1С
Ничего не получится суммируемые показатели всегда будут пытаться быть просуммированными. Вам нужно писать собственную процедуру по свертке таблицы.

Оффлайн beztrud

Вам нужно писать собственную процедуру по свертке таблицы.

Именно про это и хотел спросить. Как и куда выгружать и как потом свернуть.

Оффлайн Yura063

  • *****
  • Сообщений: 1045
  • РЕПУТАЦИЯ: 136
  • КПД: 13%
  • Регистрация: 2010-11-15
  • Сайт: yuis.ru
  • Профессия: Программист 1С
Напишите обработку в общем модуле и вызывайте ее откуда хотите.
Помогли, отблагодари!

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Именно про это и хотел спросить. Как и куда выгружать и как потом свернуть.

Вы же сами убедились что Свернуть() вам не подходит.
Пишете сами. Последовательным перебором строк...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн LexaK

  • *****
  • Сообщений: 1267
  • РЕПУТАЦИЯ: 347
  • КПД: 27%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
вот набросал небольшую функцию по сворачиванию для для вашего случая,
с небольшими ограничениями, она не универсальная (если захотите можете ее универсализировать)
т.е. вызов будет выглядеть так
ТЗ = СвернутьТЗ(ТЗ,"ПоляКлюч","ПоляСтр","ПоляСум");
где:
"ПоляКлюч" = "Поле1,Поле2..." поля по которым идет поиск, группировка строк
"ПоляСтр" = "ПолеА,ПолеБ..." строковые поля, которые должны складываться через ","
"ПоляСум" = "Поле8,Поле9..." поля по которым идет обычное суммирование


а вот пример упрощеной функции (все обрабатываемые поля зашиты в коде)
&НаСервере
Функция СвернутьТЗ(прТЗ)
//Вставить содержимое обработчика
Если Ложь Тогда
прТЗ = новый ТаблицаЗначений;
КонецЕсли;

//создаем результирующую таблицу
лкТЗ = прТЗ.СкопироватьКолонки();

//создаем структуру поиска
лкПоиск = Новый Структура("ВысотаПанели, ШиринаПанели");
//создаем структуру расчитываемых полей
лкПоля = Новый Структура("НаименованиеПанели, Количество, Примечание");

//начинаем перебирать исходную таблицу
Пока прТЗ.Количество()>0 Цикл
//инициализируем структуру поиска
ЗаполнитьЗначенияСвойств(лкПоиск,прТЗ[0]);
//создаем результирующую строку
лкНов = лкТЗ.Добавить(); //считаем что таблица ТЗ типизирована правильно
//инициализируем структуру полей
ЗаполнитьЗначенияСвойств(лкПоля,лкНов);

//получаем все строки с одинаковыми знаениями  ВысотаПанели, ШиринаПанели
    лкСтроки = прТЗ.НайтиСтроки(лкПоиск);

лкЗпт = "";
//обрабатываем найденные строки
Для каждого лкСтр Из лкСтроки Цикл
лкПоля.Количество = лкПоля.Количество + лкСтр.Количество;
лкПоля.НаименованиеПанели = лкПоля.НаименованиеПанели + лкЗпт + лкСтр.НаименованиеПанели;
лкПоля.Примечание = лкПоля.Примечание + лкЗпт + лкСтр.Примечание;
    лкЗпт = ",";

//обработанная строка больше не нужна, удаляем ее
прТЗ.Удалить(лкСтр);
КонецЦикла;

//закончили обработку найденых строк, заполняем результирующую
ЗаполнитьЗначенияСвойств(лкНов,лкПоиск);
ЗаполнитьЗначенияСвойств(лкНов,лкПоля);

КонецЦикла;

Возврат лкТЗ;

КонецФункции

еще раз говорю это упрощенная функция, она не группирует по примечаниям и наименованиям! т.е.
в результате у вас получится
Поле Примечание = "прим1,прим1,прим2,прим1" - "прим1" повторяется несколько раз
если не нужны повторения, можно легко доработать в этой функции.



Добавлено: 17 Окт 2014, 12:29

код на выполнение не проверял, могут быть ошибки
Помогло? - Нажми СПАСИБО!!!
                       :)

Оффлайн beztrud

cska-fanat-kz, LexaK большое спасибо, будем пробывать


Теги:
 

При старте системы выдает ошибку ВнешняяОбработка.Платформа.МодульОбъекта(111):Значение не является значением объектного типа(ТипМножественноеЧисло) конфигурация Полный учет в отделе ИТ(2017.3.1)

Автор ZSSРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 7
Просмотров: 475
Последний ответ 20 Сен 2017, 09:10
от Геннадий ОбьГЭС
Значение не является значением объектного типа (Значение)

Автор НикитaРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 2955
Последний ответ 05 Мар 2014, 09:56
от KrivosheevEV
com-соединение: .Пустая() - Значение не является значением объектного типа (Пустая)

Автор burvladimirРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 7
Просмотров: 2905
Последний ответ 03 Фев 2015, 10:52
от Slin
Перенос данных между полями типа ХранилищеЗначений РАЗНЫХ объектов метаданных

Автор LobastermanРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 1842
Последний ответ 13 Май 2014, 07:50
от wise
(Значение не является знач объектного типа) И (Проверка мутабельных значений на заполненность)

Автор ferrari314Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 2435
Последний ответ 22 Мар 2015, 02:00
от cska-fanat-kz

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
177 Сообщений
ilyay ilyay
69 Сообщений
oleg-x
48 Сообщений
AIFrame
45 Сообщений
alex0402
44 Сообщений
andron81_81
38 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
Golickoff Golickoff
31 Сообщений
BuhRust
30 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 694
  • Точка Скрытых: 0
  • Точка Пользователей: 19
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal