Имя: Пароль:
1C
1С v8
Список значения вывести в строку
,
0 Yuriy78
 
31.01.13
15:54
У меня при выводе списка значения в строку выводит такое: Шайба 6. 21(12Х18Н9Т)  ГО...; Шайба 6.21 Шайба  ГОСТ 11...; Шайба 6. 21Шайба ГОСТ 113...
Почему обрезается наименование номенклатуры и продолжается троеточие? Подскажите пожалуйста?
1 Maxus43
 
31.01.13
15:55
так платформа работает, можешь сам текст формировать полный
2 Yuriy78
 
31.01.13
15:59
(1) А как это сделать? Перепробовал много все го не получается. Помогите!
3 Maxus43
 
31.01.13
15:59
о каком поле идёт речь конкретно? можно скрин?
4 Yuriy78
 
31.01.13
16:04
(3)Заполняю табличное поле документа. Столбец добавил в конфигураторе "Аналоги номенклатуры". Тип данных: строка. Элемент управления: Поле ввода
5 Wobland
 
31.01.13
16:06
то есть, вот так вот запросто взял и превратил справочник в строку? ерунду какую-то придумал
6 DrShad
 
31.01.13
16:06
(4) сам преобразуй его в строку, только как назад будешь собирать? имхо такие задачи реализуются через вторую ТЧ и ключ строки
7 Yuriy78
 
31.01.13
16:14
Объясню задачу. Нужно заполнить табличное поле документа. аналогами номенклатуры. т.е имеем заполненную закладку материалы позициями номенклатуры. Необходимо добавить еще один столбец "Аналоги номенклатуры" и выгрузить в него для каждой номенклатуры свои аналоги. В одной ячейке может быть до пяти аналогов Вот и хочу я их выгрузить в строку через ";".
8 Yuriy78
 
31.01.13
16:16
Вот мой код:
Для Каждого Стр из ЭтотОбъект.Материалы Цикл
       ПерНоменклатура = Стр.Номенклатура;
       ПерАналог = Стр.АналогиНоменклатуры;
       Сообщить(ПерНоменклатура);
       НаборЗаписей = РегистрыСведений.АналогиНоменклатуры.СоздатьНаборЗаписей();
       НаборЗаписей.Отбор.Номенклатура.Установить(ПерНоменклатура);
       НаборЗаписей.Прочитать();
       Счетчик = 0;
       СписокАналогов = Новый СписокЗначений;
       Для Каждого ЭлемЗапись Из НаборЗаписей Цикл
       // Чтение и сообщение данных полей записи.
           ЭлемНоменклатура = ЭлемЗапись.Номенклатура;
           Если Счетчик = 0 Тогда
               ЭлемАналог = ЭлемЗапись.Аналог;
               СписокАналогов.Добавить(ЭлемАналог);
           ИначеЕсли Счетчик = 1 Тогда
               ЭлемАналог1 = ЭлемЗапись.Аналог;
               СписокАналогов.Добавить(ЭлемАналог1);
           ИначеЕсли Счетчик = 2 тогда
               ЭлемАналог2 = ЭлемЗапись.Аналог;
               СписокАналогов.Добавить(ЭлемАналог2);
           ИначеЕсли Счетчик = 3 тогда
               ЭлемАналог3 = ЭлемЗапись.Аналог;
               СписокАналогов.Добавить(ЭлемАналог3);
           ИначеЕсли Счетчик = 4 тогда
               ЭлемАналог4 = ЭлемЗапись.Аналог;
               СписокАналогов.Добавить(ЭлемАналог4);
           ИначеЕсли Счетчик = 5 тогда
               ЭлемАналог5 = ЭлемЗапись.Аналог;
               СписокАналогов.Добавить(ЭлемАналог5);
           КонецЕсли;
               Сообщить("Номенклатура " + ЭлемНоменклатура + " Имеет аналог " + ЭлемАналог+"; "+ ЭлемАналог1+"; "+ЭлемАналог2+"; "+ЭлемАналог3+"; "+ЭлемАналог4+"; "+ЭлемАналог5);
                   Счетчик = Счетчик + 1;
       КонецЦикла;
       
       Сообщить(СписокАналогов);
       Стр.АналогиНоменклатуры = СписокАналогов;

   КонецЦикла;
9 mikecool
 
31.01.13
16:17
(7) добавь вторую ТЧ и грузи туда
10 mikecool
 
31.01.13
16:17
+9 плюс при перемещении по основному списку - фильтруй второй по номенклатуре
11 Maxus43
 
31.01.13
16:18
да, элегантно не получится...
12 DrShad
 
31.01.13
16:18
(7) задача нам и так ясна, а вот твое решение мягко говоря дебильное
13 Yuriy78
 
31.01.13
16:19
(12) Не спорю, возможно... Другого не нашел.  Буду рад помощи
14 DrShad
 
31.01.13
16:21
(13) какую еще тебе помощь нужно? за тебя все сделать? как делается уже объяснили
15 Maxus43
 
31.01.13
16:21
(13) чем не устраивает обрезание наименований? суть у них та же, посомтреть полностью можно в списке выбора этой ячейки
16 DrShad
 
31.01.13
16:22
(15) у него там нет списка :))))
17 mikecool
 
31.01.13
16:22
(15) потому как следующий вопрос будет - как выбрать из аналогов и заменить номенклатуру ))
18 Yuriy78
 
31.01.13
16:36
(15) В списке выбора тоже обрезанные наименования. Нужны полные наименования документ будет выводится на печать
19 Yuriy78
 
31.01.13
16:37
Может проще делать через таблицу значений, а не через список?
20 Maxus43
 
31.01.13
16:38
(18) скрин плиз.
на печать - там без проблем, если действительно список значений
21 Yuriy78
 
31.01.13
16:43
(20)Редко пользуюсь этим форумом не знаю как тут добавлять скрин
22 Maxus43
 
31.01.13
16:47
(21) на хостинг картинок любой выложи, http://fastpic.ru/

скрин хочется где добавляешь в список новые элементы
23 DrShad
 
31.01.13
16:50
ни список ни ТЗ не являются хранимыми объектами
24 Maxus43
 
31.01.13
16:54
(23) где раньше то был?) а то у меня вылетело совсем из головы это)
25 DrShad
 
31.01.13
16:56
я пытался, но ты уже никого не слушал :)))
26 Yuriy78
 
31.01.13
17:01
(21)Скрин документа: http://i51.fastpic.ru/big/2013/0131/8a/383d4609bee109ac00dccc795d05cb8a.png
Первоначально табличное поле заполняем "заполнить по спецификации". Затем "Заполнить аналогами номенклатуры". А в дальнейшем я аналоги планировал заполнять процедурой При ПолученииДанных
27 DrShad
 
31.01.13
17:03
(26) пофигу что и как ты планировал - нет такого типа поля у ТЧ как СЗ или ТЗ и даже ДЗ
28 Yuriy78
 
31.01.13
17:06
(27) Так как же тогда правильно выгрузить аналоги номенклатуры в табличную часть?
29 Maxus43
 
31.01.13
17:08
(28) ответ был ещё в (6)(9), красивей никак
30 DrShad
 
31.01.13
17:09
(28) что из (6),(9) тебе не понятно?
31 Yuriy78
 
31.01.13
17:18
Т.е мне нужно в конфигураторе в интересующем меня документе создать еще одну табличную часть и выгрузить туда колонки "номенклатура" и "Аналоги номенклатуры". А затем из этой ТЧ выгружать данные в табличную часть "Материалы"?
32 Maxus43
 
31.01.13
17:22
(31) нет, надо что-то аналогичное как в документе ВводНачальныхОстатковНДС - там наглядно будет что имеют ввиду. в одной ТЧ выбираешь строчку - во 2-й отображается какие номенклатурины связаны с этой строкой
33 Yuriy78
 
31.01.13
17:24
(32) Спасибо. Сейчас посмотрю...
34 Yuriy78
 
31.01.13
17:31
(32)К сожалению в моей кофигурации нет такого документа.
35 Maxus43
 
31.01.13
17:33
(34) я не помню больше типовых документов, где это реализовано...
36 Reset
 
31.01.13
17:34
(35) ГТД по импорту :)
37 Maxus43
 
31.01.13
17:37
боюсь его тоже нет
38 DrShad
 
31.01.13
17:37
(35) Установка цен номенклатуры тоже две ТЧ
39 Yuriy78
 
31.01.13
17:53
(38)Спасибо. Установка цен номенклатуры есть буду разбираться.
40 DrShad
 
31.01.13
17:54
(39) разбирайся на здоровье
41 Yuriy78
 
31.01.13
17:58
Для меня странно что в 1с такую простую задачу приходится решать такими методами.
42 DrShad
 
31.01.13
18:01
если в кратце то выглядеть это может так:
1. создаешь еще одну ТЧ "Аналоги" с полями: Ключ, Аналог
2. в основной ТЧ добавляешь поле ключ (Строка 36), при начале редактирования пихаешь туда XMLСтрока(Новый УникальныйИдентификатор())
3. в колонке где у тебя ща аналоги также собираешь список, но не пишешь его в колонку, а пихаешь во вторую ТЧ + Ключ

когда нужно по ключу из строки собираешь из второй ТЧ список и показываешь или юзаешь
43 Wobland
 
31.01.13
18:03
(41) такими логичными методами
44 DrShad
 
31.01.13
18:05
(41) а в других системах можно в полях хранить нехранимые объекты!?
45 Wobland
 
31.01.13
18:08
(44) v8: Получить значение добавленного поля табличной части
человек даже понимает, что делает
46 Yuriy78
 
01.02.13
15:34
Я тоже понимаю. :)))
Вот решение получения списка значений в строку без использования второй ТЧ.
Разделитель = ";";
       СтрокаАналоги = "";
       для каждого ЭлемСписка из СписокАналогов цикл
           СтрокаАналоги = СтрокаАналоги + ЭлемСписка.Значение + Разделитель+" ";
       КонецЦикла;
       Сообщить(СтрокаАналоги);
       Стр.АналогиНоменклатуры = СтрокаАналоги;

Это ссылка на корректно заполненный документ:http://i54.fastpic.ru/big/2013/0201/95/1c7e898fb6b9d1e7774be80673e83495.png
Все работает! Задача выполнена!!!
Спасибо всем кто пытался помочь!
Спасибо, что есть такой форум.
47 Yuriy78
 
01.02.13
15:37
Программист всегда исправляет последнюю ошибку.