Форум программистов, компьютерный форум, киберфорум
1С
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.63/35: Рейтинг темы: голосов - 35, средняя оценка - 4.63
1 / 1 / 0
Регистрация: 18.01.2024
Сообщений: 31
1C 8.x

Создание печатных форм в 1С

18.01.2024, 11:29. Показов 9396. Ответов 63
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, уважаемые профессионалы 1С. Можете мне помочь в решении двух вопросов. Хочу разобраться, я новичок в 1С.
Создаю на форме кнопку, которая при нажатии открывает выбор сортировки при печати. Далее после нажатия на эту кнопку должна отработать команда по выводу Макета на печать, но в итоге получаю пустую таблицу. Есть еще один момент, который я не понимаю как должен выглядеть в коде. Нужно встроенную функцию ДлинаСтроки заменить на альтернативную. Мысли есть сделать через
"Выбор
Когда ВЫРАЗИТЬ(Наименование КАК СТРОКА(0)) = Наименование Тогда
0 Иначе
Выбор ..."
Но длина наименования 100 символов. Хотела сделать через рекурсию, где базовый случай это если длина достигает 0, то возвращается 0 индекс, иначе из Длина - 1, но куда вставлять эту функцию и как ее связать с запросом, я не придумала.

Помогите, пожалуйста, последовательно разобраться в теме.

Вот код, который отражается на форме

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
&НаКлиенте
Процедура Печать(Команда)
    
    СписокВыбора = Новый СписокЗначений; 
    СписокВыбора.Добавить("По длине наименования"); 
    СписокВыбора.Добавить("По наименованию товара");
    СписокВыбора.Добавить("По цене");
    
    ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения("ПечатьПослеВыбораСортировки", ЭтотОбъект);
    
    ПоказатьВыборИзСписка(ОписаниеОповещенияОЗакрытии, СписокВыбора);
        
КонецПроцедуры                                     
 
&НаКлиенте
Процедура ПечатьПослеВыбораСортировки(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт
    
    Если ВыбранныйЭлемент = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Показать();
    
    ПечатьНаСервере(ТабДок, Объект.Ссылка, ВыбранныйЭлемент.Значение);
    
КонецПроцедуры
 
&НаСервере
Процедура ПечатьНаСервере(ТабДок, ПараметрКоманды, ВариантСортировки) Экспорт
    
    Документы.Клиент.Печать(ТабДок, ПараметрКоманды, ВариантСортировки);
    
КонецПроцедуры
Код в модуле Менеджера

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
Процедура Печать(ТабДок, Ссылка, ВариантСортировки) Экспорт
    //{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
    Макет = Документы.Клиент.ПолучитьМакет("ВариантСортировки");  
    Запрос = Новый Запрос; 
    Если ВариантСортировки = "По длине наименования" Тогда
        Запрос.Текст =
        "ВЫБРАТЬ
        |   Покупатель.Клиент КАК Клиент,
        |   Покупатель.Дата КАК Дата,
        |   Покупатель.Товары.(
        |       Товар КАК Товар,
        |       Цена КАК Цена,
        |       Количество КАК Количество,
        |       Сумма КАК Сумма
        |   ) КАК Товары,
        |   Покупатель.Номер КАК Номер
        |ИЗ
        |   Документ.Клиент КАК Покупатель
        |ГДЕ
        |   Покупатель.Ссылка В (&Ссылка)
        |
        |УПОРЯДОЧИТЬ ПО
        |   ДинаСтроки(Товар)"; 
    ИначеЕсли ВариантСортировки = "По цене" Тогда   
        Запрос.Текст =
        "ВЫБРАТЬ
        |   Покупатель.Клиент КАК Клиент,
        |   Покупатель.Дата КАК Дата,
        |   Покупатель.Товары.(
        |       Товар КАК Товар,
        |       Цена КАК Цена,
        |       Количество КАК Количество,
        |       Сумма КАК Сумма
        |   ) КАК Товары,
        |   Покупатель.Номер КАК Номер
        |ИЗ
        |   Документ.Клиент КАК Покупатель
        |ГДЕ
        |   Покупатель.Ссылка В (&Ссылка)
        |
        |УПОРЯДОЧИТЬ ПО
        |   Цена ВОЗР";         
    ИначеЕсли ВариантСортировки = "По наименованию товара" Тогда   
        Запрос.Текст =
        "ВЫБРАТЬ
        |   Покупатель.Клиент КАК Клиент,
        |   Покупатель.Дата КАК Дата,
        |   Покупатель.Товары.(
        |       Товар КАК Товар,
        |       Цена КАК Цена,
        |       Количество КАК Количество,
        |       Сумма КАК Сумма
        |   ) КАК Товары,
        |   Покупатель.Номер КАК Номер
        |ИЗ
        |   Документ.Клиент КАК Покупатель
        |ГДЕ
        |   Покупатель.Ссылка В (&Ссылка)
        |
        |УПОРЯДОЧИТЬ ПО
        |   Товар ВОЗР";  
    Иначе
        Запрос.Текст =
        "ВЫБРАТЬ
        |   Покупатель.Клиент КАК Клиент,
        |   Покупатель.Дата КАК Дата,
        |   Покупатель.Товары.(
        |       Товар КАК Товар,
        |       Цена КАК Цена,
        |       Количество КАК Количество,
        |       Сумма КАК Сумма
        |   ) КАК Товары,
        |   Покупатель.Номер КАК Номер
        |ИЗ
        |   Документ.Клиент КАК Покупатель
        |ГДЕ
        |   Покупатель.Ссылка В (&Ссылка)
        |
        |УПОРЯДОЧИТЬ ПО
        |   Товар УБЫВ";  
    КонецЕсли;
    
    Запрос.УстановитьПараметр("Ссылка", Ссылка);    
    Выборка = Запрос.Выполнить().Выбрать(); 
    
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
    ОбластьТовары = Макет.ПолучитьОбласть("Товары");
    Подвал = Макет.ПолучитьОбласть("Подвал");
 
    ТабДок.Очистить();
 
    ВставлятьРазделительСтраниц = Ложь;
    Пока Выборка.Следующий() Цикл
        Если ВставлятьРазделительСтраниц Тогда
            ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
 
        ТабДок.Вывести(ОбластьЗаголовок);
 
        Шапка.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Шапка, Выборка.Уровень());
 
        ТабДок.Вывести(ОбластьТоварыШапка);
        ВыборкаТовары = Выборка.Товары.Выбрать();
        Пока ВыборкаТовары.Следующий() Цикл
            ОбластьТовары.Параметры.Заполнить(ВыборкаТовары);
            ТабДок.Вывести(ОбластьТовары, ВыборкаТовары.Уровень());
        КонецЦикла;
 
        Подвал.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Подвал);
 
        ВставлятьРазделительСтраниц = Истина;
    КонецЦикла;
    //}}
КонецПроцедуры
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.01.2024, 11:29
Ответы с готовыми решениями:

Создание новых печатных форм или редактирование старых 8.2
Доброго времени суток, уважаемые дамы и господа! Пишу вам, так как в данном вопросе плох чуть менее, чем полностью. Мой знакомый попросил...

Макеты печатных форм
Добрый день!Не могли бы Вы посоветовать как мне лучше поступить? В программе Управление Торговлей 11 в пользовательском режиме в...

Параметры печатных форм
можно ли передать параметр их внешней обработки во внешнюю печатную форму. Если да, то как? если конкретней, то в БГУ из обработки...

63
Модератор
Эксперт 1С
 Аватар для Yulunga
4778 / 973 / 270
Регистрация: 22.04.2013
Сообщений: 6,668
Записей в блоге: 1
19.01.2024, 07:36
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от polax Посмотреть сообщение
где сказано про оператор СтрДлина, например, вот это
не читайте до обеда газет
вондерлэнд наше всё

Цитата Сообщение от polax Посмотреть сообщение
// 4. Вывод ТЗ в макет
Для каждого Стр Из ТЗ Цикл
ОбластьТовары.Параметры.Заполнить(Стр);
ТабДок.Вывести(ОбластьТовары);
тут может таиться демон. лучше каждый раз в цыкле получать заного область
областьтовары = Макет.ПолучитьОбласть("Товары");
0
Эксперт 1С
3041 / 263 / 78
Регистрация: 12.11.2015
Сообщений: 1,577
19.01.2024, 08:38
Цитата Сообщение от polax Посмотреть сообщение
Проверяю на 8.3.23, на 8.3.22 - не работает СтрДлина, консоль выдает ошибку. А вот ДлинаСтроки возращает то что надо.
версия платформы и режим совместимости. У нас на версии 8.3.18.1616, но с режимом совместимости Версия 8.2.13 в коде СтрЗаменить(), СтрШаблон() и т.д. бьет в ошибку(((((
0
Эксперт 1С
7181 / 1783 / 650
Регистрация: 16.01.2015
Сообщений: 7,359
19.01.2024, 10:15
Цитата Сообщение от Yulunga Посмотреть сообщение
не читайте до обеда газет
Да я и знал и был уверен, что ДлинаСтроки, но ТС же утверждает, что у нее заработало на СтрДлина
0
0 / 0 / 0
Регистрация: 19.01.2024
Сообщений: 6
19.01.2024, 12:19
Юлия Родина, Привет. если будут вопросы по остальным пунктам тестового задания пиши) у меня такое же задание и буду рад помочь.
0
1 / 1 / 0
Регистрация: 18.01.2024
Сообщений: 31
19.01.2024, 18:51  [ТС]
Спасибо, по остальным вопросов нет, там легко. Были вопросы только по печати, потому что ни разу не сталкивалась

Добавлено через 4 часа 29 минут
MuratKylan, привет, а можешь пояснить как ты сделал, чтобы при добавлении элемента в табличную. часть документа, но не записывая сам документ этот элемент попадал в табличную часть?
0
0 / 0 / 0
Регистрация: 19.01.2024
Сообщений: 6
19.01.2024, 22:04
Ты про часть где цену вытягивал? при выборе товара чтобы он и цену вытягивал.

я кстати так и не сделал форму(
0
1 / 1 / 0
Регистрация: 18.01.2024
Сообщений: 31
19.01.2024, 22:35  [ТС]
Нет, там веселее. Если клиент занес изменения или добавление в табличную часть формы, но не записал документ, нужно, чтобы выводилась на печать эта информация. То есть надо получить данные с формы со стороны Клиента. и передать их в процедуру печати на Сервер. Теоретически я понимаю как это сделать, практически у меня не получается. Выгрузить в Таблицу Значений нельзя, так как она работает только на Сервере. Пробую через процедуру, но не пойму как ее вставить в процедуру печати и в дальнейшем обрабатывать результаты по ней.

1C
1
2
3
4
5
6
7
8
9
&НаКлиенте
Процедура ПолучитьДанныеТабличнойЧасти(ДокументСсылка)
    МетаданныеТабличнойЧасти = Метаданные.НайтиПоТипу(ДокументСсылка.Метаданные().ТабличныеЧасти["Товары"].Имя);
    ДанныеТабличнойЧасти = Новый СписокЗначений;
    ДанныеТабличнойЧасти.Добавить(МетаданныеТабличнойЧасти.Поля["Товар"].Имя, ДокументСсылка.Товары[0].Товар);    
    ДанныеТабличнойЧасти.Добавить(МетаданныеТабличнойЧасти.Поля["Цена"].Имя, ДокументСсылка.Товары[0].Цена);
    ДанныеТабличнойЧасти.Добавить(МетаданныеТабличнойЧасти.Поля["Количество"].Имя, ДокументСсылка.Товары[0].Количество);
    ДанныеТабличнойЧасти.Добавить(МетаданныеТабличнойЧасти.Поля["Сумма"].Имя, ДокументСсылка.Товары[0].Сумма); 
КонецПроцедуры;
0
Эксперт 1С
7181 / 1783 / 650
Регистрация: 16.01.2015
Сообщений: 7,359
19.01.2024, 22:47
Цитата Сообщение от Юлия Родина Посмотреть сообщение
Выгрузить в Таблицу Значений нельзя, так как она работает только на Сервере
И? Что мешает с сервера выгрузить ТЧ в ТЗ? Не запросом получить данные, а просто типа ТЗ = Объект.ТЧ.Выгрузить()?
0
1 / 1 / 0
Регистрация: 18.01.2024
Сообщений: 31
19.01.2024, 22:50  [ТС]
так данные, которые не записаны еще их же на сервере нет и ТЗ = Объект.ТЧ.Выгрузить() у меня не работает
0
0 / 0 / 0
Регистрация: 19.01.2024
Сообщений: 6
19.01.2024, 22:51
о боже))) это типа вторая часть тестовых заданий что ли?
0
1 / 1 / 0
Регистрация: 18.01.2024
Сообщений: 31
19.01.2024, 22:53  [ТС]
MuratKylan, да, это вторая часть балета
0
0 / 0 / 0
Регистрация: 19.01.2024
Сообщений: 6
19.01.2024, 23:00
поможешь мне с печатью? у меня только печать осталось сделать
0
1 / 1 / 0
Регистрация: 18.01.2024
Сообщений: 31
19.01.2024, 23:14  [ТС]
MuratKylan, это самое сложное из всех заданий. в переписке посмотри, там есть почти готовый код, его только надо немного доработать, чтобы номера при сортировки не сбивались

Добавлено через 4 минуты
polax, вот попыталась исправить как ты предложил. Это на форме

1C
1
2
3
4
5
6
7
&НаСервере
Процедура ПечатьНаСервере(ТабДок, ПараметрКоманды, ВариантСортировки) Экспорт    
    
    ТабличнаяЧасть = Объект.Ссылка.Товары.Выгрузить();
    Документы.РеализацияТоваров.Печать(ТабДок, ПараметрКоманды, ВариантСортировки, ТабличнаяЧасть);
    
КонецПроцедуры
В модуле менеджера

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Процедура Печать(ТабДок, Ссылка, ВариантСортировки, ТабличнаяЧасть) Экспорт
/// Здесь код опускаю, там без изменений
ТЗ = Новый ТаблицаЗначений; 
        ТЗ.Колонки.Добавить("НомерСтроки", Новый ОписаниеТипов ("Число", Новый КвалификаторыЧисла(15, 0))); 
        ТЗ.Колонки.Добавить("Товар", Новый ОписаниеТипов("СправочникСсылка.Товары"));
        ТЗ.Колонки.Добавить("Цена", Новый ОписаниеТипов ("Число", Новый КвалификаторыЧисла(15, 2)));
        ТЗ.Колонки.Добавить("Количество", Новый ОписаниеТипов ("Число", Новый КвалификаторыЧисла(15, 3))); 
        ТЗ.Колонки.Добавить("Сумма", Новый ОписаниеТипов ("Число", Новый КвалификаторыЧисла(15, 2)));
        ТЗ.Колонки.Добавить("ДлинаНаименования", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(3, 0)), "Длина наименования");
        
        
        ВыборкаТовары = ТабличнаяЧасть.Выбрать();   
        Пока ВыборкаТовары.Следующий() Цикл
            НовСтр = ТЗ.Добавить();
            ЗаполнитьЗначенияСвойств(НовСтр, ВыборкаТовары); 
            НовСтр.ДлинаНаименования = Число(СтрДлина(НовСтр.Товар.Наименование));
        КонецЦикла;
Но я получаю ошибку Метод объекта не обнаружен (Выбрать)
{Документ.РеализацияТоваров.МодульМенедж ера(48)}: ВыборкаТовары = ТабличнаяЧасть.Выбрать();

Добавлено через 6 минут
Извиняюсь, ступила, когда идет Объект.Ссылка.Товары.Выгрузить() - это уже готовая Таблица значений.
0
Эксперт 1С
7181 / 1783 / 650
Регистрация: 16.01.2015
Сообщений: 7,359
19.01.2024, 23:15
Цитата Сообщение от Юлия Родина Посмотреть сообщение
ВыборкаТовары = ТабличнаяЧасть.Выбрать();
Не! Мне эту хрень не приписывайте. Я такое не мог написать. ))) Курите циклы, например Для Каждого. И не в модуле менеджера а именно на клиенте создавайте ТЗ с данными ТЧ. Дальше .... пора спать )))
0
1 / 1 / 0
Регистрация: 18.01.2024
Сообщений: 31
19.01.2024, 23:29  [ТС]
в общем, если делать через процедуру, то печать выводит только те данные, которые записаны, а не которые только заведены

1C
1
2
3
4
5
6
7
&НаСервере
Процедура ПечатьНаСервере(ТабДок, ПараметрКоманды, ВариантСортировки) Экспорт    
    
    ТабличнаяЧасть = Объект.Ссылка.Товары.Выгрузить();
    Документы.РеализацияТоваров.Печать(ТабДок, ПараметрКоманды, ВариантСортировки, ТабличнаяЧасть);
    
КонецПроцедуры
0
0 / 0 / 0
Регистрация: 19.01.2024
Сообщений: 6
20.01.2024, 00:51
Юлия Родина, покажи мне код который в печатной форме

Добавлено через 55 минут
кстати там у тебя код в модуле менеджера указан сортировка по длине наименования. (ДлинаСтроки) в условиях задачи указано что не использовать.
Для решения данного пункта нельзя:

- использовать в запросе конструкцию ДлинаСтроки()

- добавлять реквизит ДлинаНаименования в справочник Товары
0
Модератор
Эксперт 1С
 Аватар для Yulunga
4778 / 973 / 270
Регистрация: 22.04.2013
Сообщений: 6,668
Записей в блоге: 1
20.01.2024, 05:05
Цитата Сообщение от MuratKylan Посмотреть сообщение
у тебя код в модуле менеджера
Цитата Сообщение от MuratKylan Посмотреть сообщение
нельзя:
- использовать в запросе
В каком месте ошибка?
0
1 / 1 / 0
Регистрация: 18.01.2024
Сообщений: 31
20.01.2024, 07:41  [ТС]
MuratKylan, А я и не использовала ДлинаСтроки, СтрДлина - это альтернатива, просто в разных версиях они менялись
0
0 / 0 / 0
Регистрация: 19.01.2024
Сообщений: 6
20.01.2024, 08:10
Я понял принял) просто я думал что запрет на сам принцип по длине.
0
1 / 1 / 0
Регистрация: 18.01.2024
Сообщений: 31
20.01.2024, 14:21  [ТС]
В общем пробую такой вариант. Создала процедуру на форме ПередЗаписью, туда прописала

1C
1
2
ТабличнаяЧасть = Объект.Товары;   
ПередатьДанныеНаСервер(ТабличнаяЧасть);
Процедура ПередатьДанныеНаСервер передает эту табличную часть в процедуру ПечатьНаСервере

Если я ставлю точку остановы и смотрю какие данные я выгружаю через Объект.Товары, то я вижу, что это тип Таблица Значений, но когда я обрабатываю печать, пишется ошибка

Итератор для значения не определен
{Документ.РеализацияТоваров.МодульМенедж ера(47)}:Для Каждого Стр Из ТабличнаяЧасть Цикл
{Документ.РеализацияТоваров.Форма.ФормаД окумента.Форма(69)}:Документы.Реализация Товаров.Печать(ТабДок, ПараметрКоманды, ВариантСортировки, ТабличнаяЧасть);
{Документ.РеализацияТоваров.Форма.ФормаД окумента.Форма(60)}:ПечатьНаСервере(ТабД ок, Объект.Ссылка, ВыбранныйЭлемент.Значение, "ТабличнаяЧасть");

[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользован

Ошибка возникает в модуле менеджера вот в этой строчке
1C
1
2
3
4
5
6
7
8
9
10
11
12
                ТЗ = Новый ТаблицаЗначений; 
        ТЗ.Колонки.Добавить("НомерСтроки", Новый ОписаниеТипов ("Число", Новый КвалификаторыЧисла(15, 0))); 
        ТЗ.Колонки.Добавить("Товар", Новый ОписаниеТипов("СправочникСсылка.Товары"));
                ТЗ.Колонки.Добавить("Цена", Новый ОписаниеТипов ("Число", Новый КвалификаторыЧисла(15, 2)));
                ТЗ.Колонки.Добавить("Количество", Новый ОписаниеТипов ("Число", Новый КвалификаторыЧисла(15, 3))); 
                ТЗ.Колонки.Добавить("Сумма", Новый ОписаниеТипов ("Число", Новый КвалификаторыЧисла(15, 2)));   
        ТЗ.Колонки.Добавить("ДлинаНаименования", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(3, 0)), "Длина наименования");
        
        Для Каждого Стр Из ТабличнаяЧасть Цикл
            ЗаполнитьЗначенияСвойств(ТЗ.Добавить(), Стр); 
            ТЗ.Добавить().ДлинаНаименования = Число(СтрДлина(ТЗ.Добавить().Товар.Наименование));
        КонецЦикла;
Я хотела из одной таблицы значения перенести данные в другую таблицу значений, добавив в нее Колонку "ДлинаНаименования", чтобы потом можно было сортировать по ней.

Можно, конечно опустить создание новой ТЗ и добавить в ТабличнаяЧасть дополнительной колонки и заполнить ее в цикле, но все равно выходит ошибка, что ТабличнаяЧасть в процессе по ходу поменяла тип.

Добавлено через 2 часа 3 минуты
Есть еще вариант, который я думаю уже ближе к правильному.

В общем модуле создала процедуру НаСервере обработки полученной Табличной части. Выглядет вот так.

1C
1
2
3
4
5
6
7
8
9
10
11
12
ТЗ = Новый ТаблицаЗначений; 
        ТЗ.Колонки.Добавить("НомерСтроки", Новый ОписаниеТипов ("Число", Новый КвалификаторыЧисла(15, 0))); 
        ТЗ.Колонки.Добавить("Товар", Новый ОписаниеТипов("СправочникСсылка.Товары"));
                ТЗ.Колонки.Добавить("Цена", Новый ОписаниеТипов ("Число", Новый КвалификаторыЧисла(15, 2)));
                ТЗ.Колонки.Добавить("Количество", Новый ОписаниеТипов ("Число", Новый КвалификаторыЧисла(15, 3))); 
                ТЗ.Колонки.Добавить("Сумма", Новый ОписаниеТипов ("Число", Новый КвалификаторыЧисла(15, 2)));   
        ТЗ.Колонки.Добавить("ДлинаНаименования", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(3, 0)), "Длина наименования");
        
        Для Каждого Стр Из ТабличнаяЧасть Цикл
            ЗаполнитьЗначенияСвойств(ТЗ.Добавить(), Стр); 
            ТЗ.Добавить().ДлинаНаименования = Число(СтрДлина(ТЗ.Добавить().Товар.Наименование));
        КонецЦикла;
Передаю ее обратно в процедуру ПередЗаписью

Следующим образом

1C
1
2
3
4
5
6
7
8
&НаКлиенте
Процедура ПередЗаписью(Отказ, СтандартнаяОбработка) Экспорт
    ТабличнаяЧасть = Объект.Товары; 
    ОбработаннаяТабличнаяЧасть = ПолучитьТабличнуюЧастьНаКлиенте.ОбработатьТовары(ТабличнаяЧасть);    
    ПечатьНаСервере(Объект.Ссылка, "ПараметрКоманды", "ВариантСортировки", ОбработаннаяТабличнаяЧасть);    
    СтандартнаяОбработка = Истина;
 
КонецПроцедуры
Но все равно получаю ошибку

Значение не является значением объектного типа (Сортировать)
{Документ.РеализацияТоваров.МодульМенедж ера(44)}:ТабличнаяЧасть.Сортировать("Тов ар ВОЗР");
{Документ.РеализацияТоваров.Форма.ФормаД окумента.Форма(69)}:Документы.Реализация Товаров.Печать(ТабДок, ПараметрКоманды, ВариантСортировки, ТабличнаяЧасть);
{Документ.РеализацияТоваров.Форма.ФормаД окумента.Форма(60)}:ПечатьНаСервере(ТабД ок, Объект.Ссылка, ВыбранныйЭлемент.Значение, "ТабличнаяЧасть");

[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]

Добавлено через 3 часа 43 минуты
Ошибку с сортировкой вроде бы исправила. Но почему-то теперь не могу записать в сам ТабличныйДокумент.

Вот в эту процедуру вставила процедуру ПередЗаписью, которая обрабатывает табличную часть, в результате чего у меня стали недоступны в модуле менеджера методы для ТабДок такие как Очистить, Вывести

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
&НаКлиенте
Процедура ПечатьПослеВыбораСортировки(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт
    
    Если ВыбранныйЭлемент = Неопределено Тогда
        Возврат;
    КонецЕсли;       
    
    ПередЗаписью("Отказ", "СтандартнаяОбработка");
        
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Ложь;
    ТабДок.ОтображатьЗаголовки = Ложь;  
    
    ПечатьНаСервере(ТабДок, Объект.Ссылка, ВыбранныйЭлемент.Значение, "ТабличнаяЧасть"); 
 
    ТабДок.Показать();
   
КонецПроцедуры
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.01.2024, 14:21

Фолдер (папка) в списке печатных форм
Доброе утро. для одного документа создано огромное количество печатных форм (примерно 20) теперь ещё хотят добавить 8 поэтому...

Перенос печатных форм с КА в УТ 11
Люди в общем вопрос такой, у нас на предприятии стоит 8.2 и КА. И в нашей КА есть несколько макетов которые надо бы забрать и прицепить их...

Отказ печатных форм
Если глПолучитьПолномочие<<?>>("РазрешитьРедактированиеТаблиц") = 0 Тогда {C:\Путь к базе\EXTFORMS\PRNFORMS\SALE.ERT(94)}: Функция не...

Удаление ячеек печатных форм
Ребят есть такой вопрос, как мне программно удалить ячейки. Т.е. допустим есть счет, и поля сумма без скидки и скидка, каким методом их...

Формируется несколько печатных форм
Здравствуйте. Для ЗУП 3.1 создал внешнюю обработку с шестью печатными формами. Подключил их к документу: "Договоры (работы,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru