Архив метки: 1с

Диалоговое окно в 1С

Можно реализовать стандартным способом, что-то типа:

&НаКлиенте
Процедура ВыключитьИнтернет(Команда)
	Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопроса",ЭтотОбъект);	
	ПоказатьВопрос(Оповещение,
        "Вы убеждены что хотите отключить несчастного контрагента?",
        РежимДиалогаВопрос.ДаНет,
        0, // таймаут в секундах
        КодВозвратаДиалога.нет, // (необ.) кнопка по умолчанию
        "Хороший вопрос" // (необ.) заголовок
    );    
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗакрытияВопроса(Результат,Параметры)  Экспорт
	если Результат=КодВозвратаДиалога.Да тогда
		сообщить("--жаль..");
	иначе
		сообщить("");
	конецесли;	
КонецПроцедуры

Передача параметров при создании Формы.

Задача: по нажатии кнопки, открыть форму обработки с заполненным реквизитом ИНН.

Собственно вот классический способ:  по нажатию кнопки выполняем код:

&НаКлиенте
Процедура Расш1_ДействияБиллингаПосле(Команда)
	ПП = Новый Структура("ИНН", "100");
	Форма=ПолучитьФорму("Обработка.ДействияLanBilling.Форма.Форма",ПП);
	Форма.Открыть() 	
КонецПроцедуры

Далее обрабатываем параметр в самой форме, в процедуре ПриСозданииНаСервере:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Если Параметры.Свойство("ИНН") Тогда
        объект.ИНН=Параметры["ИНН"];
    КонецЕсли;	
КонецПроцедуры

Атол 55Ф + терминал эквайринга VeriFone 802, ошибка 4321

При проведении эквайринговой операции 1С Розница 2.2 выводит ошибку:

При выполнении операции возникла ошибка:
«Ошибка отмены операции транзакции. Обратитесь в банк. Ошибка при выполнении функции АварийнаяОтменаОперации, ответ терминала — Ошибка 4321».
Оплата по карте не была произведена.

1) Тест драйверов кассы ККМ проходит
2) Тест драйверов терминала проходит
2) SBRFCOM.dll зарегистрирована regsvr на 7 параметров (пробовал и на 3)

Ошибка происходит только при выводе чека экваринговой операции на ККМ. Деньги с карточки снимаются.

Решение: заработало когда переставили терминал в порт USB3.0 (синенький). Возможно и правда не хватало питания, а может быть особенность реализации конкретно на этой материнской плате. Т.к. на других ПК всё работало в любых портах. 

1C управляемые формы, выбор из списка значений

1С удивительная платформа. Иногда спотыкаешься на ровном месте на пару часов и не знаешь ты дурак или нет.. Ну вот казалось бы простая вещь — сделать список выбора на управляемой форме, а застрял из-за одного нюанса, из-за которого то что выбрал в списке не отображалось в поле выбора..

Теперь пошагово:

  1. Создаем реквизит, например «Категория». ВАЖНО! — тип — произвольный:
    У меня был затык именно на этом месте.
  2. Далее ставим галочку «Режим выбора из списка» и назначаем обработку начала выбора на клиенте
  3. Собственно сама обработка:
&НаКлиенте
Процедура КатегорияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)	
	Элементы.Категория.СписокВыбора.Очистить();
	Элементы.Категория.СписокВыбора.Добавить(0,"1");
	Элементы.Категория.СписокВыбора.Добавить(1,"2");
	Элементы.Категория.СписокВыбора.Добавить(2,"Тест");
КонецПроцедуры

В чём была моя ошибка? Тип реквизита выбирал текст. Ну да, только когда я добавлял в список выбора цифры в Элементы.Категория.СписокВыбора.Добавить(0,»1″), то 1С их преобразовывала с цифры..

1С Дополнительные реквизиты на форме при помощи расширения

В своей работе с 1С стараюсь сделать так, чтобы обновления проходили максимально безболезненно. Для этого нужно сохранять не изменяемость конфигурации. В настоящий момент, при помощи «расширений» конфигурации, многие вещи достаточно легко сделать основную конфигурацию не трогая вообще. Ниже рассмотрю, как я сделал задачу по добавлению значения «Покупка с сайта» в документе «Реализация товаров».

1) Выносим в расширение документ документ «Реализация товаров и добавляем реквизит «ПокупкаССайта» в реквизиты формы. Да! именно в реквизиты формы, а не документа. В настоящий момент платформа 1С не дает добавлять в расширения реквизиты документа (но обещают). Перетаскиваем реквизит в элементы и обязательно ставим галочку на «АктивизироватьПоУмолчанию» — иначе на форме при запуске не отобразится:

2) Следующая задача — сделать сохранение значения данного реквизита с привязкой к документы. Самое удобное — хранить значение в специально предназначенном для этого регистре ДополнительныеРеквизитыИСведения. В нём два измерения: обьект и Свойство. Обьект в нашем случае — это документ Реализации, а свойство нужно задать в ПланеВидовХарактеристик.ДополнительныеРеквизитыИСведения. Например так:

  

И далее создадим обработчики открытия формы и закрытия в которых реализуем чтение из регистра и запись в этот регистр:

&НаСервере
Функция ЗаписатьЗначениеПокупкиССайта(параметр)	
		МенеджерЗаписи = РегистрыСведений.ДополнительныеСведения.СоздатьМенеджерЗаписи();
		МенеджерЗаписи.Объект = объект.Ссылка;
		МенеджерЗаписи.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Продажа с сайта");		
		МенеджерЗаписи.Значение=параметр;
		МенеджерЗаписи.Записать();	
конецфункции

&НаСервере
Функция ПолучитьЗначениеГалочки();
	зн=РегистрыСведений.ДополнительныеСведения.СоздатьНаборЗаписей();
	отбор=зн.Отбор;
	отбор.Объект.Установить(объект.Ссылка);
	отбор.Свойство.Установить(ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Продажа с сайта"));		
	зн.Прочитать();	
	галочка=ложь;
	для каждого стр из зн   цикл
		галочка=стр.Значение;
	конеццикла;
	возврат галочка;
КонецФункции  	
&НаКлиенте
Процедура Расш1_ПровестиИзФормыПосле(Команда)
ЗаписатьЗначениеПокупкиССайта(этаформа.ПокупкаССайта);
КонецПроцедуры

&НаКлиенте
Процедура Расш1_ПровестиИЗакрытьИзФормыПосле(Команда)
	Расш1_ПровестиИзФормыПосле(Команда);
КонецПроцедуры

&НаКлиенте
Процедура Расш1_ПриОткрытииПосле(Отказ)
	этаформа.ПокупкаССайта=ПолучитьЗначениеГалочки();
КонецПроцедуры