Имя: Пароль:
1C
1С v8
Свернуть строки в столбце для 1С:комплексная автоматизация 8.2
0 studentca
 
16.10.11
11:17
Здравствуйте! Я новичок и прошу о помощи. У меня следующая проблема: для конфигурации 1С:Комплексная автоматизация 8.2 в документе "Реализация товаров и услуг" для печати бланка ТТН мне необходимо заменить номенклатуру на номенклатурную группу затрат и затем объединить эти строки в столбце (так как в моем случае номенклатурная группа затрат одна единственная и выводится много строк с одним одинаковым словом).
Я сделала замену, у меня все правильно выходит, но потом для объединения строк в этом столбце, я хотела сделать вот так:
после того, как сформирована таблица при помощи запроса я вставила следующую строчку

ЗапросТовары.Свернуть("ТоварНаименование");

И он мне выдает такую вот ошибку:
{Обработка.ПечатьТТН.Форма.Форма.Форма(446)}: Поле объекта не обнаружено (Номенклатура)
       Если НЕ ЗначениеЗаполнено(ВыборкаСтрок.Номенклатура) Тогда

Затем я нашла эту строчку и решила ее закомментировать, но он показывает тоже самое.
Скажите, пожалуйста в чем моя ошибка.
Спасибо за ответ заранее.
1 Grusswelle
 
16.10.11
11:18
(0) Без фото не взлетит!
2 Мимохожий Однако
 
16.10.11
11:23
ВыборкаСтрок.Номенклатура это , видимо, ссылка. Отладчиком встань на эту строку и прочитай полученное значение. После этого надо дальше думать.
3 studentca
 
16.10.11
11:30
{(1)}Значение не является значением объектного типа (Номенклатура)
4 studentca
 
16.10.11
11:31
Может быть я неправильно укзываю Табличную часть для запроса Свернуть...
5 Мимохожий Однако
 
16.10.11
11:33
ОФФ: видимо чукотский вариант. см (2).
6 studentca
 
16.10.11
12:02
Так мне никто не подскажет,  как мне объединить строки в этой табличной части?
7 Мимохожий Однако
 
16.10.11
12:16
Выложи свой код на обозрение. Телепатировать по выходным трудно.
8 studentca
 
16.10.11
12:30
Запрос.Текст =
   "ВЫБРАТЬ
   |    ВложенныйЗапрос.Номенклатура                                 КАК Номенклатура,
   |    ВложенныйЗапрос.МассаБрутто                                  КАК МассаБрутто,
   //исправление
   |    ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НоменклатурнаяГруппаЗатрат.Наименование КАК Строка(1000)) КАК ТоварНаименование,
   //Исправление
       |    ВложенныйЗапрос.Номенклатура." + ТоварКод + "                КАК Артикул,

   ....

ЗапросТовары = Запрос.Выполнить().Выгрузить();
   
   Если ПолучитьДанныеПечати = Истина Тогда
       Возврат ПолучитьДанныеДляТТНПриложение4(ЗапросТовары, Шапка);
   КонецЕсли;
   
   
   //Исправление
   ЗапросТовары.Свернуть("ТоварНаименование");
   //Исправление
9 studentca
 
16.10.11
12:32
Первое мое исправление..это я поменяла саму номенклатуру на номенклатурную группу (она у меня одна единственная)и получается следующее

Артикул или номер по прейскуранту    Коли- чество    Цена руб. коп.    Наименование продукции, товара (груза), ТУ, марка, размер, сорт
3    4    5    6
00000000006    1 400,000    8,20    медикамент
00000000007    1 400,000    8,00    медикамент
00000000033    11 000,000    6,11    медикамент
00000000060    3 600,000    6,00    медикамент
00000000061    3 600,000    9,80    медикамент
00000000091    9 800,000    15,50    медикамент
00000000152    40 200,000    8,70    медикамент
Итого    71 000,000        

и мне нужно столбец с "медикаментами объединить"...Как сделать мне это?
10 studentca
 
16.10.11
12:38
Если полностью с запрос


Запрос.Текст =
   "ВЫБРАТЬ
   |    ВложенныйЗапрос.Номенклатура                                 КАК Номенклатура,
   |    ВложенныйЗапрос.МассаБрутто                                  КАК МассаБрутто,
   
   //исправление
   |    ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НоменклатурнаяГруппаЗатрат.Наименование КАК Строка(1000)) КАК ТоварНаименование,
   //Исправление
   |    ВложенныйЗапрос.Номенклатура." + ТоварКод + "                КАК Артикул,
   |    ВложенныйЗапрос.ЕдиницаИзмерения.Представление               КАК БазоваяЕдиницаНаименование,
   |    ВложенныйЗапрос.ЕдиницаИзмерения.ЕдиницаПоКлассификатору.Код КАК БазоваяЕдиницаКодПоОКЕИ,
   |    ВложенныйЗапрос.ЕдиницаИзмерения                             КАК ЕдиницаИзмерения,
   |    ВложенныйЗапрос.ЕдиницаИзмеренияМест.Представление           КАК ВидУпаковки,
   |    ВложенныйЗапрос.Характеристика      КАК Характеристика,
   |    ВложенныйЗапрос.Серия               КАК Серия,
   |    ВложенныйЗапрос.СтавкаНДС           КАК СтавкаНДС,
   |    ВложенныйЗапрос.Цена                КАК Цена,
   |    ВЫБОР    КОГДА((ВложенныйЗапрос.ПроцентСкидкиНаценки = 0) И
   |                    (ВложенныйЗапрос.ПроцентАвтоматическихСкидок = 0))
   |            ТОГДА ЛОЖЬ
   |            ИНАЧЕ Истина
   |    КОНЕЦ                               КАК ЕстьСкидкиПоСтроке,
   |    ВложенныйЗапрос.Количество          КАК Количество,
   |    ВложенныйЗапрос.КоличествоМест      КАК КоличествоМест,
   |    ВложенныйЗапрос.Сумма               КАК Сумма,
   |    ВложенныйЗапрос.СуммаНДС            КАК СуммаНДС,
   |    ВложенныйЗапрос.НомерСтроки         КАК НомерСтроки,
   |    ВложенныйЗапрос.Метка               КАК Метка
   |ИЗ
   |
   |    (
   |    ВЫБРАТЬ
   |        РеализацияТоваровУслуг.Номенклатура                          КАК Номенклатура,
   |        СУММА(РеализацияТоваровУслуг.Количество * РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков.Вес) КАК МассаБрутто,
   |        РеализацияТоваровУслуг.Коэффициент                           КАК Коэффициент,
   |        РеализацияТоваровУслуг.ЕдиницаИзмерения                      КАК ЕдиницаИзмерения,
   |        РеализацияТоваровУслуг.ЕдиницаИзмеренияМест                  КАК ЕдиницаИзмеренияМест,
   |        РеализацияТоваровУслуг.ХарактеристикаНоменклатуры            КАК Характеристика,
   |        РеализацияТоваровУслуг.СерияНоменклатуры                     КАК Серия,
   |        РеализацияТоваровУслуг.СтавкаНДС                             КАК СтавкаНДС,
   |        РеализацияТоваровУслуг.Цена * &Курс / &Кратность             КАК Цена,
   |        РеализацияТоваровУслуг.ПроцентСкидкиНаценки                  КАК ПроцентСкидкиНаценки,
   |        РеализацияТоваровУслуг.ПроцентАвтоматическихСкидок           КАК ПроцентАвтоматическихСкидок,
   |        СУММА(РеализацияТоваровУслуг.Количество)                     КАК Количество,
   |        СУММА(РеализацияТоваровУслуг.КоличествоМест)                 КАК КоличествоМест,
   |        СУММА(РеализацияТоваровУслуг.Сумма    * &Курс / &Кратность)  КАК Сумма,
   |        СУММА(РеализацияТоваровУслуг.СуммаНДС * &Курс / &Кратность)  КАК СуммаНДС,
   |        МИНИМУМ(РеализацияТоваровУслуг.НомерСтроки)                  КАК НомерСтроки,
   |        0                                                            КАК Метка
   |    ИЗ
   |        Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
   |    ГДЕ
   |        РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
   |
   |СГРУППИРОВАТЬ ПО
   |        РеализацияТоваровУслуг.Номенклатура,
   |        РеализацияТоваровУслуг.Коэффициент,
   |        РеализацияТоваровУслуг.ЕдиницаИзмерения,
   |        РеализацияТоваровУслуг.ЕдиницаИзмеренияМест,
   |        РеализацияТоваровУслуг.ХарактеристикаНоменклатуры,
   |        РеализацияТоваровУслуг.СерияНоменклатуры,
   |        РеализацияТоваровУслуг.СтавкаНДС,
   |        РеализацияТоваровУслуг.Цена,
   |        РеализацияТоваровУслуг.ПроцентСкидкиНаценки,
   |        РеализацияТоваровУслуг.ПроцентАвтоматическихСкидок
   |    ) КАК ВложенныйЗапрос
   |
   |ОБЪЕДИНИТЬ ВСЕ
   |
   |ВЫБРАТЬ
   |    РеализацияТоваровУслуг.Номенклатура                    КАК Номенклатура,
   |    РеализацияТоваровУслуг.Количество * РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков.Вес КАК МассаБрутто,
   |    ВЫРАЗИТЬ(РеализацияТоваровУслуг.Номенклатура.НоменклатурнаяГруппаЗатрат.Наименование КАК Строка(1000)) КАК ТоварНаименование,
   |    РеализацияТоваровУслуг.Номенклатура." + ТоварКод + "   КАК Артикул,
   |    РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков.Представление               КАК БазоваяЕдиницаНаименование,
   |    РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков.ЕдиницаПоКлассификатору.Код КАК БазоваяЕдиницаКодПоОКЕИ,
   |    РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков                             КАК ЕдиницаИзмерения,
   |    NULL                                                  КАК ВидУпаковки,
   |    NULL                                                  КАК Характеристика,
   |    NULL                                                  КАК Серия,
   |    ""Без НДС""                                           КАК СтавкаНДС,
   |    РеализацияТоваровУслуг.Цена * &Курс / &Кратность      КАК Цена,
   |    Ложь                                                  КАК ЕстьСкидкиПоСтроке,
   |    РеализацияТоваровУслуг.Количество                     КАК Количество,
   |    0                                                     КАК КоличествоМест,
   |    РеализацияТоваровУслуг.Сумма * &Курс / &Кратность     КАК Сумма,
   |    0                                                     КАК СуммаНДС,
   |    РеализацияТоваровУслуг.НомерСтроки                    КАК НомерСтроки,
   |    2                                                     КАК Метка
   |ИЗ
   |    Документ.РеализацияТоваровУслуг.ВозвратнаяТара КАК РеализацияТоваровУслуг
   |
   |ГДЕ
   |    РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
   |
   |УПОРЯДОЧИТЬ ПО Метка ВОЗР, НомерСтроки ВОЗР
   |
   |";

   ЗапросТовары = Запрос.Выполнить().Выгрузить();
   
   Если ПолучитьДанныеПечати = Истина Тогда
       Возврат ПолучитьДанныеДляТТНПриложение4(ЗапросТовары, Шапка);
   КонецЕсли;
   
   
   //Исправление
   ЗапросТовары.Свернуть("ТоварНаименование");
   //Исправление
       
       
   ТабДокумент = Новый ТабличныйДокумент;
   Макет       = ПолучитьМакет("ТТН");

   // Выводим общие реквизиты шапки  .......
   

       Если НЕ ЗначениеЗаполнено(ВыборкаСтрок.Номенклатура) Тогда
           Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
           Продолжить;
       КонецЕсли;
11 studentca
 
16.10.11
12:45
Подскажите, пожалуйста.
12 Мимохожий Однако
 
16.10.11
12:51
Встань отладчиком на строку ЗапросТовары = Запрос.Выполнить().Выгрузить();
   и посмотри на полученную выборку. Есть ли там колонка "Номенклатура"?
13 Tafa
 
16.10.11
12:54
После ЗапросТовары.Свернуть("ТоварНаименование"); в таблице значений ЗапросТовары остается только колонка "ТоварНаименование".
14 studentca
 
16.10.11
12:57
Запрос.Выполнить - пишет значение"поле объекта не обнаружено", значение просто Выполнить - 1,1 ожидается выражение
15 studentca
 
16.10.11
12:59
а выражение "ЗапросТовары = Запрос.Выполнить().Выгрузить();" имеет значение 1,46 Ошибка в выражении
16 studentca
 
16.10.11
13:00
нет..в сообщении 9 есть пример..должны остаться все строки и столбцы, но в 6 столбце должна быть одна общая строка, в которой написано "Медикамент"
17 Мимохожий Однако
 
16.10.11
13:01
Попробуй
... Если НЕ ЗначениеЗаполнено(ВыборкаСтрок.ТоварНаименование) Тогда
18 studentca
 
16.10.11
13:02
если исправить в екселе то получится вот так

Артикул или номер по прейскуранту    Коли- чество    Цена руб. коп.    Наименование продукции, товара (груза), ТУ, марка, размер, сорт    
3    4    5    6    
00000000006    1 400,000    8,20    медикамент
   
00000000007    1 400,000    8,00        
00000000033    11 000,000    6,11        
00000000060    3 600,000    6,00        
00000000061    3 600,000    9,80        
00000000091    9 800,000    15,50        
00000000152    40 200,000    8,70        
Итого    71 000,000
19 Мимохожий Однако
 
16.10.11
13:04
(18)Есть прямой вопрос: "Отладчик включать умеешь?" :-)
В чем связь таблицы экселя и темой ветки?
20 studentca
 
16.10.11
13:04
Если НЕ ЗначениеЗаполнено(ВыборкаСтрок.Номенклатура) Тогда
1.1 Ожидается выражение
21 studentca
 
16.10.11
13:05
никакой, просто я пытаюсь показать как это должно выглядеть..
22 Мимохожий Однако
 
16.10.11
13:05
ответь на (19).
23 studentca
 
16.10.11
13:05
нагляднее может быть...
24 Мимохожий Однако
 
16.10.11
13:06
Отладчик включать умеешь?
25 studentca
 
16.10.11
13:06
я же говорю..для наглядности...может быть проще будет
26 studentca
 
16.10.11
13:07
ну да ставлю точку останова..потом начать отладку
27 studentca
 
16.10.11
13:08
и смотрю вычислить выражение..меня учили так
28 Мимохожий Однако
 
16.10.11
13:10
Когда открыла поле Вычислить вставь код ВыборкаСтрок и найди кнопочку для просмотра таблицы. Зеленого цвета. По этой кнопке откроешь получившуюся таблицу. В ней нет поля Номенклатура, к которому потом обращаешься.
29 Мимохожий Однако
 
16.10.11
13:14
Встань на строчку с выражением в окне отладки и нажми F2 (показать значения в одном окне)
30 Мимохожий Однако
 
16.10.11
13:14
*Показать значение в отдельном окне
31 studentca
 
16.10.11
13:16
Он переходит на строку

Для Каждого ВыборкаСтрок Из ЗапросТовары Цикл


// Выводим многострочную часть докмента
   ОбластьМакета = Макет.ПолучитьОбласть("Строка");
   Для Каждого ВыборкаСтрок Из ЗапросТовары Цикл

       Если НЕ ЗначениеЗаполнено(ВыборкаСтрок.Номенклатура) Тогда
           Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
           Продолжить;
       КонецЕсли;
32 Мимохожий Однако
 
16.10.11
13:19
Повторяю :))
В окне отладчика в поле Выражение набери ВыборкаСтрок. Потом кнопка Рассчитать. Потом встать на строку в поле Результат и кнопка F2. Убедись, что есть поле Номенклатура.
33 studentca
 
16.10.11
13:23
Не знаю почему, но у меня эта кнопка не действует сейчас
34 studentca
 
16.10.11
13:23
Свойство    Значение    Тип
ВыборкаСтрок.Номенклатура    {(1)}: Значение не является значением объектного типа (Номенклатура)
35 studentca
 
16.10.11
13:24
и все больше ничего не могу получить
36 Мимохожий Однако
 
16.10.11
13:24
Попробуй теперь набрать ЗапросТовары в окошке. Подсказку тебе дали в (13). Не может быть поля в этой коллекции
37 studentca
 
16.10.11
13:32
Нет у меня также не получается посмотреть апросТовары ..эта кнопка не действует.
38 studentca
 
16.10.11
13:35
вот в 13 сообщении мне писали "в таблице значений ЗапросТовары остается только колонка "ТоварНаименование". Но у меня должны быть все колонки...может быть я не правильно делаю...И мне нужно работать тогда не с ТЗ а с Табличной частью просто?Как Вы думаете?
39 Мимохожий Однако
 
16.10.11
13:36
Не повезло тебе... Читаешь через строчку.
Ладно. Попробуй
ЗапросТовары.Свернуть("ТоварНаименование")
заменить на
ЗапросТовары.Свернуть("ТоварНаименование,Номенклатура")
..
40 БибиГон
 
16.10.11
13:36
неверно сворачиваешь
41 Мимохожий Однако
 
16.10.11
13:39
(38) Когда таблица сворачивается, то поля, не указанные при свертке пропадают. Об этом в (13) и было написано.
Самый простой путь - это обратиться к табличной части документа, выгрузить в таблицу значений данные и добавить колонку "ТоварНаименование". Эту колонку заполнить из реквизита "Номенклатурная группа". Потом свернуть по полю "ТоварНаименование" с полями "Количество, Сумма". и вывести в свою табличку с расчетом цены.
42 studentca
 
16.10.11
13:48
Вот

//Исправления  создание временной таблицы  и помещение туда данных
   МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
   Запрос = Новый Запрос;
   Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура
       |ПОМЕСТИТЬ ВременнаяТаблица
       |{ВЫБРАТЬ
       |    Номенклатура.*}
       |ИЗ
       |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары";

   Результат = Запрос.Выполнить();

   
   //Исправление
   //Исправление помещаю номенклатурную группу    
           Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    РеализацияТоваровУслугТовары.Номенклатура.НоменклатурнаяГруппаЗатрат.Наименование КАК ТоварНаименование
       |{ВЫБРАТЬ
       |    ТоварНаименование.*}
       |ИЗ
       |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
       |{ГДЕ
       |    РеализацияТоваровУслугТовары.Номенклатура.НоменклатурнаяГруппаЗатрат.*}";

   Результат = Запрос.Выполнить().Выгрузить();

   //Исправление

   
   //Исправление
   
   ЗапросТовары.Свернуть("ТоварНаименование", "Количество, Сумма");
   
   //Исправление


Но опять выдает ошибку

{Обработка.ПечатьТТН.Форма.Форма.Форма(447)}: Поле объекта не обнаружено (Номенклатура)
       Если НЕ ЗначениеЗаполнено(ВыборкаСтрок.Номенклатура) Тогда
43 БибиГон
 
16.10.11
13:49
ЗапросТовары.Свернуть("ТоварНаименование, Номенклатура", "Количество, Сумма");
44 Мимохожий Однако
 
16.10.11
13:49
:))) "ТоварНаименование", "Количество, Сумма" где здесь поле "Номенклатура"
45 studentca
 
16.10.11
13:51
теперь выдает такую ошибку

{Обработка.ПечатьТТН.Форма.Форма.Форма(487)}: Поле объекта не обнаружено (КоличествоМест)
       Мест        = ВыборкаСтрок.КоличествоМест;
46 БибиГон
 
16.10.11
13:53
не судьба :)
47 Мимохожий Однако
 
16.10.11
13:53
Попробуй вот так
        ВЫБРАТЬ
   РеализацияТоваровУслугТовары.Номенклатура.НоменклатурнаяГруппа КАК НоменклатураНоменклатурнаяГруппа,
   СУММА(РеализацияТоваровУслугТовары.Сумма) КАК Сумма,
   СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество
ИЗ
   Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
   РеализацияТоваровУслугТовары.Ссылка = &ТекДокумент

СГРУППИРОВАТЬ ПО
   РеализацияТоваровУслугТовары.Номенклатура.НоменклатурнаяГруппа

УПОРЯДОЧИТЬ ПО
   НоменклатураНоменклатурнаяГруппа
48 Мимохожий Однако
 
16.10.11
13:55
Закомментируй все ошибочные строчки
49 studentca
 
16.10.11
14:01
Он выдает такую ошибку...ее я не могу закомментироавть...Мне нужно что бы он выдавал Сумму

{Обработка.ПечатьТТН.Форма.Форма.Форма(474)}: Поле объекта не обнаружено (СуммаНДС)
       СуммаСНДС   = Окр((ВыборкаСтрок.Сумма + ?(Шапка.СуммаВключаетНДС, 0, ВыборкаСтрок.СуммаНДС)), 2);
50 Мимохожий Однако
 
16.10.11
14:36
Не можешь закомментировать или не хочешь? Добейся, чтобы у тебя получалась печатная форма без ошибок. А потом пойдешь по каждой закомментированной строке и добавишь правильный код.
51 studentca
 
25.10.11
20:39
спасибо всем за помощь...у меня все получилось
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn