Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
alexander.p

Внешняя печатная форма для печати ценников из установки цен

10.09.2011, 21:27. Показов 4927. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Изменил обработку стандартную печать ценников под себя и использую ее как внешнюю обработку. Версия у меня базовая, поэтому стандартную изменить не могу. При установке цен хочу ее прикрутить как внешнюю печатную форму. Создаю новую обработку, Добавляю СсылкаНаОбъект, присваиваю ему ДокументыСсылки.ТипыЦенНоменклатуры и объединяю с моей обработкой ценника. Вот он код, впринципе стандартный код печати ценников
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
 #Если Клиент Тогда
 
// Процедура заполняет построитель отчета.
//
Процедура ЗаполнитьПостроительОтчета() Экспорт
 
    ТекстЗапроса = "
    |ВЫБРАТЬ
    |   ИСТИНА КАК Печать,
    |   СпрНоменклатура.Номенклатура КАК Номенклатура,
    |   СпрНоменклатура.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |   СпрНоменклатура.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
    |   0 КАК Цена,
    |   1 КАК Количество
    |ИЗ
    |   (ВЫБРАТЬ
    |       СпрНоменклатура.Ссылка КАК Номенклатура,
    |       ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК ХарактеристикаНоменклатуры
    |   ИЗ
    |       Справочник.Номенклатура КАК СпрНоменклатура
    |   ГДЕ НЕ СпрНоменклатура.ЭтоГруппа
    |   {ГДЕ
    |       СпрНоменклатура.Ссылка.* КАК Номенклатура}
    |   ОБЪЕДИНИТЬ ВСЕ
    |   ВЫБРАТЬ
    |       СпрХарактеристики.Владелец,
    |       СпрХарактеристики.Ссылка
    |   ИЗ
    |       Справочник.ХарактеристикиНоменклатуры КАК СпрХарактеристики
    |   {ГДЕ
    |       СпрХарактеристики.Владелец.* КАК Номенклатура,
    |       СпрХарактеристики.Ссылка.* КАК ХарактеристикаНоменклатуры}
    |   ) КАК СпрНоменклатура
    |";
    
    Если ТолькоИмеющиесяВНаличии Тогда
        ТекстЗапроса = ТекстЗапроса + "
        |ЛЕВОЕ СОЕДИНЕНИЕ
        |   (ВЫБРАТЬ
        |       НаСкладе.Номенклатура,
        |       НаСкладе.ХарактеристикаНоменклатуры,
        |       СУММА(НаСкладе.Количество) КАК Количество
        |   ИЗ
        |       (ВЫБРАТЬ
        |           НаСкладе.Номенклатура,
        |           НаСкладе.ХарактеристикаНоменклатуры,
        |           НаСкладе.КоличествоОстаток КАК Количество
        |       ИЗ
        |           РегистрНакопления.ТоварыНаСкладах.Остатки(, {Номенклатура.* КАК Номенклатура,
        |              ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
        |              Склад.* КАК Склад}) КАК НаСкладе
        |       ОБЪЕДИНИТЬ ВСЕ
        |       ВЫБРАТЬ
        |           ВРознице.Номенклатура,
        |           ВРознице.ХарактеристикаНоменклатуры,
        |           ВРознице.КоличествоОстаток КАК Количество
        |       ИЗ
        |           РегистрНакопления.ТоварыВРознице.Остатки(, {Номенклатура.* КАК Номенклатура,
        |              ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
        |              Склад.* КАК Склад}) КАК ВРознице
        |       ОБЪЕДИНИТЬ ВСЕ
        |       ВЫБРАТЬ
        |           ВНТТ.Номенклатура,
        |           ВНТТ.ХарактеристикаНоменклатуры,
        |           ВНТТ.КоличествоОстаток КАК Количество
        |       ИЗ
        |           РегистрНакопления.ТоварыВНТТ.Остатки(, {Номенклатура.* КАК Номенклатура,
        |              ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
        |              Склад.* КАК Склад}) КАК ВНТТ
        |       ) КАК НаСкладе
        |   СГРУППИРОВАТЬ ПО
        |       НаСкладе.Номенклатура,
        |       НаСкладе.ХарактеристикаНоменклатуры
        |   ) КАК НаСкладе
        |ПО
        |   СпрНоменклатура.Номенклатура = НаСкладе.Номенклатура
        |   И СпрНоменклатура.ХарактеристикаНоменклатуры = НаСкладе.ХарактеристикаНоменклатуры
        |ГДЕ
        |   ЕСТЬNULL(НаСкладе.Количество, 0) > 0
        |";
    КонецЕсли;
 
    ТекстЗапроса = ТекстЗапроса + "
    |УПОРЯДОЧИТЬ ПО
    |   СпрНоменклатура.Номенклатура.Наименование,
    |   СпрНоменклатура.ХарактеристикаНоменклатуры.Наименование
    |";
 
    // Соответствие имен полей в запросе и их представлений в отчете.
    СтруктураПредставлениеПолей = Новый Структура(
    "Номенклатура,   ХарактеристикаНоменклатуры,    Склад",
    "Номенклатура", "Характеристика номенклатуры", "Склад");
 
    ПостроительОтчета.Текст = ТекстЗапроса;
 
    ПостроительОтчета.ЗаполнитьНастройки();
 
    // Создадим список доступных отборов.
    СоответствиеДоступныхОтборов = Новый Соответствие;
    СоответствиеДоступныхОтборов.Вставить("Номенклатура", 0);
    СоответствиеДоступныхОтборов.Вставить("ХарактеристикаНоменклатуры", 0);
    СоответствиеДоступныхОтборов.Вставить("Склад", 0);
 
    Для Каждого ДоступноеПоле Из ПостроительОтчета.ДоступныеПоля Цикл
        Если СоответствиеДоступныхОтборов[ДоступноеПоле.Имя] =Неопределено Тогда
            ДоступноеПоле.Отбор = Ложь;
        Иначе
            ДоступноеПоле.Отбор = Истина;
        КонецЕсли;
    КонецЦикла;
 
    // Создадим массив отборов.
    МассивОтбора = Новый Массив;
    МассивОтбора.Добавить("Номенклатура");
    МассивОтбора.Добавить("ХарактеристикаНоменклатуры");
 
    Если ТолькоИмеющиесяВНаличии Тогда
        МассивОтбора.Добавить("Склад");
    КонецЕсли;
 
    Для Каждого ЭлементОтбора Из МассивОтбора Цикл
        Если ПостроительОтчета.Отбор.Найти(ЭлементОтбора) = Неопределено Тогда
            ПостроительОтчета.Отбор.Добавить(ЭлементОтбора);
        КонецЕсли;
    КонецЦикла;
 
    // Вызовем стандартную процедуру заполнения представлений.
    УправлениеОтчетами.ЗаполнитьПредставленияПолей(СтруктураПредставлениеПолей, ПостроительОтчета);
 
КонецПроцедуры // ЗаполнитьПостроительОтчета()
 
// Процедура перезаполняет цены в табличной части.
//
Процедура ПерезаполнитьЦены() Экспорт
 
    СтруктураЗначений = Новый Структура;
    СтруктураЗначений.Вставить("НовыйТипЦен", ТипЦен);
 
    ЗапросПоЦенам = Ценообразование.СформироватьЗапросПоЦенам(СтруктураЗначений,
       Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатуры,
       Товары.ВыгрузитьКолонку("Номенклатура"),
       РабочаяДата,
       Неопределено).Выгрузить();
    ЗапросПоЦенам.Индексы.Добавить("Номенклатура");
 
    ПустаяХарактеристика = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
    ТипЦенРассчитывается = ТипЦен.Рассчитывается;
 
    СтруктураКурса = МодульВалютногоУчета.ПолучитьКурсВалюты(Валюта, РабочаяДата);
    Курс = СтруктураКурса.Курс;
    Кратность = СтруктураКурса.Кратность;
 
    Для Каждого СтрокаТовара Из Товары Цикл
        ХарактеристикаНоменклатуры = СтрокаТовара.ХарактеристикаНоменклатуры;
 
        СтруктураПоиска = Новый Структура("Номенклатура", СтрокаТовара.Номенклатура);
 
        СтрокиЦен = ЗапросПоЦенам.НайтиСтроки(СтруктураПоиска);
 
        СтрокаБезХарактеристики = Неопределено;
        СтрокаСХарактеристикой = Неопределено;
 
        Для Каждого СтрокаЦен Из СтрокиЦен Цикл
            Если СтрокаЦен.ХарактеристикаНоменклатуры = ПустаяХарактеристика Тогда
                СтрокаБезХарактеристики = СтрокаЦен;
            ИначеЕсли СтрокаЦен.ХарактеристикаНоменклатуры = ХарактеристикаНоменклатуры Тогда
                СтрокаСХарактеристикой = СтрокаЦен;
            КонецЕсли;
        КонецЦикла;
 
        Если СтрокаСХарактеристикой <> Неопределено Тогда
            НайденнаяСтрока = СтрокаСХарактеристикой;
        ИначеЕсли СтрокаБезХарактеристики <> Неопределено Тогда
            НайденнаяСтрока = СтрокаБезХарактеристики;
        Иначе
            НайденнаяСтрока = Неопределено;
        КонецЕсли;
 
        Если (НайденнаяСтрока <> Неопределено) И (НайденнаяСтрока.Цена <> 0) Тогда
            Цена = НайденнаяСтрока.Цена * (1 + ?(ТипЦенРассчитывается, НайденнаяСтрока.ПроцентСкидкиНаценки / 100, 0));
            Цена = Ценообразование.ОкруглитьЦену(Цена, ТипЦен.ПорядокОкругления, ТипЦен.ОкруглятьВБольшуюСторону);
            Цена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(Цена, НайденнаяСтрока.ВалютаЦены, Валюта, Курс, Кратность);
 
            СтрокаТовара.ЕдиницаИзмерения = НайденнаяСтрока.ЕдиницаИзмеренияЦены;
        Иначе
            Цена = 0;
        КонецЕсли;
 
        СтрокаТовара.Цена = Цена;
    КонецЦикла;
 
КонецПроцедуры // ПерезаполнитьЦены()
 
// Функция формирует табличный документ - печатная форма ценника.
//
// Возвращаемое значение:
//  ТабличныйДокумент - сформированный табличный документ или Неопределено, если есть ошибки.
//
Функция ПечатьЦенника() Экспорт
 
    Если НЕ ЗначениеЗаполнено(Организация) Тогда
        Предупреждение("Не выбрана организация!");
        Возврат Неопределено;
    КонецЕсли;
 
    ТабДокумент                     = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Ценник";
    Макет                           = ПолучитьМакет("Ценник");
    ОбластьЦенника                  = Макет.ПолучитьОбласть("Строка|Столбец");
 
    ДатаПечати = РабочаяДата;
 
    ТекСтолбец = 0;
    ТекСтрока  = 0;
 
    Для Каждого СтрокаТаблицы Из Товары Цикл
        Если СтрокаТаблицы.Печать Тогда
            Для Тмп = 1 По СтрокаТаблицы.Количество Цикл
                ОбластьЦенника.Параметры.Заполнить(СтрокаТаблицы);
                ОбластьЦенника.Параметры.НоменклатураНаименование        = СтрокаТаблицы.Номенклатура.НаименованиеПолное;
                ОбластьЦенника.Параметры.ХарактеристикаНаименование      = СтрокаТаблицы.Номенклатура.Артикул;
                ОбластьЦенника.Параметры.ЕдиницаНаименование             = СтрокаТаблицы.ЕдиницаИзмерения;
                ОбластьЦенника.Параметры.Цена                            = ОбщегоНазначения.ФорматСумм(СтрокаТаблицы.Цена, Валюта, "00");
                ОбластьЦенника.Параметры.ДатаПечати                      = ДатаПечати;
                ОбластьЦенника.Параметры.Организация                     = Организация;
                ОбластьЦенника.Параметры.ОрганизацияНаименование         = Организация;
                //ОбластьЦенника.Параметры.НоменклатураСтранаПроисхождения = СтрокаТаблицы.Номенклатура.СтранаПроисхождения;
 
                Если ТекСтолбец = 0 Тогда
                    ТабДокумент.Вывести(ОбластьЦенника);
                Иначе
                    ТабДокумент.Присоединить(ОбластьЦенника);
                КонецЕсли;
 
                ТекСтолбец = ТекСтолбец + 1;
 
                Если ТекСтолбец = 5 Тогда
                    ТекСтрока  = ТекСтрока + 1;
                    ТекСтолбец = 0;
                КонецЕсли;
 
                Если ТекСтрока = 3 Тогда
                    ТекСтрока = 0;
                    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;
 
    ТабДокумент.ТолькоПросмотр = Истина;
 
    Возврат ТабДокумент;
 
КонецФункции // ПечатьЦенника()
 
// Функция выполняет проверку параметров для заполнения цен.
//
// Возвращаемое значение:
//  Булево - Истина, если все параметры заданы.
//
Функция ПроверитьПараметрыЗаполненияЦен(ПечетьБезПроверкиЗаполненияПараметров = Неопределено) Экспорт
 
    Перем РезультатПроверки, СтрокаСообщения;
 
    РезультатПроверки = Истина;
    СтрокаСообщения = "";
    
    Если НЕ ЗначениеЗаполнено(ТипЦен) Тогда
        РезультатПроверки = Ложь;
        СтрокаСообщения = "Не выбран тип цен! Укажите тип цен и повторите перезаполнение цен." + Символы.ПС;
    КонецЕсли;
 
    Если НЕ ЗначениеЗаполнено(Валюта) Тогда
        РезультатПроверки = Ложь;
        СтрокаСообщения = СтрокаСообщения + "Не выбрана валюта!  Укажите валюту и повторите перезаполнение цен.";
    КонецЕсли;
 
    Если НЕ РезультатПроверки И ПечетьБезПроверкиЗаполненияПараметров <> Истина Тогда
        ОбщегоНазначения.СообщитьОбОшибке(СтрокаСообщения);
    КонецЕсли;
    Возврат РезультатПроверки;
 
КонецФункции // ПроверитьПараметрыЗаполненияЦен()
 
#КонецЕсли
Если оставить все так, 1с будет ругаться, что нет функции Печать, переименовываю ПечатьЦенников в Печать, убираю цикл, работает, но просто выдает пустую печатную форму. Как сделать, чтобы появились эти ценники??? Хотя бы вручную прописать данные, пусть и не вылетает окно с подбором, типа цен и т.д. Подскажите, пожалуйста, много времени убил уже, перерыл нет, а ответ найти не могу( Кстати УТ 8.1)

Добавлено через 21 час 43 минуты
Проблема решена)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.09.2011, 21:27
Ответы с готовыми решениями:

Внешняя печатная форма.Установка типа цен
Доброе утро,уважаемый форум. Надеюсь на Вашу помощь: Мой вопрос состоит вот в чем: 1С Управление производственнім предприятием,...

Внешняя печатная форма ценников. ЗАПРОСЫ
День добрый. Я начинающий программист. Есть задача, но знаний не хватает. Прошу помощи. Есть внешняя печатная форма. Мне нужно было...

Внешняя печатная форма для УТ11
Доброго времени суток. создаю внешнюю печ.форму для УТ 11 (печать товарного чека). есть проблема с выборкой из табличной части - Товары. не...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.09.2011, 21:27
Помогаю со студенческими работами здесь

Внешняя Печатная Форма Для Зупа
Делал внешнюю печатная форма к ЗУП к документу &quot;Зарплата к выплате&quot;. Там впринципе всё просто. Формирует список людей в алфавитном порядке....

Внешняя печатная форма для реестра
Здравствуйте, такой вопрос, как думаете, если сделать внешнюю печатную форму для формирования отчета &quot;Реестр документов&quot; для...

8.2, Внешняя печатная форма для Комплексной автоматизации 1.1
Доброго времени суток. Прошу помощи по 1с. Версия платформы: 8.2. Конфигурация: комплексная автоматизация 1.1. Пытаюсь сделать обработку...

Внешняя печатная форма для документа СчетНаОплатуПокупателю
Добрый день! Версия платформы: 8.3.4.437 &quot;Управление торговлей&quot;, редакция 10.3 (10.3.29.1). Создал внешнюю обработку. В ней...

БП 3.0 Внешняя печатная форма для выгрузки ворд
Мне нужно из док. ПоступлениеТоваровУслуг сделать ВПФ договора в ворд. В модуле объекта код: Функция СведенияОВнешнейОбработке()...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru