Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Как параметру в отчете установить значение по умолчанию?

Как параметру в отчете установить значение по умолчанию?

Ответ:
Мне иногда кажется меня не читают.
--- Объединение сообщений, 24 окт 2016 ---
Параметры можно задать только из предопределенных значений.
Вопрос: Как из функции возвратить несколько значений?

Как из функции возвратить несколько значений?
Ответ: ()
у меня самописка
Вопрос: Конвертация данных - Передача параметров в алгоритм

Добрый день.
Делаю конвертацию из 1С77 в 1C8, в ПВД создаю таблицу значений и заполняю поля. Для заполнения одного поля вызываю алгоритм(функцию), которая создаст какое-то значение и вернет его.
И вот тут я не знаю как передать в эту функцию параметры:
[img]]

ругается что переменная Спр не определена. Подскажите
Ответ: Все, разобрался.
Объявлять параметр таблицей значений надо делать не в ПВД, а в обработчике ПередВыгрузкойДанных самой конвертации.
Параметры.ТЗ1Аккум = СоздатьОбъект("ТаблицаЗначений");            // для создания элемента справочника уатСерииНоменклатуры

Параметры.ТЗ1Аккум.НоваяКолонка("ТипАгрегата");                    // - СправочникСсылка.уатТипыАгрегатов.Аккумулятор

Параметры.ТЗ1Аккум.НоваяКолонка("Модель");                        // - ТипАгрегата, Производитель, Модель, Емкость, СрокСлужбы (мес.)

Параметры.ТЗ1Аккум.НоваяКолонка("СерийныйНомер");                // - строка

Параметры.ТЗ1Аккум.НоваяКолонка("Номенклатура");                // - СправочникСсылка.Номенклатура
Вопрос: Создание внешней печатной формы с возможностью передачи параметров

Пытаюсь переделать внешнюю печатную форму из 1С 8.2 под версию 8.3, в связи с чем возникают ошибки..
Помогите, пожалуйста, разобраться в коде. При присоединении отчета выдает ошибку "Метод объекта не обнаружен (Печать)".
Все дело в форме через которую передаются параметры, но я впервые программирую на 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
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
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
//ПОДГОТОВКА РЕГИСТРАЦИИ ГЛОБАЛЬНОГО ОТЧЕТА 
Функция ПолучитьНазначениеОбработки ()
    Массив = Новый Массив;
    Массив.Добавить("Документ.ТребованиеНакладная");
    Возврат Массив;
КонецФункции
 
Функция СведенияОВнешнейОбработке() Экспорт 
 
ПараметрыРегистрации = Новый Структура; 
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //Варианты: "ДополнительнаяОбработка", "ДополнительныйОтчет", "ЗаполнениеОбъекта", "Отчет", "ПечатнаяФорма", "СозданиеСвязанныхОбъектов" 
ПараметрыРегистрации.Вставить("назначение", ПолучитьНазначениеОбработки ());
ПараметрыРегистрации.Вставить("Наименование", "Акт НА СПИСАНИЕ ПРОЧИХ МАТЕРИАЛОВ (фор. С-2)"); 
ПараметрыРегистрации.Вставить("Версия", "1.0"); //"1.0" 
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина); //Варианты: Истина, Ложь 
ПараметрыРегистрации.Вставить("Информация", "Акт на списание прочих материалов"); 
 
ТаблицаКоманд = ПолучитьТаблицуКоманд();
 
ДобавитьКоманду(ТаблицаКоманд, "Акт НА СПИСАНИЕ ПРОЧИХ МАТЕРИАЛОВ (фор. С-2)", "ПечатьАКТС2", "ВызовСерверногоМетода", Ложь, "ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
 
Возврат ПараметрыРегистрации;
КонецФункции
 
 
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));//как будет выглядеть описание печ.формы для пользователя
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); //имя макета печ.формы
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); //ВызовСерверногоМетода
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
 
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
 
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление; 
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
 
КонецПроцедуры
        
&НаКлиенте
 
 
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
 
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "АКТ НА СПИСАНИЕ ПРОЧИХ МАТЕРИАЛОВ (форма С-2)", "Акт на списание", СформироватьПечатнуюФорму("Форма", МассивОбъектов[0], ОбъектыПечати));
 
КонецПроцедуры // Печать()
 
&НаСервере
Функция ПечатьАКТС2(ИмяМакета)
    
 
    Форма=ЭтотОбъект.ПолучитьФорму("Форма");
    Форма.ОткрытьМодально();
    ЭтотОбъект.Печать();
    
    
 
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);
    Запрос.Текст = 
    "ВЫБРАТЬ
    |   ТребованиеНакладная.Ссылка,
    |   ТребованиеНакладная.ВерсияДанных,
    |   ТребованиеНакладная.ПометкаУдаления,
    |   ТребованиеНакладная.Номер,
    |   ТребованиеНакладная.Дата,
    |   ТребованиеНакладная.Проведен,
    |   ТребованиеНакладная.Организация,
    |   ТребованиеНакладная.Склад,
    |   ТребованиеНакладная.Ответственный,
    |   ТребованиеНакладная.Комментарий,
    |   ТребованиеНакладная.СчетЗатрат,
    |   ТребованиеНакладная.Субконто1,
    |   ТребованиеНакладная.ПодразделениеЗатрат,
    |   ТребованиеНакладная.Субконто2,
    |   ТребованиеНакладная.Субконто3,
    |   ТребованиеНакладная.ОтражениеВУСН,
    |   ТребованиеНакладная.НДСвСтоимостиТоваров,
    |   ТребованиеНакладная.Контрагент,
    |   ТребованиеНакладная.СчетСписанияНДС,
    |   ТребованиеНакладная.СубконтоСписанияНДС1,
    |   ТребованиеНакладная.СубконтоСписанияНДС2,
    |   ТребованиеНакладная.СубконтоСписанияНДС3,
    |   ТребованиеНакладная.ДляСписанияНДСиспользоватьСчетИАналитикуУчетаЗатрат,
    |   ТребованиеНакладная.СчетаУчетаЗатратВТаблице,
    |   ТребованиеНакладная.РучнаяКорректировка,
    |   ТребованиеНакладная.Материалы.(
    |       Ссылка,
    |       НомерСтроки,
    |       Номенклатура,
    |       Счет,
    |       КоличествоМест,
    |       ЕдиницаИзмерения,
    |       Коэффициент,
    |       Количество,
    |       СтранаПроисхождения,
    |       НомерГТД,
    |       ОтражениеВУСН,
    |       СчетЗатрат,
    |       ПодразделениеЗатрат,
    |       НоменклатурнаяГруппа,
    |       СтатьяЗатрат,
    |       ДокументОприходования,
    |       Себестоимость,
    //|       ПричинаВыбытия
    |   )
    //,
    //| ТребованиеНакладная.МатериалыЗаказчика.(
    //|     Ссылка,
    //|     НомерСтроки,
    //|     Номенклатура,
    //|     Счет,
    //|     КоличествоМест,
    //|     ЕдиницаИзмерения,
    //|     Коэффициент,
    //|     Количество,
    //|     СчетПередачи
    //| )
    |ИЗ
    |   Документ.ТребованиеНакладная КАК ТребованиеНакладная
    |ГДЕ
    |   ТребованиеНакладная.Ссылка = &Ссылка";
    
    Результат = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    ТабДокумент   = Новый ТабличныйДокумент();
    
       
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        // Вставить обработку выборки ВыборкаДетальныеЗаписи
        Макет         = ПолучитьМакет("Макет");
        //Макет = Документы.РасходнаяНакладная.ПолучитьМакет("Основной");
        Область = Макет.ПолучитьОбласть("Шапка");
        //ОбластьМакета.Параметры.Заголовок    = "А К Т  №"+Строка(ВыборкаДетальныеЗаписи.Номер);
        //ОбластьМакета.Параметры.ДатаДок        = Формат( ВыборкаДетальныеЗаписи.Дата, "ДФ=dd.MM.yy");
        //ОбластьМакета.Параметры.Организация    = ВыборкаДетальныеЗаписи.Организация.Наименование;
        //ОбластьМакета.Параметры.подразделение  = ВыборкаДетальныеЗаписи.Склад.Наименование;
        //ОбластьМакета.Параметры.МОЛ            = МОЛ.Наименование;
        //ОбластьМакета.Параметры.МОЛД          =МОЛД;          
        //ОбластьМакета.Параметры.МОЛ               =МОЛ.Наименование;
        Область.Параметры.Член1Д=Член1Д;            
        Область.Параметры.Член1=Член1.Наименование; 
        Область.Параметры.Член2Д=Член2Д;            
        Область.Параметры.Член2=Член2.Наименование;     
    
 
 
        //ОбластьМакета.Параметры.Участок        = ВыборкаДетальныеЗаписи.ПодразделениеЗатрат.Наименование;
        //ОбластьМакета.Параметры.КорСчет        = ВыборкаДетальныеЗаписи.СчетЗатрат.Код;
        //ОбластьМакета.Параметры.Аналитика      = ?(ВыборкаДетальныеЗаписи.Субконто1=Неопределено,"",    ВыборкаДетальныеЗаписи.Субконто1.Наименование)+
        //?(ВыборкаДетальныеЗаписи.Субконто2=Неопределено,"","/"+ВыборкаДетальныеЗаписи.Субконто2.Наименование)+
        //?(ВыборкаДетальныеЗаписи.Субконто3=Неопределено,"","/"+ВыборкаДетальныеЗаписи.Субконто3.Наименование);
        //ОбластьМакета.Параметры.ДатаСоставления= Формат( ВыборкаДетальныеЗаписи.Дата, "ДФ=dd.MM.yy");
        
        ТабДокумент.Вывести(Область);
        //выведем область "Шапка" в табличный документ
        ТабДокумент.Вывести(Макет.ПолучитьОбласть("Шапка"));
        
        // Строчки    
        СтруктураПолей = Новый Структура;
        СтруктураПолей.Вставить("Материал",     "Номенклатура");        
        СтруктураПолей.Вставить("Наименование", "Номенклатура.НаименованиеПолное");
        СтруктураПолей.Вставить("Единица",      "Номенклатура.БазоваяЕдиницаИзмерения");
        СтруктураПолей.Вставить("Код",          "Номенклатура.Код");
        СтруктураПолей.Вставить("ЕдиницаИзмеренияКод",          "Номенклатура.БазоваяЕдиницаИзмерения.Код");
        
        СтруктураПолей.Вставить("Колво",        "Количество");
        
        
        
        ТаблицаМатериалов = ОбщегоНазначения.СформироватьЗапросПоТабличнойЧасти(СсылкаНаОбъект, "Материалы", СтруктураПолей).Выгрузить();
        ТаблицаМатериалов.Свернуть("Материал,Наименование,Единица,Код,ЕдиницаИзмеренияКод", "Колво");
        
        // Поиск сумм списания активов для заполнения Цены и Суммы
        ТаблицаСуммСписания = БухгалтерскийУчет.ПолучитьСуммуСписанияАктивов(СсылкаНаОбъект);
        
        НомерТекущий = 1;
        Для Каждого СтрокаТЧ Из ТаблицаМатериалов Цикл
            ОбластьМакета = Макет.ПолучитьОбласть("Строка");
            ОбластьМакета.Параметры.Заполнить(СтрокаТЧ);
            ОбластьМакета.Параметры.НомерТекущий = НомерТекущий;
            СтрокаСуммСписания =  ТаблицаСуммСписания.Найти(СтрокаТЧ.Материал, "Номенклатура");
            ////Если СтрокаСуммСписания = Неопределено Тогда
            ////    ОбластьМакета.Параметры.Цена = 0;
            ////    ОбластьМакета.Параметры.Сумма = 0;
            ////    //ОбластьМакета.Параметры.Причина = "";
            ////Иначе
            ////    Цена = ?(СтрокаСуммСписания.Количество = 0, 0, СтрокаСуммСписания.Сумма / СтрокаСуммСписания.Количество);
            ////    ОбластьМакета.Параметры.Цена  = Цена;
            ////    ОбластьМакета.Параметры.Сумма = Цена * СтрокаТЧ.Колво;
            ////    ОбластьМакета.Параметры.Причина = ВыборкаДетальныеЗаписи.комментарий ;
            //КонецЕсли;
            Область.Параметры.Причина = "";
             
            ТабДокумент.Вывести(Область);
             НомерТекущий = НомерТекущий + 1;
            
            
        КонецЦикла;
        Область = Макет.ПолучитьОбласть("Шапка");
            
        Область = Макет.ПолучитьОбласть("Подвал");
                
        ОбластьМакета.Параметры.Член1Д=Член1Д;          
        ОбластьМакета.Параметры.Член1=Член1.Наименование;   
        ОбластьМакета.Параметры.Член2Д=Член2Д;          
        ОбластьМакета.Параметры.Член2=Член2.Наименование;       
        ТабДокумент.Вывести(Область);
        Возврат ТабДокумент;
    КонецЦикла;
    
 
    
КонецФункции    //печатьАКТС2
 
    
     //получить таблицу команд (команды которые будут поставялться обработкой)
     
    
#КонецЕсли
В архиве обе печатные формы, под 8.2 и переделанная 8.3
Ответ: У вас внешняя печатная форма, Встречается ЭтотОбъект.Ссылка и СсылкаНаОбъект приведите все к ссылкенаобъект. Далее в запросе у вас параметр
Код 1C
1
 Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);
а вот ссылку лучше передавать в массивобъектов.
Код 1C
1
2
|ГДЕ
    |   ТребованиеНакладная.Ссылка = &Ссылка";
Вопрос: Передача параметров формы

Не могу передать параметры формы. Ошибки выдает но и параметры не приходят. Что я нет так делаю?
Ответ:
Не обязательно ключевой, можно даже не создавать параметр у формы. Нужно только обрабатывать параметры "ПриСозданииНаСервере"
Вопрос: Передача параметров в форму выбора.

Прошу подсказки.
Из документа "Реализация товаров и услуг" вызывается форма выбора по договору (ERP). Конфа правленая, сравниваю с типовой. В ОбработкеСозданияНаСервере формы выбора смотрю в отладчике Параметры.Отбор. Никак не могу понять как список отбора формируется - явного вызова этой формы с параметрами нет, в свойстве "СвязиПараметровВыбора" только один элемент отбора, а в Параметры.Отбор уже несколько. Может кто подскажет где искать.
Ответ: () Да, я понимаю что где-то они должны заполняться, но как они называются в реализации (то что есть "Параметры" в выборе)? Смотрю например выбор контрагента, там же должен измениться отбор по контрагенту.
Вопрос: Передача параметра с сайта в веб-клиент 1С

Здравствуйте.
Есть самодельная конфигурация на управляемых формах (платформа 8.3). Пользователи работают в веб-клиенте.
При этом есть левый сайт. На нем, грубо говоря, поле, в которое нужно ввести число. И при нажатии на кнопочку, открыть веб-клиент 1С, ( где и нужно при открытии получить это число) и обработать его.
Т.е. необходимо с сайта в 1С передать параметр.

Подскажите, как это лучше организовать.

Всем заранее спасибо!))
Ответ: () Ну да, дополнительно. Отлавливать переданный параметр при открытии веб-клиента и отображать нужную форму.
Вопрос: Передача параметра на форму (владелец) из открытой формы

Добрый день!
Нужные идеи по реализации следующей задачки.
Управляемые формы, интерфейс такси (если кому важно).
Имеется "Контрагент" с реквизитом "Основной банковский счет" и соответственно справочник "Банковские счета контрагента".
Из элемента справочника "Контрагент" перехожу по панели навигации на список банковских счетов.
Создаю элемент справочника "Банковский счет", записываю и закрываю. Все ок.
Механизм типовой, строит сама платформа.

Теперь сама задачка: как автоматически установить реквизит "Основной банковский счет" контрагента в тот самый созданный банковский счет.

Я так понимаю, что мне необходимо получить Форму элемента справочника Контрагент и передать ее создаваемому элементу справочника "Банковский счет". Смотрел в отладчике и не увидел похожего.

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

Спасибо.
Ответ:
Сразу не додумался что сработает обработка оповещения у модуля формы Контрагента.
Спасибо.
В БП так и работает по п.2 описанному 1с-ник.
Вопрос можно закрывать.
Вопрос: Как ввести в реквизит ТЧ Группу со справочника?

Всем доброго времени.
Есть ТЧ Параметры. Там два реквизита "Параметр" (Строка) и "Значение" (СправочникСсылка...).
При редактировании ТЧ Не могу в поле "Значение" выбрать со справочника Группу.
Как, где и что настроить? Или только Элементы можно туда вставлять.

PS: У реквизитов Справочника есть параметр "Использование - Элемент и Группа". Тут нет такого :-(
Ответ: РЕШЕНО!!!
Если в списке ТипРеквизита нет ни одного типа с иерархией групп и элементов, то в этот реквизит невозможно будет выбрать Группу (со справочника, например)
Вопрос: Как создать обработчик события для программно созданных реквизитов?

Добрый день.
У меня такая проблема. При открытии формы элемента справочника у меня создаются реквизиты и элементы по записям в независимом регистре сведений. После того, как я создал эти элементы, мне надо, чтобы при изменении какого-либо из этих элементов вызывалась процедура. Но не могу понять как вызывать процедуру для созданного элемента.
Вот так я создаю реквизиты:
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
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    СозданиеРеквизита();
КонецПроцедуры
 
&НаСервере
Процедура СозданиеРеквизита() Экспорт
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ЗначенияСвойствКошельков.Свойство.Наименование КАК Наименование,
        |   ЗначенияСвойствКошельков.Свойство КАК Свойство,
        |   ЗначенияСвойствКошельков.Значение КАК Значение,
        |   СвойстваКошельков.ТипЗначения КАК ТипЗначения,
        |   ЗначенияСвойствКошельков.Свойство.Ссылка КАК СвойствоСсылка
        |ИЗ
        |   РегистрСведений.ЗначенияСвойствКошельков КАК ЗначенияСвойствКошельков
        |       ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.СвойстваКошельков КАК СвойстваКошельков
        |       ПО ЗначенияСвойствКошельков.Свойство = СвойстваКошельков.Ссылка
        |ГДЕ
        |   ЗначенияСвойствКошельков.Кошелек = &Кошелек";
    Запрос.УстановитьПараметр("Кошелек", Объект.Ссылка);
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
 
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Если Элементы.Найти(СтрЗаменить(ВыборкаДетальныеЗаписи.Наименование," ","")) = Неопределено  Тогда
            НовыеРеквизиты = Новый Массив;
            НовыйРеквизит = Новый РеквизитФормы(СтрЗаменить(ВыборкаДетальныеЗаписи.Наименование," ",""),ВыборкаДетальныеЗаписи.ТипЗначения,"",ВыборкаДетальныеЗаписи.Наименование,Истина);
            НовыеРеквизиты.Добавить(НовыйРеквизит);
            ИзменитьРеквизиты (НовыеРеквизиты);
            
            Элемент = ЭтаФорма.Элементы.Добавить(СтрЗаменить(ВыборкаДетальныеЗаписи.Наименование," ",""),Тип("ПолеФормы")); 
            Элемент.Вид = ВидПоляФормы.ПолеВвода; 
            Элемент.ПутьКДанным = СтрЗаменить(НовыйРеквизит.Имя," ","");
            ЭтаФорма[СтрЗаменить(ВыборкаДетальныеЗаписи.Наименование," ","")] = ВыборкаДетальныеЗаписи.Значение;
            
            КонецЕсли;
    КонецЦикла;
КонецПроцедуры
И дальше мне надо, чтобы при изменении в поле ввода открывался список только тех элементов, которые соответствуют данному реквизиту (значения берутся из доп. справочника с владельцем ПВХ). Значения буду брать запросом, но как мне сделать чтобы при изменении значения поля ввода вызывалась процедура?
Ответ:
1C
1
2
3
4
5
6
7
8
ПараметрыОткрытия.Вставить("Владелец", НайтиПВХ_В_БазеДанных(Элемент.Имя));
 
&НаСервереБезКонтекста
Функция НайтиПВХ_В_БазеДанных(Наименование)
 
   Возврат ПланыВидовХарактеристик.СвойстваКошельков.НайтиПоНаименованию(Наименование);
 
КонецФункции